app: Consider minimized windows for app comparisons
We used to take window visibility into account when comparing apps
until commit 1dfc38d078
, following changes in the window switcher
due to auto-minimization. However auto-minimization was abolished
and the window switcher changes reverted, so it makes sense again
to sort apps without non-minimized windows last again.
https://bugzilla.gnome.org/show_bug.cgi?id=766238
This commit is contained in:
parent
513dff45c1
commit
84da49c715
@ -722,6 +722,23 @@ shell_app_get_last_user_time (ShellApp *app)
|
|||||||
return (int)last_user_time;
|
return (int)last_user_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
shell_app_is_minimized (ShellApp *app)
|
||||||
|
{
|
||||||
|
GSList *iter;
|
||||||
|
|
||||||
|
if (app->running_state == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (iter = app->running_state->windows; iter; iter = iter->next)
|
||||||
|
{
|
||||||
|
if (meta_window_showing_on_its_workspace (iter->data))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_compare:
|
* shell_app_compare:
|
||||||
* @app:
|
* @app:
|
||||||
@ -729,13 +746,17 @@ shell_app_get_last_user_time (ShellApp *app)
|
|||||||
*
|
*
|
||||||
* Compare one #ShellApp instance to another, in the following way:
|
* Compare one #ShellApp instance to another, in the following way:
|
||||||
* - Running applications sort before not-running applications.
|
* - Running applications sort before not-running applications.
|
||||||
* - The application which the user interacted with most recently
|
* - If one of them has non-minimized windows and the other does not,
|
||||||
|
* the one with visible windows is first.
|
||||||
|
* - Finally, the application which the user interacted with most recently
|
||||||
* compares earlier.
|
* compares earlier.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
shell_app_compare (ShellApp *app,
|
shell_app_compare (ShellApp *app,
|
||||||
ShellApp *other)
|
ShellApp *other)
|
||||||
{
|
{
|
||||||
|
gboolean min_app, min_other;
|
||||||
|
|
||||||
if (app->state != other->state)
|
if (app->state != other->state)
|
||||||
{
|
{
|
||||||
if (app->state == SHELL_APP_STATE_RUNNING)
|
if (app->state == SHELL_APP_STATE_RUNNING)
|
||||||
@ -743,6 +764,16 @@ shell_app_compare (ShellApp *app,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
min_app = shell_app_is_minimized (app);
|
||||||
|
min_other = shell_app_is_minimized (other);
|
||||||
|
|
||||||
|
if (min_app != min_other)
|
||||||
|
{
|
||||||
|
if (min_other)
|
||||||
|
return -1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (app->state == SHELL_APP_STATE_RUNNING)
|
if (app->state == SHELL_APP_STATE_RUNNING)
|
||||||
{
|
{
|
||||||
if (app->running_state->windows && !other->running_state->windows)
|
if (app->running_state->windows && !other->running_state->windows)
|
||||||
|
Loading…
Reference in New Issue
Block a user