/* Hide the userlist if there are no users displayed */ void greeter_item_ulist_check_show_userlist (void) { /* * If there are no users, * then hide the rectangle used to contain the userlist. The * userlist-rect id allows a rectangle to be defined with alpha * behind the userlist that also goes away when the list is empty. */ if (num_users == 0) { GreeterItemInfo *urinfo = greeter_lookup_id ("userlist-rect"); if (user_list != NULL) gtk_widget_hide (user_list); if (urinfo) { GnomeCanvasItem *item; if (urinfo->group_item != NULL) item = GNOME_CANVAS_ITEM (urinfo->group_item); else item = urinfo->item; gnome_canvas_item_hide (item); } } }
static void user_selected (GtkTreeSelection *selection, gpointer data) { GtkTreeModel *tm = NULL; GtkTreeIter iter = {0}; if (gtk_tree_selection_get_selected (selection, &tm, &iter)) { char *login; gtk_tree_model_get (tm, &iter, GREETER_ULIST_LOGIN_COLUMN, &login, -1); if (login != NULL) { if (selecting_user && greeter_probably_login_prompt) { gtk_entry_set_text (GTK_ENTRY (pam_entry), login); } if (selecting_user) { GreeterItemInfo *pamlabel = greeter_lookup_id ("pam-message"); if (pamlabel == NULL) { mdm_common_warning ("Theme broken: must have pam-message label!"); } greeter_item_ulist_select_user (login); if (selected_user != NULL) g_free (selected_user); selected_user = g_strdup (login); } } } }
gboolean greeter_item_ulist_setup (void) { GreeterItemInfo *info; info = greeter_lookup_id ("user-pw-entry"); if (info && info->item && GNOME_IS_CANVAS_WIDGET (info->item) && GTK_IS_ENTRY (GNOME_CANVAS_WIDGET (info->item)->widget)) { pam_entry = GNOME_CANVAS_WIDGET (info->item)->widget; } info = greeter_lookup_id ("userlist"); if (info && info->item && GNOME_IS_CANVAS_WIDGET (info->item)) { GtkWidget *sw = GNOME_CANVAS_WIDGET (info->item)->widget; if (GTK_IS_SCROLLED_WINDOW (sw) && GTK_IS_TREE_VIEW (GTK_BIN (sw)->child)) { GtkRequisition req; gdouble height; user_list = GTK_BIN (sw)->child; force_no_tree_separators (user_list); greeter_generate_userlist (user_list, info); /* Reset size of the widget canvas item so it * is the same size as the userlist. This * avoids the ugly white background displayed * below the Face Browser when the list isn't * as large as the rectangle defined in the * MDM theme file. */ gtk_widget_size_request (user_list, &req); g_object_get (info->item, "height", &height, NULL); if (req.height < height) g_object_set (info->item, "height", (double)req.height, NULL); } } return TRUE; }
static void menubar_done (GtkMenuShell *menushell, gpointer data) { GreeterItemInfo *entry_info = greeter_lookup_id ("user-pw-entry"); GtkWidget *entry = GNOME_CANVAS_WIDGET (entry_info->item)->widget; gtk_widget_grab_focus (entry); }
static void greeter_item_timed_update (void) { GreeterItemInfo *info; info = greeter_lookup_id ("timed-label"); if (info != NULL) { greeter_item_update_text (info); } }
static gboolean custom_list_release_event (GtkWidget *widget, GdkEventSelection *event, gpointer user_data) { GreeterItemInfo *entry_info = greeter_lookup_id ("user-pw-entry"); /* Make sure that focus never leaves username/password entry */ if (entry_info && entry_info->item && GNOME_IS_CANVAS_WIDGET (entry_info->item) && GTK_IS_ENTRY (GNOME_CANVAS_WIDGET (entry_info->item)->widget)) { GtkWidget *entry = GNOME_CANVAS_WIDGET (entry_info->item)->widget; gtk_widget_grab_focus (entry); } return FALSE; }