gdm r6305 - in trunk: . gui/simple-greeter
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r6305 - in trunk: . gui/simple-greeter
- Date: Sun, 20 Jul 2008 18:04:22 +0000 (UTC)
Author: mccann
Date: Sun Jul 20 18:04:22 2008
New Revision: 6305
URL: http://svn.gnome.org/viewvc/gdm?rev=6305&view=rev
Log:
2008-07-20 William Jon McCann <jmccann redhat com>
* gui/simple-greeter/gdm-user-chooser-widget.c (add_user),
(on_users_loaded), (on_user_added), (on_user_removed),
(gdm_user_chooser_widget_init):
* gui/simple-greeter/gdm-user-manager.c (ck_history_watch),
(reload_users_timeout):
* gui/simple-greeter/test-user-manager.c (on_users_loaded), (main):
Set the initial user selection correctly. Also avoid
some flicker while reordering.
Modified:
trunk/ChangeLog
trunk/gui/simple-greeter/gdm-user-chooser-widget.c
trunk/gui/simple-greeter/gdm-user-manager.c
trunk/gui/simple-greeter/test-user-manager.c
Modified: trunk/gui/simple-greeter/gdm-user-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-user-chooser-widget.c (original)
+++ trunk/gui/simple-greeter/gdm-user-chooser-widget.c Sun Jul 20 18:04:22 2008
@@ -61,10 +61,11 @@
GdkPixbuf *logged_in_pixbuf;
GdkPixbuf *stock_person_pixbuf;
+ guint loaded : 1;
guint show_other_user : 1;
guint show_guest_user : 1;
guint show_auto_user : 1;
- guint show_normal_users : 1;
+ guint show_normal_users : 1;
};
enum {
@@ -237,7 +238,7 @@
}
}
-static gboolean
+static gboolean
is_user_list_disabled (GdmUserChooserWidget *widget)
{
GConfClient *client;
@@ -272,7 +273,7 @@
gdm_user_chooser_widget_set_show_auto_user (user_chooser_widget, FALSE);
gdm_user_chooser_widget_set_show_other_user (user_chooser_widget, TRUE);
- user_chooser_widget->priv->show_normal_users = !is_user_list_disabled (user_chooser_widget);
+ user_chooser_widget->priv->show_normal_users = !is_user_list_disabled (user_chooser_widget);
return G_OBJECT (user_chooser_widget);
}
@@ -414,24 +415,16 @@
}
static void
-on_users_loaded (GdmUserManager *manager,
- GdmUserChooserWidget *widget)
-{
- gdm_chooser_widget_activate_on_one_item (GDM_CHOOSER_WIDGET (widget),
- TRUE);
-}
-
-static void
-on_user_added (GdmUserManager *manager,
- GdmUser *user,
- GdmUserChooserWidget *widget)
+add_user (GdmUserChooserWidget *widget,
+ GdmUser *user)
{
GdkPixbuf *pixbuf;
char *tooltip;
gboolean is_logged_in;
- if (!widget->priv->show_normal_users)
- return;
+ if (!widget->priv->show_normal_users) {
+ return;
+ }
pixbuf = gdm_user_render_icon (user, ICON_SIZE);
if (pixbuf == NULL && widget->priv->stock_person_pixbuf != NULL) {
@@ -464,6 +457,38 @@
}
static void
+on_users_loaded (GdmUserManager *manager,
+ GdmUserChooserWidget *widget)
+{
+ GSList *users;
+
+ widget->priv->loaded = TRUE;
+
+ g_debug ("GdmUserChooserWidget: Users loaded");
+
+ users = gdm_user_manager_list_users (manager);
+ while (users != NULL) {
+ add_user (widget, users->data);
+ users = g_slist_delete_link (users, users);
+ }
+
+ gdm_chooser_widget_activate_on_one_item (GDM_CHOOSER_WIDGET (widget),
+ TRUE);
+}
+
+static void
+on_user_added (GdmUserManager *manager,
+ GdmUser *user,
+ GdmUserChooserWidget *widget)
+{
+ /* wait for all users to be loaded */
+ if (! widget->priv->loaded) {
+ return;
+ }
+ add_user (widget, user);
+}
+
+static void
on_user_removed (GdmUserManager *manager,
GdmUser *user,
GdmUserChooserWidget *widget)
@@ -471,6 +496,10 @@
const char *user_name;
g_debug ("GdmUserChooserWidget: User removed: %s", gdm_user_get_user_name (user));
+ /* wait for all users to be loaded */
+ if (! widget->priv->loaded) {
+ return;
+ }
user_name = gdm_user_get_user_name (user);
@@ -526,10 +555,6 @@
widget->priv->manager = gdm_user_manager_ref_default ();
g_signal_connect (widget->priv->manager,
- "users-loaded",
- G_CALLBACK (on_users_loaded),
- widget);
- g_signal_connect (widget->priv->manager,
"user-added",
G_CALLBACK (on_user_added),
widget);
@@ -538,6 +563,10 @@
G_CALLBACK (on_user_removed),
widget);
g_signal_connect (widget->priv->manager,
+ "users-loaded",
+ G_CALLBACK (on_users_loaded),
+ widget);
+ g_signal_connect (widget->priv->manager,
"user-is-logged-in-changed",
G_CALLBACK (on_user_is_logged_in_changed),
widget);
Modified: trunk/gui/simple-greeter/gdm-user-manager.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-user-manager.c (original)
+++ trunk/gui/simple-greeter/gdm-user-manager.c Sun Jul 20 18:04:22 2008
@@ -1188,6 +1188,8 @@
}
if (done) {
+ g_signal_emit (G_OBJECT (manager), signals[USERS_LOADED], 0);
+
manager->priv->ck_history_id = 0;
return FALSE;
}
@@ -1378,7 +1380,6 @@
reload_users (manager);
manager->priv->reload_id = 0;
- g_signal_emit (G_OBJECT (manager), signals[USERS_LOADED], 0);
return FALSE;
}
Modified: trunk/gui/simple-greeter/test-user-manager.c
==============================================================================
--- trunk/gui/simple-greeter/test-user-manager.c (original)
+++ trunk/gui/simple-greeter/test-user-manager.c Sun Jul 20 18:04:22 2008
@@ -35,6 +35,22 @@
static GdmUserManager *manager = NULL;
static void
+on_users_loaded (GdmUserManager *manager,
+ gpointer data)
+{
+ GSList *users;
+
+ g_debug ("Users loaded");
+
+ users = gdm_user_manager_list_users (manager);
+ while (users != NULL) {
+ g_print ("User: %s\n", gdm_user_get_user_name (users->data));
+ users = g_slist_delete_link (users, users);
+ }
+
+}
+
+static void
on_user_added (GdmUserManager *manager,
GdmUser *user,
gpointer data)
@@ -64,6 +80,10 @@
manager = gdm_user_manager_ref_default ();
g_signal_connect (manager,
+ "users-loaded",
+ G_CALLBACK (on_users_loaded),
+ NULL);
+ g_signal_connect (manager,
"user-added",
G_CALLBACK (on_user_added),
NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]