[gnome-builder/wip/gtk4-port: 999/1774] plugins/symbol-tree: move selection with up/down
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port: 999/1774] plugins/symbol-tree: move selection with up/down
- Date: Mon, 11 Jul 2022 22:31:31 +0000 (UTC)
commit d449bc1499b32235bf344d19a0b4dab2a302c42b
Author: Christian Hergert <chergert redhat com>
Date: Fri May 13 08:14:33 2022 -0700
plugins/symbol-tree: move selection with up/down
src/plugins/symbol-tree/gbp-symbol-popover.c | 33 +++++++++++++++++++++++++++
src/plugins/symbol-tree/gbp-symbol-popover.ui | 6 +++++
2 files changed, 39 insertions(+)
---
diff --git a/src/plugins/symbol-tree/gbp-symbol-popover.c b/src/plugins/symbol-tree/gbp-symbol-popover.c
index 035318044..205fd7057 100644
--- a/src/plugins/symbol-tree/gbp-symbol-popover.c
+++ b/src/plugins/symbol-tree/gbp-symbol-popover.c
@@ -135,6 +135,38 @@ gbp_symbol_popover_grab_focus (GtkWidget *widget)
return gtk_widget_grab_focus (GTK_WIDGET (GBP_SYMBOL_POPOVER (widget)->search_entry));
}
+static gboolean
+on_search_key_pressed_cb (GbpSymbolPopover *self,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ GtkEventControllerKey *key)
+{
+ g_assert (GBP_IS_SYMBOL_POPOVER (self));
+ g_assert (GTK_IS_EVENT_CONTROLLER_KEY (key));
+
+ if ((state & (GDK_CONTROL_MASK | GDK_ALT_MASK)) == 0)
+ {
+ switch (keyval)
+ {
+ case GDK_KEY_Up:
+ case GDK_KEY_KP_Up:
+ ide_gtk_list_view_move_previous (self->list_view);
+ return TRUE;
+
+ case GDK_KEY_Down:
+ case GDK_KEY_KP_Down:
+ ide_gtk_list_view_move_next (self->list_view);
+ return TRUE;
+
+ default:
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
static void
gbp_symbol_popover_dispose (GObject *object)
{
@@ -211,6 +243,7 @@ gbp_symbol_popover_class_init (GbpSymbolPopoverClass *klass)
gtk_widget_class_bind_template_child (widget_class, GbpSymbolPopover, search_entry);
gtk_widget_class_bind_template_callback (widget_class, gbp_symbol_popover_activate_cb);
gtk_widget_class_bind_template_callback (widget_class, gbp_symbol_popover_search_changed_cb);
+ gtk_widget_class_bind_template_callback (widget_class, on_search_key_pressed_cb);
}
static void
diff --git a/src/plugins/symbol-tree/gbp-symbol-popover.ui b/src/plugins/symbol-tree/gbp-symbol-popover.ui
index bbbc44627..18b862333 100644
--- a/src/plugins/symbol-tree/gbp-symbol-popover.ui
+++ b/src/plugins/symbol-tree/gbp-symbol-popover.ui
@@ -36,6 +36,12 @@
<object class="GtkSearchEntry" id="search_entry">
<property name="placeholder-text" translatable="yes">Filter Symbols…</property>
<signal name="search-changed" handler="gbp_symbol_popover_search_changed_cb" swapped="true"
object="GbpSymbolPopover"/>
+ <child>
+ <object class="GtkEventControllerKey">
+ <property name="propagation-phase">capture</property>
+ <signal name="key-pressed" handler="on_search_key_pressed_cb" swapped="true"
object="GbpSymbolPopover"/>
+ </object>
+ </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]