Blame SOURCES/0012-chooser-switch-to-browse-selection-mode.patch

75a7a3
From bead5672f65d9a579143de16a7c72e701a346cce Mon Sep 17 00:00:00 2001
75a7a3
From: Ray Strode <rstrode@redhat.com>
75a7a3
Date: Fri, 31 Mar 2017 15:22:06 -0400
75a7a3
Subject: [PATCH 12/13] chooser: switch to browse selection mode
75a7a3
75a7a3
The chooser is a host browser after all. It makes not sense to
75a7a3
have an unselected item.
75a7a3
---
75a7a3
 chooser/gdm-host-chooser-widget.c | 9 ++++++++-
75a7a3
 1 file changed, 8 insertions(+), 1 deletion(-)
75a7a3
75a7a3
diff --git a/chooser/gdm-host-chooser-widget.c b/chooser/gdm-host-chooser-widget.c
75a7a3
index b8924618..f8aabf3e 100644
75a7a3
--- a/chooser/gdm-host-chooser-widget.c
75a7a3
+++ b/chooser/gdm-host-chooser-widget.c
75a7a3
@@ -124,89 +124,96 @@ find_known_host (GdmHostChooserWidget *widget,
75a7a3
                  GdmAddress           *address)
75a7a3
 {
75a7a3
         GSList         *li;
75a7a3
         GdmChooserHost *host;
75a7a3
 
75a7a3
         for (li = widget->priv->chooser_hosts; li != NULL; li = li->next) {
75a7a3
                 host = li->data;
75a7a3
                 if (gdm_address_equal (gdm_chooser_host_get_address (host), address)) {
75a7a3
                         goto out;
75a7a3
                 }
75a7a3
         }
75a7a3
 
75a7a3
         host = NULL;
75a7a3
  out:
75a7a3
 
75a7a3
         return host;
75a7a3
 }
75a7a3
 
75a7a3
 static void
75a7a3
 browser_add_host (GdmHostChooserWidget *widget,
75a7a3
                   GdmChooserHost       *host)
75a7a3
 {
75a7a3
         char         *hostname;
75a7a3
         char         *name;
75a7a3
         char         *desc;
75a7a3
         char         *label;
75a7a3
         GtkTreeModel *model;
75a7a3
         GtkTreeIter   iter;
75a7a3
         gboolean      res;
75a7a3
 
75a7a3
+        GtkTreeSelection  *selection;
75a7a3
+
75a7a3
         g_assert (host != NULL);
75a7a3
 
75a7a3
         if (! gdm_chooser_host_get_willing (host)) {
75a7a3
                 gtk_widget_set_sensitive (GTK_WIDGET (widget), TRUE);
75a7a3
                 return;
75a7a3
         }
75a7a3
 
75a7a3
         res = gdm_address_get_hostname (gdm_chooser_host_get_address (host), &hostname);
75a7a3
         if (! res) {
75a7a3
                 gdm_address_get_numeric_info (gdm_chooser_host_get_address (host), &hostname, NULL);
75a7a3
         }
75a7a3
 
75a7a3
         name = g_markup_escape_text (hostname, -1);
75a7a3
         desc = g_markup_escape_text (gdm_chooser_host_get_description (host), -1);
75a7a3
         label = g_strdup_printf ("%s\n%s", name, desc);
75a7a3
         g_free (name);
75a7a3
         g_free (desc);
75a7a3
 
75a7a3
         model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget->priv->treeview));
75a7a3
 
75a7a3
         gtk_list_store_append (GTK_LIST_STORE (model), &iter);
75a7a3
         gtk_list_store_set (GTK_LIST_STORE (model),
75a7a3
                             &iter,
75a7a3
                             CHOOSER_LIST_ICON_COLUMN, NULL,
75a7a3
                             CHOOSER_LIST_LABEL_COLUMN, label,
75a7a3
                             CHOOSER_LIST_HOST_COLUMN, host,
75a7a3
                             -1);
75a7a3
         g_free (label);
75a7a3
 
75a7a3
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget->priv->treeview));
75a7a3
+        if (!gtk_tree_selection_get_selected (selection, NULL, NULL)) {
75a7a3
+                gtk_tree_selection_select_iter (selection, &iter);
75a7a3
+        }
75a7a3
+
75a7a3
 }
75a7a3
 
75a7a3
 static gboolean
75a7a3
 decode_packet (GIOChannel           *source,
75a7a3
                GIOCondition          condition,
75a7a3
                GdmHostChooserWidget *widget)
