[arch-commits] Commit in notification-daemon/trunk (5 files)

Balló György bgyorgy at archlinux.org
Wed Oct 8 22:13:52 UTC 2014


    Date: Thursday, October 9, 2014 @ 00:13:52
  Author: bgyorgy
Revision: 120414

upgpkg: notification-daemon 0.7.6-3

Fix some critical bugs

Added:
  notification-daemon/trunk/fix-boolean-hint.patch
  notification-daemon/trunk/fix-gsource-usage.patch
  notification-daemon/trunk/fix-position.patch
Modified:
  notification-daemon/trunk/PKGBUILD
Deleted:
  notification-daemon/trunk/notification-daemon.install

-----------------------------+
 PKGBUILD                    |   35 +++++++++--
 fix-boolean-hint.patch      |  104 ++++++++++++++++++++++++++++++++++
 fix-gsource-usage.patch     |   49 ++++++++++++++++
 fix-position.patch          |  128 ++++++++++++++++++++++++++++++++++++++++++
 notification-daemon.install |   22 -------
 5 files changed, 309 insertions(+), 29 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2014-10-08 20:01:11 UTC (rev 120413)
+++ PKGBUILD	2014-10-08 22:13:52 UTC (rev 120414)
@@ -1,20 +1,41 @@
 # $Id$
-# Maintainer: Jan de Groot <jgc at archlinux.org>
+# Contributor: Jan de Groot <jgc at archlinux.org>
 # Contributor: Mark Rosenstand <mark at borkware.net>
 
 pkgname=notification-daemon
 pkgver=0.7.6
-pkgrel=2
+pkgrel=3
 pkgdesc="Notification daemon for the desktop notifications framework"
 arch=(i686 x86_64)
 license=(GPL)
-url="http://www.galago-project.org/specs/notification/"
+url="http://www.gnome.org/"
 depends=(gtk3 libcanberra)
