From 83e60b905e1a0d1bba70068fb610b3f9cff43ecf Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Sun, 27 Apr 2014 08:16:02 +0000 Subject: [PATCH] gtk3 compat for statusicon git-svn-id: https://xpra.org/svn/Xpra/trunk@6193 3bb7dfac-3a0b-4e04-842a-767bc560f471 --- src/xpra/client/gtk_base/statusicon_tray.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/xpra/client/gtk_base/statusicon_tray.py b/src/xpra/client/gtk_base/statusicon_tray.py index 9a7f9dee3b..af3747c800 100644 --- a/src/xpra/client/gtk_base/statusicon_tray.py +++ b/src/xpra/client/gtk_base/statusicon_tray.py @@ -106,10 +106,20 @@ def set_blinking(self, on): def set_icon_from_data(self, pixels, has_alpha, w, h, rowstride): - tray_icon = gdk.pixbuf_new_from_data(pixels, gdk.COLORSPACE_RGB, has_alpha, 8, w, h, rowstride) + if is_gtk3(): + import array + data = array.array('B', pixels) + from gi.repository import GdkPixbuf #@UnresolvedImport + tray_icon = GdkPixbuf.Pixbuf.new_from_data(data, GdkPixbuf.Colorspace.RGB, + True, 8, w, h, rowstride, + None, None) + interp = GdkPixbuf.InterpType.HYPER + else: + tray_icon = gdk.pixbuf_new_from_data(pixels, gdk.COLORSPACE_RGB, has_alpha, 8, w, h, rowstride) + interp = gtk.gdk.INTERP_HYPER tw, th = self.get_geometry()[2:] if tw!=w or th!=h: - tray_icon = tray_icon.scale_simple(tw, th, gtk.gdk.INTERP_HYPER) + tray_icon = tray_icon.scale_simple(tw, th, interp) self.tray_widget.set_from_pixbuf(tray_icon)