[gnome-shell/gnome-3-10] shell-app: Track all application windows



commit e19faff101fe65c47aa20413bfd79e32e3bed971
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Dec 4 17:26:01 2013 +0100

    shell-app: Track all application windows
    
    Filtering out "non-interesting" windows beforehand as we currently do
    means that we may get properties that should be based on all windows,
    like the last time the application was used, wrong.
    Just track all windows and filter out non-interesting windows manually
    in the one place we actually care about the difference.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=719824

 js/ui/appDisplay.js        |    4 +++-
 src/shell-app.c            |    8 ++++----
 src/shell-window-tracker.c |   10 ++--------
 3 files changed, 9 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 22e805a..bae2404 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1498,7 +1498,9 @@ const AppIconMenu = new Lang.Class({
     _redisplay: function() {
         this.removeAll();
 
-        let windows = this._source.app.get_windows();
+        let windows = this._source.app.get_windows().filter(function(w) {
+            return Shell.WindowTracker.is_window_interesting(w);
+        });
 
         // Display the app windows menu items and the separator between windows
         // of the current desktop and other windows.
diff --git a/src/shell-app.c b/src/shell-app.c
index fdc7f3f..0a919b9 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -739,10 +739,10 @@ shell_app_compare_windows (gconstpointer   a,
  * shell_app_get_windows:
  * @app:
  *
- * Get the toplevel, interesting windows which are associated with this
- * application.  The returned list will be sorted first by whether
- * they're on the active workspace, then by whether they're visible,
- * and finally by the time the user last interacted with them.
+ * Get the windows which are associated with this application. The
+ * returned list will be sorted first by whether they're on the
+ * active workspace, then by whether they're visible, and finally
+ * by the time the user last interacted with them.
  *
  * Returns: (transfer none) (element-type MetaWindow): List of windows
  */
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index ed9d9b4..6ec6b49 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -489,9 +489,6 @@ track_window (ShellWindowTracker *self,
 {
   ShellApp *app;
 
-  if (!shell_window_tracker_is_window_interesting (window))
-    return;
-
   app = get_app_for_window (self, window);
   if (!app)
     return;
@@ -530,11 +527,8 @@ disassociate_window (ShellWindowTracker   *self,
 
   g_hash_table_remove (self->window_to_app, window);
 
-  if (shell_window_tracker_is_window_interesting (window))
-    {
-      _shell_app_remove_window (app, window);
-      g_signal_handlers_disconnect_by_func (window, G_CALLBACK(on_wm_class_changed), self);
-    }
+  _shell_app_remove_window (app, window);
+  g_signal_handlers_disconnect_by_func (window, G_CALLBACK(on_wm_class_changed), self);
 
   g_signal_emit (self, signals[TRACKED_WINDOWS_CHANGED], 0);
 


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