summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-08-07 01:06:34 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-08-07 01:06:34 +0000
commit8240f101a537bd6f4c7582abde400100b128bcdb (patch)
treead61aedefb54a2fbe57f9b6b2246d1ea20ac6470 /src
parentFix Arc toolbar buttons (gitlab, inkscape#355) (diff)
downloadinkscape-8240f101a537bd6f4c7582abde400100b128bcdb.tar.gz
inkscape-8240f101a537bd6f4c7582abde400100b128bcdb.zip
Fix regression on text launch shortcuts
Diffstat (limited to 'src')
-rw-r--r--src/widgets/desktop-widget.cpp15
-rw-r--r--src/widgets/desktop-widget.h1
2 files changed, 15 insertions, 1 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index f90aac45e..e6444de55 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -508,7 +508,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
gtk_style_context_add_provider(style_context,
GTK_STYLE_PROVIDER(css_provider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
- g_signal_connect(G_OBJECT(dtw), "event", G_CALLBACK(SPDesktopWidget::event), dtw);
+ g_signal_connect(G_OBJECT(dtw->_canvas), "event", G_CALLBACK(SPDesktopWidget::event), dtw);
+ g_signal_connect(G_OBJECT(dtw), "event", G_CALLBACK(SPDesktopWidget::eventoutside), dtw);
gtk_widget_set_hexpand(GTK_WIDGET(dtw->_canvas), TRUE);
gtk_widget_set_vexpand(GTK_WIDGET(dtw->_canvas), TRUE);
@@ -1014,6 +1015,17 @@ SPDesktopWidget::event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw)
return FALSE;
}
+/**
+ * Callback to handle desktop widget event.
+ */
+gint
+SPDesktopWidget::eventoutside(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw)
+{
+ if ((event->type == GDK_MOTION_NOTIFY || event->type == GDK_BUTTON_RELEASE) && !dtw->_canvas->_inside) {
+ return sp_desktop_root_handler(nullptr, event, dtw->desktop);
+ }
+ return FALSE;
+}
#if defined(HAVE_LIBLCMS2)
void
@@ -1726,6 +1738,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPDocument *document)
dtw->_menubar = build_menubar(dtw->desktop);
dtw->_menubar->set_name("MenuBar");
dtw->_menubar->show_all();
+ g_signal_connect(dtw->_menubar->gobj(), "event", G_CALLBACK(SPDesktopWidget::eventoutside), dtw);
#ifdef GDK_WINDOWING_QUARTZ
// native macOS menu: do this later because we don't have the window handle yet
diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h
index e61cdd5e6..ba8e4eaed 100644
--- a/src/widgets/desktop-widget.h
+++ b/src/widgets/desktop-widget.h
@@ -330,6 +330,7 @@ public:
#endif
static void ruler_snap_new_guide(SPDesktop *desktop, SPCanvasItem *guide, Geom::Point &event_dt, Geom::Point &normal);
static gint event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw);
+ static gint eventoutside(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw);
bool on_ruler_box_button_press_event(GdkEventButton *event, Gtk::EventBox *widget, bool horiz);
bool on_ruler_box_button_release_event(GdkEventButton *event, Gtk::EventBox *widget, bool horiz);
bool on_ruler_box_motion_notify_event(GdkEventMotion *event, Gtk::EventBox *widget, bool horiz);