diff options
author | Richard Hult <richard@imendio.com> | 2007-06-16 15:43:23 +0000 |
---|---|---|
committer | Richard Hult <rhult@src.gnome.org> | 2007-06-16 15:43:23 +0000 |
commit | 4fd1fb4d9bc0ef2e3a18d7c60f99deb1d0c466a8 (patch) | |
tree | 1084d4eba53086e75b4cccc28dbfb60c43c272fe | |
parent | 48a45ff672cb084cf72c132bcc50d0c2cfb845d7 (diff) | |
download | gtk+-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | gdk/quartz/gdkevents-quartz.c | 44 |
2 files changed, 31 insertions, 18 deletions
@@ -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); |