[gnome-control-center] region: Make the input source chooser back button activate on click



commit 6e4b4e944a17b20526baaedd9ade1df92f63b224
Author: Rui Matos <tiagomatos gmail com>
Date:   Fri May 26 18:29:53 2017 +0200

    region: Make the input source chooser back button activate on click
    
    We lost this behavior with commit
    3b14056a01b2dd16880e9f936de8be3cf13cc96f to fix keyboard navigation
    but we can add it back by handling button events ourselves.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=783058

 panels/region/cc-input-chooser.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/panels/region/cc-input-chooser.c b/panels/region/cc-input-chooser.c
index 31824fa..7f39eee 100644
--- a/panels/region/cc-input-chooser.c
+++ b/panels/region/cc-input-chooser.c
@@ -689,6 +689,25 @@ selected_rows_changed (GtkListBox *box,
   gtk_widget_set_sensitive (priv->add_button, sensitive);
 }
 
+static gboolean
+list_button_release_event (GtkListBox *box,
+                           GdkEvent   *event,
+                           GtkWidget  *chooser)
+{
+  gdouble x, y;
+  GtkListBoxRow *row;
+
+  gdk_event_get_coords (event, &x, &y);
+  row = gtk_list_box_get_row_at_y (box, y);
+  if (row && g_object_get_data (G_OBJECT (row), "back"))
+    {
+      g_signal_emit_by_name (row, "activate", NULL);
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
 static void
 add_default_row (GtkWidget   *chooser,
                  LocaleInfo  *info,
@@ -1078,6 +1097,7 @@ cc_input_chooser_new (GtkWindow    *main_window,
   gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->list), (GtkListBoxSortFunc)list_sort, chooser, NULL);
   g_signal_connect (priv->list, "row-activated", G_CALLBACK (row_activated), chooser);
   g_signal_connect (priv->list, "selected-rows-changed", G_CALLBACK (selected_rows_changed), chooser);
+  g_signal_connect (priv->list, "button-release-event", G_CALLBACK (list_button_release_event), chooser);
 
   g_signal_connect_swapped (priv->filter_entry, "search-changed", G_CALLBACK (filter_changed), chooser);
   g_signal_connect (priv->filter_entry, "key-release-event", G_CALLBACK (reset_on_escape), chooser);


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