emacs-diffs
[Top][All Lists]
Advanced

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

master 24df0273e9: Make Haiku scroll bar behave more like other programs


From: Po Lu
Subject: master 24df0273e9: Make Haiku scroll bar behave more like other programs
Date: Thu, 14 Apr 2022 22:38:59 -0400 (EDT)

branch: master
commit 24df0273e926b499445daa7d4ad90cc6f73e3a15
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Make Haiku scroll bar behave more like other programs
    
    * haiku_support.cc (class EmacsScrollBar): New field
    `repeater_start'.
    (Pulse): Wait for time to pass repeater_delay.
    (MouseDown): Set it to the current time + the system repeater
    delay.
---
 src/haiku_support.cc | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index 0642dbacff..d92e3d95ac 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -1787,6 +1787,7 @@ public:
   int last_reported_overscroll_value;
   int max_value, real_max_value;
   int overscroll_start_value;
+  bigtime_t repeater_start;
 
   EmacsScrollBar (int x, int y, int x1, int y1, bool horizontal_p) :
     BScrollBar (BRect (x, y, x1, y1), NULL, NULL, 0, 0, horizontal_p ?
@@ -1874,14 +1875,17 @@ public:
        return;
       }
 
-    GetMouse (&point, &buttons, false);
-
-    if (ButtonRegionFor (current_part).Contains (point))
+    if (repeater_start < system_time ())
       {
-       rq.scroll_bar = this;
-       rq.window = Window ();
-       rq.part = current_part;
-       haiku_write (SCROLL_BAR_PART_EVENT, &rq);
+       GetMouse (&point, &buttons, false);
+
+       if (ButtonRegionFor (current_part).Contains (point))
+         {
+           rq.scroll_bar = this;
+           rq.window = Window ();
+           rq.part = current_part;
+           haiku_write (SCROLL_BAR_PART_EVENT, &rq);
+         }
       }
 
     BScrollBar::Pulse ();
@@ -2015,6 +2019,8 @@ public:
        return;
       }
 
+    repeater_start = system_time () + 300000;
+
     if (buttons == B_PRIMARY_MOUSE_BUTTON)
       {
        r = ButtonRegionFor (HAIKU_SCROLL_BAR_UP_BUTTON);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]