diff --git a/src/desktop.cpp b/src/desktop.cpp index 5cedbbc8152270ba231d651207bfa3389944ec52..6cb265d60f1d762d6b39ea775643ed9ec352ccdf 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -92,6 +92,14 @@ static gdouble _pinch_begin_zoom = 1.; static void _pinch_begin_handler(GtkGesture *gesture, GdkEventSequence *sequence, SPDesktop *desktop) { _pinch_begin_zoom = desktop->current_zoom(); + desktop->active_gesture = true; + g_warning(" <<< Pinch BEGIN!"); +} + +static void _pinch_end_handler(GtkGesture *gesture, GdkEventSequence *sequence, SPDesktop *desktop) +{ + desktop->active_gesture = false; + g_warning(" >>> Pinch END!"); } static void _pinch_scale_changed_handler(GtkGesture *gesture, gdouble delta, SPDesktop *desktop) @@ -239,6 +247,8 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas, Inkscape::UI::View::EditWid gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (zoomgesture), GTK_PHASE_CAPTURE); g_signal_connect(zoomgesture, "begin", G_CALLBACK(_pinch_begin_handler), this); g_signal_connect(zoomgesture, "scale-changed", G_CALLBACK(_pinch_scale_changed_handler), this); + g_signal_connect(zoomgesture, "end", G_CALLBACK(_pinch_end_handler), this); + g_signal_connect(zoomgesture, "cancel", G_CALLBACK(_pinch_end_handler), this); SP_CANVAS_ARENA (drawing)->drawing.delta = prefs->getDouble("/options/cursortolerance/value", 1.0); // default is 1 px diff --git a/src/desktop.h b/src/desktop.h index 74245d71d8a2d48ffe6a8e06694335882fde2558..83b032b3c8e1450cdcaa0bef54845fd4443c94a9 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -188,6 +188,9 @@ public: SPCSSAttr *current; ///< current style bool _focusMode; ///< Whether we're focused working or general working + // True when any Gtk3 gesture is active + bool active_gesture; + unsigned int dkey; unsigned int number; guint window_state; diff --git a/src/ui/tools/zoom-tool.cpp b/src/ui/tools/zoom-tool.cpp index 0372e8d6cfe549d3bbe9f50ef777ac006a4b408e..b4f3b3284e3379d3757c4328220e101969a030ea 100644 --- a/src/ui/tools/zoom-tool.cpp +++ b/src/ui/tools/zoom-tool.cpp @@ -78,6 +78,9 @@ bool ZoomTool::root_handler(GdkEvent* event) { bool ret = false; + // Tool is deactivated during gestures + //if(desktop->active_gesture) return false; + switch (event->type) { case GDK_BUTTON_PRESS: { @@ -85,6 +88,7 @@ bool ZoomTool::root_handler(GdkEvent* event) { Geom::Point const button_dt(desktop->w2d(button_w)); if (event->button.button == 1 && !this->space_panning) { + g_warning(" *** Zooming begin"); // save drag origin xp = (gint) event->button.x; yp = (gint) event->button.y; @@ -156,6 +160,7 @@ bool ZoomTool::root_handler(GdkEvent* event) { ret = true; } + g_warning(" *** Zooming stop"); Inkscape::Rubberband::get(desktop)->stop(); if (this->grabbed) {