gdm r5915 - in trunk: . gui/simple-greeter gui/user-switch-applet



Author: mccann
Date: Mon Mar  3 16:57:05 2008
New Revision: 5915
URL: http://svn.gnome.org/viewvc/gdm?rev=5915&view=rev

Log:
2008-03-03  William Jon McCann  <jmccann redhat com>

	* gui/simple-greeter/gdm-user.c: (gdm_user_collate):
	* gui/user-switch-applet/applet.c: (sort_menu_comparedatafunc),
	(sort_menu), (menu_style_set_cb), (fill_applet):
	Order the users in the applet the same way we do for the greeter:
	in order of login frequency.




Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-user.c
   trunk/gui/user-switch-applet/applet.c

Modified: trunk/gui/simple-greeter/gdm-user.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-user.c	(original)
+++ trunk/gui/simple-greeter/gdm-user.c	Mon Mar  3 16:57:05 2008
@@ -545,42 +545,53 @@
         return user->login_frequency;
 }
 
-gint
+int
 gdm_user_collate (GdmUser *user1,
                   GdmUser *user2)
 {
-        const gchar *str1, *str2;
+        const char *str1;
+        const char *str2;
+        gulong      num1;
+        gulong      num2;
 
         g_return_val_if_fail (user1 == NULL || GDM_IS_USER (user1), 0);
         g_return_val_if_fail (user2 == NULL || GDM_IS_USER (user2), 0);
 
-        if (!user1 && user2)
-                return -1;
-
-        if (user1 && !user2)
-                return 1;
-
-        if (!user1 && !user2)
-                return 0;
-
-        if (user1->real_name)
+        if (user1->real_name != NULL) {
                 str1 = user1->real_name;
-        else
+        } else {
                 str1 = user1->user_name;
+        }
 
-        if (user2->real_name)
+        if (user2->real_name != NULL) {
                 str2 = user2->real_name;
-        else
+        } else {
                 str2 = user2->user_name;
+        }
 
-        if (!str1 && str2)
+        num1 = user1->login_frequency;
+        num2 = user2->login_frequency;
+        g_debug ("Login freq 1=%u 2=%u", (guint)num1, (guint)num2);
+        if (num1 > num2) {
                 return -1;
+        }
 
-        if (str1 && !str2)
+        if (num1 < num2) {
                 return 1;
+        }
+
+        /* if login frequency is equal try names */
+        if (str1 == NULL && str2 != NULL) {
+                return -1;
+        }
 
-        if (!str1 && !str2)
+        if (str1 != NULL && str2 == NULL) {
+                return 1;
+        }
+
+        if (str1 == NULL && str2 == NULL) {
                 return 0;
+        }
 
         return g_utf8_collate (str1, str2);
 }

Modified: trunk/gui/user-switch-applet/applet.c
==============================================================================
--- trunk/gui/user-switch-applet/applet.c	(original)
+++ trunk/gui/user-switch-applet/applet.c	Mon Mar  3 16:57:05 2008
@@ -575,28 +575,35 @@
         a_is_user = GDM_IS_USER_MENU_ITEM (a);
         b_is_user = GDM_IS_USER_MENU_ITEM (b);
 
-        if (a_is_user && !b_is_user)
+        if (a_is_user && !b_is_user) {
                 return -1;
+        }
 
-        if (b_is_user && !a_is_user)
+        if (b_is_user && !a_is_user) {
                 return 1;
+        }
 
-        if (a_is_user && b_is_user)
+        if (a_is_user && b_is_user) {
                 return gdm_user_collate (gdm_user_menu_item_get_user ((GdmUserMenuItem *) a),
                                          gdm_user_menu_item_get_user ((GdmUserMenuItem *) b));
+        }
 
         adata = data;
-        if (a == adata->separator_item)
+        if (a == adata->separator_item) {
                 return -1;
+        }
 
-        if (b == adata->separator_item)
+        if (b == adata->separator_item) {
                 return 1;
+        }
 
-        if (a == adata->login_screen_item)
+        if (a == adata->login_screen_item) {
                 return -1;
+        }
 
-        if (b == adata->login_screen_item)
+        if (b == adata->login_screen_item) {
                 return 1;
+        }
 
         return 0;
 }
@@ -605,15 +612,21 @@
 sort_menu (GdmAppletData *adata)
 {
         GSList *items;
-        guint n_items, n_rows, n_cols, row, column, count;
-        gint screen_height;
+        guint   n_items;
+        guint   n_rows;
+        guint   n_cols;
+        guint   row;
+        guint   column;
+        guint   count;
+        int     screen_height;
 
         if (!gtk_widget_has_screen (adata->menu)) {
                 return;
         }
 
         adata->items = g_slist_sort_with_data (adata->items,
-                                               sort_menu_comparedatafunc, adata);
+                                               sort_menu_comparedatafunc,
+                                               adata);
 
         screen_height = gdk_screen_get_height (gtk_widget_get_screen (adata->menu));
 
@@ -680,10 +693,11 @@
         }
 
         if (!gtk_icon_size_lookup_for_settings (settings, adata->icon_size,
-                                                &width, &height))
+                                                &width, &height)) {
                 adata->pixel_size = -1;
-        else
+        } else {
                 adata->pixel_size = MAX (width, height);
+        }
 
         sort_menu (adata);
 }
@@ -1202,7 +1216,8 @@
                                                                     NULL);
 
         adata->items = g_slist_sort_with_data (adata->items,
-                                               sort_menu_comparedatafunc, adata);
+                                               sort_menu_comparedatafunc,
+                                               adata);
 
         if (gconf_client_get_bool (adata->client, LOCKDOWN_KEY, NULL)) {
                 gtk_widget_hide (GTK_WIDGET (applet));



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