From 1d0b720d7f09a427d18b133ca3d32ed6a508bcdf Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 25 Nov 2011 11:38:26 +0000 Subject: Properly update the 'simple' theme We have to call the callback manually to update the theme when it's changed. Also make sure that style-set signal is only connected once and we update the theme only if the 'simple' one is used. https://bugzilla.gnome.org/show_bug.cgi?id=664795 --- diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c index c771392..bf22a3f 100644 --- a/libempathy-gtk/empathy-theme-manager.c +++ b/libempathy-gtk/empathy-theme-manager.c @@ -188,6 +188,8 @@ theme_manager_create_irc_view (EmpathyThemeManager *manager) return theme; } +static void on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self); + static EmpathyThemeBoxes * theme_manager_create_boxes_view (EmpathyThemeManager *manager) { @@ -200,6 +202,9 @@ theme_manager_create_boxes_view (EmpathyThemeManager *manager) theme_manager_view_weak_notify_cb, &priv->boxes_views); + g_signal_connect (G_OBJECT (theme), "style-set", + G_CALLBACK (on_style_set_cb), manager); + return theme; } @@ -298,14 +303,20 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme, } static void -on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data) +on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self) { + EmpathyThemeManagerPriv *priv = GET_PRIV (self); GtkStyle *style; gchar color1[10]; gchar color2[10]; gchar color3[10]; gchar color4[10]; + /* The simple theme depends on the current GTK+ theme so it has to be + * updated if the theme changes. */ + if (tp_strdiff (priv->name, "simple")) + return; + style = gtk_widget_get_style (GTK_WIDGET (widget)); theme_manager_gdk_color_to_hex (&style->base[GTK_STATE_SELECTED], color1); @@ -333,8 +344,7 @@ theme_manager_update_boxes_theme (EmpathyThemeManager *manager, EmpathyThemeManagerPriv *priv = GET_PRIV (manager); if (strcmp (priv->name, "simple") == 0) { - g_signal_connect (G_OBJECT (theme), "style-set", - G_CALLBACK (on_style_set_cb), theme); + on_style_set_cb (GTK_WIDGET (theme), NULL, manager); } else if (strcmp (priv->name, "clean") == 0) { theme_manager_update_boxes_tags (theme, -- cgit v0.9.0.2 From 457cdd199d2aa20cbebcc25ea305137ce7b0f440 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Tue, 22 Nov 2011 14:42:11 +0000 Subject: don't ignore TP_DELIVERY_STATUS_TEMPORARILY_FAILED delivery report We should display an error message as well if not the user will assume the message has been sent and the spinner keeps spinning. https://bugzilla.gnome.org/show_bug.cgi?id=664564 --- diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 2285f3f..f65f25d 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -375,7 +375,8 @@ handle_delivery_report (EmpathyTpChat *self, tp_chat_set_delivery_status (self, delivery_token, EMPATHY_DELIVERY_STATUS_NONE); goto out; - } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED) { + } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED && + delivery_status != TP_DELIVERY_STATUS_TEMPORARILY_FAILED) { goto out; } -- cgit v0.9.0.2 From 641a6b06225cd00f62001d041316e72535662306 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Wed, 30 Nov 2011 11:55:29 +0000 Subject: ui-utils: don't expect that cancellable is not NULL cancellable are always optional so this code should be NULL safe. --- diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index d5f63c9..2b9f5cf 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -549,7 +549,8 @@ pixbuf_avatar_from_individual_closure_new (FolksIndividual *individual, closure->result = g_object_ref (result); closure->width = width; closure->height = height; - closure->cancellable = g_object_ref (cancellable); + if (cancellable != NULL) + closure->cancellable = g_object_ref (cancellable); return closure; } @@ -558,7 +559,7 @@ static void pixbuf_avatar_from_individual_closure_free ( PixbufAvatarFromIndividualClosure *closure) { - g_object_unref (closure->cancellable); + g_clear_object (&closure->cancellable); tp_clear_object (&closure->loader); g_object_unref (closure->individual); g_object_unref (closure->result); -- cgit v0.9.0.2