From b2c7868637b829c5df10c8acfc9903dd204e0f4a Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 3 Feb 2019 09:50:17 +0100 Subject: Fix widget focus bug. --- src/inkscape-window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/inkscape-window.cpp') diff --git a/src/inkscape-window.cpp b/src/inkscape-window.cpp index 24718c316..15524d28a 100644 --- a/src/inkscape-window.cpp +++ b/src/inkscape-window.cpp @@ -131,7 +131,7 @@ InkscapeWindow::on_focus_in_event(GdkEventFocus* event) std::cerr << "Inkscapewindow::on_focus_in_event: app is nullptr!" << std::endl; } - return true; + return Gtk::ApplicationWindow::on_focus_in_event(event); } /* -- cgit v1.2.3 From de7e1c04e8a3c9bddfc503f8aeb74528128c5aa6 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 3 Feb 2019 12:06:14 +0100 Subject: Change from hooking up signal handler to overriding class method. --- src/inkscape-window.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/inkscape-window.cpp') diff --git a/src/inkscape-window.cpp b/src/inkscape-window.cpp index 15524d28a..9551897d7 100644 --- a/src/inkscape-window.cpp +++ b/src/inkscape-window.cpp @@ -81,7 +81,6 @@ InkscapeWindow::InkscapeWindow(SPDocument* document) gtk_box_pack_start(GTK_BOX(_mainbox->gobj()), GTK_WIDGET(_desktop_widget), true, true, 0); // Can't use Glib::wrap() // ================== Callbacks ================== - signal_key_press_event().connect( sigc::mem_fun(*this, &InkscapeWindow::key_press)); signal_delete_event().connect( sigc::mem_fun(*_desktop, &SPDesktop::onDeleteUI)); signal_window_state_event().connect(sigc::mem_fun(*_desktop, &SPDesktop::onWindowStateEvent)); signal_focus_in_event().connect( sigc::mem_fun(*_desktop_widget, &SPDesktopWidget::onFocusInEvent)); @@ -114,8 +113,13 @@ InkscapeWindow::change_document(SPDocument* document) // We don't override on_key_press() as it steals key strokes from text tool. bool -InkscapeWindow::key_press(GdkEventKey* event) +InkscapeWindow::on_key_press_event(GdkEventKey* event) { + bool done = Gtk::Window::on_key_press_event(event); + if (done) { + return true; + } + unsigned shortcut = sp_shortcut_get_for_event(event); return sp_shortcut_invoke (shortcut, _desktop); } -- cgit v1.2.3 From 64823e67a5b6d2bed6bbe4a39bb967c1fda304ea Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 3 Feb 2019 12:09:46 +0100 Subject: Correct comments due to last commit. --- src/inkscape-window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/inkscape-window.cpp') diff --git a/src/inkscape-window.cpp b/src/inkscape-window.cpp index 9551897d7..2681bfc1d 100644 --- a/src/inkscape-window.cpp +++ b/src/inkscape-window.cpp @@ -111,10 +111,10 @@ InkscapeWindow::change_document(SPDocument* document) } } -// We don't override on_key_press() as it steals key strokes from text tool. bool InkscapeWindow::on_key_press_event(GdkEventKey* event) { + // Need to call base class method first or text tool won't work! bool done = Gtk::Window::on_key_press_event(event); if (done) { return true; -- cgit v1.2.3