From d823a47ae7ec95b3411a09649b5b6c7d838ccc2a Mon Sep 17 00:00:00 2001 From: xclaesse Date: Wed, 23 Jan 2008 19:35:29 +0000 Subject: Add a public method to change the contact showed. git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@598 4ee84921-47dd-4033-b63a-18d7a039a3e4 --- libempathy-gtk/empathy-contact-widget.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'libempathy-gtk/empathy-contact-widget.c') diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index 51d17bfb7..a03571d9a 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); -- cgit v1.2.3