]> 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 468f6296a26a6a4597f835646e146edd6c47e22d..17a627389469736e6b07b0172d281505d1ba0490 100644 (file)
@@ -31,6 +31,7 @@
 #include <gtk/gtk.h>
 #include <glade/glade.h>
 
+#include <telepathy-glib/util.h>
 #include <libmissioncontrol/mc-enum-types.h>
 
 #include <libempathy/empathy-idle.h>
@@ -807,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
@@ -823,7 +826,7 @@ presence_chooser_dialog_message_changed_cb (GtkWidget           *widget,
 
        messages = empathy_status_presets_get (presence, -1);
        for (l = messages; l; l = l->next) {
-               if (!empathy_strdiff (text, l->data)) {
+               if (!tp_strdiff (text, l->data)) {
                        found = TRUE;
                        break;
                }
@@ -898,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;
@@ -935,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);