Группа :: Графические оболочки/Прочее
Пакет: lightdm-gtk-greeter
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: lightdm-gtk-greeter-2.0.7-switch-lang.patch
Скачать
Скачать
src/lightdm-gtk-greeter.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index 27d009f..c50c364 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -193,6 +193,9 @@ static gchar* get_language (void);
static void set_language (const gchar *language);
void language_selected_cb (GtkMenuItem *menuitem, gpointer user_data);
+/* Restart greeter flag */
+static gboolean restart_greeter = FALSE;
+
/* Screensaver values */
static int timeout, interval, prefer_blanking, allow_exposures;
@@ -1171,6 +1174,15 @@ language_selected_cb (GtkMenuItem *menuitem, gpointer user_data)
{
gchar *language = g_object_get_data (G_OBJECT (menuitem), LANGUAGE_DATA_CODE);
set_language (language);
+ if (setlocale (LC_ALL, current_language))
+ {
+ setenv ("LANGUAGE", current_language, 1);
+ setenv ("LANG", current_language, 1);
+ setenv ("LC_ALL", current_language, 1);
+ setenv ("LC_MESSAGES", current_language, 1);
+ restart_greeter = TRUE;
+ gtk_main_quit ();
+ }
}
}
@@ -3324,6 +3336,7 @@ main (int argc, char **argv)
gtk_widget_show (GTK_WIDGET (screen_overlay));
g_debug ("Run Gtk loop...");
+ restart_greeter = FALSE;
gtk_main ();
g_debug ("Gtk loop exits");
@@ -3341,5 +3354,18 @@ main (int argc, char **argv)
}
}
+ if (restart_greeter)
+ {
+ int i;
+ char **args = calloc (argc + 1, sizeof (char *));
+ if (args)
+ {
+ for (i = 0; i < argc; i++)
+ args[i] = argv[i];
+ args[i] = NULL;
+ execv (args[0], args);
+ }
+ }
+
return EXIT_SUCCESS;
}