[arch-commits] Commit in gtk3/trunk (3 files)

Evangelos Foutras foutrelis at archlinux.org
Sun Apr 12 20:49:25 UTC 2015


    Date: Sunday, April 12, 2015 @ 22:49:24
  Author: foutrelis
Revision: 236320

upgpkg: gtk3 3.16.1-2

- Revert commit that causes nm-applet to fail to load (FS#44504).
- Fix transparency setting for status icons on Xfce.

Added:
  gtk3/trunk/0001-Revert-image-Optimize-non-resize-changes.patch
  gtk3/trunk/0001-x11-Relax-requirements-for-setting-ParentRelative.patch
Modified:
  gtk3/trunk/PKGBUILD

--------------------------------------------------------------+
 0001-Revert-image-Optimize-non-resize-changes.patch          |  233 ++++++++++
 0001-x11-Relax-requirements-for-setting-ParentRelative.patch |   42 +
 PKGBUILD                                                     |   19 
 3 files changed, 291 insertions(+), 3 deletions(-)

Added: 0001-Revert-image-Optimize-non-resize-changes.patch
===================================================================
--- 0001-Revert-image-Optimize-non-resize-changes.patch	                        (rev 0)
+++ 0001-Revert-image-Optimize-non-resize-changes.patch	2015-04-12 20:49:24 UTC (rev 236320)
@@ -0,0 +1,233 @@
+From 7963f689296ad06dff0e0d426bd9324de1dec7aa Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen at redhat.com>
+Date: Wed, 8 Apr 2015 14:18:08 -0400
+Subject: [PATCH] Revert "image: Optimize non-resize changes"
+
+This reverts commit fef7d65685a3a45a47f968cab6b5e5150323f606.
+
+We're still seeing regressions from this, see
+http://bugzilla.redhat.com/show_bug.cgi?id=1208183
+---
+ gtk/gtkimage.c | 107 +++++++++------------------------------------------------
+ 1 file changed, 17 insertions(+), 90 deletions(-)
+
+diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
+index d501aef..5763f06 100644
+--- a/gtk/gtkimage.c
++++ b/gtk/gtkimage.c
+@@ -155,9 +155,6 @@ static void gtk_image_size_allocate        (GtkWidget    *widget,
+ static void gtk_image_unmap                (GtkWidget    *widget);
+ static void gtk_image_realize              (GtkWidget    *widget);
+ static void gtk_image_unrealize            (GtkWidget    *widget);
+-static void gtk_image_get_preferred_size   (GtkImage     *image,
+-                                            gint         *width_out,
+-                                            gint         *height_out);
+ static void gtk_image_get_preferred_width  (GtkWidget    *widget,
+                                             gint         *minimum,
+                                             gint         *natural);
+@@ -937,8 +934,8 @@ gtk_image_set_from_file   (GtkImage    *image,
+   priv = image->priv;
+ 
+   g_object_freeze_notify (G_OBJECT (image));
+-
+-  gtk_image_reset (image);
++  
++  gtk_image_clear (image);
+ 
+   if (filename == NULL)
+     {
+@@ -951,7 +948,9 @@ gtk_image_set_from_file   (GtkImage    *image,
+ 
+   if (anim == NULL)
+     {
+-      gtk_image_set_from_icon_name (image, "image-missing", DEFAULT_ICON_SIZE);
++      gtk_image_set_from_icon_name (image,
++                                    "image-missing",
++                                    DEFAULT_ICON_SIZE);
+       g_object_thaw_notify (G_OBJECT (image));
+       return;
+     }
+@@ -972,21 +971,7 @@ gtk_image_set_from_file   (GtkImage    *image,
+   g_object_unref (anim);
+ 
+   priv->filename = g_strdup (filename);
+-
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+-  g_object_notify (G_OBJECT (image), "file");
+-
++  
+   g_object_thaw_notify (G_OBJECT (image));
+ }
+ 
+@@ -1023,7 +1008,9 @@ gtk_image_set_from_resource (GtkImage    *image,
+ 
+   if (animation == NULL)
+     {
+-      gtk_image_set_from_icon_name (image, "image-missing", DEFAULT_ICON_SIZE);
++      gtk_image_set_from_icon_name (image,
++                                    "image-missing",
++                                    DEFAULT_ICON_SIZE);
+       g_object_thaw_notify (G_OBJECT (image));
+       return;
+     }
+@@ -1059,29 +1046,18 @@ gtk_image_set_from_pixbuf (GtkImage  *image,
+   GtkImagePrivate *priv;
+ 
+   g_return_if_fail (GTK_IS_IMAGE (image));
+-  g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf));
++  g_return_if_fail (pixbuf == NULL ||
++                    GDK_IS_PIXBUF (pixbuf));
+ 
+   priv = image->priv;
+ 
+   g_object_freeze_notify (G_OBJECT (image));
+-
+-  gtk_image_reset (image);
++  
++  gtk_image_clear (image);
+ 
+   if (pixbuf != NULL)
+     _gtk_icon_helper_set_pixbuf (priv->icon_helper, pixbuf);
+ 
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+   g_object_notify (G_OBJECT (image), "pixbuf");
+   
+   g_object_thaw_notify (G_OBJECT (image));
+@@ -1195,7 +1171,7 @@ gtk_image_set_from_animation (GtkImage           *image,
+   if (animation)
+     g_object_ref (animation);
+ 
+-  gtk_image_reset (image);
++  gtk_image_clear (image);
+ 
+   if (animation != NULL)
+     {
+@@ -1203,18 +1179,6 @@ gtk_image_set_from_animation (GtkImage           *image,
+       g_object_unref (animation);
+     }
+ 
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+   g_object_notify (G_OBJECT (image), "pixbuf-animation");
+   
+   g_object_thaw_notify (G_OBJECT (image));
+@@ -1245,8 +1209,7 @@ gtk_image_set_from_icon_name  (GtkImage       *image,
+   g_object_freeze_notify (G_OBJECT (image));
+ 
+   new_name = g_strdup (icon_name);
+-
+-  gtk_image_reset (image);
++  gtk_image_clear (image);
+ 
+   if (new_name)
+     {
+@@ -1254,18 +1217,6 @@ gtk_image_set_from_icon_name  (GtkImage       *image,
+       g_free (new_name);
+     }
+ 
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+   g_object_notify (G_OBJECT (image), "icon-name");
+   g_object_notify (G_OBJECT (image), "icon-size");
+   
+@@ -1298,7 +1249,7 @@ gtk_image_set_from_gicon  (GtkImage       *image,
+   if (icon)
+     g_object_ref (icon);
+ 
+-  gtk_image_reset (image);
++  gtk_image_clear (image);
+ 
+   if (icon)
+     {
+@@ -1306,18 +1257,6 @@ gtk_image_set_from_gicon  (GtkImage       *image,
+       g_object_unref (icon);
+     }
+ 
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+   g_object_notify (G_OBJECT (image), "gicon");
+   g_object_notify (G_OBJECT (image), "icon-size");
+   
+@@ -1348,7 +1287,7 @@ gtk_image_set_from_surface (GtkImage       *image,
+   if (surface)
+     cairo_surface_reference (surface);
+ 
+-  gtk_image_reset (image);
++  gtk_image_clear (image);
+ 
+   if (surface)
+     {
+@@ -1356,18 +1295,6 @@ gtk_image_set_from_surface (GtkImage       *image,
+       cairo_surface_destroy (surface);
+     }
+ 
+-  if (gtk_widget_get_visible (GTK_WIDGET (image)))
+-    {
+-      gint width, height;
+-
+-      gtk_image_get_preferred_size (image, &width, &height);
+-      if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
+-          height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
+-        gtk_widget_queue_resize (GTK_WIDGET (image));
+-      else
+-        gtk_widget_queue_draw (GTK_WIDGET (image));
+-    }
+-
+   g_object_notify (G_OBJECT (image), "surface");
+   
+   g_object_thaw_notify (G_OBJECT (image));
+-- 
+2.3.5
+

Added: 0001-x11-Relax-requirements-for-setting-ParentRelative.patch
===================================================================
--- 0001-x11-Relax-requirements-for-setting-ParentRelative.patch	                        (rev 0)
+++ 0001-x11-Relax-requirements-for-setting-ParentRelative.patch	2015-04-12 20:49:24 UTC (rev 236320)
@@ -0,0 +1,42 @@
+From d1dfc28b21319530ebaad40dfdb1b10bdc527b50 Mon Sep 17 00:00:00 2001
+From: Evangelos Foutras <evangelos at foutrelis.com>
+Date: Sat, 11 Apr 2015 11:20:56 +0300
+Subject: [PATCH] x11: Relax requirements for setting ParentRelative
+
+XSetWindowBackgroundPixmap() will throw BadMatch only in the case of a
+different parent window depth. Different visuals are fine and actually
+expected in Gtk+ 3.16 (since we don't stick to the system default visual
+but try to pick a better one).
+
+https://bugzilla.gnome.org/show_bug.cgi?id=747524
+---
+ gdk/x11/gdkwindow-x11.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
+index 25b5e2b..1ace677 100644
+--- a/gdk/x11/gdkwindow-x11.c
++++ b/gdk/x11/gdkwindow-x11.c
+@@ -2963,15 +2963,15 @@ gdk_window_x11_set_background (GdkWindow      *window,
+     {
+       GdkWindow *parent;
+ 
+-      /* X throws BadMatch if the parent has a different visual when
++      /* X throws BadMatch if the parent has a different depth when
+        * using ParentRelative */
+       parent = gdk_window_get_parent (window);
+-      if (parent && gdk_window_get_visual (parent) == gdk_window_get_visual (window))
++      if (parent && window->depth != parent->depth)
+         XSetWindowBackgroundPixmap (GDK_WINDOW_XDISPLAY (window),
+-                                    GDK_WINDOW_XID (window), ParentRelative);
++                                    GDK_WINDOW_XID (window), None);
+       else
+         XSetWindowBackgroundPixmap (GDK_WINDOW_XDISPLAY (window),
+-                                    GDK_WINDOW_XID (window), None);
++                                    GDK_WINDOW_XID (window), ParentRelative);
+       return;
+     }
+ 
+-- 
+2.3.5
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-04-12 19:47:51 UTC (rev 236319)
+++ PKGBUILD	2015-04-12 20:49:24 UTC (rev 236320)
@@ -4,7 +4,7 @@
 
 pkgname=gtk3
 pkgver=3.16.1
-pkgrel=1
+pkgrel=2
 pkgdesc="GObject-based multi-platform GUI toolkit (v3)"
 arch=(i686 x86_64)
 url="http://www.gtk.org/"
@@ -14,11 +14,24 @@
          adwaita-icon-theme json-glib rest)
 makedepends=(gobject-introspection)
 license=(LGPL)
-source=(https://download.gnome.org/sources/gtk+/${pkgver:0:4}/gtk+-$pkgver.tar.xz)
-sha256sums=('9f9716a8c7f8dc149f767718e25fed41984b504a00fd0919b1a4969ca2e4db31')
+source=(https://download.gnome.org/sources/gtk+/${pkgver:0:4}/gtk+-$pkgver.tar.xz
+        0001-Revert-image-Optimize-non-resize-changes.patch
+        0001-x11-Relax-requirements-for-setting-ParentRelative.patch)
+sha256sums=('9f9716a8c7f8dc149f767718e25fed41984b504a00fd0919b1a4969ca2e4db31'
+            '4e21dd47f520f7a4c5143f34b208c0a24f0bf620d5409d45dbe2901bfa7d5e9a'
+            '94ec473293946e45217ed35e9518c45771bf28f1007962bb749e21906bf0201b')
 
 prepare() {
     cd gtk+-$pkgver
+
+    # revert commit that causes nm-applet to fail to load
+    # https://bugzilla.redhat.com/show_bug.cgi?id=1208183
+    patch -Np1 -i ../0001-Revert-image-Optimize-non-resize-changes.patch
+
+    # fix transparency setting for status icons on Xfce
+    # patch not yet upstream but it should get accepted
+    # https://bugzilla.gnome.org/show_bug.cgi?id=747524
+    patch -Np1 -i ../0001-x11-Relax-requirements-for-setting-ParentRelative.patch
 }
 
 build() {



More information about the arch-commits mailing list