diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-08-22 14:16:42 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-08-22 14:16:42 (GMT) |
commit | e1486d48b18bdd738d42c22f61f597b17ea02fc4 (patch) | |
tree | f1ee74148eb7e6b073d776877344a0a9342ced75 /generic/tkEvent.c | |
parent | 4424dff3092a2ea0574195815aca62fd5c751b08 (diff) | |
parent | 3c4e724f033bf187c86fe8b49e53abe44671ee47 (diff) | |
download | tk-e1486d48b18bdd738d42c22f61f597b17ea02fc4.zip tk-e1486d48b18bdd738d42c22f61f597b17ea02fc4.tar.gz tk-e1486d48b18bdd738d42c22f61f597b17ea02fc4.tar.bz2 |
Merge trunk.
Eliminate use of "mouseunits", was not a good idea. Move code out of UpdateButtonEventState() function.
Diffstat (limited to 'generic/tkEvent.c')
-rw-r--r-- | generic/tkEvent.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/generic/tkEvent.c b/generic/tkEvent.c index 39d9d4b..edba156 100644 --- a/generic/tkEvent.c +++ b/generic/tkEvent.c @@ -539,12 +539,12 @@ RefreshKeyboardMappingIfNeeded( *---------------------------------------------------------------------- */ -static const unsigned int buttonMasks[] = { +static const unsigned long buttonMasks[] = { 0, Button1Mask, Button2Mask, Button3Mask, 0, 0, 0, 0, Button4Mask, \ Button5Mask, Button6Mask, Button7Mask, Button8Mask, Button9Mask }; -unsigned int +unsigned long TkGetButtonMask( unsigned int button) { @@ -584,24 +584,7 @@ UpdateButtonEventState( dispPtr->mouseButtonWindow = eventPtr->xbutton.window; eventPtr->xbutton.state |= dispPtr->mouseButtonState; - if ((eventPtr->xbutton.button >= Button4) && (eventPtr->xbutton.button < Button8)) { - /* - * Turn the event into a mouse wheel event and queue it - * Note: modelled after the code in tkWinX.c - */ - eventPtr->type = MouseWheelEvent; - eventPtr->xany.send_event = -1; -#if defined(_WIN32) || defined(MAC_OSX_TK) - eventPtr->xkey.nbytes = 0; -#endif - eventPtr->xkey.keycode = (eventPtr->xbutton.button & 1) ? 120 : -120; - if (eventPtr->xkey.keycode > Button5) { - eventPtr->xkey.state |= ShiftMask; - } - Tk_QueueWindowEvent(eventPtr, TCL_QUEUE_TAIL); - } else { - dispPtr->mouseButtonState |= TkGetButtonMask(eventPtr->xbutton.button); - } + dispPtr->mouseButtonState |= TkGetButtonMask(eventPtr->xbutton.button); break; case ButtonRelease: @@ -1230,6 +1213,22 @@ Tk_HandleEvent( ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + +#if !defined(_WIN32) && !defined(MAC_OSX_TK) + if ((eventPtr->xbutton.button >= Button4) && (eventPtr->xbutton.button < Button8)) { + if (eventPtr->type == ButtonRelease) { + return; + } else if (eventPtr->type == ButtonPress) { + eventPtr->type = MouseWheelEvent; + eventPtr->xany.send_event = -1; + eventPtr->xkey.keycode = (eventPtr->xbutton.button & 1) ? 120 : -120; + if (eventPtr->xkey.keycode > Button5) { + eventPtr->xkey.state ^= ShiftMask; + } + } + } +#endif + UpdateButtonEventState(eventPtr); /* |