summaryrefslogtreecommitdiffstats
path: root/generic/tkEvent.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-08-22 14:16:42 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-08-22 14:16:42 (GMT)
commite1486d48b18bdd738d42c22f61f597b17ea02fc4 (patch)
treef1ee74148eb7e6b073d776877344a0a9342ced75 /generic/tkEvent.c
parent4424dff3092a2ea0574195815aca62fd5c751b08 (diff)
parent3c4e724f033bf187c86fe8b49e53abe44671ee47 (diff)
downloadtk-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.c39
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);
/*