diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-09-26 17:59:52 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <fltk@aljus.de> | 2024-10-06 18:53:03 +0200 |
| commit | 4f4a9be15b0c52837dd4d4a04ff021cc3e5d691e (patch) | |
| tree | a7238b08a93b2af73c4df86a66b7abfa47689e76 /src/Fl_cocoa.mm | |
| parent | 3fbd4f944f0a6e16630974e56e1e896eb7bbf6f7 (diff) | |
Support mouse buttons 4 + 5 (aka "side buttons") (#1076, #1068)
This work is based on PR 1068 (patch by @CendioHalim) and
extended to store button status (4,5) in Fl::event_state() like
it's done for other mouse buttons (1-3).
Changes:
- new symbol: FL_BUTTON4 = side button 1 = "back"
- new symbol: FL_BUTTON5 = side button 2 = "forward"
- modified : FL_BUTTONS now includes bits for two side buttons
Note: the status of these new buttons is not maintained by X11,
therefore we need to maintain them in internal variables for
this platform.
Diffstat (limited to 'src/Fl_cocoa.mm')
| -rw-r--r-- | src/Fl_cocoa.mm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index ddb96c6b2..369ce8444 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -1046,7 +1046,7 @@ static void cocoaMagnifyHandler(NSEvent *theEvent) */ static void cocoaMouseHandler(NSEvent *theEvent) { - static int keysym[] = { 0, FL_Button+1, FL_Button+3, FL_Button+2 }; + static int keysym[] = { 0, FL_Button+1, FL_Button+3, FL_Button+2, FL_Button+4, FL_Button+5 }; static int px, py; fl_lock_function(); @@ -1060,7 +1060,7 @@ static void cocoaMouseHandler(NSEvent *theEvent) float s = Fl::screen_driver()->scale(0); pos.x /= s; pos.y /= s; pos.y = window->h() - pos.y; - NSInteger btn = [theEvent buttonNumber] + 1; + NSInteger btn = [theEvent buttonNumber] + 1; NSUInteger mods = [theEvent modifierFlags]; int sendEvent = 0; @@ -1070,13 +1070,17 @@ static void cocoaMouseHandler(NSEvent *theEvent) if (btn == 1) Fl::e_state |= FL_BUTTON1; else if (btn == 3) Fl::e_state |= FL_BUTTON2; else if (btn == 2) Fl::e_state |= FL_BUTTON3; + else if (btn == 4) Fl::e_state |= FL_BUTTON4; + else if (btn == 5) Fl::e_state |= FL_BUTTON5; } else if (etype == NSEventTypeLeftMouseUp || etype == NSEventTypeRightMouseUp || etype == NSEventTypeOtherMouseUp) { if (btn == 1) Fl::e_state &= ~FL_BUTTON1; else if (btn == 3) Fl::e_state &= ~FL_BUTTON2; else if (btn == 2) Fl::e_state &= ~FL_BUTTON3; - } + else if (btn == 4) Fl::e_state &= ~FL_BUTTON4; + else if (btn == 5) Fl::e_state &= ~FL_BUTTON5; + } switch ( etype ) { case NSEventTypeLeftMouseDown: |