75a7a3
 {
75a7a3
         struct sockaddr_storage clnt_ss;
75a7a3
         GdmAddress             *address;
75a7a3
         int                     ss_len;
75a7a3
         XdmcpHeader             header;
75a7a3
         int                     res;
75a7a3
         static XdmcpBuffer      buf;
75a7a3
         ARRAY8                  auth = {0};
75a7a3
         ARRAY8                  host = {0};
75a7a3
         ARRAY8                  stat = {0};
75a7a3
         char                   *status;
75a7a3
         GdmChooserHost         *chooser_host;
75a7a3
 
75a7a3
         status = NULL;
75a7a3
         address = NULL;
75a7a3
 
75a7a3
         g_debug ("decode_packet: GIOCondition %d", (int)condition);
75a7a3
 
75a7a3
         if ( ! (condition & G_IO_IN)) {
75a7a3
                 return TRUE;
75a7a3
         }
75a7a3
 
75a7a3
         ss_len = (int) sizeof (clnt_ss);
75a7a3
 
75a7a3
@@ -777,61 +784,61 @@ on_row_activated (GtkTreeView          *tree_view,
75a7a3
 {
75a7a3
         g_signal_emit (widget, signals[HOST_ACTIVATED], 0);
75a7a3
 }
75a7a3
 
75a7a3
 static void
75a7a3
 gdm_host_chooser_widget_init (GdmHostChooserWidget *widget)
75a7a3
 {
75a7a3
         GtkWidget         *scrolled;
75a7a3
         GtkTreeSelection  *selection;
75a7a3
         GtkTreeViewColumn *column;
75a7a3
         GtkTreeModel      *model;
75a7a3
 
75a7a3
         widget->priv = GDM_HOST_CHOOSER_WIDGET_GET_PRIVATE (widget);
75a7a3
 
75a7a3
         scrolled = gtk_scrolled_window_new (NULL, NULL);
75a7a3
         gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled),
75a7a3
                                              GTK_SHADOW_IN);
75a7a3
         gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
75a7a3
                                         GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
75a7a3
         gtk_box_pack_start (GTK_BOX (widget), scrolled, TRUE, TRUE, 0);
75a7a3
 
75a7a3
         widget->priv->treeview = gtk_tree_view_new ();
75a7a3
         gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (widget->priv->treeview), FALSE);
75a7a3
         g_signal_connect (widget->priv->treeview,
75a7a3
                           "row-activated",
75a7a3
                           G_CALLBACK (on_row_activated),
75a7a3
                           widget);
75a7a3
         gtk_container_add (GTK_CONTAINER (scrolled), widget->priv->treeview);
75a7a3
 
75a7a3
         selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget->priv->treeview));
75a7a3
-        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
75a7a3
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
75a7a3
         g_signal_connect (selection, "changed",
75a7a3
                           G_CALLBACK (on_host_selected),
75a7a3
                           widget);
75a7a3
 
75a7a3
         model = (GtkTreeModel *)gtk_list_store_new (3,
75a7a3
                                                     GDK_TYPE_PIXBUF,
75a7a3
                                                     G_TYPE_STRING,
75a7a3
                                                     G_TYPE_POINTER);
75a7a3
         gtk_tree_view_set_model (GTK_TREE_VIEW (widget->priv->treeview), model);
75a7a3
 
75a7a3
         column = gtk_tree_view_column_new_with_attributes ("Icon",
75a7a3
                                                            gtk_cell_renderer_pixbuf_new (),
75a7a3
                                                            "pixbuf", CHOOSER_LIST_ICON_COLUMN,
75a7a3
                                                            NULL);
75a7a3
         gtk_tree_view_append_column (GTK_TREE_VIEW (widget->priv->treeview), column);
75a7a3
 
75a7a3
         column = gtk_tree_view_column_new_with_attributes ("Hostname",
75a7a3
                                                            gtk_cell_renderer_text_new (),
75a7a3
                                                            "markup", CHOOSER_LIST_LABEL_COLUMN,
75a7a3
                                                            NULL);
75a7a3
         gtk_tree_view_append_column (GTK_TREE_VIEW (widget->priv->treeview), column);
75a7a3
 
75a7a3
         gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
75a7a3
                                               CHOOSER_LIST_LABEL_COLUMN,
75a7a3
                                               GTK_SORT_ASCENDING);
75a7a3
 }
75a7a3
 
75a7a3
 static void
75a7a3
 gdm_host_chooser_widget_finalize (GObject *object)
75a7a3
 {
75a7a3
-- 
75a7a3
2.12.0
75a7a3