[gnome-shell] window-tracker: Be more cautious when setting focus app



commit 2663e1be5d27de6fa5ad0c0e1a23d1d2108084db
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Jan 24 10:26:49 2014 -0500

    window-tracker: Be more cautious when setting focus app
    
    Since we started tracking non-interesting windows, we can no longer
    assume that if we manage to find an app associated with the focus window,
    it should appear focused - we now can find apps for docks, the DESKTOP
    window etc.
    To restore the old behavior, make sure that the focus window or one of
    its parents is "interesting".
    
    https://bugzilla.gnome.org/show_bug.cgi?id=722928

 src/shell-window-tracker.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index 3e0ea83..2b82201 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -424,6 +424,16 @@ update_focus_app (ShellWindowTracker *self)
   ShellApp *new_focus_app;
 
   new_focus_win = meta_display_get_focus_window (shell_global_get_display (shell_global_get ()));
+
+  /* we only consider an app focused if the focus window can be clearly
+   * associated with a running app; this is the case if the focus window
+   * or one of its parents is visible in the taskbar, e.g.
+   *   - 'nautilus' should appear focused when its about dialog has focus
+   *   - 'nautilus' should not appear focused when the DESKTOP has focus
+   */
+  while (new_focus_win && meta_window_is_skip_taskbar (new_focus_win))
+    new_focus_win = meta_window_get_transient_for (new_focus_win);
+
   new_focus_app = new_focus_win ? shell_window_tracker_get_window_app (self, new_focus_win) : NULL;
 
   if (new_focus_app)


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