summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2024-07-07 20:25:12 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2024-07-07 20:25:12 +0200
commit317e06e5a3f3cc810466dc13bdc825789a182e00 (patch)
tree12aa3e95ecf661dff87a75c4daf137e479b890d1 /FL
parent2252ba98390505f353ea35e8ade3e3914b46c977 (diff)
X11: fix extraneous (undefined) event state bits
- Restrict FL_BUTTONS mask to only three valic mouse buttons. Pseudo mouse buttons 4-7 are used for FL_MOUSEWHEEL events and are no longer reflected in Fl::event_buttons(). - Return only state of mouse buttons 1-3 in Fl::event_buttons(). Buttons 4-7 are not "sticky" (used for FL_MOUSEWHEEL). - Keep undefined keyboard related bits in Fl::event_state() for backwards compatibility and transparency. These bits may be masked out in a later release. - Document Fl::event_state() bits for X11 in src/Fl_x.cxx. Note: this is a bug fix for X11 only, Wayland and other platforms are not affected.
Diffstat (limited to 'FL')
-rw-r--r--FL/Enumerations.H20
-rw-r--r--FL/Fl.H8
2 files changed, 14 insertions, 14 deletions
diff --git a/FL/Enumerations.H b/FL/Enumerations.H
index ff2f163e1..d944a13a2 100644
--- a/FL/Enumerations.H
+++ b/FL/Enumerations.H
@@ -562,8 +562,8 @@ enum Fl_Callback_Reason {
/**@{*/ // group: Event States
-// FIXME: it would be nice to have the modifiers in the upper 8 bit so that
-// a unicode key (24bit) can be sent as an unsigned with the modifiers.
+// FIXME: it would be nice to have the modifiers in the upper 8 bits so that
+// a unicode key (21 bits) can be sent as an unsigned with the modifiers.
#define FL_SHIFT 0x00010000 ///< One of the shift keys is down
#define FL_CAPS_LOCK 0x00020000 ///< The caps lock is on
@@ -575,14 +575,14 @@ enum Fl_Callback_Reason {
// correct for XFree86
#define FL_SCROLL_LOCK 0x00800000 ///< The scroll lock is on
// correct for XFree86
-#define FL_BUTTON1 0x01000000 ///< Mouse button 1 is pushed
-#define FL_BUTTON2 0x02000000 ///< Mouse button 2 is pushed
-#define FL_BUTTON3 0x04000000 ///< Mouse button 3 is pushed
-#define FL_BUTTONS 0x7f000000 ///< Any mouse button is pushed
-#define FL_BUTTON(n) (0x00800000<<(n)) ///< Mouse button n (n > 0) is pushed
-
-#define FL_KEY_MASK 0x0000ffff ///< All keys are 16 bit for now
- // FIXME: Unicode needs 24 bits!
+#define FL_BUTTON1 0x01000000 ///< Mouse button 1 is pushed (L)
+#define FL_BUTTON2 0x02000000 ///< Mouse button 2 is pushed (M)
+#define FL_BUTTON3 0x04000000 ///< Mouse button 3 is pushed (R)
+#define FL_BUTTONS 0x07000000 ///< Any mouse button (1-3) is pushed
+#define FL_BUTTON(n) (0x00800000<<(n)) ///< Mouse button n (n > 0) is pushed
+
+#define FL_KEY_MASK 0x0000ffff ///< All keys are 16 bit for now
+ // FIXME: Unicode needs 21 bits!
/**@}*/ // group: Event States
diff --git a/FL/Fl.H b/FL/Fl.H
index 8d86370f3..796843d75 100644
--- a/FL/Fl.H
+++ b/FL/Fl.H
@@ -1263,22 +1263,22 @@ public:
caused an FL_RELEASE event, you can use Fl::event_button() instead.
\return a bit mask value like { [FL_BUTTON1] | [FL_BUTTON2] | [FL_BUTTON3] }
*/
- static int event_buttons() {return e_state&0x7f000000;}
+ static int event_buttons() {return e_state & FL_BUTTONS;}
/**
Returns non-zero if mouse button 1 is currently held down.
For more details, see Fl::event_buttons().
*/
- static int event_button1() {return e_state&FL_BUTTON1;}
+ static int event_button1() {return e_state & FL_BUTTON1;}
/**
Returns non-zero if button 2 is currently held down.
For more details, see Fl::event_buttons().
*/
- static int event_button2() {return e_state&FL_BUTTON2;}
+ static int event_button2() {return e_state & FL_BUTTON2;}
/**
Returns non-zero if button 3 is currently held down.
For more details, see Fl::event_buttons().
*/
- static int event_button3() {return e_state&FL_BUTTON3;}
+ static int event_button3() {return e_state & FL_BUTTON3;}
/** @} */
/**