-makedepends=(pkgconfig intltool)
-options=('!emptydirs')
-source=(http://download.gnome.org/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('64d0ce6fb12c94c3b73b701502c804c408cb5a94580bcae5ac37607639f7a0b3')
+makedepends=(intltool)
+source=(http://download.gnome.org/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.xz
+        fix-boolean-hint.patch
+        fix-gsource-usage.patch
+        fix-position.patch)
+sha256sums=('64d0ce6fb12c94c3b73b701502c804c408cb5a94580bcae5ac37607639f7a0b3'
+            'ba4e4fe42d82034cd12cb10d1c3c9c6f4318b5d9e10e7829ec0478b6ce801282'
+            '2c36bb0c77f27345f18240c7ba39aff7e559fd5155c54d83bc18e21ca13ce9ff'
+            'a4e5ed7cdf42a137b1672b8128eb7a754ceece57243a02e0dc4dd977911beea2')
 
+prepare() {
+    cd ${pkgname}-${pkgver}
+
+    # Avoid crashes for boolean hints
+    # https://bugzilla.gnome.org/show_bug.cgi?id=665166
+    patch -Np1 -i ../fix-boolean-hint.patch
+
+    # Fix GSource usage with recent GLib
+    # https://bugzilla.gnome.org/show_bug.cgi?id=728157
+    patch -Np1 -i ../fix-gsource-usage.patch
+
+    # Fix positioning notifications with long text
+    # https://bugzilla.gnome.org/show_bug.cgi?id=687724
+    patch -Np1 -i ../fix-position.patch
+}
+
 build() {
     cd ${pkgname}-${pkgver}
     ./configure --prefix=/usr --sysconfdir=/etc \

Added: fix-boolean-hint.patch
===================================================================
--- fix-boolean-hint.patch	                        (rev 0)
+++ fix-boolean-hint.patch	2014-10-08 22:13:52 UTC (rev 120414)
@@ -0,0 +1,104 @@
+From 9eb0d66eb763ecd3f232b7fd65287835c3ac5bcf Mon Sep 17 00:00:00 2001
+From: anomie at users.sourceforge.net
+Date: Wed, 8 Oct 2014 23:40:59 +0200
+Subject: [PATCH] Avoid crashes for boolean hints
+
+Check the type of the incoming hint and use the appropriate
+g_variant_get_* function.
+It also applies the same fix for the "resident" and "action-icons"
+hints.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=665166
+---
+ src/nd-notification.c | 55 +++++++++++++++++++++++++--------------------------
+ 1 file changed, 27 insertions(+), 28 deletions(-)
+
+diff --git a/src/nd-notification.c b/src/nd-notification.c
+index 05372d0..fdb2c2b 100644
+--- a/src/nd-notification.c
++++ b/src/nd-notification.c
+@@ -224,54 +224,53 @@ nd_notification_get_is_closed (NdNotification *notification)
+ }
+ 
+ gboolean
+-nd_notification_get_is_transient (NdNotification *notification)
++nd_notification_get_bool (NdNotification *notification, const char *name)
+ {
+         gboolean  ret;
+         GVariant *value;
+-
+         ret = FALSE;
+         g_return_val_if_fail (ND_IS_NOTIFICATION (notification), FALSE);
+ 
+-        value = g_hash_table_lookup (notification->hints, "transient");
++        value = g_hash_table_lookup (notification->hints, name);
+         if (value != NULL) {
+-                ret = g_variant_get_boolean (value);
++                if (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) {
++                        ret = g_variant_get_boolean (value);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_BYTE)) {
++                        ret = (g_variant_get_byte (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_INT16)) {
++                        ret = (g_variant_get_int16 (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_UINT16)) {
++                        ret = (g_variant_get_uint16 (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_INT32)) {
++                        ret = (g_variant_get_int32 (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_UINT32)) {
++                        ret = (g_variant_get_uint32 (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)) {
++                        ret = (g_variant_get_int64 (value) != 0);
++                } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_UINT64)) {
++                        ret = (g_variant_get_uint64 (value) != 0);
++                }
+         }
+ 
+         return ret;
+ }
+ 
+ gboolean
+-nd_notification_get_is_resident (NdNotification *notification)
++nd_notification_get_is_transient (NdNotification *notification)
+ {
+-        gboolean  ret;
+-        GVariant *value;
+-
+-        ret = FALSE;
+-        g_return_val_if_fail (ND_IS_NOTIFICATION (notification), FALSE);
+-
+-        value = g_hash_table_lookup (notification->hints, "resident");
+-        if (value != NULL) {
+-                ret = g_variant_get_boolean (value);
+-        }
++        return nd_notification_get_bool (notification, "transient");
++}
+ 
+-        return ret;
++gboolean
++nd_notification_get_is_resident (NdNotification *notification)
++{
++        return nd_notification_get_bool (notification, "resident");
+ }
+ 
+ gboolean
+ nd_notification_get_action_icons (NdNotification *notification)
+ {
+-        gboolean  ret;
+-        GVariant *value;
+-
+-        ret = FALSE;
+-        g_return_val_if_fail (ND_IS_NOTIFICATION (notification), FALSE);
+-
+-        value = g_hash_table_lookup (notification->hints, "action-icons");
+-        if (value != NULL) {
+-                ret = g_variant_get_boolean (value);
+-        }
+-
+-        return ret;
++        return nd_notification_get_bool (notification, "action-icons");
+ }
+ 
+ guint32
+-- 
+2.1.2
+

Added: fix-gsource-usage.patch
===================================================================
--- fix-gsource-usage.patch	                        (rev 0)
+++ fix-gsource-usage.patch	2014-10-08 22:13:52 UTC (rev 120414)
@@ -0,0 +1,49 @@
+From 7e458afddc7c57eba5c392a7a89990600a070ae5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor at gmail.com>
+Date: Wed, 8 Oct 2014 23:35:37 +0200
+Subject: [PATCH] Fix GSource usage with recent GLib
+
+https://bugzilla.gnome.org/show_bug.cgi?id=728157
+---
+ src/nd-bubble.c | 1 +
+ src/nd-queue.c  | 5 +++++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/src/nd-bubble.c b/src/nd-bubble.c
+index 0587478..6de7f8f 100644
+--- a/src/nd-bubble.c
++++ b/src/nd-bubble.c
+@@ -420,6 +420,7 @@ nd_bubble_enter_notify_event (GtkWidget        *widget,
+         NdBubble *bubble = ND_BUBBLE (widget);
+         if (bubble->priv->timeout_id != 0) {
+                 g_source_remove (bubble->priv->timeout_id);
++                bubble->priv->timeout_id = 0;
+         }
+ 
+         return FALSE;
+diff --git a/src/nd-queue.c b/src/nd-queue.c
+index de73940..b744b88 100644
+--- a/src/nd-queue.c
++++ b/src/nd-queue.c
+@@ -532,6 +532,10 @@ nd_queue_finalize (GObject *object)
+ 
+         g_return_if_fail (queue->priv != NULL);
+ 
++        if (queue->priv->update_id != 0) {
++                g_source_remove (queue->priv->update_id);
++        }
++
+         g_hash_table_destroy (queue->priv->notifications);
+         g_queue_free (queue->priv->queue);
+ 
+@@ -919,6 +923,7 @@ update_idle (NdQueue *queue)
+                 }
+         }
+ 
++        queue->priv->update_id = 0;
+         return FALSE;
+ }
+ 
+-- 
+2.1.2
+

Added: fix-position.patch
===================================================================
--- fix-position.patch	                        (rev 0)
+++ fix-position.patch	2014-10-08 22:13:52 UTC (rev 120414)
@@ -0,0 +1,128 @@
+From cef286903c24795e72cae8795c7b433b6baf9f57 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor at gmail.com>
+Date: Wed, 8 Oct 2014 23:57:34 +0200
+Subject: [PATCH] Fix positioning notifications with long text
+
+https://bugzilla.gnome.org/show_bug.cgi?id=687724
+---
+ src/nd-bubble.c           | 13 +++++++++++++
+ src/nd-notification-box.c |  2 ++
+ src/nd-stack.c            | 16 ++++++++--------
+ 3 files changed, 23 insertions(+), 8 deletions(-)
+
+diff --git a/src/nd-bubble.c b/src/nd-bubble.c
+index 0587478..2d36003 100644
+--- a/src/nd-bubble.c
++++ b/src/nd-bubble.c
+@@ -413,6 +413,16 @@ nd_bubble_realize (GtkWidget *widget)
+         GTK_WIDGET_CLASS (nd_bubble_parent_class)->realize (widget);
+ }
+ 
++static void
++nd_bubble_get_preferred_width (GtkWidget *widget,
++                               gint *min_width,
++                               gint *nat_width)
++{
++        if (nat_width != NULL) {
++                 *nat_width = WIDTH;
++        }
++}
++
+ static gboolean
+ nd_bubble_enter_notify_event (GtkWidget        *widget,
+                               GdkEventCrossing *event)
+@@ -450,6 +460,7 @@ nd_bubble_class_init (NdBubbleClass *klass)
+         widget_class->enter_notify_event = nd_bubble_enter_notify_event;
+         widget_class->leave_notify_event = nd_bubble_leave_notify_event;
+         widget_class->realize = nd_bubble_realize;
++        widget_class->get_preferred_width = nd_bubble_get_preferred_width;
+ 
+         g_type_class_add_private (klass, sizeof (NdBubblePrivate));
+ }
+@@ -622,6 +633,7 @@ nd_bubble_init (NdBubble *bubble)
+         gtk_box_pack_start (GTK_BOX (vbox), bubble->priv->summary_label, TRUE, TRUE, 0);
+         gtk_misc_set_alignment (GTK_MISC (bubble->priv->summary_label), 0, 0);
+         gtk_label_set_line_wrap (GTK_LABEL (bubble->priv->summary_label), TRUE);
++        gtk_label_set_line_wrap_mode (GTK_LABEL (bubble->priv->summary_label), PANGO_WRAP_WORD_CHAR);
+ 
+         atkobj = gtk_widget_get_accessible (bubble->priv->summary_label);
+         atk_object_set_description (atkobj, "Notification summary text.");
+@@ -644,6 +656,7 @@ nd_bubble_init (NdBubble *bubble)
+         gtk_box_pack_start (GTK_BOX (vbox), bubble->priv->body_label, TRUE, TRUE, 0);
+         gtk_misc_set_alignment (GTK_MISC (bubble->priv->body_label), 0, 0);
+         gtk_label_set_line_wrap (GTK_LABEL (bubble->priv->body_label), TRUE);
++        gtk_label_set_line_wrap_mode (GTK_LABEL (bubble->priv->body_label), PANGO_WRAP_WORD_CHAR);
+         g_signal_connect (bubble->priv->body_label,
+                           "activate-link",
+                           G_CALLBACK (on_activate_link),
+diff --git a/src/nd-notification-box.c b/src/nd-notification-box.c
+index 352c515..12267a9 100644
+--- a/src/nd-notification-box.c
++++ b/src/nd-notification-box.c
+@@ -336,6 +336,7 @@ nd_notification_box_init (NdNotificationBox *notification_box)
+         gtk_box_pack_start (GTK_BOX (vbox), notification_box->priv->summary_label, TRUE, TRUE, 0);
+         gtk_misc_set_alignment (GTK_MISC (notification_box->priv->summary_label), 0, 0);
+         gtk_label_set_line_wrap (GTK_LABEL (notification_box->priv->summary_label), TRUE);
++        gtk_label_set_line_wrap_mode (GTK_LABEL (notification_box->priv->summary_label), PANGO_WRAP_WORD_CHAR);
+ 
+         atkobj = gtk_widget_get_accessible (notification_box->priv->summary_label);
+         atk_object_set_description (atkobj, "Notification summary text.");
+@@ -354,6 +355,7 @@ nd_notification_box_init (NdNotificationBox *notification_box)
+         gtk_box_pack_start (GTK_BOX (vbox), notification_box->priv->body_label, TRUE, TRUE, 0);
+         gtk_misc_set_alignment (GTK_MISC (notification_box->priv->body_label), 0, 0);
+         gtk_label_set_line_wrap (GTK_LABEL (notification_box->priv->body_label), TRUE);
++        gtk_label_set_line_wrap_mode (GTK_LABEL (notification_box->priv->body_label), PANGO_WRAP_WORD_CHAR);
+ 
+         atkobj = gtk_widget_get_accessible (notification_box->priv->body_label);
+         atk_object_set_description (atkobj, "Notification body text.");
+diff --git a/src/nd-stack.c b/src/nd-stack.c
+index 6c03acc..2206dad 100644
+--- a/src/nd-stack.c
++++ b/src/nd-stack.c
+@@ -357,10 +357,10 @@ nd_stack_shift_notifications (NdStack     *stack,
+ 
+         for (i = 0, l = stack->priv->bubbles; l != NULL; i++, l = l->next) {
+                 NdBubble       *nw2 = ND_BUBBLE (l->data);
+-                GtkRequisition  req;
++                GtkRequisition  minimum_size, natural_size;
+ 
+                 if (bubble == NULL || nw2 != bubble) {
+-                        gtk_widget_size_request (GTK_WIDGET (nw2), &req);
++                        gtk_widget_get_preferred_size (GTK_WIDGET (nw2), &minimum_size, &natural_size);
+ 
+                         translate_coordinates (stack->priv->location,
+                                                &workarea,
+@@ -368,8 +368,8 @@ nd_stack_shift_notifications (NdStack     *stack,
+                                                &y,
+                                                &shiftx,
+                                                &shifty,
+-                                               req.width,
+-                                               req.height + NOTIFY_STACK_SPACING);
++                                               natural_size.width,
++                                               natural_size.height + NOTIFY_STACK_SPACING);
+                         positions[i].x = x;
+                         positions[i].y = y;
+                 } else if (nw_l != NULL) {
+@@ -428,15 +428,15 @@ nd_stack_add_bubble (NdStack  *stack,
+                      NdBubble *bubble,
+                      gboolean  new_notification)
+ {
+-        GtkRequisition  req;
++        GtkRequisition  minimum_size, natural_size;
+         int             x, y;
+ 
+-        gtk_widget_size_request (GTK_WIDGET (bubble), &req);
++        gtk_widget_get_preferred_size (GTK_WIDGET (bubble), &minimum_size, &natural_size);
+         nd_stack_shift_notifications (stack,
+                                       bubble,
+                                       NULL,
+-                                      req.width,
+-                                      req.height + NOTIFY_STACK_SPACING,
++                                      natural_size.width,
++                                      natural_size.height + NOTIFY_STACK_SPACING,
+                                       &x,
+                                       &y);
+         gtk_widget_show (GTK_WIDGET (bubble));
+-- 
+2.1.2
+

Deleted: notification-daemon.install
===================================================================
--- notification-daemon.install	2014-10-08 20:01:11 UTC (rev 120413)
+++ notification-daemon.install	2014-10-08 22:13:52 UTC (rev 120414)
@@ -1,22 +0,0 @@
-pkgname=notification-daemon
-
-post_install() {
-  usr/sbin/gconfpkg --install ${pkgname}
-  gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
-}
-
-pre_upgrade() {
-  pre_remove $1
-}
-
-post_upgrade() {
-  post_install $1
-}
-
-pre_remove() {
-  usr/sbin/gconfpkg --uninstall ${pkgname}
-}
-
-post_remove() {
-  gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
-}



More information about the arch-commits mailing list