ShellWindowTracker: support looking apps from GApplication IDs
In the new application model, there is one ID shared by GApplication, DBus and .desktop files, so we can use that for the association, instead of fiddling with badly cased wm classes. https://bugzilla.gnome.org/show_bug.cgi?id=706252
This commit is contained in:
parent
2acd23b14c
commit
4a3f020cd9
@ -258,6 +258,27 @@ get_app_from_window_wmclass (MetaWindow *window)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ShellApp *
|
||||||
|
get_app_from_gapplication_id (MetaWindow *window)
|
||||||
|
{
|
||||||
|
ShellApp *app;
|
||||||
|
ShellAppSystem *appsys;
|
||||||
|
const char *id;
|
||||||
|
char *desktop_file;
|
||||||
|
|
||||||
|
appsys = shell_app_system_get_default ();
|
||||||
|
|
||||||
|
id = meta_window_get_gtk_application_id (window);
|
||||||
|
if (!id)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
desktop_file = g_strconcat (id, ".desktop", NULL);
|
||||||
|
app = shell_app_system_lookup_app (appsys, desktop_file);
|
||||||
|
|
||||||
|
g_free (desktop_file);
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get_app_from_window_group:
|
* get_app_from_window_group:
|
||||||
* @monitor: a #ShellWindowTracker
|
* @monitor: a #ShellWindowTracker
|
||||||
@ -374,6 +395,13 @@ get_app_for_window (ShellWindowTracker *tracker,
|
|||||||
if (meta_window_is_remote (window))
|
if (meta_window_is_remote (window))
|
||||||
return _shell_app_new_for_window (window);
|
return _shell_app_new_for_window (window);
|
||||||
|
|
||||||
|
/* Check if the window has a GApplication ID attached; this is
|
||||||
|
* canonical if it does
|
||||||
|
*/
|
||||||
|
result = get_app_from_gapplication_id (window);
|
||||||
|
if (result != NULL)
|
||||||
|
return result;
|
||||||
|
|
||||||
/* Check if the app's WM_CLASS specifies an app; this is
|
/* Check if the app's WM_CLASS specifies an app; this is
|
||||||
* canonical if it does.
|
* canonical if it does.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user