Commit d21aa0d8 authored by Florian Müllner's avatar Florian Müllner
Browse files

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
parent 3e87d699
......@@ -1514,7 +1514,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.
......
......@@ -730,10 +730,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
*/
......
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment