diff options
author | Christian Persch <chpe@src.gnome.org> | 2020-11-04 20:26:58 +0100 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2020-11-04 20:26:58 +0100 |
commit | b1af335aaa31333aee2bdf91bb539a974c1739bf (patch) | |
tree | 9a4696e923e9d442086fe356486547a1cdf9f918 | |
parent | dc829d65834e5b2f85b423aa057441b2122359ce (diff) | |
download | vte-b1af335aaa31333aee2bdf91bb539a974c1739bf.tar.gz |
widget: Don't use scroll event's position
Use the last known mouse position in when sending the mouse coordinates.
[gtk4 preparation]
-rw-r--r-- | src/vte.cc | 4 | ||||
-rw-r--r-- | src/widget.cc | 6 | ||||
-rw-r--r-- | src/widget.hh | 18 |
3 files changed, 8 insertions, 20 deletions
@@ -9309,8 +9309,6 @@ Terminal::widget_mouse_scroll(vte::platform::ScrollEvent const& event) /* Need to ensure the ringview is updated. */ ringview_update(); - auto rowcol = confined_grid_coords_from_event(event); - m_modifiers = event.modifiers(); m_mouse_smooth_scroll_delta += event.dy(); @@ -9330,7 +9328,7 @@ Terminal::widget_mouse_scroll(vte::platform::ScrollEvent const& event) cnt = -cnt; for (i = 0; i < cnt; i++) { /* Encode the parameters and send them to the app. */ - feed_mouse_event(rowcol, + feed_mouse_event(grid_coords_from_view_coords(m_mouse_last_position), button, false /* not drag */, false /* not release */); diff --git a/src/widget.cc b/src/widget.cc index b0fe5f3e..f55abee0 100644 --- a/src/widget.cc +++ b/src/widget.cc @@ -492,11 +492,6 @@ Widget::mouse_event_from_gdk(GdkEvent* event) const /* throws */ ScrollEvent Widget::scroll_event_from_gdk(GdkEvent* event) const /* throws */ { - auto x = double{}, y = double{}; - if (gdk_event_get_window(event) != m_event_window || - !gdk_event_get_coords(event, &x, &y)) - x = y = -1.; // FIXMEchpe or throw? - auto dx = double{}, dy = double{}; if (!gdk_event_get_scroll_deltas(event, &dx, &dy)) { auto dir = GdkScrollDirection{}; @@ -514,7 +509,6 @@ Widget::scroll_event_from_gdk(GdkEvent* event) const /* throws */ } return {read_modifiers_from_gdk(event), - x, y, dx, dy}; } diff --git a/src/widget.hh b/src/widget.hh index 295789bd..bcce34f9 100644 --- a/src/widget.hh +++ b/src/widget.hh @@ -197,7 +197,7 @@ private: double m_y; }; // class MouseEvent -class ScrollEvent : public MouseEvent { +class ScrollEvent : public EventBase { friend class vte::platform::Widget; friend class Terminal; @@ -206,16 +206,10 @@ protected: ScrollEvent() noexcept = default; constexpr ScrollEvent(unsigned modifiers, - double x, - double y, double dx, double dy) noexcept - : MouseEvent{EventBase::Type::eMOUSE_SCROLL, - 1, // press count - modifiers, - MouseEvent::Button::eNONE, - x, - y}, + : EventBase{EventBase::Type::eMOUSE_SCROLL}, + m_modifiers{modifiers}, m_dx{dx}, m_dy{dy} { @@ -229,10 +223,12 @@ public: ScrollEvent& operator=(ScrollEvent const&) = delete; ScrollEvent& operator=(ScrollEvent&&) = delete; - constexpr auto dx() const noexcept { return m_dx; } - constexpr auto dy() const noexcept { return m_dy; } + constexpr auto modifiers() const noexcept { return m_modifiers; } + constexpr auto dx() const noexcept { return m_dx; } + constexpr auto dy() const noexcept { return m_dy; } private: + unsigned m_modifiers; double m_dx; double m_dy; }; // class ScrollEvent |