[empathy: 4/5] Password infobar amendments



commit 34a7a0b348e1cdd3cfc184f135a8371d79741272
Author: Chandni Verma <chandniverma2112 gmail com>
Date:   Mon May 9 04:52:16 2011 +0530

    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 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 0b61d53..b2d0915 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -3288,6 +3288,18 @@ password_entry_changed_cb (GtkEditable *entry,
 }
 
 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)
 {
 	EmpathyChatPriv *priv = GET_PRIV (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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]