aboutsummaryrefslogtreecommitdiffstats
path: root/meta-xfce/recipes-xfce/xfce4-panel/files/0002-systray-Fix-icons-without-compositing-Bug-14577.patch
blob: 8fac5ad81d41a1684f3be1babcadd5ef0ec9fff6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From f6f70cce417fd2982c2ce6f01016ed01deb6a9ae Mon Sep 17 00:00:00 2001
From: "Ivan A. Melnikov" <iv@altlinux.org>
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.

Upstream-Status: Accepted [1]

[1] https://git.xfce.org/xfce/xfce4-panel/commit?id=f6f70cce417fd2982c2ce6f01016ed01deb6a9ae

Refs: https://bugzilla.xfce.org/show_bug.cgi?id=14577
Signed-off-by: Ivan A. Melnikov <iv@altlinux.org>
---
 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