summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-04-28 20:19:27 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2008-04-28 20:19:27 +0000
commit711e75c72d80e115e2872e7bb75aba8b4b580186 (patch)
tree915748a62a4dbb1fc90b34794d7c7e2bf1be4ad0
parentade3bf1beb4b50d132f371d487a504db36d0cf52 (diff)
downloadgdm-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--ChangeLog8
-rw-r--r--gui/user-switch-applet/applet.c56
2 files changed, 38 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index f232243b..701527b9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 ();