diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-11-11 23:27:42 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-11-11 23:27:42 +0800 |
commit | ab3a47aacad985b6dd6816884a20fc5ce039d07d (patch) | |
tree | 95ca7e1e9df304928d7dade08b133e03df7d572f | |
parent | e8c517ab51aa9f61cb68cb26acd9748d0e6c6059 (diff) | |
download | gsoc2013-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.c | 41 |
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); } |