Tk Source Code

Check-in [09655b04]
Login

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

Overview
Comment:[Bug 3520202]: %K must not work with <MouseWheel> or effects are undefined!
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-4-branch
Files: files | file ages | folders
SHA1: 09655b0433352c6a7640b7839dba1ba37c448016
User & Date: dkf 2012-04-22 22:03:10
Context
2012-04-26
09:14
[Bug 3508771]: Implement TkClipBox, Tk*Region and Tk_GetHINSTANCE for Cygwin check-in: 6855a651 user: jan.nijtmans tags: core-8-4-branch
2012-04-25
13:30
implement various internal win32 stub functions for cygwin check-in: cbfd3027 user: jan.nijtmans tags: bug-3508771
2012-04-22
22:05
[Bug 3520202]: %K must not work with <MouseWheel> or effects are undefined! check-in: 07b47d79 user: dkf tags: core-8-5-branch
22:03
[Bug 3520202]: %K must not work with <MouseWheel> or effects are undefined! check-in: 09655b04 user: dkf tags: core-8-4-branch
2012-04-20
12:16
Use vroot size in stead of screen size for clipping window coordinates in ::tk::PlaceWindow. Use ::tk::PlaceWindow in dialog.tcl, in stead of dumplicating the code there. check-in: 53c95a25 user: jan.nijtmans tags: core-8-4-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.










1
2
3
4
5
6
7









2012-04-20  Jan Nijtmans  <[email protected]>

	* generic/tk.tcl: Use vroot size in stead of screen size for
	clipping window coordinates in ::tk::PlaceWindow.
	* generic/dialog.tcl: Use ::tk::PlaceWindow in dialog.tcl, in
	stead of dumplicating the code there.
	(harmless part of [Bug 533519])
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2012-04-22  Donal K. Fellows  <[email protected]>

	* generic/tkBind.c (ExpandPercents): [Bug 3520202]: Ensure that the
	%k, %K and %N substitutions use dummy tokens with <MouseWheel> events
	and that the %D subsitution is a dummy with <Key>/<KeyRelease>. This
	was causing significant indigestion (and a read of goodness knows what
	memory) to Tkinter/Python because of the way they map events between
	languages.

2012-04-20  Jan Nijtmans  <[email protected]>

	* generic/tk.tcl: Use vroot size in stead of screen size for
	clipping window coordinates in ::tk::PlaceWindow.
	* generic/dialog.tcl: Use ::tk::PlaceWindow in dialog.tcl, in
	stead of dumplicating the code there.
	(harmless part of [Bug 533519])

Changes to generic/tkBind.c.

2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
		    TkpPrintWindowId(numStorage, eventPtr->xmaprequest.window);
		} else {
		    TkpPrintWindowId(numStorage, eventPtr->xany.window);
		}
		string = numStorage;
		goto doString;
	    case 'k':
		if (flags & KEY) {
		    number = eventPtr->xkey.keycode;
		    goto doNumber;
		}
		goto doString;
	    case 'm':
		if (flags & CROSSING) {
		    number = eventPtr->xcrossing.mode;







|







2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
		    TkpPrintWindowId(numStorage, eventPtr->xmaprequest.window);
		} else {
		    TkpPrintWindowId(numStorage, eventPtr->xany.window);
		}
		string = numStorage;
		goto doString;
	    case 'k':
		if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
		    number = eventPtr->xkey.keycode;
		    goto doNumber;
		}
		goto doString;
	    case 'm':
		if (flags & CROSSING) {
		    number = eventPtr->xcrossing.mode;
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
		    goto doString;
		}
		goto doNumber;
	    case 'D':
		/*
		 * This is used only by the MouseWheel event.
		 */
		if (flags & KEY) {
		    number = eventPtr->xkey.keycode;
		    goto doNumber;
		}
		goto doString;
	    case 'E':
		number = (int) eventPtr->xany.send_event;
		goto doNumber;
	    case 'K':
		if (flags & KEY) {
		    char *name;

		    name = TkKeysymToString(keySym);
		    if (name != NULL) {
			string = name;
		    }
		}
		goto doString;
	    case 'N':
		if (flags & KEY) {
		    number = (int) keySym;
		    goto doNumber;
		}
		goto doString;
	    case 'P':
		if (flags & PROP) {
		    string = Tk_GetAtomName((Tk_Window) winPtr, eventPtr->xproperty.atom);







|








|









|







2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
		    goto doString;
		}
		goto doNumber;
	    case 'D':
		/*
		 * This is used only by the MouseWheel event.
		 */
		if ((flags & KEY) && (eventPtr->type == MouseWheelEvent)) {
		    number = eventPtr->xkey.keycode;
		    goto doNumber;
		}
		goto doString;
	    case 'E':
		number = (int) eventPtr->xany.send_event;
		goto doNumber;
	    case 'K':
		if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
		    char *name;

		    name = TkKeysymToString(keySym);
		    if (name != NULL) {
			string = name;
		    }
		}
		goto doString;
	    case 'N':
		if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
		    number = (int) keySym;
		    goto doNumber;
		}
		goto doString;
	    case 'P':
		if (flags & PROP) {
		    string = Tk_GetAtomName((Tk_Window) winPtr, eventPtr->xproperty.atom);