gnome-shell/0001-windowPreview-Override-with-window-icon-if-available.patch
Florian Müllner b1227a1d04
Re-apply downstream patches
Not all patches have been upstreamed, so re-apply the changes from
RHEL 9 that are still relevant.

Downstream branding will be different in RHEL 10, so it has been
left out for now and will be handled in a separate issue.

Resolves: RHEL-32989
2024-04-16 20:51:39 +02:00

47 lines
1.6 KiB
Diff

From 4a18727ea97fbb676b90183c2154d4cc316133a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 7 Mar 2024 18:22:32 +0100
Subject: [PATCH] windowPreview: Override with window icon if available
---
js/ui/windowPreview.js | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/js/ui/windowPreview.js b/js/ui/windowPreview.js
index d865e6e25b..889dc18797 100644
--- a/js/ui/windowPreview.js
+++ b/js/ui/windowPreview.js
@@ -133,6 +133,12 @@ export const WindowPreview = GObject.registerClass({
const tracker = Shell.WindowTracker.get_default();
const app = tracker.get_window_app(this.metaWindow);
this._icon = app.create_icon_texture(ICON_SIZE);
+ // Override with window icon if available
+ if (this._hasWindowIcon()) {
+ const textureCache = St.TextureCache.get_default();
+ this._icon.gicon = textureCache.bind_cairo_surface_property(
+ this.metaWindow, 'icon');
+ }
this._icon.add_style_class_name('icon-dropshadow');
this._icon.set({
reactive: true,
@@ -234,6 +240,16 @@ export const WindowPreview = GObject.registerClass({
});
}
+ _hasWindowIcon() {
+ // HACK: GI cannot handle CairoSurface, so this
+ // will throw if the icon property is non-null
+ try {
+ return this.metaWindow.icon !== null;
+ } catch (e) {
+ return true;
+ }
+ }
+
_updateIconScale() {
const {ControlsState} = OverviewControls;
const {currentState, initialState, finalState} =
--
2.44.0