Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37762460
en ru br
Репозитории ALT

Группа :: Графические оболочки/Прочее
Пакет: 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;
 }
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin