aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-11-11 23:27:42 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-11-11 23:27:42 +0800
commitab3a47aacad985b6dd6816884a20fc5ce039d07d (patch)
tree95ca7e1e9df304928d7dade08b133e03df7d572f
parente8c517ab51aa9f61cb68cb26acd9748d0e6c6059 (diff)
downloadgsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar.gz
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar.bz2
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar.lz
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar.xz
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.tar.zst
gsoc2013-empathy-ab3a47aacad985b6dd6816884a20fc5ce039d07d.zip
Update avatar chooser's account from its own callback.
This fixes a bug where the account chooser's account would change, but the avatar picker would not be updated because the main account_chooser::changed signal handler is suppressed! svn path=/trunk/; revision=1701
-rw-r--r--libempathy-gtk/empathy-contact-widget.c41
1 files changed, 19 insertions, 22 deletions
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 25fc275f4..770d9874b 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -105,8 +105,6 @@ static void contact_widget_contact_update (EmpathyContactWidget *information);
static void contact_widget_change_contact (EmpathyContactWidget *information);
static void contact_widget_avatar_changed_cb (EmpathyAvatarChooser *chooser,
EmpathyContactWidget *information);
-static void contact_widget_update_avatar_chooser_account (
- EmpathyContactWidget *information);
static void contact_widget_account_changed_cb (GtkComboBox *widget,
EmpathyContactWidget *information);
static gboolean contact_widget_id_focus_out_cb (GtkWidget *widget,
@@ -495,6 +493,16 @@ widget_avatar_button_press_event_cb (GtkWidget *widget,
}
static void
+update_avatar_chooser_account_cb (EmpathyAccountChooser *account_chooser,
+ EmpathyAvatarChooser *avatar_chooser)
+{
+ McAccount *account;
+
+ account = empathy_account_chooser_get_account (account_chooser);
+ g_object_set (avatar_chooser, "account", account, NULL);
+}
+
+static void
contact_widget_contact_setup (EmpathyContactWidget *information)
{
/* Setup account label/chooser */
@@ -505,7 +513,6 @@ contact_widget_contact_setup (EmpathyContactWidget *information)
g_signal_connect (information->widget_account, "changed",
G_CALLBACK (contact_widget_account_changed_cb),
information);
- contact_widget_update_avatar_chooser_account (information);
}
else
{
@@ -527,6 +534,15 @@ contact_widget_contact_setup (EmpathyContactWidget *information)
g_signal_connect (information->widget_avatar, "changed",
G_CALLBACK (contact_widget_avatar_changed_cb),
information);
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT)
+ {
+ g_signal_connect (information->widget_account, "changed",
+ G_CALLBACK (update_avatar_chooser_account_cb),
+ information->widget_avatar);
+ update_avatar_chooser_account_cb (
+ EMPATHY_ACCOUNT_CHOOSER (information->widget_account),
+ EMPATHY_AVATAR_CHOOSER (information->widget_avatar));
+ }
}
else
{
@@ -731,28 +747,9 @@ contact_widget_avatar_changed_cb (EmpathyAvatarChooser *chooser,
}
static void
-contact_widget_update_avatar_chooser_account (EmpathyContactWidget *information)
-{
- McAccount *account;
- EmpathyAccountChooser *account_chooser;
-
- g_assert (EMPATHY_IS_ACCOUNT_CHOOSER (information->widget_account));
- account_chooser = EMPATHY_ACCOUNT_CHOOSER (information->widget_account);
-
- if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_AVATAR)
- {
- g_assert (EMPATHY_IS_AVATAR_CHOOSER (information->widget_avatar));
-
- account = empathy_account_chooser_get_account (account_chooser);
- g_object_set (information->widget_avatar, "account", account, NULL);
- }
-}
-
-static void
contact_widget_account_changed_cb (GtkComboBox *widget,
EmpathyContactWidget *information)
{
- contact_widget_update_avatar_chooser_account (information);
contact_widget_change_contact (information);
}