diff --git a/ChangeLog b/ChangeLog index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 28da04d13b..3f1b0e3327 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,14 @@ +Mon Sep 13 15:01:21 1999 Owen Taylor + + * gtk/gtkwidget.c (gtk_widget_queue_clear_area): Ignore + queues of areas that are completely off screen. + + * gtk/gtkwidget.c (gtk_widget_idle_draw): Fix broken + logic for handleboxes. + + * gtk/gtkwidget.c (gtk_widget_queue_draw_data): Add santity + check on width/height. + Mon Sep 13 02:22:47 1999 Tim Janik * gtk/Makefile.am: backed out Raja's recent VPATH build "improvements", diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index dd26a88136..8c5c3abb96 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -1734,6 +1734,7 @@ gtk_widget_queue_draw_data (GtkWidget *widget, GtkDrawData *data; g_return_if_fail (widget != NULL); + g_return_if_fail (!(width < 0 || height < 0) || window == NULL); if ((width != 0) && (height != 0) && GTK_WIDGET_DRAWABLE (widget)) { @@ -1864,6 +1865,10 @@ gtk_widget_queue_clear_area (GtkWidget *widget, y -= wy - widget->allocation.y; gdk_window_get_size (widget->window, &wwidth, &wheight); + + if (x + width <= 0 || y + height <= 0 || + x >= wwidth || y >= wheight) + return; if (x < 0) { @@ -2083,23 +2088,23 @@ gtk_widget_idle_draw (gpointer cb_data) NULL, NULL); data->window = NULL; } - else + else if ((data->rect.width == 0) && (data->rect.height == 0)) + full_allocation = TRUE; + + if (full_allocation) { - if ((data->rect.width == 0) && (data->rect.height == 0)) + if (GTK_WIDGET_NO_WINDOW (widget)) { - if (GTK_WIDGET_NO_WINDOW (widget)) - { - data->rect.x = widget->allocation.x; - data->rect.y = widget->allocation.y; - } - else - { - data->rect.x = 0; - data->rect.y = 0; - } - data->rect.width = widget->allocation.width; - data->rect.height = widget->allocation.height; + data->rect.x = widget->allocation.x; + data->rect.y = widget->allocation.y; } + else + { + data->rect.x = 0; + data->rect.y = 0; + } + data->rect.width = widget->allocation.width; + data->rect.height = widget->allocation.height; } draw_data_list = draw_data_list->next; @@ -2255,13 +2260,16 @@ gtk_widget_queue_resize (GtkWidget *widget) if (GTK_IS_RESIZE_CONTAINER (widget)) gtk_container_clear_resize_widgets (GTK_CONTAINER (widget)); - if (GTK_WIDGET_DRAWABLE (widget)) - gtk_widget_queue_clear (widget); - if (widget->parent) - gtk_container_queue_resize (GTK_CONTAINER (widget->parent)); + { + gtk_widget_queue_clear (widget->parent); + gtk_container_queue_resize (GTK_CONTAINER (widget->parent)); + } else if (GTK_WIDGET_TOPLEVEL (widget)) - gtk_container_queue_resize (GTK_CONTAINER (widget)); + { + gtk_widget_queue_clear (widget); + gtk_container_queue_resize (GTK_CONTAINER (widget)); + } } /*****************************************