[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master a2768c2f74: Ignore irrelevant button events on Haiku scroll bars
From: |
Po Lu |
Subject: |
master a2768c2f74: Ignore irrelevant button events on Haiku scroll bars |
Date: |
Sat, 26 Feb 2022 07:27:45 -0500 (EST) |
branch: master
commit a2768c2f745eb4203a006ad86d6cccd160c7a3c8
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Ignore irrelevant button events on Haiku scroll bars
* src/haiku_support.cc (MouseDown): Ignore if there are too many
buttons pressed.
---
src/haiku_support.cc | 60 ++++++++++++++++++++++++++++++++++------------------
1 file changed, 39 insertions(+), 21 deletions(-)
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index fe91986e8c..12990b3378 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -1684,33 +1684,51 @@ public:
struct haiku_scroll_bar_drag_event rq;
struct haiku_scroll_bar_part_event part;
BRegion r;
+ BLooper *looper;
+ BMessage *message;
+ int32 buttons;
- r = ButtonRegionFor (HAIKU_SCROLL_BAR_UP_BUTTON);
+ looper = Looper ();
- if (r.Contains (pt))
+ if (!looper)
+ GetMouse (&pt, (uint32 *) &buttons, false);
+ else
{
- part.scroll_bar = this;
- part.window = Window ();
- part.part = HAIKU_SCROLL_BAR_UP_BUTTON;
- dragging = 1;
- current_part = HAIKU_SCROLL_BAR_UP_BUTTON;
-
- haiku_write (SCROLL_BAR_PART_EVENT, &part);
- goto out;
- }
+ message = looper->CurrentMessage ();
- r = ButtonRegionFor (HAIKU_SCROLL_BAR_DOWN_BUTTON);
+ if (!message || message->FindInt32 ("buttons", &buttons) != B_OK)
+ GetMouse (&pt, (uint32 *) &buttons, false);
+ }
- if (r.Contains (pt))
+ if (buttons == B_PRIMARY_MOUSE_BUTTON)
{
- part.scroll_bar = this;
- part.window = Window ();
- part.part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
- dragging = 1;
- current_part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
-
- haiku_write (SCROLL_BAR_PART_EVENT, &part);
- goto out;
+ r = ButtonRegionFor (HAIKU_SCROLL_BAR_UP_BUTTON);
+
+ if (r.Contains (pt))
+ {
+ part.scroll_bar = this;
+ part.window = Window ();
+ part.part = HAIKU_SCROLL_BAR_UP_BUTTON;
+ dragging = 1;
+ current_part = HAIKU_SCROLL_BAR_UP_BUTTON;
+
+ haiku_write (SCROLL_BAR_PART_EVENT, &part);
+ goto out;
+ }
+
+ r = ButtonRegionFor (HAIKU_SCROLL_BAR_DOWN_BUTTON);
+
+ if (r.Contains (pt))
+ {
+ part.scroll_bar = this;
+ part.window = Window ();
+ part.part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
+ dragging = 1;
+ current_part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
+
+ haiku_write (SCROLL_BAR_PART_EVENT, &part);
+ goto out;
+ }
}
rq.dragging_p = 1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master a2768c2f74: Ignore irrelevant button events on Haiku scroll bars,
Po Lu <=