diff options
| author | Po Lu | 2022-02-26 12:25:51 +0000 |
|---|---|---|
| committer | Po Lu | 2022-02-26 12:25:51 +0000 |
| commit | a2768c2f745eb4203a006ad86d6cccd160c7a3c8 (patch) | |
| tree | 07ad2a071863268354614d0990a02863b543f6c6 /src | |
| parent | e1757c00caa342e698216fba0098dc9f42fc4777 (diff) | |
| download | emacs-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.cc | 60 |
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; |