diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-04-28 20:19:27 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-04-28 20:19:27 +0000 |
commit | 711e75c72d80e115e2872e7bb75aba8b4b580186 (patch) | |
tree | 915748a62a4dbb1fc90b34794d7c7e2bf1be4ad0 | |
parent | ade3bf1beb4b50d132f371d487a504db36d0cf52 (diff) | |
download | gdm-711e75c72d80e115e2872e7bb75aba8b4b580186.tar.gz |
Make sure we update the visibility of hidden items once those users
2008-04-28 William Jon McCann <jmccann@redhat.com>
* gui/user-switch-applet/applet.c: (update_user_item_visibility),
(on_user_sessions_changed), (add_user), (on_manager_user_added),
(on_manager_user_is_logged_in_changed), (fill_applet):
Make sure we update the visibility of hidden items
once those users actually log in.
svn path=/trunk/; revision=6175
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gui/user-switch-applet/applet.c | 56 |
2 files changed, 38 insertions, 26 deletions
@@ -1,3 +1,11 @@ +2008-04-28 William Jon McCann <jmccann@redhat.com> + + * gui/user-switch-applet/applet.c: (update_user_item_visibility), + (on_user_sessions_changed), (add_user), (on_manager_user_added), + (on_manager_user_is_logged_in_changed), (fill_applet): + Make sure we update the visibility of hidden items + once those users actually log in. + 2008-04-28 Ray Strode <rstrode@redhat.com> * gui/simple-greeter/gdm-scrollable-widget.c diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c index ebe9d1c0..1cb06caa 100644 --- a/gui/user-switch-applet/applet.c +++ b/gui/user-switch-applet/applet.c @@ -859,12 +859,12 @@ user_item_activate_cb (GtkWidget *menuitem, } static void -user_sessions_changed_cb (GdmUser *user, - GdmAppletData *adata) +update_user_item_visibility (GdmAppletData *adata, + GdmUser *user) { GtkWidget *menuitem; - g_debug ("Sessions changed for %s", gdm_user_get_user_name (user)); + g_debug ("Updating menu item visibility for %s", gdm_user_get_user_name (user)); menuitem = g_object_get_qdata (G_OBJECT (user), adata->user_menu_item_quark); if (menuitem == NULL) { @@ -890,6 +890,14 @@ user_sessions_changed_cb (GdmUser *user, } static void +on_user_sessions_changed (GdmUser *user, + GdmAppletData *adata) +{ + g_debug ("Sessions changed for %s", gdm_user_get_user_name (user)); + update_user_item_visibility (adata, user); +} + +static void add_user (GdmAppletData *adata, GdmUser *user) { @@ -916,36 +924,27 @@ add_user (GdmAppletData *adata, g_signal_connect (user, "sessions-changed", - G_CALLBACK (user_sessions_changed_cb), + G_CALLBACK (on_user_sessions_changed), adata); } -static gboolean -maybe_add_user (GdmAppletData *adata, - GdmUser *user) +static void +on_manager_user_added (GdmUserManager *manager, + GdmUser *user, + GdmAppletData *adata) { - if (adata->active_only) { - guint num_sessions; - - num_sessions = gdm_user_get_num_sessions (user); - if (num_sessions < 1) { - return FALSE; - } - } - add_user (adata, user); - - return TRUE; + update_user_item_visibility (adata, user); + sort_menu (adata); } static void -manager_user_added_cb (GdmUserManager *manager, - GdmUser *user, - GdmAppletData *adata) +on_manager_user_is_logged_in_changed (GdmUserManager *manager, + GdmUser *user, + GdmAppletData *adata) { - if (maybe_add_user (adata, user)) { - sort_menu (adata); - } + update_user_item_visibility (adata, user); + sort_menu (adata); } static void @@ -1206,14 +1205,19 @@ fill_applet (PanelApplet *applet) */ users = gdm_user_manager_list_users (adata->manager); while (users != NULL) { - maybe_add_user (adata, users->data); + add_user (adata, users->data); + update_user_item_visibility (adata, users->data); users = g_slist_delete_link (users, users); } g_signal_connect (adata->manager, "user-added", - G_CALLBACK (manager_user_added_cb), + G_CALLBACK (on_manager_user_added), + adata); + g_signal_connect (adata->manager, + "user-is-logged-in-changed", + G_CALLBACK (on_manager_user_is_logged_in_changed), adata); adata->separator_item = gtk_separator_menu_item_new (); |