]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-presence-chooser.c
Add a cancel button on the custom message diaog
[empathy.git] / libempathy-gtk / empathy-presence-chooser.c
index 6f34a3985ddfb50fbc362f9665e8729d4b865420..17a627389469736e6b07b0172d281505d1ba0490 100644 (file)
@@ -808,6 +808,8 @@ presence_chooser_dialog_status_changed_cb (GtkWidget           *widget,
 
        gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->comboboxentry_message),
                                 GTK_TREE_MODEL (store));
+
+       g_object_unref (store);
 }
 
 static void
@@ -899,16 +901,27 @@ presence_chooser_dialog_setup (CustomMessageDialog *dialog)
 }
 
 static void
-presence_chooser_dialog_destroy_cb (GtkWidget           *widget,
-                                   CustomMessageDialog *dialog)
+presence_chooser_dialog_response_cb (GtkWidget           *widget,
+                                    gint                 response,
+                                    CustomMessageDialog *dialog)
 {
-       McPresence   state;
-       const gchar *text;
+       if (response == GTK_RESPONSE_APPLY) {
+               McPresence   state;
+               const gchar *text;
 
-       state = presence_chooser_dialog_get_selected (dialog);
-       text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
+               state = presence_chooser_dialog_get_selected (dialog);
+               text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
 
-       presence_chooser_set_state (state, text);
+               presence_chooser_set_state (state, text);
+       }
+
+       gtk_widget_destroy (widget);
+}
+
+static void
+presence_chooser_dialog_destroy_cb (GtkWidget           *widget,
+                                   CustomMessageDialog *dialog)
+{
 
        g_free (dialog);
        message_dialog = NULL;
@@ -936,7 +949,7 @@ presence_chooser_dialog_show (void)
        empathy_glade_connect (glade,
                               message_dialog,
                               "custom_message_dialog", "destroy", presence_chooser_dialog_destroy_cb,
-                              "custom_message_dialog", "response", gtk_widget_destroy,
+                              "custom_message_dialog", "response", presence_chooser_dialog_response_cb,
                               "combobox_status", "changed", presence_chooser_dialog_status_changed_cb,
                               "checkbutton_save", "toggled", presence_chooser_dialog_save_toggled_cb,
                               NULL);