region: And remember to show the logout button if launched again
https://bugzilla.gnome.org/show_bug.cgi?id=647373
This commit is contained in:
parent
3eb6cdd1bc
commit
96247c6187
1 changed files with 30 additions and 17 deletions
|
@ -93,6 +93,30 @@ is_old_locale (const char *new_locale)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_logout_button (GtkBuilder *builder,
|
||||||
|
const char *locale)
|
||||||
|
{
|
||||||
|
GtkWidget *widget;
|
||||||
|
char *old_lang;
|
||||||
|
|
||||||
|
/* Offer log out in the new language, unless it is
|
||||||
|
* the original session language */
|
||||||
|
widget = (GtkWidget *)gtk_builder_get_object (builder, "logout_button");
|
||||||
|
|
||||||
|
if (is_old_locale (locale) == FALSE) {
|
||||||
|
old_lang = g_strdup (setlocale (LC_MESSAGES, NULL));
|
||||||
|
setlocale (LC_MESSAGES, locale);
|
||||||
|
gtk_button_set_label (GTK_BUTTON (widget), _("Log out for changes to take effect"));
|
||||||
|
setlocale (LC_MESSAGES, old_lang);
|
||||||
|
g_free (old_lang);
|
||||||
|
|
||||||
|
gtk_widget_show (widget);
|
||||||
|
} else {
|
||||||
|
gtk_widget_hide (widget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
selection_changed (GtkTreeSelection *selection,
|
selection_changed (GtkTreeSelection *selection,
|
||||||
GtkBuilder *builder)
|
GtkBuilder *builder)
|
||||||
|
@ -104,8 +128,6 @@ selection_changed (GtkTreeSelection *selection,
|
||||||
GVariant *variant;
|
GVariant *variant;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
char *object_path;
|
char *object_path;
|
||||||
GtkWidget *widget;
|
|
||||||
char *old_lang;
|
|
||||||
|
|
||||||
if (gtk_tree_selection_get_selected (selection, &model, &iter) == FALSE) {
|
if (gtk_tree_selection_get_selected (selection, &model, &iter) == FALSE) {
|
||||||
g_warning ("No selected languages, this shouldn't happen");
|
g_warning ("No selected languages, this shouldn't happen");
|
||||||
|
@ -174,21 +196,7 @@ selection_changed (GtkTreeSelection *selection,
|
||||||
formats_update_language (builder, locale);
|
formats_update_language (builder, locale);
|
||||||
system_update_language (builder, locale);
|
system_update_language (builder, locale);
|
||||||
|
|
||||||
/* Offer log out in the new language, unless it is
|
update_logout_button (builder, locale);
|
||||||
* the original session language */
|
|
||||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "logout_button");
|
|
||||||
|
|
||||||
if (is_old_locale (locale) == FALSE) {
|
|
||||||
old_lang = g_strdup (setlocale (LC_MESSAGES, NULL));
|
|
||||||
setlocale (LC_MESSAGES, locale);
|
|
||||||
gtk_button_set_label (GTK_BUTTON (widget), _("Log out for changes to take effect"));
|
|
||||||
setlocale (LC_MESSAGES, old_lang);
|
|
||||||
g_free (old_lang);
|
|
||||||
|
|
||||||
gtk_widget_show (widget);
|
|
||||||
} else {
|
|
||||||
gtk_widget_hide (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
bail:
|
bail:
|
||||||
if (variant != NULL)
|
if (variant != NULL)
|
||||||
|
@ -268,6 +276,7 @@ setup_language (GtkBuilder *builder)
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkStyleContext *context;
|
GtkStyleContext *context;
|
||||||
GtkTreeSelection *selection;
|
GtkTreeSelection *selection;
|
||||||
|
char *locale;
|
||||||
|
|
||||||
/* Setup junction between toolbar and treeview */
|
/* Setup junction between toolbar and treeview */
|
||||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "language-swindow");
|
widget = (GtkWidget *)gtk_builder_get_object (builder, "language-swindow");
|
||||||
|
@ -328,6 +337,10 @@ setup_language (GtkBuilder *builder)
|
||||||
/* And select the current language */
|
/* And select the current language */
|
||||||
cc_common_language_select_current_language (GTK_TREE_VIEW (treeview));
|
cc_common_language_select_current_language (GTK_TREE_VIEW (treeview));
|
||||||
|
|
||||||
|
/* Show the logout button if necessary */
|
||||||
|
locale = cc_common_language_get_current_language ();
|
||||||
|
update_logout_button (builder, locale);
|
||||||
|
|
||||||
/* And now listen for changes */
|
/* And now listen for changes */
|
||||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
|
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
|
||||||
g_signal_connect (G_OBJECT (selection), "changed",
|
g_signal_connect (G_OBJECT (selection), "changed",
|
||||||
|
|
Loading…
Add table
Reference in a new issue