[accounts-dialog] Only load session language for the current user



commit b93af89ea0224fbb9119b1fe993c2c605a012349
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Jan 27 11:32:08 2010 +0000

    Only load session language for the current user
    
    If it's not available in the accounts service. Also make sure
    that we propagate the session language as the default language
    if unset.

 src/um-language-dialog.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/src/um-language-dialog.c b/src/um-language-dialog.c
index 0db603d..e648c65 100644
--- a/src/um-language-dialog.c
+++ b/src/um-language-dialog.c
@@ -48,20 +48,25 @@ struct _UmLanguageDialog {
 
         char *language;
         UmUser *user;
+
+        gboolean force_setting;
 };
 
 enum {
-	LOCALE_COL,
-	DISPLAY_LOCALE_COL,
-	NUM_COLS
+        LOCALE_COL,
+        DISPLAY_LOCALE_COL,
+        NUM_COLS
 };
 
 static void
 cancel_language_dialog (GtkButton        *button,
                         UmLanguageDialog *um)
 {
+        if (um->force_setting != FALSE)
+                um_user_set_language (um->user, um->language);
         gtk_widget_hide (um->dialog);
         um_language_dialog_set_user (um, NULL);
+
 }
 
 static void
@@ -518,6 +523,8 @@ um_language_dialog_set_user (UmLanguageDialog *um,
                 g_free (um->language);
                 um->language = NULL;
         }
+        um->force_setting = FALSE;
+
         um->user = user;
         if (um->user) {
                 const gchar *language;
@@ -536,7 +543,7 @@ um_language_dialog_set_user (UmLanguageDialog *um,
                 language = um_user_get_language (user);
                 if (language) {
                         select_language (um, language);
-                } else {
+                } else if (um_user_get_uid (user) == getuid ()) {
                         const char *locale;
                         char *lang;
 
@@ -545,6 +552,7 @@ um_language_dialog_set_user (UmLanguageDialog *um,
 
                         select_language (um, lang);
                         g_free (lang);
+                        um->force_setting = TRUE;
                 }
         }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]