Tk Source Code

Changes On Branch bug-75d38f8608
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch bug-75d38f8608 Excluding Merge-Ins

This is equivalent to a diff from 8014f1c6 to b06d31bb

2018-05-03
20:28
Fix [75d38f8608]: touchpad two finger scroll does not work correctly with listbox on Windows check-in: 1fdcf6f5 user: fvogel tags: core-8-6-branch
2018-04-28
13:54
Remove test listbox-32 that failed because it was trying to check untestable things (see [75d38f8608]). Closed-Leaf check-in: b06d31bb user: fvogel tags: bug-75d38f8608
2018-04-03
19:06
Fix [59fccbfa27]: Clicking on empty menubar area stops menus working. Thanks to cjmcdonald. check-in: e57b1bc9 user: fvogel tags: core-8-6-branch
2018-03-31
07:17
Solution from dnikolajevich made thread safe. Thanks to Christian Werner for providing this patch. check-in: fb3f34ae user: fvogel tags: bug-75d38f8608
2018-03-25
18:58
Fix [59fccbfa27]: Clicking on empty menubar area stops menus working. Thanks to cjmcdonald. Closed-Leaf check-in: e67b7653 user: fvogel tags: bug-59fccbfa27
15:59
Add test listbox-32 to check for support of high resolution 'mouse wheels', actually for 2 fingers touch scroll on some devices. Thanks to dnikolajevich for providing the test. check-in: 88bcfc9b user: fvogel tags: bug-75d38f8608
2018-03-20
21:05
Fix [75d38f8608]: touchpad two finger scroll does not work correctly with listbox on Windows check-in: da31d31c user: fvogel tags: bug-75d38f8608
2018-03-15
20:59
Fix [3e490c1386]: What the proxy is is not clearly documented in the panedwindow man page check-in: f2d77e8f user: fvogel tags: trunk
20:58
Fix [3e490c1386]: What the proxy is is not clearly documented in the panedwindow man page check-in: 8014f1c6 user: fvogel tags: core-8-6-branch
2018-03-11
21:25
Fix alphabetical order in options list and commands list Closed-Leaf check-in: 1cd3c744 user: fvogel tags: bug-3e490c1386
2018-03-07
20:52
Fix [71b1319acc]: Regression in tkUnixRFont.c. Patch from Christian Werner, with review by Gregor Cramer. check-in: bce3c922 user: fvogel tags: core-8-6-branch

Changes to library/listbox.tcl.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

#--------------------------------------------------------------------------
# tk::Priv elements used in this file:
#
# afterId -		Token returned by "after" for autoscanning.
# listboxPrev -		The last element to be selected or deselected
#			during a selection operation.
# listboxSelection -	All of the items that were selected before the
#			current selection operation (such as a mouse
#			drag) started;  used to cancel an operation.
#--------------------------------------------------------------------------

#-------------------------------------------------------------------------







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

#--------------------------------------------------------------------------
# tk::Priv elements used in this file:
#
# afterId -		Token returned by "after" for autoscanning.
# listboxPrev -	The last element to be selected or deselected
#			during a selection operation.
# listboxSelection -	All of the items that were selected before the
#			current selection operation (such as a mouse
#			drag) started;  used to cancel an operation.
#--------------------------------------------------------------------------

#-------------------------------------------------------------------------

Changes to win/tkWinX.c.

78
79
80
81
82
83
84


85
86
87
88
89
90
91
 */

typedef struct ThreadSpecificData {
    TkDisplay *winDisplay;	/* TkDisplay structure that represents Windows
				 * screen. */
    int updatingClipboard;	/* If 1, we are updating the clipboard. */
    int surrogateBuffer;	/* Buffer for first of surrogate pair. */


} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Forward declarations of functions used in this file.
 */








>
>







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 */

