From 34a7a0b348e1cdd3cfc184f135a8371d79741272 Mon Sep 17 00:00:00 2001 From: Chandni Verma Date: Mon, 9 May 2011 04:52:16 +0530 Subject: Password infobar amendments Destroy password infobar on parting password protected chatrooms and insensitivate input-text-view when displaying a new infobar --- libempathy-gtk/empathy-chat.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libempathy-gtk/empathy-chat.c') diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 0b61d53f5..b2d091518 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -3287,6 +3287,18 @@ password_entry_changed_cb (GtkEditable *entry, GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str)); } +static void +chat_invalidated_cb (TpProxy *proxy, + guint domain, + gint code, + gchar *message, + gpointer password_infobar) +{ + /* Destroy the password infobar whenever a channel is invalidated + * so we don't have multiple infobars when the MUC is rejoined */ + gtk_widget_destroy (GTK_WIDGET (password_infobar)); +} + static void display_password_info_bar (EmpathyChat *self) { @@ -3369,12 +3381,19 @@ display_password_info_bar (EmpathyChat *self) TRUE, TRUE, 3); gtk_widget_show_all (hbox); + tp_g_signal_connect_object (empathy_tp_chat_get_channel (priv->tp_chat), + "invalidated", G_CALLBACK (chat_invalidated_cb), + info_bar, 0); + data->response_id = g_signal_connect (info_bar, "response", G_CALLBACK (password_infobar_response_cb), data); gtk_widget_show_all (info_bar); /* ... but hide the spinner */ gtk_widget_hide (spinner); + + /* prevent the user from typing anything */ + gtk_widget_set_sensitive (self->input_text_view, FALSE); } static void -- cgit v1.2.3