diff options
author | Victor Kareh <[email protected]> | 2021-05-26 14:14:59 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2021-06-04 17:02:28 +0200 |
commit | 60e6fbfb093d63c46ca8e77750c54f31c9780c1c (patch) | |
tree | 5ef3ac5375f5e306676efb3329758eca6fa4c05d /src/core | |
parent | f2ca234719034c5ead3c94b8717913b8a4b67773 (diff) | |
download | marco-60e6fbfb093d63c46ca8e77750c54f31c9780c1c.tar.bz2 marco-60e6fbfb093d63c46ca8e77750c54f31c9780c1c.tar.xz |
iconcache: Use GDesktopAppInfo to find correct application icons
Some files do not report their application icons correctly in the window
properties. This patch allows the marco UI to search for the
corresponding .desktop file and render the icon in the desktop info on
both the alt-tab popup and the window mini-icon.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/iconcache.c | 23 | ||||
-rw-r--r-- | src/core/iconcache.h | 1 | ||||
-rw-r--r-- | src/core/window.c | 1 |
3 files changed, 18 insertions, 7 deletions
diff --git a/src/core/iconcache.c b/src/core/iconcache.c index aa1d4339..a45d3d99 100644 --- a/src/core/iconcache.c +++ b/src/core/iconcache.c @@ -25,6 +25,7 @@ #include "iconcache.h" #include "ui.h" #include "errors.h" +#include "window-private.h" #include <X11/Xatom.h> @@ -690,6 +691,7 @@ scaled_from_pixdata (guchar *pixdata, gboolean meta_read_icons (MetaScreen *screen, Window xwindow, + char *res_name, MetaIconCache *icon_cache, Pixmap wm_hints_pixmap, Pixmap wm_hints_mask, @@ -847,13 +849,20 @@ meta_read_icons (MetaScreen *screen, { icon_cache->fallback_icon_dirty_forced = FALSE; - get_fallback_icons (screen, - iconp, - ideal_width, - ideal_height, - mini_iconp, - ideal_mini_width, - ideal_mini_height); + if (res_name != NULL) + { + *iconp = meta_ui_get_window_icon_from_name (screen->ui, res_name); + *mini_iconp = meta_ui_get_mini_icon_from_name (screen->ui, res_name); + } + + if (*iconp == NULL || *mini_iconp == NULL) + get_fallback_icons (screen, + iconp, + ideal_width, + ideal_height, + mini_iconp, + ideal_mini_width, + ideal_mini_height); replace_cache (icon_cache, USING_FALLBACK_ICON, *iconp, *mini_iconp); diff --git a/src/core/iconcache.h b/src/core/iconcache.h index d46abda0..7e9a1f6d 100644 --- a/src/core/iconcache.h +++ b/src/core/iconcache.h @@ -67,6 +67,7 @@ gboolean meta_icon_cache_get_icon_invalidated (MetaIconCache *icon_cache); gboolean meta_read_icons (MetaScreen *screen, Window xwindow, + char *res_name, MetaIconCache *icon_cache, Pixmap wm_hints_pixmap, Pixmap wm_hints_mask, diff --git a/src/core/window.c b/src/core/window.c index 68ac89ab..b301dbd9 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -6124,6 +6124,7 @@ meta_window_update_icon_now (MetaWindow *window) if (meta_read_icons (window->screen, window->xwindow, + window->res_name, &window->icon_cache, window->wm_hints_pixmap, window->wm_hints_mask, |