gdm r6486 - in trunk: . gui/simple-greeter



Author: mccann
Date: Tue Sep  9 00:58:03 2008
New Revision: 6486
URL: http://svn.gnome.org/viewvc/gdm?rev=6486&view=rev

Log:
2008-09-08  William Jon McCann  <jmccann redhat com>

	* gui/simple-greeter/gdm-chooser-widget.c
	(gdm_chooser_widget_set_selected_item):
	* gui/simple-greeter/gdm-chooser-widget.h:
	* gui/simple-greeter/gdm-language-chooser-dialog.c
	(gdm_language_chooser_dialog_init):
	* gui/simple-greeter/gdm-language-chooser-widget.c
	(gdm_language_chooser_widget_set_current_language_name):
	* gui/simple-greeter/gdm-layout-chooser-dialog.c
	(gdm_layout_chooser_dialog_init):
	* gui/simple-greeter/gdm-layout-chooser-widget.c
	(gdm_layout_chooser_widget_set_current_layout_name):
	Because we hacked single click to activate the entry in the user
	chooser we broke the activation handling of the language and
	layout choosers.  Fixed this by using a different method to
	simply select the item instead of activating it.



Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-chooser-widget.c
   trunk/gui/simple-greeter/gdm-chooser-widget.h
   trunk/gui/simple-greeter/gdm-language-chooser-dialog.c
   trunk/gui/simple-greeter/gdm-language-chooser-widget.c
   trunk/gui/simple-greeter/gdm-layout-chooser-dialog.c
   trunk/gui/simple-greeter/gdm-layout-chooser-widget.c

Modified: trunk/gui/simple-greeter/gdm-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-chooser-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-chooser-widget.c	Tue Sep  9 00:58:03 2008
@@ -422,6 +422,48 @@
         return id;
 }
 
+void
+gdm_chooser_widget_set_selected_item (GdmChooserWidget *widget,
+                                      const char       *id)
+{
+        GtkTreeIter       iter;
+        GtkTreeSelection *selection;
+        GtkTreeModel     *model;
+
+        g_return_if_fail (GDM_IS_CHOOSER_WIDGET (widget));
+
+        g_debug ("GdmChooserWidget: setting selected item '%s'",
+                 id ? id : "(null)");
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget->priv->items_view));
+
+        model = GTK_TREE_MODEL (widget->priv->list_store);
+
+        if (find_item (widget, id, &iter)) {
+                GtkTreePath  *path;
+
+                path = gtk_tree_model_get_path (model, &iter);
+                translate_list_path_to_view_path (widget, &path);
+
+                gtk_tree_selection_select_path (selection, path);
+
+                gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (widget->priv->items_view),
+                                              path,
+                                              NULL,
+                                              TRUE,
+                                              0.5,
+                                              0.0);
+
+                gtk_tree_view_set_cursor (GTK_TREE_VIEW (widget->priv->items_view),
+                                          path,
+                                          NULL,
+                                          FALSE);
+                gtk_tree_path_free (path);
+        } else {
+                gtk_tree_selection_unselect_all (selection);
+        }
+}
+
 static void
 activate_from_item_id (GdmChooserWidget *widget,
                        const char       *item_id)

Modified: trunk/gui/simple-greeter/gdm-chooser-widget.h
==============================================================================
--- trunk/gui/simple-greeter/gdm-chooser-widget.h	(original)
+++ trunk/gui/simple-greeter/gdm-chooser-widget.h	Tue Sep  9 00:58:03 2008
@@ -106,6 +106,8 @@
                                                                gboolean                   *is_separate);
 
 char *         gdm_chooser_widget_get_selected_item            (GdmChooserWidget          *widget);
+void           gdm_chooser_widget_set_selected_item            (GdmChooserWidget          *widget,
+                                                                const char                *item);
 
 char *         gdm_chooser_widget_get_active_item              (GdmChooserWidget          *widget);
 void           gdm_chooser_widget_set_active_item              (GdmChooserWidget          *widget,

Modified: trunk/gui/simple-greeter/gdm-language-chooser-dialog.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-language-chooser-dialog.c	(original)
+++ trunk/gui/simple-greeter/gdm-language-chooser-dialog.c	Tue Sep  9 00:58:03 2008
@@ -159,11 +159,10 @@
                                                                setlocale (LC_MESSAGES, NULL));
         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog->priv->chooser_widget);
 
-#if 0
         g_signal_connect_swapped (G_OBJECT (dialog->priv->chooser_widget),
                                   "activated", G_CALLBACK (queue_response),
                                   dialog);
-#endif
+
         gtk_dialog_add_buttons (GTK_DIALOG (dialog),
                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                 GTK_STOCK_OK, GTK_RESPONSE_OK,
@@ -174,6 +173,7 @@
         gtk_container_set_border_width (GTK_CONTAINER (dialog->priv->chooser_widget), 5);
         gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
         gtk_window_set_default_size (GTK_WINDOW (dialog), 512, 440);
+        gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
 }
 
 static void

Modified: trunk/gui/simple-greeter/gdm-language-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-language-chooser-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-language-chooser-widget.c	Tue Sep  9 00:58:03 2008
@@ -84,14 +84,14 @@
         g_return_if_fail (GDM_IS_LANGUAGE_CHOOSER_WIDGET (widget));
 
         if (lang_name == NULL) {
-                gdm_chooser_widget_set_active_item (GDM_CHOOSER_WIDGET (widget),
-                                                   NULL);
+                gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
+                                                      NULL);
                 return;
         }
 
         name = gdm_normalize_language_name (lang_name);
-        gdm_chooser_widget_set_active_item (GDM_CHOOSER_WIDGET (widget),
-                                            name);
+        gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
+                                              name);
 
         g_free (name);
 }

Modified: trunk/gui/simple-greeter/gdm-layout-chooser-dialog.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-layout-chooser-dialog.c	(original)
+++ trunk/gui/simple-greeter/gdm-layout-chooser-dialog.c	Tue Sep  9 00:58:03 2008
@@ -148,11 +148,11 @@
         gdm_layout_chooser_widget_set_current_layout_name (GDM_LAYOUT_CHOOSER_WIDGET (dialog->priv->chooser_widget),
                                                                setlocale (LC_MESSAGES, NULL));
         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog->priv->chooser_widget);
-#if 0
+
         g_signal_connect_swapped (G_OBJECT (dialog->priv->chooser_widget),
                                   "activated", G_CALLBACK (queue_response),
                                   dialog);
-#endif
+
         gtk_dialog_add_buttons (GTK_DIALOG (dialog),
                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                 GTK_STOCK_OK, GTK_RESPONSE_OK,
@@ -163,6 +163,7 @@
         gtk_container_set_border_width (GTK_CONTAINER (dialog->priv->chooser_widget), 5);
         gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
         gtk_window_set_default_size (GTK_WINDOW (dialog), 512, 440);
+        gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
 }
 
 static void

Modified: trunk/gui/simple-greeter/gdm-layout-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-layout-chooser-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-layout-chooser-widget.c	Tue Sep  9 00:58:03 2008
@@ -82,12 +82,12 @@
         g_return_if_fail (GDM_IS_LAYOUT_CHOOSER_WIDGET (widget));
 
         if (id == NULL) {
-                gdm_chooser_widget_set_active_item (GDM_CHOOSER_WIDGET (widget),
-                                                   NULL);
+                gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
+                                                      NULL);
                 return;
         }
 
-        gdm_chooser_widget_set_active_item (GDM_CHOOSER_WIDGET (widget), id);
+        gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget), id);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]