summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hult <richard@imendio.com>2007-06-16 15:43:23 +0000
committerRichard Hult <rhult@src.gnome.org>2007-06-16 15:43:23 +0000
commit4fd1fb4d9bc0ef2e3a18d7c60f99deb1d0c466a8 (patch)
tree1084d4eba53086e75b4cccc28dbfb60c43c272fe
parent48a45ff672cb084cf72c132bcc50d0c2cfb845d7 (diff)
downloadgtk+-4fd1fb4d9bc0ef2e3a18d7c60f99deb1d0c466a8.tar.gz
Break out into a separate function.
2007-06-16 Richard Hult <richard@imendio.com> * gdk/quartz/gdkevents-quartz.c (gdk_event_translate) (break_all_grabs): Break out into a separate function. svn path=/trunk/; revision=18160
-rw-r--r--ChangeLog5
-rw-r--r--gdk/quartz/gdkevents-quartz.c44
2 files changed, 31 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 7af406dec4..e8cc13742d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-06-16 Richard Hult <richard@imendio.com>
+ * gdk/quartz/gdkevents-quartz.c (gdk_event_translate)
+ (break_all_grabs): Break out into a separate function.
+
+2007-06-16 Richard Hult <richard@imendio.com>
+
* gdk/quartz/GdkQuartzWindow.c: (isInMove): Implement, to be used
to detect if the window is currently being moved with the mouse.
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 536b0c65ec..6b4e673969 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -253,6 +253,31 @@ gdk_pointer_grab (GdkWindow *window,
confine_to, cursor, FALSE);
}
+/* This is used to break any grabs in the case where we have to due to
+ * the grab emulation. Instead of enforcing the desktop wide grab, we
+ * break it when the app loses focus for example.
+ */
+static void
+break_all_grabs (void)
+{
+ if (_gdk_quartz_keyboard_grab_window)
+ {
+ generate_grab_broken_event (_gdk_quartz_keyboard_grab_window,
+ TRUE, FALSE,
+ NULL);
+ g_object_unref (_gdk_quartz_keyboard_grab_window);
+ _gdk_quartz_keyboard_grab_window = NULL;
+ }
+
+ if (_gdk_quartz_pointer_grab_window)
+ {
+ generate_grab_broken_event (_gdk_quartz_pointer_grab_window,
+ FALSE, pointer_grab_implicit,
+ NULL);
+ pointer_ungrab_internal (FALSE);
+ }
+}
+
static void
fixup_event (GdkEvent *event)
{
@@ -1481,24 +1506,7 @@ gdk_event_translate (NSEvent *nsevent)
if ([nsevent type] == NSAppKitDefined)
{
if ([nsevent subtype] == NSApplicationDeactivatedEventType)
- {
- if (_gdk_quartz_keyboard_grab_window)
- {
- generate_grab_broken_event (_gdk_quartz_keyboard_grab_window,
- TRUE, FALSE,
- NULL);
- g_object_unref (_gdk_quartz_keyboard_grab_window);
- _gdk_quartz_keyboard_grab_window = NULL;
- }
-
- if (_gdk_quartz_pointer_grab_window)
- {
- generate_grab_broken_event (_gdk_quartz_pointer_grab_window,
- FALSE, pointer_grab_implicit,
- NULL);
- pointer_ungrab_internal (FALSE);
- }
- }
+ break_all_grabs ();
}
window = find_window_for_ns_event (nsevent, &x, &y);