summaryrefslogtreecommitdiffstats
path: root/generic/tkEvent.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-07-23 21:17:39 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-07-23 21:17:39 (GMT)
commit64efa1daf6914fde585eed65c2ec0f5bf45f097b (patch)
tree6b9caa655e4a036fc7ff8b328ffcefe7f6b8c33d /generic/tkEvent.c
parent41bb9d8273752f7b46aa4658ff4efeb7cc27f2b6 (diff)
downloadtk-64efa1daf6914fde585eed65c2ec0f5bf45f097b.zip
tk-64efa1daf6914fde585eed65c2ec0f5bf45f097b.tar.gz
tk-64efa1daf6914fde585eed65c2ec0f5bf45f097b.tar.bz2
New intermal macro ALL_BUTTONS and function TkGetButtonMask(), which can be re-used in various places in stead of separate functions.
Diffstat (limited to 'generic/tkEvent.c')
-rw-r--r--generic/tkEvent.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/generic/tkEvent.c b/generic/tkEvent.c
index b36d5de..753a31b 100644
--- a/generic/tkEvent.c
+++ b/generic/tkEvent.c
@@ -193,7 +193,6 @@ TCL_DECLARE_MUTEX(exitMutex)
static void CleanUpTkEvent(XEvent *eventPtr);
static void DelayedMotionProc(ClientData clientData);
-static int GetButtonMask(unsigned int Button);
static unsigned long GetEventMaskFromXEvent(XEvent *eventPtr);
static TkWindow * GetTkWindowFromXEvent(XEvent *eventPtr);
static void InvokeClientMessageHandlers(ThreadSpecificData *tsdPtr,
@@ -524,7 +523,7 @@ RefreshKeyboardMappingIfNeeded(
/*
*----------------------------------------------------------------------
*
- * GetButtonMask --
+ * TkGetButtonMask --
*
* Return the proper Button${n}Mask for the button.
*
@@ -537,23 +536,15 @@ RefreshKeyboardMappingIfNeeded(
*----------------------------------------------------------------------
*/
-static int
-GetButtonMask(
+static const int buttonMasks[] = {
+ 0, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask
+};
+
+int
+TkGetButtonMask(
unsigned int button)
{
- switch (button) {
- case 1:
- return Button1Mask;
- case 2:
- return Button2Mask;
- case 3:
- return Button3Mask;
- case 4:
- return Button4Mask;
- case 5:
- return Button5Mask;
- }
- return 0;
+ return (button > Button5) ? 0 : buttonMasks[button];
}
/*
@@ -582,8 +573,6 @@ UpdateButtonEventState(
XEvent *eventPtr)
{
TkDisplay *dispPtr;
- int allButtonsMask = Button1Mask | Button2Mask | Button3Mask
- | Button4Mask | Button5Mask;
switch (eventPtr->type) {
case ButtonPress:
@@ -591,19 +580,19 @@ UpdateButtonEventState(
dispPtr->mouseButtonWindow = eventPtr->xbutton.window;
eventPtr->xbutton.state |= dispPtr->mouseButtonState;
- dispPtr->mouseButtonState |= GetButtonMask(eventPtr->xbutton.button);
+ dispPtr->mouseButtonState |= TkGetButtonMask(eventPtr->xbutton.button);
break;
case ButtonRelease:
dispPtr = TkGetDisplay(eventPtr->xbutton.display);
dispPtr->mouseButtonWindow = None;
- dispPtr->mouseButtonState &= ~GetButtonMask(eventPtr->xbutton.button);
+ dispPtr->mouseButtonState &= ~TkGetButtonMask(eventPtr->xbutton.button);
eventPtr->xbutton.state |= dispPtr->mouseButtonState;
break;
case MotionNotify:
dispPtr = TkGetDisplay(eventPtr->xmotion.display);
- if (dispPtr->mouseButtonState & allButtonsMask) {
+ if (dispPtr->mouseButtonState & ALL_BUTTONS) {
if (eventPtr->xbutton.window != dispPtr->mouseButtonWindow) {
/*
* This motion event should not be interpreted as a button
@@ -611,7 +600,7 @@ UpdateButtonEventState(
* button was pressed down in.
*/
- dispPtr->mouseButtonState &= ~allButtonsMask;
+ dispPtr->mouseButtonState &= ~ALL_BUTTONS;
dispPtr->mouseButtonWindow = None;
} else {
eventPtr->xmotion.state |= dispPtr->mouseButtonState;