summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1999-09-13 19:01:49 +0000
committerOwen Taylor <otaylor@src.gnome.org>1999-09-13 19:01:49 +0000
commit7347cd702f47a00a5f72a898f527e3f3596eff24 (patch)
tree816902d68a604b76515b81f9853ee8f44ad6dc4e
parent531f44bbdc7f76012d7afb284f250b1bbf5500ce (diff)
downloadgdk-pixbuf-7347cd702f47a00a5f72a898f527e3f3596eff24.tar.gz
Ignore queues of areas that are completely off screen.
Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com> * 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.
-rw-r--r--ChangeLog11
-rw-r--r--ChangeLog.pre-2-011
-rw-r--r--ChangeLog.pre-2-1011
-rw-r--r--ChangeLog.pre-2-211
-rw-r--r--ChangeLog.pre-2-411
-rw-r--r--ChangeLog.pre-2-611
-rw-r--r--ChangeLog.pre-2-811
-rw-r--r--gtk/gtkwidget.c46
8 files changed, 104 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 28da04d13..3f1b0e332 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,14 @@
+Mon Sep 13 15:01:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <timj@gtk.org>
* gtk/Makefile.am: backed out Raja's recent VPATH build "improvements",
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index dd26a8813..8c5c3abb9 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));
+ }
}
/*****************************************