[gnome-shell] app: Use better icon for wayland window-backed apps
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] app: Use better icon for wayland window-backed apps
- Date: Thu, 23 Jan 2020 18:33:37 +0000 (UTC)
commit d9b3d6745ce48288ee51b1503bcb2d659b9f810a
Author: Florian Müllner <fmuellner gnome org>
Date: Thu Jan 23 17:15:08 2020 +0100
app: Use better icon for wayland window-backed apps
For window-backed apps (read: windows we can't match to a .desktop
file), we use the window's icon property as icon. However there is
no such property on wayland (at least in the protocols we support),
so we end up with a blank actor in that case.
Do better than that, and pick a generic fallback icon instead.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1779
src/shell-app.c | 28 +++++++++++++++++++++-------
1 file changed, 21 insertions(+), 7 deletions(-)
---
diff --git a/src/shell-app.c b/src/shell-app.c
index 5704f75b1c..0d314bbb3c 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -186,7 +186,7 @@ window_backed_app_get_icon (ShellApp *app,
{
MetaWindow *window = NULL;
StWidget *widget;
- gint scale;
+ int scale, scaled_size;
ShellGlobal *global;
StThemeContext *context;
@@ -194,7 +194,7 @@ window_backed_app_get_icon (ShellApp *app,
context = st_theme_context_get_for_stage (shell_global_get_stage (global));
g_object_get (context, "scale-factor", &scale, NULL);
- size *= scale;
+ scaled_size = size * scale;
/* During a state transition from running to not-running for
* window-backend apps, it's possible we get a request for the icon.
@@ -208,14 +208,28 @@ window_backed_app_get_icon (ShellApp *app,
ClutterActor *actor;
actor = clutter_actor_new ();
- g_object_set (actor, "opacity", 0, "width", (float) size, "height", (float) size, NULL);
+ g_object_set (actor,
+ "opacity", 0,
+ "width", (float) scaled_size,
+ "height", (float) scaled_size,
+ NULL);
return actor;
}
- widget = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
- G_OBJECT (window),
- "icon",
- size);
+ if (meta_window_get_client_type (window) == META_WINDOW_CLIENT_TYPE_X11)
+ {
+ widget = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
+ G_OBJECT (window),
+ "icon",
+ scaled_size);
+ }
+ else
+ {
+ widget = g_object_new (ST_TYPE_ICON,
+ "icon-size", size,
+ "icon-name", "application-x-executable",
+ NULL);
+ }
st_widget_add_style_class_name (widget, "fallback-app-icon");
return CLUTTER_ACTOR (widget);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]