typedef struct ThreadSpecificData {
    TkDisplay *winDisplay;	/* TkDisplay structure that represents Windows
				 * screen. */
    int updatingClipboard;	/* If 1, we are updating the clipboard. */
    int surrogateBuffer;	/* Buffer for first of surrogate pair. */
    DWORD wheelTickPrev;	/* For high resolution wheels. */
    short wheelAcc;		/* For high resolution wheels. */
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Forward declarations of functions used in this file.
 */

604
605
606
607
608
609
610


611
612
613
614
615
616
617

    TkWinDisplayChanged(display);

    tsdPtr->winDisplay = ckalloc(sizeof(TkDisplay));
    ZeroMemory(tsdPtr->winDisplay, sizeof(TkDisplay));
    tsdPtr->winDisplay->display = display;
    tsdPtr->updatingClipboard = FALSE;



    return tsdPtr->winDisplay;
}

/*
 *----------------------------------------------------------------------
 *







>
>







606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621

    TkWinDisplayChanged(display);

    tsdPtr->winDisplay = ckalloc(sizeof(TkDisplay));
    ZeroMemory(tsdPtr->winDisplay, sizeof(TkDisplay));
    tsdPtr->winDisplay->display = display;
    tsdPtr->updatingClipboard = FALSE;
    tsdPtr->wheelTickPrev = GetTickCount();
    tsdPtr->wheelAcc = 0;

    return tsdPtr->winDisplay;
}

/*
 *----------------------------------------------------------------------
 *
1127
1128
1129
1130
1131
1132
1133
1134
















1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146

1147

1148
1149
1150
1151
1152
1153
1154
	event.xbutton.same_screen = True;

	/*
	 * Now set up event specific fields.
	 */

	switch (message) {
	case WM_MOUSEWHEEL:
















	    /*
	     * We have invented a new X event type to handle this event. It
	     * still uses the KeyPress struct. However, the keycode field has
	     * been overloaded to hold the zDelta of the wheel. Set nbytes to
	     * 0 to prevent conversion of the keycode to a keysym in
	     * TkpGetString. [Bug 1118340].
	     */

	    event.type = MouseWheelEvent;
	    event.xany.send_event = -1;
	    event.xkey.nbytes = 0;
	    event.xkey.keycode = (short) HIWORD(wParam);

	    break;

	case WM_SYSKEYDOWN:
	case WM_KEYDOWN:
	    /*
	     * Check for translated characters in the event queue. Setting
	     * xany.send_event to -1 indicates to the Windows implementation
	     * of TkpGetString() that this event was generated by windows and
	     * that the Windows extension xkey.trans_chars is filled with the







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>











|
>

>







1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
	event.xbutton.same_screen = True;

	/*
	 * Now set up event specific fields.
	 */

	switch (message) {
	case WM_MOUSEWHEEL: {
	    /*
	     * Support for high resolution wheels.
	     */

	    DWORD wheelTick = GetTickCount();

	    if (wheelTick - tsdPtr->wheelTickPrev < 1500) {
		tsdPtr->wheelAcc += (short) HIWORD(wParam);
	    } else {
		tsdPtr->wheelAcc = (short) HIWORD(wParam);
	    }
	    tsdPtr->wheelTickPrev = wheelTick;
	    if (abs(tsdPtr->wheelAcc) < WHEEL_DELTA) {
		return;
	    }

	    /*
	     * We have invented a new X event type to handle this event. It
	     * still uses the KeyPress struct. However, the keycode field has
	     * been overloaded to hold the zDelta of the wheel. Set nbytes to
	     * 0 to prevent conversion of the keycode to a keysym in
	     * TkpGetString. [Bug 1118340].
	     */

	    event.type = MouseWheelEvent;
	    event.xany.send_event = -1;
	    event.xkey.nbytes = 0;
	    event.xkey.keycode = tsdPtr->wheelAcc / WHEEL_DELTA * WHEEL_DELTA;
	    tsdPtr->wheelAcc = tsdPtr->wheelAcc % WHEEL_DELTA;
	    break;
	}
	case WM_SYSKEYDOWN:
	case WM_KEYDOWN:
	    /*
	     * Check for translated characters in the event queue. Setting
	     * xany.send_event to -1 indicates to the Windows implementation
	     * of TkpGetString() that this event was generated by windows and
	     * that the Windows extension xkey.trans_chars is filled with the