Tk Source Code

Changes On Branch core-9-0-branch
Login

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

Changes In Branch core-9-0-branch Excluding Merge-Ins

This is equivalent to a diff from 60200f7a to db2b022f

2025-03-12
21:29
(cherry-pick): Remove some unused variables. Leaf check-in: db2b022f user: jan.nijtmans tags: core-9-0-branch
14:06
Remove some unused variables. check-in: f487d1d8 user: culler tags: trunk, main
09:12
(cherry-pick): The rest of the fix for [6328ce0301] related to menubars in Aqua check-in: 987295d8 user: jan.nijtmans tags: core-9-0-branch
2025-03-11
14:36
Split off Tk 9.0. release check-in: 288254a9 user: jan.nijtmans tags: core-9-0-branch
14:33
version -> 9.1a0, start of Tk 9.1 development check-in: c191a71c user: jan.nijtmans tags: trunk, main
11:58
Ticket [441c526c] MSWin: remove XP Style dialogs and old compiler compatibility check-in: 683c4bb9 user: oehhar tags: 441c526c-mswin-xpstyle-dialogs-removal
2025-03-10
23:05
Adjust event-9,19. The last commit must have changed some timing. check-in: 60200f7a user: culler tags: trunk, main
22:26
Fix [6328ce0301] Aqua menubar crashes and unclear menubar selection algorithm. check-in: e8768dc5 user: culler tags: trunk, main

Changes to README.md.
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16




17
18
19
20
21
22
23
1
2
3
4
5
6
7

8
9
10
11
12




13
14
15
16
17
18
19
20
21
22
23







-
+




-
-
-
-
+
+
+
+







# README:  Tk

This is the **Tk 9.0.2** source distribution.

You can get any source release of Tk from [our distribution
site](https://sourceforge.net/projects/tcl/files/Tcl/).

9.0 (production release, daily build)
9.1 (in development, daily build)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Amain)
<br>
8.6 (legacy release, daily build)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Acore-8-6-branch)
9.0 (production release, daily build)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=core-9-0-branch)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-9-0-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=core-9-0-branch)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-9-0-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=core-9-0-branch)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Acore-9-0-branch)

## <a id="intro">1.</a> Introduction

This directory contains the sources and documentation for Tk, a
cross-platform GUI toolkit implemented with the Tcl scripting language.

For details on features, incompatibilities, and potential problems with
Changes to macosx/tkMacOSXMenu.c.
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1156
1157
1158
1159
1160
1161
1162

1163
1164
1165
1166
1167
1168
1169







-








void
Tk_SetMainMenubar(
    Tcl_Interp *interp,		/* The interpreter of the application */
    Tk_Window tkwin,		/* The frame we are setting up */
    const char *menuName)	/* The name of the menu to put in front. */
{
    static Tcl_Interp *currentInterp = NULL;
    TKMenu *menu = nil;
    TkWindow *winPtr = (TkWindow *) tkwin;

    /*
     * We will be called when an embedded window receives an ActivationNotify
     * event, but we should not change the menubar in that case.
     */
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1200
1201
1202
1203
1204
1205
1206

1207
1208
1209
1210
1211
1212
1213







-







    }

    /*
     * If we couldn't find a menu this will install the default menubar.
     */

    [NSApp tkSetMainMenu:menu];
    currentInterp = interp;
}

/*
 *----------------------------------------------------------------------
 *
 * CheckForSpecialMenu --
 *
Changes to macosx/tkMacOSXWindowEvent.c.
132
133
134
135
136
137
138
139

140
141
142
143
144
145
146
132
133
134
135
136
137
138

139
140
141
142
143
144
145
146







-
+







#endif

    NSWindow *w = [notification object];
    TkWindow *winPtr = TkMacOSXGetTkWindow(w);
    if (winPtr && winPtr->wmInfoPtr->hints.initial_state == IconicState) {
	winPtr->wmInfoPtr->hints.initial_state =
		TkMacOSXIsWindowZoomed(winPtr) ? ZoomState : NormalState;
	TkWmUnmapWindow(winPtr);
	TkWmMapWindow(winPtr);

	/*
	 * NSWindowDidDeminiaturizeNotification is received after
	 * NSWindowDidBecomeKeyNotification, so activate manually
	 */

	GenerateActivateEvents(winPtr, 1);
Changes to macosx/tkMacOSXWm.c.
1283
1284
1285
1286
1287
1288
1289

1290
1291








1292
1293
1294
1295
1296
1297
1298
1283
1284
1285
1286
1287
1288
1289
1290
1291

1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306







+

-
+
+
+
+
+
+
+
+







	    if (!winPtr2 || !winPtr2->wmInfoPtr) {
		continue;
	    }
	    wmPtr2 = winPtr2->wmInfoPtr;
	    isOnScreen = (wmPtr2->hints.initial_state != IconicState &&
			  wmPtr2->hints.initial_state != WithdrawnState);
	    if (w != deadNSWindow && isOnScreen && [w canBecomeKeyWindow]) {
		TkWindow *frontPtr = TkMacOSXGetTkWindow(w); 
		[w makeKeyAndOrderFront:NSApp];
		newTkEventTarget = TkMacOSXGetTkWindow(w);
		newTkEventTarget = frontPtr;
		/* Set the menubar for the new front window. */
		if (frontPtr->wmInfoPtr &&
		    frontPtr->wmInfoPtr->menuPtr &&
		    frontPtr->wmInfoPtr->menuPtr->mainMenuPtr) {
		    TKMenu *menu = (TKMenu *) frontPtr->wmInfoPtr->menuPtr->platformData;
		    [NSApp tkSetMainMenu:menu];
		}
		break;
	    }
	}

	[NSApp setTkEventTarget:newTkEventTarget];

	/*