diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-03-03 16:57:05 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-03-03 16:57:05 +0000 |
commit | 92de87e5606e45a5e642696a973694c3211d450c (patch) | |
tree | 7ca2c8f93f5c80165e92e95b381bc04069785a82 | |
parent | ca81e740d38d6f695ba8ce52588e19c1472902c8 (diff) | |
download | gdm-92de87e5606e45a5e642696a973694c3211d450c.tar.gz |
Order the users in the applet the same way we do for the greeter: in order
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.
svn path=/trunk/; revision=5915
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-user.c | 47 | ||||
-rw-r--r-- | gui/user-switch-applet/applet.c | 41 |
3 files changed, 65 insertions, 31 deletions
@@ -1,5 +1,13 @@ 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. + +2008-03-03 William Jon McCann <jmccann@redhat.com> + * gui/user-switch-applet/gdm-user-menu-item.c: (reset_icon), (reset_sensitivity), (on_user_notify), (on_user_icon_changed), (on_user_sessions_changed), (_gdm_user_menu_item_set_user): diff --git a/gui/simple-greeter/gdm-user.c b/gui/simple-greeter/gdm-user.c index 59a003c4..ea7e1bfb 100644 --- a/gui/simple-greeter/gdm-user.c +++ b/gui/simple-greeter/gdm-user.c @@ -545,42 +545,53 @@ gdm_user_get_login_frequency (GdmUser *user) 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); } diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c index dc916444..734abbd3 100644 --- a/gui/user-switch-applet/applet.c +++ b/gui/user-switch-applet/applet.c @@ -575,28 +575,35 @@ sort_menu_comparedatafunc (gconstpointer a, 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 @@ static void 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 @@ menu_style_set_cb (GtkWidget *menu, } 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 @@ fill_applet (PanelApplet *applet) 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)); |