[gtk+/client-side-windows: 241/284] Don't ignore all events when inactive, only clicks



commit 6d1a8853c408c3bcaea714e608f8eecc69434e62
Author: Richard Hult <richard imendio com>
Date:   Tue Feb 3 18:47:09 2009 +0100

    Don't ignore all events when inactive, only clicks
---
 gdk/quartz/gdkevents-quartz.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 1c3a177..a9f3154 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -889,12 +889,6 @@ gdk_event_translate (GdkEvent *event,
   int x_root, y_root;
   gboolean return_val;
 
-  /* Ignore events altogether when we're not active, otherwise we get
-   * tooltips etc for inactive apps.
-   */
-  if (![NSApp isActive])
-    return FALSE;
-
   /* There is no support for real desktop wide grabs, so we break
    * grabs when the application loses focus (gets deactivated).
    */
@@ -990,9 +984,9 @@ gdk_event_translate (GdkEvent *event,
 	}
     }
 
-  /* We only activate the application on click if it's not already active,
-   * or if it's active but the window isn't focused. This matches most use
-   * cases of native apps (no click-through).
+  /* If the app is not active, or the window (when not grabbed) is not
+   * active, leave the event to AppKit so the window gets focused correctly
+   * and don't do click-through (so we behave like most native apps).
    */
   if ((event_type == NSRightMouseDown ||
        event_type == NSOtherMouseDown ||
@@ -1002,7 +996,10 @@ gdk_event_translate (GdkEvent *event,
       GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
 
       if (![NSApp isActive])
-        return FALSE;
+        {
+          [NSApp activateIgnoringOtherApps:YES];
+          return FALSE;
+        }
       else if (![impl->toplevel isKeyWindow])
         return FALSE;
     }



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