Re: [oe] [meta-xfce][PATCH 1/2] xfce-panel/systray: Draw icons/background properly when compositing is disabled
On Thu, Sep 26, 2019 at 9:12 AM Andreas Müller wrote: > > * this was the last long lasting xfce bug that annoyed me > * while at it renumber patches > > Signed-off-by: Andreas Müller > --- > ...=> 0002-use-lxdm-to-replace-dm-tool.patch} | 0 > ...-icons-without-compositing-Bug-14577.patch | 80 +++ > .../xfce4-panel/xfce4-panel_4.14.0.bb | 3 +- > 3 files changed, 82 insertions(+), 1 deletion(-) > rename > meta-xfce/recipes-xfce/xfce4-panel/files/{0001-use-lxdm-to-replace-dm-tool.patch > => 0002-use-lxdm-to-replace-dm-tool.patch} (100%) > create mode 100644 > meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch > > diff --git > a/meta-xfce/recipes-xfce/xfce4-panel/files/0001-use-lxdm-to-replace-dm-tool.patch > > b/meta-xfce/recipes-xfce/xfce4-panel/files/0002-use-lxdm-to-replace-dm-tool.patch > similarity index 100% > rename from > meta-xfce/recipes-xfce/xfce4-panel/files/0001-use-lxdm-to-replace-dm-tool.patch > rename to > meta-xfce/recipes-xfce/xfce4-panel/files/0002-use-lxdm-to-replace-dm-tool.patch > diff --git > a/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch > > b/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch > new file mode 100644 > index 0..12cc3f0dc > --- /dev/null > +++ > b/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch > @@ -0,0 +1,80 @@ > +From f6f70cce417fd2982c2ce6f01016ed01deb6a9ae Mon Sep 17 00:00:00 2001 > +From: "Ivan A. Melnikov" > +Date: Mon, 23 Sep 2019 16:18:10 +0400 > +Subject: [PATCH] systray: Fix icons without compositing (Bug #14577) > + > +Wrapper window uses RGBA visual when it's available; > +systray manager should try to do the same for > +the transparent or parent-relative background to work. > + > +That means that the manager and icons will work with > +RGBA visual even if the screen is not compositing; so > +we should always force-redraw the icons. > + > +Refs: https://bugzilla.xfce.org/show_bug.cgi?id=14577 > +Signed-off-by: Ivan A. Melnikov > + > +Upstream-Status: Accepted [1] > + > +[1] > https://git.xfce.org/xfce/xfce4-panel/commit?id=820de57c44c381e47091d3a7e214852bf8fafb53 > +--- > + plugins/systray/systray-manager.c | 10 ++ > + plugins/systray/systray.c | 10 -- > + 2 files changed, 6 insertions(+), 14 deletions(-) > + > +diff --git a/plugins/systray/systray-manager.c > b/plugins/systray/systray-manager.c > +index 68836554..4915649c 100644 > +--- a/plugins/systray/systray-manager.c > b/plugins/systray/systray-manager.c > +@@ -751,6 +751,7 @@ static void > + systray_manager_set_visual (SystrayManager *manager) > + { > + GdkDisplay *display; > ++ GdkVisual *visual; > + Visual *xvisual; > + Atom visual_atom; > + gulong data[1]; > +@@ -768,11 +769,12 @@ systray_manager_set_visual (SystrayManager *manager) > + visual_atom = gdk_x11_get_xatom_by_name_for_display (display, > + "_NET_SYSTEM_TRAY_VISUAL"); > + > +- if (gdk_screen_is_composited (gtk_widget_get_screen (manager->invisible)) > +- && (gdk_screen_get_rgba_visual (screen) != NULL)) > ++ visual = gdk_screen_get_rgba_visual (screen); > ++ panel_debug (PANEL_DEBUG_SYSTRAY, "rgba visual is %p", visual); > ++ if (visual != NULL) > + { > +- /* get the rgba visual */ > +- xvisual = GDK_VISUAL_XVISUAL (gdk_screen_get_rgba_visual (screen)); > ++ /* use the rgba visual */ > ++ xvisual = GDK_VISUAL_XVISUAL (visual); > + } > + else > + { > +diff --git a/plugins/systray/systray.c b/plugins/systray/systray.c > +index 3fb9520c..beae1973 100644 > +--- a/plugins/systray/systray.c > b/plugins/systray/systray.c > +@@ -728,19 +728,9 @@ systray_plugin_box_draw (GtkWidget *box, > + gpointer user_data) > + { > + SystrayPlugin *plugin = XFCE_SYSTRAY_PLUGIN (user_data); > +- GdkScreen *screen; > +- > + panel_return_if_fail (XFCE_IS_SYSTRAY_PLUGIN (plugin)); > + panel_return_if_fail (cr != NULL); > + > +- screen = gtk_widget_get_screen (GTK_WIDGET (plugin)); > +- > +- if (G_LIKELY (screen != NULL)) > +-{ > +- if (!gdk_screen_is_composited (screen)) > +-return; > +-} > +- > + /* separately draw all the composed tray icons after gtk > +* handled the draw event */ > + gtk_container_foreach (GTK_CONTAINER (box), > +-- > +2.21.0 > + > diff --git a/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb > b/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb > index 749c3fea4..faec9b2b7 100644 > --- a/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb > +++ b/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb > @@ -12,7 +12,8 @@ SRC_URI[md5sum] = "940e8b430e28093a2e56e390055bcd51" > SRC_URI[sha256sum] = > "d5f8f3bd7e142139987e5e62cda26135a424baabb5e47aa0c23b4169d0a66ef4" > SRC_URI += "
[oe] [meta-xfce][PATCH 1/2] xfce-panel/systray: Draw icons/background properly when compositing is disabled
* this was the last long lasting xfce bug that annoyed me * while at it renumber patches Signed-off-by: Andreas Müller --- ...=> 0002-use-lxdm-to-replace-dm-tool.patch} | 0 ...-icons-without-compositing-Bug-14577.patch | 80 +++ .../xfce4-panel/xfce4-panel_4.14.0.bb | 3 +- 3 files changed, 82 insertions(+), 1 deletion(-) rename meta-xfce/recipes-xfce/xfce4-panel/files/{0001-use-lxdm-to-replace-dm-tool.patch => 0002-use-lxdm-to-replace-dm-tool.patch} (100%) create mode 100644 meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch diff --git a/meta-xfce/recipes-xfce/xfce4-panel/files/0001-use-lxdm-to-replace-dm-tool.patch b/meta-xfce/recipes-xfce/xfce4-panel/files/0002-use-lxdm-to-replace-dm-tool.patch similarity index 100% rename from meta-xfce/recipes-xfce/xfce4-panel/files/0001-use-lxdm-to-replace-dm-tool.patch rename to meta-xfce/recipes-xfce/xfce4-panel/files/0002-use-lxdm-to-replace-dm-tool.patch diff --git a/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch b/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch new file mode 100644 index 0..12cc3f0dc --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-panel/files/0003-systray-Fix-icons-without-compositing-Bug-14577.patch @@ -0,0 +1,80 @@ +From f6f70cce417fd2982c2ce6f01016ed01deb6a9ae Mon Sep 17 00:00:00 2001 +From: "Ivan A. Melnikov" +Date: Mon, 23 Sep 2019 16:18:10 +0400 +Subject: [PATCH] systray: Fix icons without compositing (Bug #14577) + +Wrapper window uses RGBA visual when it's available; +systray manager should try to do the same for +the transparent or parent-relative background to work. + +That means that the manager and icons will work with +RGBA visual even if the screen is not compositing; so +we should always force-redraw the icons. + +Refs: https://bugzilla.xfce.org/show_bug.cgi?id=14577 +Signed-off-by: Ivan A. Melnikov + +Upstream-Status: Accepted [1] + +[1] https://git.xfce.org/xfce/xfce4-panel/commit?id=820de57c44c381e47091d3a7e214852bf8fafb53 +--- + plugins/systray/systray-manager.c | 10 ++ + plugins/systray/systray.c | 10 -- + 2 files changed, 6 insertions(+), 14 deletions(-) + +diff --git a/plugins/systray/systray-manager.c b/plugins/systray/systray-manager.c +index 68836554..4915649c 100644 +--- a/plugins/systray/systray-manager.c b/plugins/systray/systray-manager.c +@@ -751,6 +751,7 @@ static void + systray_manager_set_visual (SystrayManager *manager) + { + GdkDisplay *display; ++ GdkVisual *visual; + Visual *xvisual; + Atom visual_atom; + gulong data[1]; +@@ -768,11 +769,12 @@ systray_manager_set_visual (SystrayManager *manager) + visual_atom = gdk_x11_get_xatom_by_name_for_display (display, + "_NET_SYSTEM_TRAY_VISUAL"); + +- if (gdk_screen_is_composited (gtk_widget_get_screen (manager->invisible)) +- && (gdk_screen_get_rgba_visual (screen) != NULL)) ++ visual = gdk_screen_get_rgba_visual (screen); ++ panel_debug (PANEL_DEBUG_SYSTRAY, "rgba visual is %p", visual); ++ if (visual != NULL) + { +- /* get the rgba visual */ +- xvisual = GDK_VISUAL_XVISUAL (gdk_screen_get_rgba_visual (screen)); ++ /* use the rgba visual */ ++ xvisual = GDK_VISUAL_XVISUAL (visual); + } + else + { +diff --git a/plugins/systray/systray.c b/plugins/systray/systray.c +index 3fb9520c..beae1973 100644 +--- a/plugins/systray/systray.c b/plugins/systray/systray.c +@@ -728,19 +728,9 @@ systray_plugin_box_draw (GtkWidget *box, + gpointer user_data) + { + SystrayPlugin *plugin = XFCE_SYSTRAY_PLUGIN (user_data); +- GdkScreen *screen; +- + panel_return_if_fail (XFCE_IS_SYSTRAY_PLUGIN (plugin)); + panel_return_if_fail (cr != NULL); + +- screen = gtk_widget_get_screen (GTK_WIDGET (plugin)); +- +- if (G_LIKELY (screen != NULL)) +-{ +- if (!gdk_screen_is_composited (screen)) +-return; +-} +- + /* separately draw all the composed tray icons after gtk +* handled the draw event */ + gtk_container_foreach (GTK_CONTAINER (box), +-- +2.21.0 + diff --git a/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb b/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb index 749c3fea4..faec9b2b7 100644 --- a/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb +++ b/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.14.0.bb @@ -12,7 +12,8 @@ SRC_URI[md5sum] = "940e8b430e28093a2e56e390055bcd51" SRC_URI[sha256sum] = "d5f8f3bd7e142139987e5e62cda26135a424baabb5e47aa0c23b4169d0a66ef4" SRC_URI += " \ file://0001-windowmenu-do-not-display-desktop-icon-when-no-windo.patch \ -file://0001-use-lxdm-to-replace-dm-tool.patch \ +file://0002-use-lxdm-to-replace-dm-tool.patch \ +file://0003-systray-Fix-icons-without-compositing-Bug-14577.patch \ " python populate_packages_prepend() {