From: Xavier Claessens Date: Wed, 23 Jan 2008 19:35:29 +0000 (+0000) Subject: Add a public method to change the contact showed. X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=935e4f2004e6d9966a124d1ac6289e5cc0dca3fb Add a public method to change the contact showed. svn path=/trunk/; revision=598 --- diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index 51d17bfb..a03571d9 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -223,6 +223,23 @@ empathy_contact_widget_get_contact (GtkWidget *widget) return information->contact; } +void +empathy_contact_widget_set_contact (GtkWidget *widget, + EmpathyContact *contact) +{ + EmpathyContactWidget *information; + + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (EMPATHY_IS_CONTACT (contact)); + + information = g_object_get_data (G_OBJECT (widget), "EmpathyContactWidget"); + if (!information) { + return; + } + + contact_widget_set_contact (information, contact); +} + void empathy_contact_widget_set_account_filter (GtkWidget *widget, EmpathyAccountChooserFilterFunc filter, @@ -289,6 +306,12 @@ static void contact_widget_set_contact (EmpathyContactWidget *information, EmpathyContact *contact) { + if (contact == information->contact || + (contact && information->contact && + empathy_contact_equal (contact, information->contact))) { + return; + } + contact_widget_remove_contact (information); if (contact) { information->contact = g_object_ref (contact); diff --git a/libempathy-gtk/empathy-contact-widget.h b/libempathy-gtk/empathy-contact-widget.h index 21dd1bf0..643867ef 100644 --- a/libempathy-gtk/empathy-contact-widget.h +++ b/libempathy-gtk/empathy-contact-widget.h @@ -41,6 +41,8 @@ typedef enum { GtkWidget * empathy_contact_widget_new (EmpathyContact *contact, EmpathyContactWidgetFlags flags); EmpathyContact *empathy_contact_widget_get_contact (GtkWidget *widget); +void empathy_contact_widget_set_contact (GtkWidget *widget, + EmpathyContact *contact); void empathy_contact_widget_set_account_filter (GtkWidget *widget, EmpathyAccountChooserFilterFunc filter, gpointer user_data);