[gtk+/xi2: 1168/1239] Merge together gdk_[keyboard|pointer]_grab_info_libgtk_only.



commit 87199cdd0f153579b9b7889bf1a2824f4739626a
Author: Carlos Garnacho <carlos gnome org>
Date:   Wed Sep 16 12:26:08 2009 +0200

    Merge together gdk_[keyboard|pointer]_grab_info_libgtk_only.
    
    Now there is a single gdk_device_grab_info_libgtk_only, which GTK+ uses.

 gdk/gdk.h        |   10 +++-----
 gdk/gdk.symbols  |    3 +-
 gdk/gdkdisplay.c |   65 ++++++++++--------------------------------------------
 gtk/gtkmain.c    |   26 ++++++++-------------
 4 files changed, 27 insertions(+), 77 deletions(-)
---
diff --git a/gdk/gdk.h b/gdk/gdk.h
index 77482ef..70bca89 100644
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -132,12 +132,10 @@ GdkGrabStatus gdk_device_grab        (GdkDevice        *device,
 				      GdkCursor        *cursor,
 				      guint32           time_);
 
-gboolean gdk_pointer_grab_info_libgtk_only (GdkDisplay *display,
-					    GdkWindow **grab_window,
-					    gboolean   *owner_events);
-gboolean gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display,
-					     GdkWindow **grab_window,
-					     gboolean   *owner_events);
+gboolean gdk_device_grab_info_libgtk_only (GdkDisplay  *display,
+                                           GdkDevice   *device,
+                                           GdkWindow  **grab_window,
+                                           gboolean    *owner_events);
 
 #ifndef GDK_MULTIHEAD_SAFE
 void          gdk_pointer_ungrab     (guint32       time_);
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index 3a6ce4e..948723d 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -83,8 +83,7 @@ gdk_pointer_is_grabbed
 gdk_pointer_ungrab
 gdk_event_send_client_message
 gdk_event_send_clientmessage_toall
-gdk_keyboard_grab_info_libgtk_only
-gdk_pointer_grab_info_libgtk_only
+gdk_device_grab_info_libgtk_only
 gdk_display_pointer_is_grabbed
 #endif
 #endif
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index ede927e..6b8b3de 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -1569,72 +1569,32 @@ _gdk_display_pointer_info_foreach (GdkDisplay                   *display,
 }
 
 /**
- * gdk_keyboard_grab_info_libgtk_only:
+ * gdk_device_grab_info_libgtk_only:
  * @display: the display for which to get the grab information
+ * @device: device to get the grab information from
  * @grab_window: location to store current grab window
  * @owner_events: location to store boolean indicating whether
- *   the @owner_events flag to gdk_keyboard_grab() was %TRUE.
- * 
+ *   the @owner_events flag to gdk_keyboard_grab() or
+ *   gdk_pointer_grab() was %TRUE.
+ *
  * Determines information about the current keyboard grab.
  * This is not public API and must not be used by applications.
- * 
+ *
  * Return value: %TRUE if this application currently has the
  *  keyboard grabbed.
  **/
 gboolean
-gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display,
-				    GdkWindow **grab_window,
-				    gboolean   *owner_events)
+gdk_device_grab_info_libgtk_only (GdkDisplay  *display,
+                                  GdkDevice   *device,
+                                  GdkWindow  **grab_window,
+                                  gboolean    *owner_events)
 {
   GdkDeviceGrabInfo *info;
 
-  /* FIXME: merge this and the pointer function */
   g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
+  g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
 
-  /* FIXME: which device? */
-  info = _gdk_display_get_last_device_grab (display,
-                                            gdk_device_get_relative (display->core_pointer));
-
-  if (info)
-    {
-      if (grab_window)
-        *grab_window = info->window;
-      if (owner_events)
-        *owner_events = info->owner_events;
-
-      return TRUE;
-    }
-  else
-    return FALSE;
-}
-
-/**
- * gdk_pointer_grab_info_libgtk_only:
- * @display: the #GdkDisplay for which to get the grab information
- * @grab_window: location to store current grab window
- * @owner_events: location to store boolean indicating whether
- *   the @owner_events flag to gdk_pointer_grab() was %TRUE.
- * 
- * Determines information about the current pointer grab.
- * This is not public API and must not be used by applications.
- * 
- * Return value: %TRUE if this application currently has the
- *  pointer grabbed.
- **/
-gboolean
-gdk_pointer_grab_info_libgtk_only (GdkDisplay *display,
-				   GdkWindow **grab_window,
-				   gboolean   *owner_events)
-{
-  GdkDeviceGrabInfo *info;
-
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
-
-  /* What we're interested in is the steady state (ie last grab),
-     because we're interested e.g. if we grabbed so that we
-     can ungrab, even if our grab is not active just yet. */
-  /* FIXME: which device? */
-  info = _gdk_display_get_last_device_grab (display, display->core_pointer);
+  info = _gdk_display_get_last_device_grab (display, device);
 
   if (info)
     {
@@ -1649,7 +1609,6 @@ gdk_pointer_grab_info_libgtk_only (GdkDisplay *display,
     return FALSE;
 }
 
-
 /**
  * gdk_display_pointer_is_grabbed:
  * @display: a #GdkDisplay
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 11aee08..5bc077b 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1314,12 +1314,10 @@ gtk_main_iteration_do (gboolean blocking)
 
 /* private libgtk to libgdk interfaces
  */
-gboolean gdk_pointer_grab_info_libgtk_only  (GdkDisplay *display,
-					     GdkWindow **grab_window,
-					     gboolean   *owner_events);
-gboolean gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display,
-					     GdkWindow **grab_window,
-					     gboolean   *owner_events);
+gboolean gdk_device_grab_info_libgtk_only (GdkDisplay  *display,
+                                           GdkDevice   *device,
+                                           GdkWindow  **grab_window,
+                                           gboolean    *owner_events);
 
 static void
 rewrite_events_translate (GdkWindow *old_window,
@@ -1394,6 +1392,7 @@ rewrite_event_for_grabs (GdkEvent *event)
   gpointer grab_widget_ptr;
   gboolean owner_events;
   GdkDisplay *display;
+  GdkDevice *device;
 
   switch (event->type)
     {
@@ -1405,20 +1404,15 @@ rewrite_event_for_grabs (GdkEvent *event)
     case GDK_MOTION_NOTIFY:
     case GDK_PROXIMITY_IN:
     case GDK_PROXIMITY_OUT:
-      display = gdk_drawable_get_display (event->proximity.window);
-      if (!gdk_pointer_grab_info_libgtk_only (display, &grab_window, &owner_events) ||
-	  !owner_events)
-	return NULL;
-      break;
-
     case GDK_KEY_PRESS:
     case GDK_KEY_RELEASE:
-      display = gdk_drawable_get_display (event->key.window);
-      if (!gdk_keyboard_grab_info_libgtk_only (display, &grab_window, &owner_events) ||
+      display = gdk_drawable_get_display (event->any.window);
+      device = gdk_event_get_device (event);
+
+      if (!gdk_device_grab_info_libgtk_only (display, device, &grab_window, &owner_events) ||
 	  !owner_events)
-	return NULL;
+        return NULL;
       break;
-
     default:
       return NULL;
     }



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