common: Dismiss dialog if the activated row was already ticked

This makes the dialog a bit friendlier to use.

https://bugzilla.gnome.org/show_bug.cgi?id=752001
This commit is contained in:
Rui Matos 2015-07-07 17:17:35 +02:00
parent adc4459db4
commit 32653a0a65

View file

@ -37,6 +37,7 @@
#include <libgnome-desktop/gnome-languages.h> #include <libgnome-desktop/gnome-languages.h>
typedef struct { typedef struct {
GtkWidget *done_button;
GtkWidget *no_results; GtkWidget *no_results;
GtkListBoxRow *more_item; GtkListBoxRow *more_item;
GtkWidget *filter_entry; GtkWidget *filter_entry;
@ -358,7 +359,13 @@ row_activated (GtkListBox *box,
return; return;
} }
new_locale_id = g_object_get_data (G_OBJECT (row), "locale-id"); new_locale_id = g_object_get_data (G_OBJECT (row), "locale-id");
if (g_strcmp0 (new_locale_id, priv->language) == 0) {
gtk_dialog_response (GTK_DIALOG (chooser),
gtk_dialog_get_response_for_widget (GTK_DIALOG (chooser),
priv->done_button));
} else {
set_locale_id (chooser, new_locale_id); set_locale_id (chooser, new_locale_id);
}
} }
static void static void
@ -397,6 +404,7 @@ cc_language_chooser_new (GtkWidget *parent)
g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_language_chooser_private_free); g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_language_chooser_private_free);
g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref); g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref);
priv->done_button = WID ("ok-button");
priv->filter_entry = WID ("language-filter-entry"); priv->filter_entry = WID ("language-filter-entry");
priv->language_list = WID ("language-list"); priv->language_list = WID ("language-list");
priv->scrolledwindow = WID ("language-scrolledwindow"); priv->scrolledwindow = WID ("language-scrolledwindow");