From b1f666c00a5adbbb99d6f7a87b06bb24e856cf2a Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Sat, 8 Aug 2026 20:42:34 +0900 Subject: [PATCH 1/2] GridView: Remove existing fake grids before adding AppButton get_widget_at() called in focused_column and focused_row properties returns Gtk.Grid instances instead of AppButton ones, resulting keyboard navigation does not switch focused app entries. --- src/Views/GridView.vala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Views/GridView.vala b/src/Views/GridView.vala index 99bce6d9..2c44b383 100644 --- a/src/Views/GridView.vala +++ b/src/Views/GridView.vala @@ -96,6 +96,10 @@ public class Slingshot.Widgets.Grid : Gtk.Box { next_col_index = 0; } + // Remove fake grids + unowned var widget = grid.get_child_at ((int)next_col_index, (int)next_row_index); + grid.remove (widget); + grid.attach (app_button, (int)next_col_index, (int)next_row_index); next_col_index++; } From 320297fb25ab8aa60d768eee10a5531ca495308d Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Sat, 8 Aug 2026 20:56:51 +0900 Subject: [PATCH 2/2] Replace focus_in_event with Gtk.EventControllerFocus --- src/Views/GridView.vala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Views/GridView.vala b/src/Views/GridView.vala index 2c44b383..9f6ad3cd 100644 --- a/src/Views/GridView.vala +++ b/src/Views/GridView.vala @@ -60,14 +60,14 @@ public class Slingshot.Widgets.Grid : Gtk.Box { append (page_switcher); can_focus = true; - // focus_in_event.connect_after (() => { - // refocus (); - // return Gdk.EVENT_STOP; - // }); + + var focus_controller = new Gtk.EventControllerFocus (); + focus_controller.enter.connect (refocus); var key_controller = new Gtk.EventControllerKey (); key_controller.key_pressed.connect (on_key_press); + add_controller (focus_controller); add_controller (key_controller); }