Pārlūkot izejas kodu

fix(gtk): explicitly grab focus on click

The drawing area must explicitly grab focus when clicked to ensure subsequent key events are routed to the correct widget controller.
Bernardo Magri 1 mēnesi atpakaļ
vecāks
revīzija
a388e7e8f2
1 mainītis faili ar 3 papildinājumiem un 1 dzēšanām
  1. 3 1
      src/gtk_editor.cpp

+ 3 - 1
src/gtk_editor.cpp

@@ -403,11 +403,13 @@ protected:
             // (e.g. caused by layout rebuilds or mouse hover anomalies)
             auto click_controller = Gtk::GestureClick::create();
             std::weak_ptr<Window> weak_window_click = node->window;
-            click_controller->signal_pressed().connect([this, weak_window_click](int, double, double) {
+            click_controller->signal_pressed().connect([this, weak_window_click, drawing_area](int, double, double) {
                 if (auto window = weak_window_click.lock()) {
                     if (core_ && core_->active_window() != window) {
                         core_->set_active_window(window);
                     }
+                    // IMPORTANT: Grab keyboard focus for this widget
+                    drawing_area->grab_focus();
                 }
             });
             drawing_area->add_controller(click_controller);