forked from AuroraMiddleware/gtk
Don't support the old handling of zero height/width in gdk_window_clear_area
We used to handle zero height/width specially in the non-double buffered case due to the weird behaviour of XClearArea in this case. However this is undocumented, incompatible with what happens on double-buffered drawing, and just not a good API. So, we drop this behaviour, having fixed gtkclist.c which used this.
This commit is contained in:
parent
0df4283574
commit
e1554d8466
@ -54,4 +54,14 @@
|
||||
simply create a new cairo context for each expose event.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Due to a weird API in XClearArea the gdk_window_clear_area() call handled
|
||||
a specified width or height of zero to mean "to end of window" for
|
||||
non-doublebuffered drawing. This has been changed to be consistent with
|
||||
the docs and what happens in the doublebuffered case. All code in gtk+
|
||||
that relied on this has been fixed, but it is possible (although unlikely)
|
||||
that third party applications rely on this. If you need to do this, just
|
||||
implement it yourself using gdk_drawable_get_size().
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
@ -4349,7 +4349,6 @@ gdk_window_clear_area_internal (GdkWindow *window,
|
||||
gint height,
|
||||
gboolean send_expose)
|
||||
{
|
||||
GdkWindowObject *private = (GdkWindowObject *)window;
|
||||
GdkRectangle rect;
|
||||
GdkRegion *region;
|
||||
|
||||
@ -4358,12 +4357,10 @@ gdk_window_clear_area_internal (GdkWindow *window,
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return;
|
||||
|
||||
/* This is what XClearArea does, and e.g. GtkCList uses it,
|
||||
so we need to duplicate that */
|
||||
if (width == 0)
|
||||
width = private->width - x;
|
||||
if (height == 0)
|
||||
height = private->height - y;
|
||||
/* Terminate early to avoid weird interpretation of
|
||||
zero width/height by XClearArea */
|
||||
if (width == 0 || height == 0)
|
||||
return;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
|
Loading…
Reference in New Issue
Block a user