From c7b012a27be3ec6ee8836fcd464fc476fe00c942 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 12 Jan 2020 18:59:43 +0100 Subject: [PATCH] Remove legazy code not need when event compresion fix seat on wayland bug --- src/display/sp-canvas.cpp | 6 ------ src/display/sp-canvas.h | 3 --- src/ui/tools/tool-base.cpp | 18 +++++++++++------- src/ui/tools/tool-base.h | 1 + src/widgets/desktop-widget.cpp | 16 ---------------- src/widgets/desktop-widget.h | 1 - 6 files changed, 12 insertions(+), 33 deletions(-) diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index ed8b1031a4..d0834847b4 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -1015,7 +1015,6 @@ static void sp_canvas_init(SPCanvas *canvas) canvas->_xray = false; canvas->_xray_orig = Geom::Point(); canvas->_changecursor = 0; - canvas->_inside = false; // this could be wrong on start but we update it as far we bo to the other side. canvas->_splits = 0; canvas->_totalelapsed = 0; canvas->_scrooling = false; @@ -2331,11 +2330,6 @@ gint SPCanvas::handle_crossing(GtkWidget *widget, GdkEventCrossing *event) if (event->window != getWindow(canvas)) { return FALSE; } - if (event->type == GDK_LEAVE_NOTIFY) { - canvas->_inside = false; - } else { - canvas->_inside = true; - } canvas->_state = event->state; return canvas->pickCurrentItem(reinterpret_cast(event)); } diff --git a/src/display/sp-canvas.h b/src/display/sp-canvas.h index 5349ec144a..f902501fe3 100644 --- a/src/display/sp-canvas.h +++ b/src/display/sp-canvas.h @@ -226,9 +226,6 @@ public: /// Last known modifier state, for deferred repick when a button is down. int _state; - /// Get idf we are outside canvas area - bool _inside; - /** The item containing the mouse pointer, or NULL if none. */ SPCanvasItem *_current_item; diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp index a6cab275bd..4011908ab3 100644 --- a/src/ui/tools/tool-base.cpp +++ b/src/ui/tools/tool-base.cpp @@ -948,6 +948,9 @@ bool ToolBase::block_button(GdkEvent *event) case 1: this->_button1on = true; break; + case 2: + this->_button2on = true; + break; case 3: this->_button3on = true; break; @@ -958,6 +961,9 @@ bool ToolBase::block_button(GdkEvent *event) case 1: this->_button1on = false; break; + case 2: + this->_button2on = false; + break; case 3: this->_button3on = false; break; @@ -969,6 +975,11 @@ bool ToolBase::block_button(GdkEvent *event) } else { this->_button1on = false; } + if (event->motion.state & Gdk::ModifierType::BUTTON2_MASK) { + this->_button2on = true; + } else { + this->_button2on = false; + } if (event->motion.state & Gdk::ModifierType::BUTTON3_MASK) { this->_button3on = true; } else { @@ -1096,13 +1107,6 @@ void sp_event_context_read(ToolBase *ec, gchar const *key) { gint sp_event_context_root_handler(ToolBase * event_context, GdkEvent * event) { - Geom::Point pos = Geom::Point(0, 0); - if ((event->type == GDK_BUTTON_RELEASE || event->type == GDK_MOTION_NOTIFY) && - !event_context->desktop->canvas->_inside) { - pos = event_context->desktop->d2w(event_context->desktop->point(true)); - event->motion.x = pos[Geom::X]; - event->motion.y = pos[Geom::Y]; - } if (!event_context->_uses_snap) { return sp_event_context_virtual_root_handler(event_context, event); diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h index c9c2238237..d3f10005b0 100644 --- a/src/ui/tools/tool-base.h +++ b/src/ui/tools/tool-base.h @@ -161,6 +161,7 @@ public: gint xp, yp; ///< where drag started gint tolerance; bool _button1on; + bool _button2on; bool _button3on; bool within_tolerance; ///< are we still within tolerance of origin diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 7f918084dc..9f6e6c1c98 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -509,7 +509,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER); 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); @@ -1035,20 +1034,6 @@ 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 && - dtw->desktop->event_context->_button1on) { - sp_desktop_root_handler(nullptr, event, dtw->desktop); - } - - return FALSE; -} - #if defined(HAVE_LIBLCMS2) void SPDesktopWidget::color_profile_event(EgeColorProfTracker */*tracker*/, SPDesktopWidget *dtw) @@ -1760,7 +1745,6 @@ 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 ba8e4eaedd..e61cdd5e62 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -330,7 +330,6 @@ 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); -- GitLab