[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