summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@jhu.edu>2007-10-28 02:39:09 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2007-10-28 02:39:09 +0000
commit026b566f63c407cae9cc00b94267b52733c40ab6 (patch)
treebc5627715bdc1fb46122b0d27d6a1c8f07b3d2a4
parentb4a3c98d3e0d8716302ffbd2112f1290a9a7ee02 (diff)
downloadgdm-026b566f63c407cae9cc00b94267b52733c40ab6.tar.gz
Remove deleted users from the model
2007-10-27 William Jon McCann <mccann@jhu.edu> * gui/simple-greeter/gdm-user-chooser-widget.c: (on_user_removed): * gui/simple-greeter/gdm-user.h: Remove deleted users from the model svn path=/trunk/; revision=5443
-rw-r--r--ChangeLog6
-rw-r--r--gui/simple-greeter/gdm-user-chooser-widget.c34
-rw-r--r--gui/simple-greeter/gdm-user.h8
3 files changed, 43 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 97558927..540bdafd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2007-10-27 William Jon McCann <mccann@jhu.edu>
+ * gui/simple-greeter/gdm-user-chooser-widget.c: (on_user_removed):
+ * gui/simple-greeter/gdm-user.h:
+ Remove deleted users from the model
+
+2007-10-27 William Jon McCann <mccann@jhu.edu>
+
* gui/simple-greeter/gdm-user-chooser-widget.c:
(get_pixbuf_for_user), (on_user_added):
* gui/simple-greeter/gdm-user.c: (check_user_file),
diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
index 2492c89f..e81c8b57 100644
--- a/gui/simple-greeter/gdm-user-chooser-widget.c
+++ b/gui/simple-greeter/gdm-user-chooser-widget.c
@@ -517,9 +517,41 @@ on_user_removed (GdmUserManager *manager,
GdmUser *user,
GdmUserChooserWidget *widget)
{
+ GtkTreeIter iter;
+ gboolean found;
+ const char *user_name;
+
g_debug ("User removed: %s", gdm_user_get_user_name (user));
- /* FIXME: */
+ found = FALSE;
+
+ user_name = gdm_user_get_user_name (user);
+
+ if (gtk_tree_model_get_iter_first (widget->priv->real_model, &iter)) {
+
+ do {
+ char *id;
+
+ id = NULL;
+ gtk_tree_model_get (widget->priv->real_model,
+ &iter,
+ CHOOSER_LIST_ID_COLUMN, &id,
+ -1);
+ if (id == NULL) {
+ continue;
+ }
+
+ found = (strcmp (id, user_name) == 0);
+
+ if (found) {
+ break;
+ }
+
+ } while (gtk_tree_model_iter_next (widget->priv->real_model, &iter));
+ }
+ if (found) {
+ gtk_list_store_remove (GTK_LIST_STORE (widget->priv->real_model), &iter);
+ }
}
static gboolean
diff --git a/gui/simple-greeter/gdm-user.h b/gui/simple-greeter/gdm-user.h
index fb091534..2dbeda2c 100644
--- a/gui/simple-greeter/gdm-user.h
+++ b/gui/simple-greeter/gdm-user.h
@@ -39,10 +39,10 @@ typedef struct _GdmUser GdmUser;
GType gdm_user_get_type (void) G_GNUC_CONST;
uid_t gdm_user_get_uid (GdmUser *user);
-G_CONST_RETURN gchar *gdm_user_get_user_name (GdmUser *user);
-G_CONST_RETURN gchar *gdm_user_get_real_name (GdmUser *user);
-G_CONST_RETURN gchar *gdm_user_get_home_directory (GdmUser *user);
-G_CONST_RETURN gchar *gdm_user_get_shell (GdmUser *user);
+G_CONST_RETURN char *gdm_user_get_user_name (GdmUser *user);
+G_CONST_RETURN char *gdm_user_get_real_name (GdmUser *user);
+G_CONST_RETURN char *gdm_user_get_home_directory (GdmUser *user);
+G_CONST_RETURN char *gdm_user_get_shell (GdmUser *user);
GSList *gdm_user_get_sessions (GdmUser *user);
guint gdm_user_get_n_sessions (GdmUser *user);