aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-02-26 12:25:51 +0000
committerPo Lu2022-02-26 12:25:51 +0000
commita2768c2f745eb4203a006ad86d6cccd160c7a3c8 (patch)
tree07ad2a071863268354614d0990a02863b543f6c6 /src
parente1757c00caa342e698216fba0098dc9f42fc4777 (diff)
downloademacs-a2768c2f745eb4203a006ad86d6cccd160c7a3c8.tar.gz
emacs-a2768c2f745eb4203a006ad86d6cccd160c7a3c8.zip
Ignore irrelevant button events on Haiku scroll bars
* src/haiku_support.cc (MouseDown): Ignore if there are too many buttons pressed.
Diffstat (limited to 'src')
-rw-r--r--src/haiku_support.cc60
1 files changed, 39 insertions, 21 deletions
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index fe91986e8c4..12990b3378d 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -1684,33 +1684,51 @@ public:
1684 struct haiku_scroll_bar_drag_event rq; 1684 struct haiku_scroll_bar_drag_event rq;
1685 struct haiku_scroll_bar_part_event part; 1685 struct haiku_scroll_bar_part_event part;
1686 BRegion r; 1686 BRegion r;
1687 BLooper *looper;
1688 BMessage *message;
1689 int32 buttons;
1687 1690
1688 r = ButtonRegionFor (HAIKU_SCROLL_BAR_UP_BUTTON); 1691 looper = Looper ();
1689 1692
1690 if (r.Contains (pt)) 1693 if (!looper)
1694 GetMouse (&pt, (uint32 *) &buttons, false);
1695 else
1691 { 1696 {
1692 part.scroll_bar = this; 1697 message = looper->CurrentMessage ();
1693 part.window = Window ();
1694 part.part = HAIKU_SCROLL_BAR_UP_BUTTON;
1695 dragging = 1;
1696 current_part = HAIKU_SCROLL_BAR_UP_BUTTON;
1697
1698 haiku_write (SCROLL_BAR_PART_EVENT, &part);
1699 goto out;
1700 }
1701 1698
1702 r = ButtonRegionFor (HAIKU_SCROLL_BAR_DOWN_BUTTON); 1699 if (!message || message->FindInt32 ("buttons", &buttons) != B_OK)
1700 GetMouse (&pt, (uint32 *) &buttons, false);
1701 }
1703 1702
1704 if (r.Contains (pt)) 1703 if (buttons == B_PRIMARY_MOUSE_BUTTON)
1705 { 1704 {
1706 part.scroll_bar = this; 1705 r = ButtonRegionFor (HAIKU_SCROLL_BAR_UP_BUTTON);
1707 part.window = Window (); 1706
1708 part.part = HAIKU_SCROLL_BAR_DOWN_BUTTON; 1707 if (r.Contains (pt))
1709 dragging = 1; 1708 {
1710 current_part = HAIKU_SCROLL_BAR_DOWN_BUTTON; 1709 part.scroll_bar = this;
1711 1710 part.window = Window ();
1712 haiku_write (SCROLL_BAR_PART_EVENT, &part); 1711 part.part = HAIKU_SCROLL_BAR_UP_BUTTON;
1713 goto out; 1712 dragging = 1;
1713 current_part = HAIKU_SCROLL_BAR_UP_BUTTON;
1714
1715 haiku_write (SCROLL_BAR_PART_EVENT, &part);
1716 goto out;
1717 }
1718
1719 r = ButtonRegionFor (HAIKU_SCROLL_BAR_DOWN_BUTTON);
1720
1721 if (r.Contains (pt))
1722 {
1723 part.scroll_bar = this;
1724 part.window = Window ();
1725 part.part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
1726 dragging = 1;
1727 current_part = HAIKU_SCROLL_BAR_DOWN_BUTTON;
1728
1729 haiku_write (SCROLL_BAR_PART_EVENT, &part);
1730 goto out;
1731 }
1714 } 1732 }
1715 1733
1716 rq.dragging_p = 1; 1734 rq.dragging_p = 1;