[glade] GladeFixed: Avoid fetching the pointer at load time, or whenever the widget is not realized.



commit fc0ea5ea9b33190bc0eef42351957ddee077969a
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Thu Apr 4 16:06:51 2013 +0900

    GladeFixed: Avoid fetching the pointer at load time, or whenever the widget is not realized.

 gladeui/glade-utils.c      |    2 ++
 plugins/gtk+/glade-fixed.c |    8 ++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gladeui/glade-utils.c b/gladeui/glade-utils.c
index f6c64ac..a9f866f 100644
--- a/gladeui/glade-utils.c
+++ b/gladeui/glade-utils.c
@@ -1957,6 +1957,8 @@ glade_utils_get_pointer (GtkWidget *widget,
   if (!window)
     window = gtk_widget_get_window (widget);
 
+  g_return_if_fail (GDK_IS_WINDOW (window));
+
   gdk_window_get_device_position (window, device, &device_x, &device_y, NULL);
   gdk_window_get_user_data (window, (gpointer)&event_widget);
 
diff --git a/plugins/gtk+/glade-fixed.c b/plugins/gtk+/glade-fixed.c
index a965d71..03a6742 100644
--- a/plugins/gtk+/glade-fixed.c
+++ b/plugins/gtk+/glade-fixed.c
@@ -843,9 +843,13 @@ glade_fixed_add_child_impl (GladeWidget *gwidget_fixed,
   g_return_if_fail (GLADE_IS_FIXED (fixed));
   g_return_if_fail (GLADE_IS_WIDGET (child));
 
-  /* Need to explicitly find the pointer location at drag_drop time */
+  /* Need to explicitly find the pointer location at drag_drop time (but check if the widget has
+   * a window already first, if not it's because we're loading and widget's arent realized yet)
+   */
   widget = GTK_WIDGET (glade_widget_get_object (gwidget_fixed));
-  glade_utils_get_pointer (widget, NULL, NULL, &fixed->mouse_x, &fixed->mouse_y);
+  if (gtk_widget_get_window (widget))
+    glade_utils_get_pointer (widget, NULL, NULL,
+                            &fixed->mouse_x, &fixed->mouse_y);
 
   /* Chain up for the basic parenting */
   GLADE_WIDGET_CLASS (parent_class)->add_child


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