[glade] Cleanup glade_utils_get_pointer()
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Cleanup glade_utils_get_pointer()
- Date: Thu, 4 Apr 2013 07:01:47 +0000 (UTC)
commit 650bc9a8ac1daf9b39c100fd0f5c66621251b858
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Thu Apr 4 16:01:09 2013 +0900
Cleanup glade_utils_get_pointer()
Now accepts a NULL window or device when one cannot be provided.
gladeui/glade-utils.c | 31 ++++++++++++++++++++++++++++---
plugins/gtk+/glade-fixed.c | 9 +--------
2 files changed, 29 insertions(+), 11 deletions(-)
---
diff --git a/gladeui/glade-utils.c b/gladeui/glade-utils.c
index 0be5a95..f6c64ac 100644
--- a/gladeui/glade-utils.c
+++ b/gladeui/glade-utils.c
@@ -1919,6 +1919,18 @@ glade_utils_pointer_mode_render_icon (GladePointerMode mode, GtkIconSize size)
return pix;
}
+/**
+ * glade_utils_get_pointer:
+ * @widget: The widget to get the mouse position relative for
+ * @window: The window of the current event, or %NULL
+ * @device: The device, if not specified, the current event will be expected to have a @device.
+ * @x: The location to store the mouse pointer X position
+ * @y: The location to store the mouse pointer Y position
+ *
+ * Get's the pointer position relative to @widget, while @window and @device
+ * are not absolutely needed, they should be passed wherever possible.
+ *
+ */
void
glade_utils_get_pointer (GtkWidget *widget,
GdkWindow *window,
@@ -1931,17 +1943,30 @@ glade_utils_get_pointer (GtkWidget *widget,
GtkWidget *event_widget = NULL;
g_return_if_fail (GTK_IS_WIDGET (widget));
- g_return_if_fail (GDK_IS_WINDOW (window));
+
+ if (!device)
+ {
+ GdkEvent *event = gtk_get_current_event ();
+
+ device = gdk_event_get_device (event);
+ gdk_event_free (event);
+ }
+
g_return_if_fail (GDK_IS_DEVICE (device));
- gdk_window_get_device_position (window, device, &device_x, &device_y, NULL);
+ if (!window)
+ window = gtk_widget_get_window (widget);
+ gdk_window_get_device_position (window, device, &device_x, &device_y, NULL);
gdk_window_get_user_data (window, (gpointer)&event_widget);
if (event_widget != widget)
+ {
gtk_widget_translate_coordinates (event_widget,
widget,
- device_x, device_y, &final_x, &final_y);
+ device_x, device_y,
+ &final_x, &final_y);
+ }
else
{
final_x = device_x;
diff --git a/plugins/gtk+/glade-fixed.c b/plugins/gtk+/glade-fixed.c
index bc3b4a9..a965d71 100644
--- a/plugins/gtk+/glade-fixed.c
+++ b/plugins/gtk+/glade-fixed.c
@@ -839,20 +839,13 @@ glade_fixed_add_child_impl (GladeWidget *gwidget_fixed,
GdkRectangle rect;
gboolean handled;
GtkWidget *widget;
- GdkWindow *window;
- GdkDevice *device;
- GdkEvent *event;
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 */
widget = GTK_WIDGET (glade_widget_get_object (gwidget_fixed));
- window = gtk_widget_get_window (widget);
- event = gtk_get_current_event ();
- if ((device = gdk_event_get_device (event)))
- glade_utils_get_pointer (widget, window, device, &fixed->mouse_x, &fixed->mouse_y);
- gdk_event_free (event);
+ 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]