[vte] widget: Don't use scroll event's position
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] widget: Don't use scroll event's position
- Date: Wed, 4 Nov 2020 19:27:16 +0000 (UTC)
commit b1af335aaa31333aee2bdf91bb539a974c1739bf
Author: Christian Persch <chpe src gnome org>
Date: Wed Nov 4 20:26:58 2020 +0100
widget: Don't use scroll event's position
Use the last known mouse position in when sending the mouse coordinates.
[gtk4 preparation]
src/vte.cc | 4 +---
src/widget.cc | 6 ------
src/widget.hh | 18 +++++++-----------
3 files changed, 8 insertions(+), 20 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index b7def894..87fb808c 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]