[vte] widget: Make mouse scroll handler return bool



commit 87943812161c45c1c33967cbfcbed487347b7c0f
Author: Christian Persch <chpe src gnome org>
Date:   Fri May 1 23:08:42 2020 +0200

    widget: Make mouse scroll handler return bool
    
    This will be used in https://gitlab.gnome.org/GNOME/vte/-/issues/234

 src/vte.cc         | 14 ++++++++++----
 src/vteinternal.hh |  2 +-
 src/widget.hh      |  2 +-
 3 files changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index c7a75db9..e8825f5b 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -9332,7 +9332,7 @@ vte_cairo_get_clip_region (cairo_t *cr)
         return region;
 }
 
-void
+bool
 Terminal::widget_mouse_scroll(MouseEvent const& event)
 {
        gdouble v;
@@ -9372,7 +9372,7 @@ Terminal::widget_mouse_scroll(MouseEvent const& event)
        if (m_mouse_tracking_mode != MouseTrackingMode::eNONE) {
                cnt = m_mouse_smooth_scroll_delta;
                if (cnt == 0)
-                       return;
+                       return true;
                m_mouse_smooth_scroll_delta -= cnt;
                _vte_debug_print(VTE_DEBUG_EVENTS,
                                "Scroll application by %d lines, smooth scroll delta set back to %f\n",
@@ -9388,7 +9388,7 @@ Terminal::widget_mouse_scroll(MouseEvent const& event)
                                          false /* not drag */,
                                          false /* not release */);
                }
-               return;
+               return true;
        }
 
         v = MAX (1., ceil (gtk_adjustment_get_page_increment (m_vadjustment.get()) / 10.));
@@ -9402,7 +9402,7 @@ Terminal::widget_mouse_scroll(MouseEvent const& event)
 
                cnt = v * m_mouse_smooth_scroll_delta;
                if (cnt == 0)
-                       return;
+                       return true;
                m_mouse_smooth_scroll_delta -= cnt / v;
                _vte_debug_print(VTE_DEBUG_EVENTS,
                                "Scroll by %d lines, smooth scroll delta set back to %f\n",
@@ -9424,12 +9424,18 @@ Terminal::widget_mouse_scroll(MouseEvent const& event)
                        send_child({normal, normal_length});
                }
                g_free (normal);
+
+                return true;
        } else {
                /* Perform a history scroll. */
                double dcnt = m_screen->scroll_delta + v * m_mouse_smooth_scroll_delta;
                queue_adjustment_value_changed_clamped(dcnt);
                m_mouse_smooth_scroll_delta = 0;
+
+                return true;
        }
+
+        return true;
 }
 
 bool
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 58a78bf1..99582653 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -1142,7 +1142,7 @@ public:
         bool widget_mouse_release(MouseEvent const& event);
         void widget_mouse_enter(MouseEvent const& event);
         void widget_mouse_leave(MouseEvent const& event);
-        void widget_mouse_scroll(MouseEvent const& event);
+        bool widget_mouse_scroll(MouseEvent const& event);
         void widget_draw(cairo_t *cr);
         void widget_get_preferred_width(int *minimum_width,
                                         int *natural_width);
diff --git a/src/widget.hh b/src/widget.hh
index 19ecef1a..8e7d1c73 100644
--- a/src/widget.hh
+++ b/src/widget.hh
@@ -80,7 +80,7 @@ public:
         bool button_release(GdkEventButton *event) noexcept { return 
m_terminal->widget_mouse_release(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
         void enter(GdkEventCrossing *event) noexcept { 
m_terminal->widget_mouse_enter(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
         void leave(GdkEventCrossing *event) noexcept { 
m_terminal->widget_mouse_leave(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
-        void scroll(GdkEventScroll *event) noexcept { 
m_terminal->widget_mouse_scroll(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
+        bool scroll(GdkEventScroll *event) noexcept { return 
m_terminal->widget_mouse_scroll(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
         bool motion_notify(GdkEventMotion *event) noexcept { return 
m_terminal->widget_mouse_motion(*mouse_event_from_gdk(reinterpret_cast<GdkEvent*>(event))); }
 
         void grab_focus() noexcept { gtk_widget_grab_focus(gtk()); }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]