summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1999-09-16 18:59:24 +0000
committerOwen Taylor <otaylor@src.gnome.org>1999-09-16 18:59:24 +0000
commit661d0ad067cfa4a5df3ad0a7fe373bea8c8889ad (patch)
tree91172ce514b849a780e1c791b8f3cfc8e251dd0a /gtk
parentf04d58dd298e1ee3d71f0b2c005d242500ecc6ce (diff)
downloadgdk-pixbuf-661d0ad067cfa4a5df3ad0a7fe373bea8c8889ad.tar.gz
Added workaround for old widgets that don't propagate draws to all
Wed Sep 15 02:52:19 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtkwidget.c (gtk_widget_event): Added workaround for old widgets that don't propagate draws to all children. (Namely gnome-dock for gnome-libs <= 1.0.16)
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkwidget.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index ed47156b7..42f429c8b 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -2799,7 +2799,7 @@ gtk_widget_event (GtkWidget *widget,
*/
if (event->any.send_event)
parent = NULL;
- else
+ else if (event->any.window)
{
parent = widget;
while (parent)
@@ -2808,6 +2808,20 @@ gtk_widget_event (GtkWidget *widget,
break;
parent = parent->parent;
}
+ /* <HACK> gnome-dock didn't propagate draws to torn off
+ * children. So don't consider those ancestors.
+ */
+ if (parent)
+ {
+ GdkWindow *parent_window = event->any.window;
+
+ while (parent_window && parent_window != parent->window)
+ parent_window = gdk_window_get_parent (parent_window);
+
+ if (!parent_window)
+ parent = NULL;
+ }
+ /* </HACK> */
}
if (!event->any.window || parent)
{