[gtk+] window: Turn popovers into internal children



commit 59a928f7c8ac987a544c30251d2293de9033f1b8
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Mar 6 23:06:40 2014 +0100

    window: Turn popovers into internal children
    
    It turns out popovers are already smart enough to cope with this
    situation, so let popovers be internal children so things that rely
    on gtk_container_forall(), like DnD, work without modifications.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=725727

 gtk/gtkwindow.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 3e208c9..68e6ffa 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -8088,6 +8088,17 @@ gtk_window_forall (GtkContainer *container,
   GtkWindowPrivate *priv = window->priv;
   GtkWidget *child;
 
+  if (include_internals)
+    {
+      GList *l;
+
+      for (l = priv->popovers; l; l = l->next)
+        {
+          GtkWindowPopover *data = l->data;
+          (* callback) (data->widget, callback_data);
+        }
+    }
+
   child = gtk_bin_get_child (GTK_BIN (container));
   if (child != NULL)
     (* callback) (child, callback_data);
@@ -9843,13 +9854,11 @@ gtk_window_draw (GtkWidget *widget,
                 cairo_t   *cr)
 {
   GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
-  GtkWindowPopover *popover;
   GtkStyleContext *context;
   gboolean ret = FALSE;
   GtkAllocation allocation;
   GtkBorder window_border;
   gint title_height;
-  GList *link;
 
   context = gtk_widget_get_style_context (widget);
 
@@ -9933,19 +9942,6 @@ gtk_window_draw (GtkWidget *widget,
       gtk_style_context_restore (context);
     }
 
-  link = priv->popovers;
-
-  while (link)
-    {
-      popover = link->data;
-      link = link->next;
-
-      if (popover->window && gtk_widget_is_visible (popover->widget) &&
-          gtk_cairo_should_draw_window (cr, popover->window))
-        gtk_container_propagate_draw (GTK_CONTAINER (widget),
-                                      popover->widget, cr);
-    }
-
   return ret;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]