Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Difference From 8a6f1edf40589c0a
To 19aa20068757b32c
2025-03-16
| | |
22:54 |
|
check-in: 8f92e5f9 user: jan.nijtmans tags: revised_text, tip-466
|
2025-03-15
| | |
08:59 |
|
check-in: 19aa2006 user: fvogel tags: revised_text, tip-466
|
2025-03-12
| | |
14:41 |
|
check-in: dc6139aa user: jan.nijtmans tags: revised_text, tip-466
|
2025-03-09
| | |
17:27 |
|
check-in: 8a6f1edf user: fvogel tags: revised_text, tip-466
|
2025-03-08
| | |
16:37 |
|
check-in: 450c3e0f user: culler tags: trunk, main
|
2025-03-01
| | |
10:12 |
|
check-in: 2793972a user: fvogel tags: revised_text, tip-466
|
| | |
Changes to .github/workflows/linux-build.yml.
︙ | | |
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
+
-
+
|
- "--disable-xss"
- "--enable-symbols"
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Setup Environment (compiler=${{ matrix.compiler }})
run: |
sudo apt-get install libxss-dev libxft-dev
mkdir "$HOME/install dir"
touch tk/doc/man.macros tk/generic/tkStubInit.c
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV
|
︙ | | |
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
-
+
-
+
|
- "--disable-xft"
- "--enable-symbols"
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Setup Environment (compiler=${{ matrix.compiler }})
run: |
sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev xfonts-75dpi xfonts-100dpi xfonts-scalable libxfont2 unifont
mkdir "$HOME/install dir"
touch tk/doc/man.macros tk/generic/tkStubInit.c
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV
|
︙ | | |
Deleted .github/workflows/linux-with-tcl91-build.yml.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
name: Linux (with Tcl 9.1)
on:
push:
branches:
- "main"
- "core-9-0-branch"
- "revised_text"
tags:
- "core-**"
permissions:
contents: read
defaults:
run:
shell: bash
working-directory: tk/unix
env:
ERROR_ON_FAILURES: 1
jobs:
build:
runs-on: ubuntu-22.04
strategy:
matrix:
compiler:
- "gcc"
- "clang"
config:
- ""
- "CFLAGS=-DTK_NO_DEPRECATED=1"
- "--disable-shared"
- "--disable-xft"
- "--disable-xss"
- "--enable-symbols"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: main
path: tcl
- name: Setup Environment (compiler=${{ matrix.compiler }})
run: |
sudo apt-get install libxss-dev libxft-dev
mkdir "$HOME/install dir"
touch tk/doc/man.macros tk/generic/tkStubInit.c
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV
echo "CC=$COMPILER" >> $GITHUB_ENV
echo "TOOL_DIR=$(cd tcl/tools;pwd)" >> $GITHUB_ENV
echo "BUILD_CONFIG_ID=$OPTS" >> $GITHUB_ENV
working-directory: "."
env:
CFGOPT: ${{ matrix.config }}
COMPILER: ${{ matrix.compiler }}
OPTS: ${{ matrix.compiler }}${{ matrix.config }}
- name: Configure and Build Tcl
run: |
./configure $CFGOPT "--prefix=$HOME/install dir" || {
cat config.log
echo "::warning::Failure during Tcl Configure"
exit 1
}
make all install || {
echo "::warning::Failure during Tcl Build"
exit 1
}
echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV
working-directory: tcl/unix
- name: Configure (opts=${{ matrix.config }})
run: |
./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || {
cat config.log
echo "::error::Failure during Configure"
exit 1
}
- name: Build
run: |
make binaries libraries || {
echo "::error::Failure during Build"
exit 1
}
- name: Build Test Harness
run: |
make tktest || {
echo "::error::Failure during Build"
exit 1
}
- name: Test-Drive Installation
run: |
make install || {
echo "::error::Failure during Install"
exit 1
}
- name: Create Distribution Package
run: |
make dist || {
echo "::error::Failure during Distribute"
exit 1
}
- name: Convert Documentation to HTML
run: |
make html-tk TOOL_DIR=$TOOL_DIR || {
echo "::error::Failure during Distribute"
exit 1
}
test:
runs-on: ubuntu-22.04
strategy:
matrix:
compiler:
- "gcc"
config:
- ""
- "--disable-xft"
- "--enable-symbols"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: main
path: tcl
- name: Setup Environment (compiler=${{ matrix.compiler }})
run: |
sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev xfonts-75dpi xfonts-100dpi xfonts-scalable libxfont2 unifont
mkdir "$HOME/install dir"
touch tk/doc/man.macros tk/generic/tkStubInit.c
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV
echo "CC=$COMPILER" >> $GITHUB_ENV
working-directory: "."
env:
CFGOPT: ${{ matrix.config }}
COMPILER: ${{ matrix.compiler }}
- name: Configure and Build Tcl
run: |
./configure $CFGOPT "--prefix=$HOME/install dir" || {
cat config.log
echo "::warning::Failure during Tcl Configure"
exit 1
}
make all install || {
echo "::warning::Failure during Tcl Build"
exit 1
}
echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV
working-directory: tcl/unix
- name: Configure ${{ matrix.config }}
run: |
./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || {
cat config.log
echo "::error::Failure during Configure"
exit 1
}
- name: Build
run: |
make binaries libraries tktest || {
echo "::error::Failure during Build"
exit 1
}
- name: Run Tests
run: |
xvfb-run --auto-servernum make test-classic | tee out-classic.txt
xvfb-run --auto-servernum make test-ttk | tee out-ttk.txt
grep -q "Failed 0" out-classic.txt || {
echo "::error::Failure during Test"
exit 1
}
grep -q "Failed 0" out-ttk.txt || {
echo "::error::Failure during Test"
exit 1
}
timeout-minutes: 15
|
Changes to .github/workflows/mac-build.yml.
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
-
+
|
shell: bash
working-directory: tk/macosx
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Check out Tcl 9.0
- name: Check out Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Prepare checked out repositories
run: |
touch tk/generic/tkStubInit.c
mkdir build
echo "BUILD_DIR=`cd build && pwd`" >> $GITHUB_ENV
echo "DESTDIR=`cd build && pwd`" >> $GITHUB_ENV
|
︙ | | |
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
-
+
-
+
|
shell: bash
working-directory: tk/unix
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Check out Tcl 9.0
- name: Check out Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Prepare checked out repositories
env:
SET_DISPLAY: ${{ contains(matrix.options, '--disable-aqua') }}
run: |
touch tkStubInit.c
mkdir "$HOME/install dir"
|
︙ | | |
Changes to .github/workflows/onefiledist.yml.
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
-
+
|
CC: gcc
CFGOPT: --disable-symbols --disable-shared
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Setup Environment
run: |
sudo apt-get install libxss-dev libxft-dev
touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c
touch tk/generic/tkStubInit.c
echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV
|
︙ | | |
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
-
+
|
- name: Build & Install Tk
run: |
make binaries libraries install
working-directory: tk/unix
# TODO: need the Tk version separately for distro naming below
- name: Package
run: |
cp bin/wish9.0 ${BUILD_NAME}
cp bin/wish9.1 ${BUILD_NAME}
chmod +x ${BUILD_NAME}
tar -cf ${BUILD_NAME}.tar ${BUILD_NAME}
working-directory: ${{ env.INST_DIR }}
env:
BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot
- name: Upload
uses: actions/upload-artifact@v4
|
︙ | | |
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
-
+
-
+
|
CC: gcc
CFGOPT: --disable-symbols --disable-shared
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Checkout create-dmg
uses: actions/checkout@v4
with:
repository: create-dmg/create-dmg
ref: v1.0.8
path: create-dmg
|
︙ | | |
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
-
+
-
+
|
with:
msystem: MINGW64
install: git mingw-w64-x86_64-toolchain make zip
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Setup Environment
run: |
mkdir -p install/combined
touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c
touch tk/generic/tkStubInit.c
echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV
|
︙ | | |
Changes to .github/workflows/win-build.yml.
︙ | | |
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
-
+
-
+
|
- "OPTS=symbols"
- "OPTS=static"
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Init MSVC
uses: ilammy/msvc-dev-cmd@v1
- name: Make Install Location
working-directory: tcl
run: |
echo "TCLDIR=`pwd`" >> $GITHUB_ENV
|
︙ | | |
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
-
+
-
+
|
- name: Install MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
install: git mingw-w64-x86_64-toolchain make zip
- name: Checkout Tk
uses: actions/checkout@v4
- name: Checkout Tcl 9.0
- name: Checkout Tcl 9.1
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: core-9-0-branch
ref: main
path: tcl
- name: Prepare
run: |
touch tkStubInit.c
touch "${HOME}/forWinDialog-5.12.7"
mkdir "${HOME}/install_dir"
echo "INSTALL_DIR=${HOME}/install_dir" >> $GITHUB_ENV
|
︙ | | |
Changes to .project.
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>tk9.0</name>
<name>tk9.1</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
|
︙ | | |
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
24
25
26
27
28
29
30
31
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
+
-
+
-
-
-
-
+
+
+
+
-
+
|
# README: Tk
This is the **Tk 9.0.2** source distribution.
This is the **Tk 9.1a0** 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)
[](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Amain)
[](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Amain)
[](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Amain)
<br>
8.6 (legacy release, daily build)
[](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-8-6-branch)
[](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-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)
[](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-9-0-branch)
[](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-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
this release, see [the Tcl/Tk 9.0 Web page](https://www.tcl-lang.org/software/tcltk/9.0.html)
this release, see [the Tcl/Tk 9.1 Web page](https://www.tcl-lang.org/software/tcltk/9.1.html)
or refer to the "changes" file in this directory, which contains a
historical record of all changes to Tk.
Tk is maintained, enhanced, and distributed freely by the Tcl community.
Source code development and tracking of bug reports and feature requests
take place at [core.tcl-lang.org](https://core.tcl-lang.org/).
Tcl/Tk release and mailing list services are [hosted by
|
︙ | | |
Changes to changes.md.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-
+
-
-
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
The source code for Tk is managed by fossil. Tk developers coordinate all
changes to the Tk source code at
> [Tk Source Code](https://core.tcl-lang.org/tk/)
Release Tk 9.0.2 arises from the check-in with tag `core-9-0-2`.
Release Tk 9.1a0 arises from the check-in with tag `core-9.1a0`.
Tk 9.0.2 continues the Tk 9.0 series of releases. The Tk 9.0 series
does not support Tcl 8.6. The Tk 9.0 series extends the Tcl 9.0 series.
Tk 9.1a0 continues the Tk 9.x series of releases. The Tk 9.x series
do not support Tcl 8.6. The Tk 9.1 series extends the Tcl 9.0 series.
To make use of Tk 9.0.2, first a Tcl 9.0 release must be present.
As new Tk features are developed, expect them to appear in Tk 9, but not
necessarily in Tk 8.
To make use of Tk 9.1a0, first a Tcl 9.0 or 9.1 release must be present.
Tk patch releases have the primary purpose of delivering bug fixes
to the userbase.
# Bug fixes
- [inaccurate scrollbar error-message](https://core.tcl-lang.org/tk/tktview/f88118)
- [Build tk 9.0.1 failed on macos 10.13](https://core.tcl-lang.org/tk/tktview/cb5d77)
- [image svg upstream out of bound read nanosvg#262](https://core.tcl-lang.org/tk/tktview/121786)
- [wm iconbitmap does not correctly set the icon pixmap hint on macOS](https://core.tcl-lang.org/tk/tktview/13ac26)
- [Backspace crashes 9.0 interpreter on FreeBSD](https://core.tcl-lang.org/tk/tktview/1da19a)
- [Bug in the ttk::scale widget of the "default" theme](https://core.tcl-lang.org/tk/tktview/126d07)
- [Wrong appearance of the ttk::menubutton indicator of the "xpnative" theme](https://core.tcl-lang.org/tk/tktview/525536)
- [English shortcuts for Chinese locale](https://core.tcl-lang.org/tk/tktview/c99266)
- [No grip element in ttk::panedwindow sashes of most built-in themes](https://core.tcl-lang.org/tk/tktview/9902d8)
- [Tk_Get3DBorderColors broken by design](https://core.tcl-lang.org/tk/tktview/517165)
Release Tk 9.0.1 arises from the check-in with tag `core-9-0-1`.
Tk 9.0.1 continues the Tk 9.0 series of releases. The Tk 9.0 series
does not support Tcl 8.6. The Tk 9.0 series extends the Tcl 9.0 series.
To make use of Tk 9.0.1, first a Tcl 9.0 release must be present.
As new Tk features are developed, expect them to appear in Tk 9, but not
necessarily in Tk 8.
Tk patch releases have the primary purpose of delivering bug fixes
to the userbase. As the first patch release in the Tk 9.0 series,
Tk 9.0.1 also includes a small number of interface changes that complete
some incomplete features first delivered in Tk 9.0.0.
# Completed 9.0 Features and Interfaces
- [TIP #706: Expose three Tk "In Context" functions via stubs table](https://core.tcl-lang.org/tips/doc/trunk/tip/706.md)
- [Tilde file syntax not available on 9.0 but used by "~/.Xdefaults"](https://core.tcl-lang.org/tk/tktview/fcfddc)
- [leftover use of tilde in filename string](https://core.tcl-lang.org/tk/tktview/767702)
# Bug fixes
- [Canvas widget handles pixel objects incorrectly in Tk 9.0](https://core.tcl-lang.org/tk/tktview/610a73)
- [SIGABRT from Tk_DeleteErrorHandler()](https://core.tcl-lang.org/tk/tktview/f52986)
- [build failure on macOS < 10.13](https://core.tcl-lang.org/tk/tktview/d48cbf)
- [Two potentially bogus binding scripts for <TouchpadScroll>](https://core.tcl-lang.org/tk/tktview/73c5e3)
- [Aqua: canvas items are not always redrawn](https://core.tcl-lang.org/tk/tktview/5869c2)
- [Aqua: color rgb values do not behave as expected when appearance is changed](https://core.tcl-lang.org/tk/tktview/01f58b)
- [Aqua: winfo rgb . systemLabelColor returns a weird result on aqua](https://core.tcl-lang.org/tk/tktview/23b57a)
- [Aqua: background thread became slower](https://core.tcl-lang.org/tk/tktview/547cc6)
- [Use of Tcl_Obj vs char * in Widget storage](https://core.tcl-lang.org/tk/tktview/f91aa2)
- [cannot build .chm help file (Windows)](https://core.tcl-lang.org/tk/tktview/bb110c)
- [Tk initialization overwrites thread specific data](https://core.tcl-lang.org/tk/tktview/bcbf4c)
- [File clamTheme.tcl misses code related to the -indicatorforeground option](https://core.tcl-lang.org/tk/tktview/a69fd7)
- [Segfault when using menu(button) with the -font option](https://core.tcl-lang.org/tk/tktview/8ce672)
- [Bind mechanism vs. GNOME](https://core.tcl-lang.org/tk/tktview/6bdf1a)
- [many PIXEL options don't keep their configured value](https://core.tcl-lang.org/tk/tktview/29ba53)
- [Menu entry underline does not consider activeborderwidth](https://core.tcl-lang.org/tk/tktview/844c0b)
Release Tk 9.0.0 arises from the check-in with tag `core-9-0-0`.
Highlighted differences between Tk 9.0 and Tk 8.6 are summarized below,
with focus on changes important to programmers using the Tk library and
writing Tcl scripts containing Tk commands.
## Many improvements to use of platform features and conventions.
- Built-in widgets and themes are scaling-aware.
- Improved support of two-finger gestures, where available
- The `tk windowingsystem` "aqua" needs macOS 10.9 or later
## New commands and options
- `tk sysnotify` — Access to the OS notifications system
- `tk systray` — Access to the OS tray facility
- `tk print` — Access to the OS printing facility
## Widget options
- New `ttk::progressbar` option: **-text**
- `$frame ... -backgroundimage $img -tile $bool`
- `$menu id`, `$menu add|insert ... ?$id? ...`
- `$image get ... -withalpha ...`
- All indices now accept the forms **end**, **end-int**, **int+|-int**
## Improved widget appearance
- `ttk::notebook` with nondefault tab positions
## Images
- Partial SVG support
- Read/write access to photo image metadata
## Known bugs
- [Inconsistent reporting of child geometry changes to grid container](https://core.tcl-lang.org/tk/tktview/beaa8e)
- [Inconsistency in whether widgets allow negative borderwidths](https://core.tcl-lang.org/tk/tktview/5f739d)
- [slow widget creation if default font is not used](https://core.tcl-lang.org/tk/tktview/8da7af)
- [The wm manage command does not work on current macOS versions](https://core.tcl-lang.org/tk/tktview/8a6012)
- [Slow processing irregular transparencies](https://core.tcl-lang.org/tk/tktview/919066)
- [text's cursor width on 0th column](https://core.tcl-lang.org/tk/tktview/47fbfc)
- [text widget breaks graphemes with combining diacritical marks](https://core.tcl-lang.org/tk/tktview/442208)
|
Changes to doc/menu.n.
︙ | | |
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
|
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
-
+
+
+
+
+
+
-
+
|
tear-off entry causes a torn-off copy to be made of the menu and
all of its submenus.
.SH "MENUBARS"
.PP
Any menu can be set as a menubar for a toplevel window (see
\fBtoplevel\fR command for syntax). On the Macintosh, whenever the
toplevel is in front, this menu's cascade items will appear in the
menubar across the top of the main monitor. On Windows and Unix, this
menubar across the top of the main screen. On Windows and Unix, this
menu's items will be displayed in a menubar across the top of the
window. These menus will behave according to the interface guidelines
of their platforms. In particular, since macOS requires that a
menubar always be displayed for the active app, if no menu is assigned
by a \fBconfigure -menu\fR for a certain toplevel then a standard default
menu will be displayed whenever that toplevel has focus.
of their platforms. For every menu set as a menubar, a clone menu is
For every menu set as a menubar, a clone menu is
made. See the \fBCLONES\fR section for more information.
.PP
As noted, menubars may behave differently on different platforms. One
example of this concerns the handling of checkbuttons and radiobuttons
within the menu. While it is permitted to put these menu elements on
menubars, they may not be drawn with indicators on some platforms, due
to system restrictions.
|
︙ | | |
Changes to generic/tk.h.
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-
-
+
+
|
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#ifndef _TK
#define _TK
#include <tcl.h>
#if (TCL_MAJOR_VERSION < 9) && defined(TCL_MINOR_VERSION) && (TCL_MINOR_VERSION < 7)
# error Tk 9.0 must be compiled with tcl.h from Tcl 8.7 or better
#if (TCL_MAJOR_VERSION < 9)
# error Tk 9.1 must be compiled with tcl.h from Tcl 9.0 or better
#endif
#ifndef EXTERN
# define EXTERN extern TCL_STORAGE_CLASS
#endif
/*
|
︙ | | |
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
-
-
-
+
+
+
-
-
+
+
|
* the version of Tcl that this release of Tk is compiled against.
*/
#ifndef TK_MAJOR_VERSION
# define TK_MAJOR_VERSION 9
#endif
#if TK_MAJOR_VERSION == 9
# define TK_MINOR_VERSION 0
# define TK_RELEASE_LEVEL TCL_FINAL_RELEASE
# define TK_RELEASE_SERIAL 2
# define TK_MINOR_VERSION 1
# define TK_RELEASE_LEVEL TCL_ALPHA_RELEASE
# define TK_RELEASE_SERIAL 0
# define TK_VERSION "9.0"
# define TK_PATCH_LEVEL "9.0.2"
# define TK_VERSION "9.1"
# define TK_PATCH_LEVEL "9.1a0"
#endif /* TK_MAJOR_VERSION */
/*
* A special definition used to allow this header file to be included from
* windows or mac resource files so that they can obtain version information.
* RC_INVOKED is defined by default by the windows RC tool and manually set
* for macintosh.
|
︙ | | |
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
-
-
+
-
-
-
|
/*
* Flag values for Tk_OptionSpec structures. These flags are shared by
* Tk_ConfigSpec structures, so be sure to coordinate any changes carefully.
*/
#define TK_OPTION_DONT_SET_DEFAULT (1 << 3)
#if TCL_MAJOR_VERSION > 8
# define TK_OPTION_NULL_OK TCL_NULL_OK
#define TK_OPTION_NULL_OK TCL_NULL_OK
#else
# define TK_OPTION_NULL_OK (1 << 0)
#endif
#define TK_OPTION_VAR(type) ((sizeof(type) < 2 * sizeof(int)) ? ((int)(sizeof(type)&(sizeof(int)-1))<<6) : (3<<6))
#define TK_OPTION_ENUM_VAR TK_OPTION_VAR(Tk_OptionType)
/*
* The following structure and function types are used by TK_OPTION_CUSTOM
* options; the structure holds pointers to the functions needed by the Tk
* option config code to handle a custom option.
|
︙ | | |
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
|
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
|
-
-
-
-
|
typedef struct Tk_SavedOption {
struct TkOption *optionPtr; /* Points to information that describes the
* option. */
Tcl_Obj *valuePtr; /* The old value of the option, in the form of
* a Tcl object; may be NULL if the value was
* not saved as an object. */
#if TCL_MAJOR_VERSION > 8
long double internalForm; /* The old value of the option, in some
* internal representation such as an int or
* (XColor *). Valid only if the field
* optionPtr->specPtr->objOffset is -1. The
* space must be large enough to accommodate a
* long double, a double, a long, or a pointer;
* right now it looks like a long double (i.e., 16
* bytes) is big enough. Also, using a long double
* guarantees that the field is properly aligned
* for storing large values. */
#else
double internalForm;
#endif
} Tk_SavedOption;
#ifdef TCL_MEM_DEBUG
# define TK_NUM_SAVED_OPTIONS 2
#else
# define TK_NUM_SAVED_OPTIONS 20
#endif
|
︙ | | |
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
|
-
-
+
-
-
-
|
* Before changing any values here, coordinate with tkOldConfig.c
* (internal-use-only flags are defined there).
*/
#define TK_CONFIG_COLOR_ONLY (1 << 1)
#define TK_CONFIG_MONO_ONLY (1 << 2)
#define TK_CONFIG_DONT_SET_DEFAULT (1 << 3)
#if TCL_MAJOR_VERSION > 8
# define TK_CONFIG_NULL_OK TCL_NULL_OK
#define TK_CONFIG_NULL_OK TCL_NULL_OK
#else
# define TK_CONFIG_NULL_OK (1 << 0)
#endif
#define TK_CONFIG_USER_BIT 0x100
#endif /* __NO_OLD_CONFIG */
/*
* Structure used to specify how to handle argv options.
*/
|
︙ | | |
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
|
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
|
-
-
-
-
-
-
-
-
|
Tk_Uid classUid;
XWindowChanges changes;
unsigned int dummy6; /* dirtyChanges */
XSetWindowAttributes atts;
unsigned long dummy7; /* dirtyAtts */
unsigned int flags;
char *dummy8; /* handlerList */
#if defined(TK_USE_INPUT_METHODS) || (TCL_MAJOR_VERSION > 8)
XIC dummy9; /* inputContext */
#endif /* TK_USE_INPUT_METHODS */
void **dummy10; /* tagPtr */
Tcl_Size dummy11; /* numTags */
Tcl_Size dummy12; /* optionLevel */
char *dummy13; /* selHandlerList */
char *dummy14; /* geomMgrPtr */
void *dummy15; /* geomData */
int reqWidth, reqHeight;
int internalBorderLeft;
char *dummy16; /* wmInfoPtr */
char *dummy17; /* classProcPtr */
void *dummy18; /* instanceData */
char *dummy19; /* privatePtr */
int internalBorderRight;
int internalBorderTop;
int internalBorderBottom;
int minReqWidth;
int minReqHeight;
#if defined(TK_USE_INPUT_METHODS) || (TCL_MAJOR_VERSION > 8)
int dummy20;
#endif /* TK_USE_INPUT_METHODS */
char *dummy21; /* geomMgrName */
Tk_Window dummy22; /* maintainerPtr */
#if !defined(TK_USE_INPUT_METHODS) && (TCL_MAJOR_VERSION < 9)
XIC dummy9; /* inputContext */
int dummy20;
#endif /* TK_USE_INPUT_METHODS */
} Tk_FakeWin;
/*
* Flag values for TkWindow (and Tk_FakeWin) structures are:
*
* TK_MAPPED: 1 means window is currently mapped,
* 0 means unmapped.
|
︙ | | |
Changes to generic/tkBusy.c.
︙ | | |
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
|
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
|
-
-
-
-
|
* Memory and resources are released and the Tk event handler is removed.
*
*----------------------------------------------------------------------
*/
static void
DestroyBusy(
#if TCL_MAJOR_VERSION > 8
void *data) /* Busy window structure record */
#else
char *data)
#endif
{
Busy *busyPtr = (Busy *)data;
if (busyPtr->hashPtr != NULL) {
Tcl_DeleteHashEntry(busyPtr->hashPtr);
}
Tk_DeleteEventHandler(busyPtr->tkRef, StructureNotifyMask,
|
︙ | | |
Changes to generic/tkButton.h.
︙ | | |
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
-
-
-
-
-
-
-
-
-
|
* button for display purposes.*/
Tk_3DBorder normalBorder; /* Value of -background option: specifies
* color for background (and border) when
* window isn't active. */
Tk_3DBorder activeBorder; /* Value of -activebackground option: this is
* the color used to draw 3-D border and
* background when widget is active. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Value of -borderWidth option: specifies
* width of border in pixels. Always >= 0. */
#else
Tcl_Obj *borderWidthPtr;
int borderWidth;
#endif
int relief; /* Value of -relief option: specifies 3-d
* effect for border, such as
* TK_RELIEF_RAISED. */
int overRelief; /* Value of -overrelief option: specifies a
* 3-d effect for the border, such as
* TK_RELIEF_RAISED, to be used when the mouse
* is over the button. */
int offRelief; /* Value of -offrelief option: specifies a 3-d
* effect for the border, such as
* TK_RELIEF_RAISED, to be used when a
* checkbutton or radiobutton without
* indicator is off. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Value of -highlightthickness option:
* specifies width in pixels of highlight to
* draw around widget when it has the focus.
* 0 means don't draw a highlight. Always >= 0. */
#else
Tcl_Obj *highlightWidthPtr;
int highlightWidth;
#endif
Tk_3DBorder highlightBorder;/* Value of -highlightbackground option:
* specifies background with which to draw 3-D
* default ring and focus highlight area when
* highlight is off. */
XColor *highlightColorPtr; /* Value of -highlightcolor option: specifies
* color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
|
︙ | | |
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
-
-
-
-
-
-
-
-
-
-
-
-
-
|
* and check/radio marks. */
GC stippleGC; /* Used to produce disabled stipple effect for
* images when disabled. */
Pixmap gray; /* Pixmap for displaying disabled text if
* disabledFg is NULL. */
GC copyGC; /* Used for copying information from an
* off-screen pixmap to the screen. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *widthObj; /* Value of -width option. */
Tcl_Obj *heightObj; /* Value of -height option. */
Tcl_Obj *wrapLengthObj; /* Value of -wraplength option: specifies line
* length (in pixels) at which to wrap onto
* next line. <= 0 means don't wrap except at
* newlines. */
Tcl_Obj *padXObj; /* Value of -padx option: specifies how many
* pixels of extra space to leave on left and
* right of text. Ignored for bitmaps and
* images. */
Tcl_Obj *padYObj; /* Value of -padx option: specifies how many
* pixels of extra space to leave above and
* below text. Ignored for bitmaps and
* images. */
#else
Tcl_Obj *widthPtr;
int width;
Tcl_Obj *heightPtr;
int height;
Tcl_Obj *wrapLengthPtr;
int wrapLength;
Tcl_Obj *padXPtr;
int padX;
Tcl_Obj *padYPtr;
int padY;
#endif
Tk_Anchor anchor; /* Value of -anchor option: specifies where
* text/bitmap should be displayed inside
* button region. */
Tk_Justify justify; /* Value of -justify option: specifies how to
* align lines of multi-line text. */
int indicatorOn; /* Value of -indicatoron option: 1 means draw
* indicator in checkbuttons and radiobuttons,
|
︙ | | |
Changes to generic/tkCanvas.c.
︙ | | |
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
|
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
|
-
-
-
-
|
* Everything associated with the canvas is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyCanvas(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about canvas widget. */
#else
char *memPtr)
#endif
{
TkCanvas *canvasPtr = (TkCanvas *)memPtr;
Tk_Item *itemPtr;
TagSearchExpr *expr, *next;
/*
* Free up all of the items in the canvas.
|
︙ | | |
Changes to generic/tkCanvas.h.
︙ | | |
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
-
-
-
-
-
-
-
-
-
-
-
-
|
Tk_Item *lastItemPtr; /* Last in list of all items in canvas, or
* NULL if canvas empty. */
/*
* Information used when displaying widget:
*/
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */
#else
int borderWidth;
#endif
Tk_3DBorder bgBorder; /* Used for canvas background. */
int relief; /* Indicates whether window as a whole is
* raised, sunken, or flat. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around
* widget when it has the focus. 0 means
* don't draw a highlight. */
#else
int highlightWidth;
#endif
XColor *highlightBgColorPtr;
/* Color for drawing traversal highlight area
* when highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
* traversal highlight and 3-D border.
* Indicates how much interior stuff must be
* offset from outside edges to leave room for
* borders. */
GC pixmapGC; /* Used to copy bits from a pixmap to the
* screen and also to clear the pixmap. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *widthObj, *heightObj; /* Dimensions to request for canvas window,
* specified in pixels. */
#else
int width, height;
#endif
int redrawX1, redrawY1; /* Upper left corner of area to redraw, in
* pixel coordinates. Border pixels are
* included. Only valid if REDRAW_PENDING flag
* is set. */
int redrawX2, redrawY2; /* Lower right corner of area to redraw, in
* integer canvas coordinates. Border pixels
* will *not* be redrawn. */
|
︙ | | |
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
-
-
-
-
-
|
/* These four coordinates define the region
* that is the 100% area for scrolling (i.e.
* these numbers determine the size and
* location of the sliders on scrollbars).
* Units are pixels in canvas coords. */
Tcl_Obj *regionObj; /* The option string from which scrollX1 etc.
* are derived. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *xScrollIncrementObj; /* If >0, defines a grid for horizontal
* scrolling. This is the size of the "unit",
* and the left edge of the screen will always
* lie on an even unit boundary. */
Tcl_Obj *yScrollIncrementObj; /* If >0, defines a grid for vertical
* scrolling. This is the size of the "unit",
* and the top edge of the screen will always
* lie on an even unit boundary. */
#else
int xScrollIncrement;
int yScrollIncrement;
#endif
/*
* Information used for scanning:
*/
int scanX; /* X-position at which scan started (e.g.
* button was pressed here). */
int scanXOrigin; /* Value of xOrigin field when scan started. */
|
︙ | | |
Changes to generic/tkConsole.c.
︙ | | |
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
-
+
|
ConsoleInfo *info;
Tcl_Channel consoleChannel;
/*
* Ensure that we are getting a compatible version of Tcl.
*/
if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) {
if (Tcl_InitStubs(interp, "9.0", 0) == NULL) {
return;
}
consoleInitPtr = (int *)Tcl_GetThreadData(&consoleInitKey, (int) sizeof(int));
if (*consoleInitPtr) {
/*
* We've already initialized console channels in this thread.
|
︙ | | |
Changes to generic/tkDecls.h.
︙ | | |
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
|
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
|
-
-
-
-
-
-
-
-
-
-
|
EXTERN void Tk_MainExW(Tcl_Size argc, wchar_t **argv,
Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
#endif
EXTERN int Tk_Init(Tcl_Interp *interp);
EXTERN int Tk_SafeInit(Tcl_Interp *interp);
EXTERN int Tk_CreateConsoleWindow(Tcl_Interp *interp);
#if TK_MAJOR_VERSION < 9
/* Restore 8.x signature of Tk_ConfigureWidget, but panic if TK_CONFIG_OBJS flag is not set */
#undef Tk_ConfigureWidget
#define Tk_ConfigureWidget(interp, tkwin, specs, argc, argv, widgRec, flags) \
((int (*)(Tcl_Interp *, Tk_Window, const Tk_ConfigSpec *, \
int, const char **, char *, int))(void *)(tkStubsPtr->tk_ConfigureWidget)) \
(((flags & TK_CONFIG_OBJS) ? interp : (Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory in Tk_ConfigureWidget"), \
NULL)), tkwin, specs, argc, argv, widgRec, flags)
#endif
#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT
#undef TkUnusedStubEntry
#endif /* _TKDECLS */
|
Changes to generic/tkEntry.c.
︙ | | |
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
|
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
|
-
-
-
-
|
* Everything associated with the entry is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyEntry(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about entry widget. */
#else
char *memPtr)
#endif
{
Entry *entryPtr = (Entry *)memPtr;
/*
* Free up all the stuff that requires special handling, then let
* Tk_FreeOptions handle all the standard option-related stuff.
*/
|
︙ | | |
Changes to generic/tkEntry.h.
︙ | | |
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
* window, plus used for background. */
Tk_3DBorder disabledBorder; /* Used for drawing border around whole window
* in disabled state, plus used for
* background. */
Tk_3DBorder readonlyBorder; /* Used for drawing border around whole window
* in readonly state, plus used for
* background. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */
#else
int borderWidth;
#endif
Tk_Cursor cursor; /* Current cursor for window, or NULL. */
int exportSelection; /* Non-zero means tie internal entry selection
* to X selection. */
Tk_Font tkfont; /* Information about text font, or NULL. */
XColor *fgColorPtr; /* Text color in normal mode. */
XColor *dfgColorPtr; /* Text color in disabled mode. */
XColor *highlightBgColorPtr;/* Color for drawing traversal highlight area
* when highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around
* widget when it has the focus. <= 0 means
* don't draw a highlight. */
#else
int highlightWidth;
#endif
Tk_3DBorder insertBorder; /* Used to draw vertical bar for insertion
* cursor. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *insertBorderWidthObj; /* Width of 3-D border around insert cursor. */
#else
int insertBorderWidth;
#endif
int insertOffTime; /* Number of milliseconds cursor should spend
* in "off" state for each blink. */
int insertOnTime; /* Number of milliseconds cursor should spend
* in "on" state for each blink. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *insertWidthObj; /* Total width of insert cursor. */
#else
int insertWidth;
#endif
Tk_Justify justify; /* Justification to use for text within
* window. */
int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */
Tk_3DBorder selBorder; /* Border and background for selected
* characters. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *selBorderWidthObj; /* Width of border around selection. */
#else
int selBorderWidth;
#endif
XColor *selFgColorPtr; /* Foreground color for selected text. */
int state; /* Normal or disabled. Entry is read-only when
* disabled. */
Tcl_Obj *textVarNameObj; /* Name of variable (malloc'ed) or NULL. If
* non-NULL, entry's string tracks the
* contents of this variable and vice
* versa. */
|
︙ | | |
Changes to generic/tkFrame.c.
︙ | | |
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
|
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
|
-
-
-
-
|
* Everything associated with the frame is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyFrame(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about frame widget. */
#else
char *memPtr)
#endif
{
Frame *framePtr = (Frame *)memPtr;
Labelframe *labelframePtr = (Labelframe *)memPtr;
if (framePtr->type == TYPE_LABELFRAME) {
Tk_FreeTextLayout(labelframePtr->textLayout);
if (labelframePtr->textGC != NULL) {
|
︙ | | |
Changes to generic/tkGrid.c.
︙ | | |
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
|
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
|
-
-
-
-
|
* Everything associated with the grid is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyGrid(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about window that is now dead. */
#else
char *memPtr)
#endif
{
Gridder *gridPtr = (Gridder *)memPtr;
if (gridPtr->flags & REQUESTED_RELAYOUT) {
Tcl_CancelIdleCall(ArrangeGrid, gridPtr);
}
if (gridPtr->containerDataPtr != NULL) {
|
︙ | | |
Changes to generic/tkImage.c.
︙ | | |
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
|
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
|
-
-
-
-
|
* existing instances will not be deleted.
*
*----------------------------------------------------------------------
*/
static void
DeleteImage(
#if TCL_MAJOR_VERSION > 8
void *blockPtr) /* Pointer to main data structure for image. */
#else
char *blockPtr)
#endif
{
Image *imagePtr;
Tk_ImageType *typePtr;
ImageModel *modelPtr = (ImageModel *)blockPtr;
typePtr = modelPtr->typePtr;
modelPtr->typePtr = NULL;
|
︙ | | |
Changes to generic/tkImgPhoto.h.
︙ | | |
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
-
-
-
-
-
-
-
|
* structure of the following type is used to store the allocated pixel values
* and other information:
*/
struct ColorTable {
ColorTableId id; /* Information used in selecting this color
* table. */
#if TCL_MAJOR_VERSION > 8
size_t refCount; /* Number of instances using this map. */
size_t liveRefCount; /* Number of instances which are actually in
* use, using this map. */
int flags; /* See below. */
#else
int flags; /* See below. */
unsigned int refCount; /* Number of instances using this map. */
unsigned int liveRefCount; /* Number of instances which are actually in
* use, using this map. */
#endif
int numColors; /* Number of colors allocated for this map. */
XVisualInfo visualInfo; /* Information about the visual for windows
* using this color table. */
unsigned redValues[256]; /* Maps 8-bit values of red intensity to a
* pixel value or index in pixelMap. */
|
︙ | | |
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
-
-
-
-
|
struct PhotoInstance {
PhotoModel *modelPtr; /* Pointer to model for image. */
Display *display; /* Display for windows using this instance. */
Colormap colormap; /* The image may only be used in windows with
* this particular colormap. */
PhotoInstance *nextPtr; /* Pointer to the next instance in the list of
* instances associated with this model. */
#if TCL_MAJOR_VERSION > 8
size_t refCount; /* Number of instances using this structure. */
#else
unsigned int refCount; /* Number of instances using this structure. */
#endif
Tk_Uid palette; /* Palette for these particular instances. */
double gamma; /* Gamma value for these instances. */
Tk_Uid defaultPalette; /* Default palette to use if a palette is not
* specified for the model. */
ColorTable *colorTablePtr; /* Pointer to information about colors
* allocated for image display in windows like
* this one. */
|
︙ | | |
Changes to generic/tkInt.h.
︙ | | |
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
-
-
|
TkColormap *cmapPtr; /* First in list of all non-default colormaps
* allocated for this display. */
/*
* Miscellaneous information:
*/
#if defined(TK_USE_INPUT_METHODS) || (TCL_MAJOR_VERSION > 8)
XIM inputMethod; /* Input method for this display. */
XIMStyle inputStyle; /* Input style selected for this display. */
XFontSet inputXfs; /* XFontSet cached for over-the-spot XIM. */
#endif /* TK_USE_INPUT_METHODS */
Tcl_HashTable winTable; /* Maps from X window ids to TkWindow ptrs. */
Tcl_Size refCount; /* Reference count of how many Tk applications
* are using this display. Used to clean up
* the display when we no longer have any Tk
* applications using it. */
|
︙ | | |
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
|
557
558
559
560
561
562
563
564
565
566
567
568
569
570
|
-
-
-
-
-
|
* in below. */
TkCaret caret; /* Information about the caret for this
* display. This is not a pointer. */
int iconDataSize; /* Size of default iconphoto image data. */
unsigned char *iconDataPtr; /* Default iconphoto image data, if set. */
int ximGeneration; /* Used to invalidate XIC */
#if !defined(TK_USE_INPUT_METHODS) && (TCL_MAJOR_VERSION < 9)
XIM inputMethod; /* Input method for this display. */
XIMStyle inputStyle; /* Input style selected for this display. */
XFontSet inputXfs; /* XFontSet cached for over-the-spot XIM. */
#endif /* TK_USE_INPUT_METHODS */
} TkDisplay;
/*
* Flag values for TkDisplay flags.
* TK_DISPLAY_COLLAPSE_MOTION_EVENTS: (default on)
* Indicates that we should collapse motion events on this display
* TK_DISPLAY_USE_IM: (default on, set via tk.tcl)
|
︙ | | |
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
|
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
|
-
-
-
-
|
* almost any order; the main window isn't
* necessarily the last one deleted). */
struct TkWindow *winPtr; /* Pointer to main window. */
Tcl_Interp *interp; /* Interpreter associated with application. */
Tcl_HashTable nameTable; /* Hash table mapping path names to TkWindow
* structs for all windows related to this
* main window. Managed by tkWindow.c. */
#if TCL_MAJOR_VERSION > 8
size_t deletionEpoch; /* Incremented by window deletions. */
#else
long deletionEpoch;
#endif
Tk_BindingTable bindingTable;
/* Used in conjunction with "bind" command to
* bind events to Tcl commands. */
TkBindInfo bindInfo; /* Information used by tkBind.c on a per
* application basis. */
struct TkFontInfo *fontInfoPtr;
/* Information used by tkFont.c on a per
|
︙ | | |
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
|
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
|
-
-
|
struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by
* this process. */
Tcl_HashTable busyTable; /* Information used by [tk busy] command. */
Tcl_ObjCmdProc *tclUpdateObjProc;
/* Saved Tcl [update] command, used to restore
* Tcl's version of [update] after Tk is shut
* down */
#if TCL_MAJOR_VERSION > 8
Tcl_ObjCmdProc2 *tclUpdateObjProc2;
/* Saved Tcl [update] command, used to restore
* Tcl's version of [update] after Tk is shut
* down, in case it's a Tcl_ObjCmdProc2 */
#endif
unsigned int ttkNbTabsStickBit;
/* Information used by ttk::notebook. */
int troughInnerX, troughInnerY, troughInnerWidth, troughInnerHeight;
/* Information used by ttk::scale. */
} TkMainInfo;
/*
|
︙ | | |
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
|
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
|
-
-
|
/*
* Information kept by the event manager (tkEvent.c):
*/
TkEventHandler *handlerList;/* First in list of event handlers declared
* for this window, or NULL if none. */
#if defined(TK_USE_INPUT_METHODS) || (TCL_MAJOR_VERSION > 8)
XIC inputContext; /* XIM input context. */
#endif /* TK_USE_INPUT_METHODS */
/*
* Information used for event bindings (see "bind" and "bindtags" commands
* in tkCmds.c):
*/
void **tagPtr; /* Points to array of tags used for bindings
|
︙ | | |
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
|
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
|
-
-
-
-
-
-
|
/* The remaining fields of internal border. */
int internalBorderRight;
int internalBorderTop;
int internalBorderBottom;
int minReqWidth; /* Minimum requested width. */
int minReqHeight; /* Minimum requested height. */
#if defined(TK_USE_INPUT_METHODS) || (TCL_MAJOR_VERSION > 8)
int ximGeneration; /* Used to invalidate XIC */
#endif /* TK_USE_INPUT_METHODS */
char *geomMgrName; /* Records the name of the geometry manager. */
struct TkWindow *maintainerPtr;
/* The geometry container for this window. The
* value is NULL if the window has no container or
* if its container is its parent. */
#if !defined(TK_USE_INPUT_METHODS) && (TCL_MAJOR_VERSION < 9)
XIC inputContext; /* XIM input context. */
int ximGeneration; /* Used to invalidate XIC */
#endif /* TK_USE_INPUT_METHODS */
} TkWindow;
/*
* String tables:
*/
MODULE_SCOPE const char *const tkStateStrings[];
|
︙ | | |
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
|
920
921
922
923
924
925
926
927
928
929
930
931
932
933
|
-
-
-
-
|
#define TK_MAKE_MENU_DROPDOWN 2
/*
* The following structure is used with TkMakeEnsemble to create ensemble
* commands and optionally to create sub-ensembles.
*/
#if (TCL_MAJOR_VERSION < 9) && !defined(Tcl_ObjCmdProc2)
#define Tcl_ObjCmdProc2 Tcl_ObjCmdProc
#endif
typedef struct TkEnsemble {
const char *name;
Tcl_ObjCmdProc2 *proc;
const struct TkEnsemble *subensemble;
} TkEnsemble;
/*
|
︙ | | |
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
|
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
|
-
-
-
-
|
MODULE_SCOPE void TkpCopyRegion(TkRegion dst, TkRegion src);
#if !defined(__cplusplus) && !defined(c_plusplus)
# define c_class class
#endif
#if defined(_WIN32) && !defined(STATIC_BUILD) && (TCL_MAJOR_VERSION < 9) && defined(TCL_MINOR_VERSION)
# define tcl_CreateFileHandler reserved9
#endif
MODULE_SCOPE void Icu_Init(Tcl_Interp* interp);
/*
* Unsupported commands.
*/
MODULE_SCOPE Tcl_ObjCmdProc TkUnsupported1ObjCmd;
|
︙ | | |
Changes to generic/tkListbox.c.
︙ | | |
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
|
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
|
-
-
-
-
|
* Everything associated with the listbox is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyListbox(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about listbox widget. */
#else
char *memPtr)
#endif
{
Listbox *listPtr = (Listbox *)memPtr;
Tcl_HashEntry *entry;
Tcl_HashSearch search;
/*
* If we have an internal list object, free it.
|
︙ | | |
Changes to generic/tkMain.c.
︙ | | |
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
-
+
|
++i;
}
/*
* Ensure that we are getting a compatible version of Tcl.
*/
if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) {
if (Tcl_InitStubs(interp, "9.0", 0) == NULL) {
if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
abort();
} else {
Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp)));
}
}
|
︙ | | |
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
249
250
251
252
253
254
255
256
257
258
259
260
261
262
|
-
-
|
if (NULL == Tcl_GetStartupScript(NULL)) {
/*
* Check whether first 3 args (argv[1] - argv[3]) look like
* -encoding ENCODING FILENAME
* or like
* FILENAME
* or like
* -file FILENAME (ancient history support only, removed with Tcl 9.0)
*/
/* mind argc is being adjusted as we proceed */
if ((argc >= 3) && (0 == _tcscmp(TEXT("-encoding"), argv[1]))
&& ('-' != argv[3][0])) {
Tcl_Obj *value = NewNativeObj(argv[2]);
Tcl_SetStartupScript(NewNativeObj(argv[3]), Tcl_GetString(value));
|
︙ | | |
Changes to generic/tkMenu.c.
︙ | | |
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
|
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
|
-
-
-
-
|
* Everything associated with the menu entry is freed.
*
*----------------------------------------------------------------------
*/
static void
DestroyMenuEntry(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Pointer to entry to be freed. */
#else
char *memPtr)
#endif
{
TkMenuEntry *mePtr = (TkMenuEntry *)memPtr;
TkMenu *menuPtr = mePtr->menuPtr;
if (menuPtr->postedCascade == mePtr) {
/*
* Ignore errors while unposting the menu, since it's possible that
|
︙ | | |
Changes to generic/tkMenu.h.
︙ | | |
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
-
-
-
-
-
|
*/
int entryFlags; /* Various flags. See below for
* definitions. */
int index; /* Need to know which index we are. This is
* zero-based. This is the top-left entry of
* the menu. */
#if TK_MAJOR_VERSION > 8
Tcl_HashEntry *entryPtr; /* Back-pointer to hash table entry */
#endif
/*
* Bookeeping for main menus and cascade menus.
*/
struct TkMenuReferences *childMenuRefPtr;
/* A pointer to the hash table entry for the
* child menu. Stored here when the menu entry
* is configured so that a hash lookup is not
* necessary later.*/
struct TkMenuEntry *nextCascadePtr;
/* The next cascade entry that is a parent of
* this entry's child cascade menu. NULL end
* of list, this is not a cascade entry, or
* the menu that this entry point to does not
* yet exist. */
TkMenuPlatformEntryData platformEntryData;
/* The data for the specific type of menu.
* Depends on platform and menu type what kind
* of options are in this structure. */
#if TK_MAJOR_VERSION < 9
Tcl_HashEntry *entryPtr; /* Back-pointer to hash table entry */
#endif
} TkMenuEntry;
/*
* Flag values defined for menu entries:
*
* ENTRY_SELECTED: Non-zero means this is a radio or check button
* and that it should be drawn in the "selected"
|
︙ | | |
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
|
-
-
-
-
-
-
-
-
|
/*
* Information used when displaying widget:
*/
Tcl_Obj *borderPtr; /* Structure used to draw 3-D border and
* background for menu. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of border around whole menu. */
#else
Tcl_Obj *borderWidthPtr;
#endif
Tcl_Obj *activeBorderPtr; /* Used to draw background and border for
* active element (if any). */
Tcl_Obj *activeBorderWidthPtr;
/* Width of border around active element. */
#if TK_MAJOR_VERSION > 8
int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */
#else
Tcl_Obj *reliefPtr;
#endif
Tcl_Obj *fontPtr; /* Text font for menu entries. */
Tcl_Obj *fgPtr; /* Foreground color for entries. */
Tcl_Obj *disabledFgPtr; /* Foreground color when disabled. NULL means
* use normalFg with a 50% stipple instead. */
Tcl_Obj *activeFgPtr; /* Foreground color for active entry. */
Tcl_Obj *indicatorFgPtr; /* Color for indicators in radio and check
* button entries. */
|
︙ | | |
Changes to generic/tkMenubutton.h.
︙ | | |
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
-
-
-
-
-
-
-
-
|
* normal, active, or disabled. */
Tk_3DBorder normalBorder; /* Structure used to draw 3-D border and
* background when window isn't active. NULL
* means no such border exists. */
Tk_3DBorder activeBorder; /* Structure used to draw 3-D border and
* background when window is active. NULL
* means no such border exists. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of border. */
#else
int borderWidth;
#endif
int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around
* widget when it has the focus. 0 means
* don't draw a highlight. */
#else
int highlightWidth;
#endif
XColor *highlightBgColorPtr;/* Color for drawing traversal highlight area
* when highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
* traversal highlight and 3-D border.
* Indicates how much interior stuff must be
* offset from outside edges to leave room for
|
︙ | | |
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
-
-
-
-
-
|
Tcl_Obj *heightObj; /* Value of -height option. */
int width, height; /* If > 0, these specify dimensions to request
* for window, in characters for text and in
* pixels for bitmaps. In this case the actual
* size of the text string or bitmap is
* ignored in computing desired window
* size. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *wrapLengthObj; /* Line length (in pixels) at which to wrap
* onto next line. 0 means don't wrap
* except at newlines. */
Tcl_Obj *padXObj, *padYObj; /* Extra space around text or bitmap (pixels
* on each side). */
#else
int wrapLength;
int padX, padY;
#endif
Tk_Anchor anchor; /* Where text/bitmap should be displayed
* inside window region. */
Tk_Justify justify; /* Justification to use for multi-line
* text. */
int textWidth; /* Width needed to display text as requested,
* in pixels. */
int textHeight; /* Height needed to display text as requested,
|
︙ | | |
Changes to generic/tkObj.c.
︙ | | |
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
-
-
-
-
|
* A WindowRep caches name-to-window lookups. The cache is invalid if tkwin is
* NULL or if mainPtr->deletionEpoch does not match epoch.
*/
typedef struct WindowRep {
Tk_Window tkwin; /* Cached window; NULL if not found. */
TkMainInfo *mainPtr; /* MainWindow associated with tkwin. */
#if TCL_MAJOR_VERSION > 8
size_t epoch; /* Value of mainPtr->deletionEpoch at last
* successful lookup. */
#else
long epoch;
#endif
} WindowRep;
/*
* Prototypes for functions defined later in this file:
*/
static void DupMMInternalRep(Tcl_Obj *srcPtr, Tcl_Obj *copyPtr);
|
︙ | | |
Changes to generic/tkPack.c.
︙ | | |
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
|
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
|
-
-
-
-
|
* Everything associated with the packer is freed up.
*
*----------------------------------------------------------------------
*/
static void
DestroyPacker(
#if TCL_MAJOR_VERSION > 8
void *memPtr) /* Info about packed window that is now dead. */
#else
char *memPtr)
#endif
{
Packer *packPtr = (Packer *)memPtr;
if (packPtr->flags & REQUESTED_REPACK) {
Tcl_CancelIdleCall(ArrangePacking, packPtr);
}
ckfree(packPtr);
|
︙ | | |
Changes to generic/tkScale.h.
︙ | | |
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
-
-
-
-
|
* freed even after tkwin has gone away. */
Tcl_Interp *interp; /* Interpreter associated with scale. */
Tcl_Command widgetCmd; /* Token for scale's widget command. */
Tk_OptionTable optionTable; /* Table that defines configuration options
* available for this widget. */
enum orient orient; /* Orientation for window (vertical or
* horizontal). */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *widthObj; /* Desired narrow dimension of scale, in
* pixels. */
Tcl_Obj *lengthObj; /* Desired long dimension of scale, in
* pixels. */
#else
int width, length;
#endif
double value; /* Current value of scale. */
Tcl_Obj *varNamePtr; /* Name of variable or NULL. If non-NULL,
* scale's value tracks the contents of this
* variable and vice versa. */
double fromValue; /* Value corresponding to left or top of
* scale. */
double toValue; /* Value corresponding to right or bottom of
|
︙ | | |
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
-
-
-
-
-
-
-
-
-
-
-
-
|
* Value of scale cannot be changed when
* disabled. */
/*
* Information used when displaying widget:
*/
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */
#else
int borderWidth;
#endif
Tk_3DBorder bgBorder; /* Used for drawing slider and other
* background areas. */
Tk_3DBorder activeBorder; /* For drawing the slider when active. */
int sliderRelief; /* Is slider to be drawn raised, sunken,
* etc. */
XColor *troughColorPtr; /* Color for drawing trough. */
GC troughGC; /* For drawing trough. */
GC copyGC; /* Used for copying from pixmap onto screen */
Tk_Font tkfont; /* Information about text font, or NULL. */
XColor *textColorPtr; /* Color for drawing text. */
GC textGC; /* GC for drawing text in normal mode. */
int relief; /* Indicates whether window as a whole is
* raised, sunken, or flat. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around
* widget when it has the focus. <= 0 means
* don't draw a highlight. */
#else
int highlightWidth;
#endif
Tk_3DBorder highlightBorder;/* Value of -highlightbackground option:
* specifies background with which to draw 3-D
* default ring and focus highlight area when
* highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
* traversal highlight and 3-D border.
* Indicates how much interior stuff must be
* offset from outside edges to leave room for
* borders. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *sliderLengthObj; /* Length of slider, measured in pixels along
* long dimension of scale. */
#else
int sliderLength;
#endif
int showValue; /* Non-zero means to display the scale value
* below or to the left of the slider; zero
* means don't display the value. */
/*
* Layout information for horizontal scales, assuming that window gets the
* size it requested:
|
︙ | | |
Changes to generic/tkScrollbar.h.
︙ | | |
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
Display *display; /* Display containing widget. Used, among
* other things, so that resources can be
* freed even after tkwin has gone away. */
Tcl_Interp *interp; /* Interpreter associated with scrollbar. */
Tcl_Command widgetCmd; /* Token for scrollbar's widget command. */
int vertical; /* Non-zero means vertical orientation
* requested, zero means horizontal. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *widthObj; /* Desired narrow dimension of scrollbar, in
* pixels. */
#else
int width; /* Desired narrow dimension of scrollbar, in
* pixels. */
#endif
Tcl_Obj *commandObj; /* Command prefix to use when invoking
* scrolling commands. NULL means don't invoke
* commands. */
int repeatDelay; /* How long to wait before auto-repeating on
* scrolling actions (in ms). */
int repeatInterval; /* Interval between autorepeats (in ms). */
int jump; /* Value of -jump option. */
/*
* Information used when displaying widget:
*/
#if TK_MAJOR_VERSION > 8
Tcl_Obj *borderWidthObj; /* Width of 3-D borders. */
#else
int borderWidth;
#endif
Tk_3DBorder bgBorder; /* Used for drawing background (all flat
* surfaces except for trough). */
Tk_3DBorder activeBorder; /* For drawing backgrounds when active (i.e.
* when mouse is positioned over element). */
XColor *troughColorPtr; /* Color for drawing trough. */
int relief; /* Indicates whether window as a whole is
* raised, sunken, or flat. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around
* widget when it has the focus. <= 0 means
* don't draw a highlight. */
#else
int highlightWidth;
#endif
XColor *highlightBgColorPtr;
/* Color for drawing traversal highlight area
* when highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
* traversal highlight and 3-D border.
* Indicates how much interior stuff must be
* offset from outside edges to leave room for
* borders. */
#if TK_MAJOR_VERSION > 8
Tcl_Obj *elementBorderWidthObj; /* Width of border to draw around elements
* inside scrollbar (arrows and slider). -1
* means use borderWidth. */
#else
int elementBorderWidth;
#endif
int arrowLength; /* Length of arrows along long dimension of
* scrollbar, including space for a small gap
* between the arrow and the slider.
* Recomputed on window size changes. */
int sliderFirst; /* Pixel coordinate of top or left edge of
* slider area, including border. */
int sliderLast; /* Coordinate of pixel just after bottom or
* right edge of slider area, including
* border. */
int activeField; /* Names field to be displayed in active
* colors, such as TOP_ARROW, or 0 for no
* field. */
int activeRelief; /* Value of -activeRelief option: relief to
* use for active element. */
/*
* Information describing the application related to the scrollbar, which
* is provided by the application by invoking the "set" widget command.
*/
#if TK_MAJOR_VERSION < 9
int dummy1, dummy2, dummy3, dummy4; /* deprecated, for "old" form. */
#endif
double firstFraction; /* Position of first visible thing in window,
* specified as a fraction between 0 and 1.0. */
double lastFraction; /* Position of last visible thing in window,
* specified as a fraction between 0 and 1.0. */
/*
* Miscellaneous information:
|
︙ | | |
Changes to generic/tkSelect.h.
︙ | | |
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
-
-
-
-
|
* structures because a display can have multiple different selections active
* at the same time.
*/
typedef struct TkSelectionInfo {
Atom selection; /* Selection name, e.g. XA_PRIMARY. */
Tk_Window owner; /* Current owner of this selection. */
#if TCL_MAJOR_VERSION > 8
unsigned long serial; /* Serial number of last XSelectionSetOwner
* request made to server for this selection
* (used to filter out redundant
* SelectionClear events). */
#else
int serial;
#endif
Time time; /* Timestamp used to acquire selection. */
Tk_LostSelProc *clearProc; /* Procedure to call when owner loses
* selection. */
void *clearData; /* Info to pass to clearProc. */
struct TkSelectionInfo *nextPtr;
/* Next in list of current selections on this
* display. NULL means end of list. */
|
︙ | | |
Changes to generic/tkTest.c.
︙ | | |
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
-
-
-
-
|
extern "C" {
#endif
EXTERN int Tktest_Init(Tcl_Interp *interp);
#ifdef __cplusplus
}
#endif
#if TCL_MAJOR_VERSION < 9
# undef Tcl_CreateObjCommand2
# define Tcl_CreateObjCommand2 Tcl_CreateObjCommand
#endif
/*
* The following data structure represents the model for a test image:
*/
typedef struct TImageModel {
Tk_ImageModel model; /* Tk's token for image model. */
Tcl_Interp *interp; /* Interpreter for application. */
|
︙ | | |
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
-
+
|
int
Tktest_Init(
Tcl_Interp *interp) /* Interpreter for application. */
{
static int initialized = 0;
if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) {
if (Tcl_InitStubs(interp, "9.0", 0) == NULL) {
return TCL_ERROR;
}
if (Tk_InitStubs(interp, TK_VERSION, 0) == NULL) {
return TCL_ERROR;
}
/*
|
︙ | | |
Changes to generic/tkText.c.
︙ | | |
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
|
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
|
-
-
-
-
|
extern void TkTextIndexInvalidate(TkTextIndex *indexPtr);
extern void TkTextIndexMakePersistent(TkTextIndex *indexPtr);
extern TkTextLine * TkTextIndexGetLine(const TkTextIndex *indexPtr);
extern TkTextSegment * TkTextIndexGetSegment(const TkTextIndex *indexPtr);
extern TkSharedText * TkTextIndexGetShared(const TkTextIndex *indexPtr);
extern int TkTextIndexSameLines(const TkTextIndex *indexPtr1, const TkTextIndex *indexPtr2);
extern void TkTextIndexSave(TkTextIndex *indexPtr);
# if TK_MAJOR_VERSION == 8 && TK_MINOR_VERSION < 7 && TCL_UTF_MAX <= 4
extern int TkUtfToUniChar(const char *src, int *chPtr);
# endif
/*
* Local Variables:
* mode: c
* c-basic-offset: 4
* fill-column: 105
* End:
|
︙ | | |
Changes to generic/tkTextDisp.c.
︙ | | |
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
|
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
|
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
|
bytesThatFit = CharChunkMeasureChars(chunkPtr, ciPtr->u.chars, ciPtr->baseOffset + maxBytes,
ciPtr->baseOffset, -1, chunkPtr->x, maxX, spaceMode, TK_ISOLATE_END, &nextX);
if (bytesThatFit < maxBytes) {
if (bytesThatFit == 0 && noCharsYet) {
int chLen;
#if 0 && TCL_UTF_MAX > 4
/*
* HACK: Support of pseudo UTF-8 strings. Needed because of this
* bad hack with TCL_UTF_MAX > 4, the whole thing is amateurish.
* (See function GetLineBreakFunc() about the very severe problems
* with TCL_UTF_MAX > 4).
*/
int ch;
Tcl_UniChar ch;
chLen = TkUtfToUniChar(p, &ch);
#else
/*
* Proper implementation for UTF-8 strings:
*/
Tcl_UniChar ch;
chLen = Tcl_UtfToUniChar(p, &ch);
#endif
/*
* At least one character should be contained in current display line.
*/
bytesThatFit = CharChunkMeasureChars(chunkPtr, ciPtr->u.chars, ciPtr->baseOffset + chLen,
ciPtr->baseOffset, -1, chunkPtr->x, -1, spaceMode, 0, &nextX);
|
︙ | | |
Changes to generic/tkTextPriv.h.
︙ | | |
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
|
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
* progress, and unfinished.
*/
return dispLineInfo->entry[dispLineInfo->numDispLines].pixels;
}
return dispLineInfo->numDispLines;
}
#if TCL_UTF_MAX <= 4 && TK_MAJOR_VERSION == 8 && TK_MINOR_VERSION < 7
/*
*----------------------------------------------------------------------
*
* TkUtfToUniChar --
*
* Only needed for backporting, see source of version 8.7 about
* this function.
*
* IMO this function is only a bad hack, Tcl should provide the
* appropriate functionality.
*
*----------------------------------------------------------------------
*/
inline
int
TkUtfToUniChar(const char *src, int *chPtr)
{
Tcl_UniChar ch;
int result = Tcl_UtfToUniChar(src, &ch);
*chPtr = ch;
return result;
}
#endif /* end of backport for 8.6/8.5 */
#undef _TK_NEED_IMPLEMENTATION
#endif /* _TK_NEED_IMPLEMENTATION */
/* vi:set ts=8 sw=4: */
|
Changes to generic/tkUtil.c.
︙ | | |
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
|
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
|
-
-
-
-
-
|
nameObj = Tcl_NewStringObj(map[i].name, TCL_INDEX_NONE);
fqdnObj = Tcl_NewStringObj(Tcl_DStringValue(&ds),
Tcl_DStringLength(&ds));
Tcl_AppendStringsToObj(fqdnObj, "::", map[i].name, (char *)NULL);
Tcl_DictObjPut(NULL, dictObj, nameObj, fqdnObj);
if (map[i].proc) {
#if TCL_MAJOR_VERSION > 8
Tcl_CreateObjCommand2(interp, Tcl_GetString(fqdnObj),
map[i].proc, clientData, NULL);
#else
Tcl_CreateObjCommand(interp, Tcl_GetString(fqdnObj),
map[i].proc, clientData, NULL);
#endif
} else if (map[i].subensemble) {
TkMakeEnsemble(interp, Tcl_DStringValue(&ds),
map[i].name, clientData, map[i].subensemble);
}
}
if (ensemble) {
|
︙ | | |
Changes to generic/tkWindow.c.
︙ | | |
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
|
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
|
-
-
|
mainPtr->tlFocusPtr = NULL;
mainPtr->displayFocusPtr = NULL;
mainPtr->optionRootPtr = NULL;
Tcl_InitHashTable(&mainPtr->imageTable, TCL_STRING_KEYS);
mainPtr->strictMotif = 0;
mainPtr->alwaysShowSelection = 0;
mainPtr->tclUpdateObjProc = NULL;
#if TCL_MAJOR_VERSION > 8
mainPtr->tclUpdateObjProc2 = NULL;
#endif
if (Tcl_LinkVar(interp, "tk_strictMotif", &mainPtr->strictMotif,
TCL_LINK_BOOLEAN) != TCL_OK) {
Tcl_ResetResult(interp);
}
if (Tcl_CreateNamespace(interp, "::tk", NULL, NULL) == NULL) {
Tcl_ResetResult(interp);
}
|
︙ | | |
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
|
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
|
-
-
-
-
+
|
clientData = tkwin;
} else {
clientData = NULL;
}
if ((cmdPtr->flags & SAVEUPDATECMD) &&
Tcl_GetCommandInfo(interp, cmdPtr->name, &cmdInfo) &&
cmdInfo.isNativeObjectProc && !cmdInfo.deleteProc) {
#if TCL_MAJOR_VERSION > 8
if ((cmdInfo.isNativeObjectProc == 2) && !cmdInfo.objClientData2) {
mainPtr->tclUpdateObjProc2 = cmdInfo.objProc2;
} else
#endif
if (!cmdInfo.objClientData) {
} else if (!cmdInfo.objClientData) {
mainPtr->tclUpdateObjProc = cmdInfo.objProc;
}
}
if (cmdPtr->flags & USEINITPROC) {
((TkInitProc *)(void *)cmdPtr->objProc)(interp, clientData);
} else {
Tcl_CreateObjCommand(interp, cmdPtr->name, cmdPtr->objProc,
|
︙ | | |
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
|
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
|
-
-
+
-
-
+
-
-
-
+
+
-
+
|
#if defined(_WIN32)
".win32"
#endif
#if !defined(_WIN32) && !defined(MAC_OSX_TK)
".x11"
#endif
;
#if TCL_MAJOR_VERSION > 8
if (info.isNativeObjectProc == 2) {
Tcl_CreateObjCommand2(interp, "::tk::build-info",
info.objProc2, (void *)
info.objProc2, (void *)version, NULL);
version, NULL);
} else
} else {
#endif
Tcl_CreateObjCommand(interp, "::tk::build-info",
info.objProc, (void *)
Tcl_CreateObjCommand(interp, "::tk::build-info",
info.objProc, (void *)version, NULL);
version, NULL);
}
}
/*
* Set variables for the interpreter.
*/
Tcl_SetVar2(interp, "tk_patchLevel", NULL, TK_PATCH_LEVEL, TCL_GLOBAL_ONLY);
|
︙ | | |
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
|
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
|
-
-
-
-
+
|
*/
if ((winPtr->mainPtr->interp != NULL) &&
!Tcl_InterpDeleted(winPtr->mainPtr->interp)) {
for (cmdPtr = commands; cmdPtr->name != NULL; cmdPtr++) {
if (cmdPtr->flags & SAVEUPDATECMD) {
/* Restore Tcl's version of [update] */
#if TCL_MAJOR_VERSION > 8
if (winPtr->mainPtr->tclUpdateObjProc2 != NULL) {
Tcl_CreateObjCommand2(winPtr->mainPtr->interp,
cmdPtr->name,
winPtr->mainPtr->tclUpdateObjProc2,
NULL, NULL);
} else
#endif
if (winPtr->mainPtr->tclUpdateObjProc != NULL) {
} else if (winPtr->mainPtr->tclUpdateObjProc != NULL) {
Tcl_CreateObjCommand(winPtr->mainPtr->interp,
cmdPtr->name,
winPtr->mainPtr->tclUpdateObjProc,
NULL, NULL);
}
} else {
Tcl_CreateObjCommand(winPtr->mainPtr->interp,
|
︙ | | |
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
|
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
|
-
-
-
-
|
void (*tkmainex)(Tcl_Size, char **, Tcl_AppInitProc *, Tcl_Interp *);
/* construct "<path>/libtcl9tk9.?.dll", from "<path>/tcl9tk9?.dll" */
len = GetModuleFileNameW((HINSTANCE)Tk_GetHINSTANCE(), name, MAX_PATH);
name[len-2] = '.';
name[len-1] = name[len-5];
wcscpy(name+len, L".dll");
#if TCL_MAJOR_VERSION > 8
memcpy(name+len-12, L"libtcl9tk9", 10 * sizeof(WCHAR));
#else
memcpy(name+len-8, L"libtk9", 6 * sizeof(WCHAR));
#endif
tkcygwindll = LoadLibraryW(name);
if (tkcygwindll) {
tkmainex = (void (*)(Tcl_Size, char **, Tcl_AppInitProc *, Tcl_Interp *))
(void *)GetProcAddress(tkcygwindll, "Tk_MainEx");
if (tkmainex) {
tkmainex(argc, argv, appInitProc, interp);
|
︙ | | |
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
|
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
|
-
+
|
TCL_ARGV_AUTO_REST, TCL_ARGV_AUTO_HELP, TCL_ARGV_TABLE_END
};
/*
* Ensure that we are getting a compatible version of Tcl.
*/
if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) {
if (Tcl_InitStubs(interp, "9.0", 0) == NULL) {
return TCL_ERROR;
}
/*
* TIP #59: Make embedded configuration information available.
*/
|
︙ | | |
Changes to generic/ttk/ttkWidget.h.
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
-
-
-
-
-
|
MODULE_SCOPE int TtkWidgetStyleCommand(
void *,Tcl_Interp *, Tcl_Size, Tcl_Obj*const[]);
/* Widget constructor:
*/
MODULE_SCOPE Tcl_ObjCmdProc2 TtkWidgetConstructorObjCmd;
#if TCL_MAJOR_VERSION > 8
#define RegisterWidget(interp, name, specPtr) \
Tcl_CreateObjCommand2(interp, name, \
TtkWidgetConstructorObjCmd, (void *)specPtr,NULL)
#else
#define RegisterWidget(interp, name, specPtr) \
Tcl_CreateObjCommand(interp, name, \
TtkWidgetConstructorObjCmd, (void *)specPtr,NULL)
#endif
/* WIDGET_TAKEFOCUS_TRUE --
* WIDGET_TAKEFOCUS_FALSE --
* Add one or the other of these to each OptionSpecs table
* to indicate whether the widget should take focus
* during keyboard traversal.
*/
|
︙ | | |
Changes to library/tk.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-
+
|
# tk.tcl --
#
# Initialization script normally executed in the interpreter for each Tk-based
# application. Arranges class bindings for widgets.
#
# Copyright © 1992-1994 The Regents of the University of California.
# Copyright © 1994-1996 Sun Microsystems, Inc.
# Copyright © 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
# Verify that we have Tk binary and script components from the same release
package require -exact tk 9.0.2
package require -exact tk 9.1a0
# Create a ::tk namespace
namespace eval ::tk {
# Set up the msgcat commands
namespace eval msgcat {
namespace export mc mcmax
if {[interp issafe] || [catch {package require msgcat}]} {
|
︙ | | |
Changes to macosx/README.
︙ | | |
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
-
+
|
ReleaseUniversal10.5SDK: build against the 10.5 SDK (with 10.5
deployment target).
Note that the non-SDK configurations have their deployment target set to
10.6 (Tk.xcodeproj).
The Xcode projects refer to the toplevel tcl and tk source directories via the
the TCL_SRCROOT and TK_SRCROOT user build settings, by default these are set to
the project-relative paths '../../tcl' and '../../tk', if your source
directories are named differently, e.g. '../../tcl9.0' and '../../tk9.0', you
directories are named differently, e.g. '../../tcl9.1' and '../../tk9.1', you
need to manually change the TCL_SRCROOT and TK_SRCROOT settings by editing your
${USER}.pbxuser file (located inside the Tk.xcodeproj bundle directory) with a
text editor.
Detailed Instructions for building with macosx/GNUmakefile
----------------------------------------------------------
|
︙ | | |
Changes to macosx/tkMacOSXFont.c.
︙ | | |
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
/*
#ifdef TK_MAC_DEBUG
#define TK_MAC_DEBUG_FONTS
#endif
*/
/*
* TclNumUtfChars() is the same as Tcl_NumUtfChars(), but counting
* in UTF-16 in stead of UTF-32. For Tcl 8.7 it's a little bit
* tricky to get this function, because we are compiling with
* TCL_UTF_MAX=4. Same for TclUtfAtIndex()
*/
#if TCL_MAJOR_VERSION < 9
# undef TclNumUtfChars
# undef TclUtfAtIndex
# ifdef USE_TCL_STUBS
# define TclNumUtfChars \
(tclStubsPtr->tcl_NumUtfChars) /* 312 */
# define TclUtfAtIndex \
(tclStubsPtr->tcl_UtfAtIndex) /* 325 */
# else
# define TclNumUtfChars Tcl_NumUtfChars
# define TclUtfAtIndex Tcl_UtfAtIndex
# endif
#endif
/*
* The following structure represents our Macintosh-specific implementation
* of a font object.
*/
typedef struct {
TkFont font; /* Stuff used by generic font package. Must be
|
︙ | | |
Changes to macosx/tkMacOSXMenu.c.
︙ | | |
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
|
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
|
-
-
+
+
-
-
+
|
*----------------------------------------------------------------------
*
* Tk_SetMainMenubar --
*
* Puts the menu associated with a window into the menubar. Should only be
* called when the window is in front.
*
* This is a no-op on all other platforms. On OS X it is a no-op when
* passed a NULL menuName or a nonexistent menuName, with an exception for
* This is a no-op on all other platforms. On OS X it installs the
* menubar with the specified menuName, if possible. If the name is NULL
* the first call in a new interpreter. In that special case, passing a
* NULL menuName installs the default menu.
* it installs the default menu.
*
* Results:
* None.
*
* Side effects:
* The menubar may be changed.
*
|
︙ | | |
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
|
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
|
-
+
-
-
-
+
-
|
menuRefPtr->menuPtr->platformData) {
menu = (TKMenu *) menuRefPtr->menuPtr->platformData;
}
}
}
/*
* If we couldn't find a menu, do nothing unless the window belongs to a
* If we couldn't find a menu this will install the default menubar.
* different application. In that case, install the default menubar.
*/
if (menu || interp != currentInterp) {
[NSApp tkSetMainMenu:menu];
[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
1307
|
+
-
+
+
+
+
+
+
+
+
+
|
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) {
Tk_Window menubar = frontPtr->wmInfoPtr->menuPtr->mainMenuPtr->tkwin;
TKMenu *menu = (TKMenu *) frontPtr->wmInfoPtr->menuPtr->platformData;
[NSApp tkSetMainMenu:menu];
}
break;
}
}
[NSApp setTkEventTarget:newTkEventTarget];
/*
|
︙ | | |
Changes to tests/event.test.
︙ | | |
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
|
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
|
+
|
setup_win_mousepointer .one; # ensure the mouse pointer is where we want it to be (the .one toplevel is not itself used in this test)
destroy .one
toplevel .two
pack propagate .two 0
wm geometry .two 300x300+100+100
create_and_pack_frames .two
wm deiconify .two
update idletasks; # make sure two is there
toplevel .three
pack propagate .three 0
wm geometry .three 300x300+110+110
create_and_pack_frames .three
wm deiconify .three
waitForWindowEvent .three.f1.f2 <Enter>
update idletasks; # finish displaying windows
|
︙ | | |
Changes to unix/Makefile.in.
︙ | | |
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
-
+
|
# appropriate for this version of Tk:
TCL_PLATFORM_DIR = $(TCLDIR)/unix
# The directory containing the Tcl library archive file appropriate
# for this version of Tk:
TCL_BIN_DIR = @TCL_BIN_DIR@
# The linker flags needed to link in the Tcl library (ex: -ltcl9.0)
# The linker flags needed to link in the Tcl library (ex: -ltcl9.1)
TCL_LIB_FLAG = @TCL_LIB_FLAG@
# Flag, 1: we're building a shared lib, 0 we're not
TK_SHARED_BUILD = @TK_SHARED_BUILD@
# Subdirectory of $(libdir) containing the pkgIndex.tcl file for loadable Tk
TK_PKG_DIR = @TK_PKG_DIR@
|
︙ | | |
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
-
-
|
# Generic stub lib name used in rules that apply to tcl and tk
STUB_LIB_FILE = ${TK_STUB_LIB_FILE}
TK_STUB_LIB_FLAG = @TK_STUB_LIB_FLAG@
#TK_STUB_LIB_FLAG = -ltkstub
TK_LIB_FILE = @TK_LIB_FILE@
TK_LIB_FILE_TCL8 = @TK_LIB_FILE_TCL8@
TK_LIB_FILE_TCL9 = @TK_LIB_FILE_TCL9@
#TK_LIB_FILE = libtk.a
# Generic lib name used in rules that apply to tcl and tk
LIB_FILE = ${TK_LIB_FILE}
TK_LIB_FLAG = @TK_LIB_FLAG@
#TK_LIB_FLAG = -ltk
|
︙ | | |
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
|
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
|
-
+
|
CC = @CC@
CC_SWITCHES_NO_STUBS = -I${UNIX_DIR} -I${GENERIC_DIR} -I${BMAP_DIR} \
${@TK_WINDOWINGSYSTEM@_INCLUDES} ${CFLAGS} ${CFLAGS_WARNING} \
${SHLIB_CFLAGS} -I${TCL_GENERIC_DIR} -I${TCL_PLATFORM_DIR} ${AC_FLAGS} \
${PROTO_FLAGS} ${SECURITY_FLAGS} ${MEM_DEBUG_FLAGS} ${KEYSYM_FLAGS} \
${NO_DEPRECATED_FLAGS} -DTCL_UTF_MAX=4 @EXTRA_CC_SWITCHES@
${NO_DEPRECATED_FLAGS} @EXTRA_CC_SWITCHES@
CC_SWITCHES = $(CC_SWITCHES_NO_STUBS) @TCL_STUB_FLAGS@
APP_CC_SWITCHES = $(CC_SWITCHES_NO_STUBS) @EXTRA_APP_CC_SWITCHES@
DEPEND_SWITCHES = -I${UNIX_DIR} -I${GENERIC_DIR} -I${BMAP_DIR} \
${@TK_WINDOWINGSYSTEM@_INCLUDES} ${CFLAGS} -I${TCL_GENERIC_DIR} \
|
︙ | | |
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
|
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
|
-
+
-
-
+
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
|
else true; \
fi; \
done;
@if test "x$(TK_SHARED_BUILD)" = "x1"; then \
echo "Creating package index $(PKG_INDEX)"; \
rm -f "$(PKG_INDEX)"; \
(\
echo "if {![package vsatisfies [package provide Tcl] 8.7-]} return";\
echo "if {![package vsatisfies [package provide Tcl] 9.0]} return";\
relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\
if test "x$(DLL_INSTALL_DIR)" != "x$(BIN_INSTALL_DIR)"; then \
echo "if {[package vsatisfies [package provide Tcl] 9.0]} {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}$(TK_LIB_FILE_TCL9)]]]";\
echo "package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}$(TK_LIB_FILE)]]]";\
echo "} else {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}$(TK_LIB_FILE_TCL8)]]]";\
echo "}";\
else \
echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\
echo " || ([info exists ::argv] && (\"-display\" in \$$::argv)))} {";\
echo " if {[package vsatisfies [package provide Tcl] 9.0]} {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin $(TK_LIB_FILE_TCL9)]]]";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin $(TK_LIB_FILE)]]]";\
echo " } else {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin $(TK_LIB_FILE_TCL8)]]]";\
echo " }";\
echo "} else {";\
echo " if {[package vsatisfies [package provide Tcl] 9.0]} {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin tcl9tk${MAJOR_VERSION}${MINOR_VERSION}.dll]]]";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin tcl9tk${MAJOR_VERSION}${MINOR_VERSION}.dll]]]";\
echo " } else {";\
echo " package ifneeded tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin tk${MAJOR_VERSION}${MINOR_VERSION}.dll]]]";\
echo " }";\
echo "}";\
fi; \
echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list package require -exact tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL)]"\
) > "$(PKG_INDEX)"; \
fi
@echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/"
@@INSTALL_LIB@
|
︙ | | |
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
|
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
|
-
+
|
cd $(DISTROOT); tar cf $(DISTNAME)-src.tar $(DISTNAME); \
gzip -9 $(DISTNAME)-src.tar; zip -qr8 $(ZIPNAME) $(DISTNAME)
#
# This target creates the HTML folder for Tcl & Tk and places it
# in DISTDIR/html. It uses the tcltk-man2html.tcl tool from
# the Tcl group's tool workspace. It depends on the Tcl & Tk being
# in directories called tcl9.0 & tk9.0 up two directories from the
# in directories called tcl9.1 & tk9.1 up two directories from the
# TOOL_DIR.
#
html:
$(BUILD_HTML)
@EXTRA_BUILD_HTML@
html-tcl:
|
︙ | | |
Changes to unix/configure.
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.72 for tk 9.0.
# Generated by GNU Autoconf 2.72 for tk 9.1.
#
#
# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
# Inc.
#
#
# This configure script is free software; the Free Software Foundation
|
︙ | | |
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
|
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
|
-
-
+
+
|
subdirs=
MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='tk'
PACKAGE_TARNAME='tk'
PACKAGE_VERSION='9.0'
PACKAGE_STRING='tk 9.0'
PACKAGE_VERSION='9.1'
PACKAGE_STRING='tk 9.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
# Factoring default headers for most tests.
ac_includes_default="\
#include <stddef.h>
#ifdef HAVE_STDIO_H
|
︙ | | |
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
|
671
672
673
674
675
676
677
678
679
680
681
682
683
684
|
-
-
|
TK_INCLUDE_SPEC
TK_STUB_LIB_PATH
TK_STUB_LIB_SPEC
TK_STUB_LIB_FLAG
TK_STUB_LIB_FILE
TK_LIB_SPEC
TK_LIB_FLAG
TK_LIB_FILE_TCL9
TK_LIB_FILE_TCL8
TK_LIB_FILE
TK_YEAR
TK_PATCH_LEVEL
TK_MINOR_VERSION
TK_MAJOR_VERSION
TK_VERSION
TK_DEMO_DIR
|
︙ | | |
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
|
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
|
-
+
|
#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
'configure' configures tk 9.0 to adapt to many kinds of systems.
'configure' configures tk 9.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
|
︙ | | |
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
|
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
|
-
+
|
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR
_ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of tk 9.0:";;
short | recursive ) echo "Configuration of tk 9.1:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
︙ | | |
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
|
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
|
-
+
|
cd "$ac_pwd" || { ac_status=$?; break; }
done
fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
tk configure 9.0
tk configure 9.1
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
exit
|
︙ | | |
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
|
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
|
-
+
|
ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
esac
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by tk $as_me 9.0, which was
It was created by tk $as_me 9.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
{
|
︙ | | |
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
|
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
|
-
+
-
-
+
+
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
TK_VERSION=9.0
TK_VERSION=9.1
TK_MAJOR_VERSION=9
TK_MINOR_VERSION=0
TK_PATCH_LEVEL=".2"
TK_MINOR_VERSION=1
TK_PATCH_LEVEL="a0"
VERSION=${TK_VERSION}
LOCALES="cs da de el en en_gb eo es fr hu it nl pl pt ru sv"
#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------
|
︙ | | |
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
|
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
|
-
+
-
-
+
+
|
if test x"${ac_cv_c_tclconfig}" = x ; then
for i in `ls -d ${libdir} 2>/dev/null` \
`ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d ${prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
`ls -d /usr/lib/tcl9.0 2>/dev/null` \
`ls -d /usr/lib/tcl9.1 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
`ls -d /usr/local/lib/tcl9.0 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tcl9.0 2>/dev/null` \
`ls -d /usr/local/lib/tcl9.1 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tcl9.1 2>/dev/null` \
; do
if test -f "$i/tclConfig.sh" ; then
ac_cv_c_tclconfig="`(cd $i; pwd)`"
break
fi
done
fi
|
︙ | | |
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
|
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
|
-
-
+
-
|
if test "${TCL_MAJOR_VERSION}" -lt 9 ; then
if test "${TCL_MINOR_VERSION}" -lt 7 ; then
as_fn_error $? "${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 8.7+
as_fn_error $? "${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 9.0+
Found config for Tcl ${TCL_VERSION}" "$LINENO" 5
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tclsh" >&5
printf %s "checking for tclsh... " >&6; }
if test ${ac_cv_path_tclsh+y}
then :
|
︙ | | |
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
|
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
|
-
-
-
-
-
-
|
#--------------------------------------------------------------------
# The statements below define a collection of symbols related to
# building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"
eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval "TK_LIB_FILE_TCL8=libtk${LIB_SUFFIX}"
if test ${TCL_MAJOR_VERSION} = 8 ; then
eval "TK_LIB_FILE=libtk${LIB_SUFFIX}"
else
eval "TK_LIB_FILE=libtcl9tk${LIB_SUFFIX}"
fi
eval "TK_LIB_FILE_TCL9=libtcl9tk${LIB_SUFFIX}"
# tkConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed
# since on some platforms TK_LIB_FILE contains shell escapes.
eval "TK_LIB_FILE=${TK_LIB_FILE}"
if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
|
︙ | | |
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
|
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
|
-
-
+
-
-
-
-
-
|
ac_config_commands="$ac_config_commands Tk.framework"
LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH"
if test "${libdir}" = '${exec_prefix}/lib'; then
# override libdir default
libdir="/Library/Frameworks"
fi
if test ${TCL_MAJOR_VERSION} = 8 ; then
TK_LIB_FILE="Tk"
TK_LIB_FILE="Tk"
else
TK_LIB_FILE="Tk"
fi
TK_LIB_FILE_TCL8="Tk"
TK_LIB_FILE_TCL9="Tk"
TK_LIB_FLAG="-framework Tk"
TK_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk"
TK_LIB_SPEC="-F${libdir} -framework Tk"
libdir="${libdir}/Tk.framework/Versions/\${VERSION}"
TK_LIBRARY="${libdir}/Resources/Scripts"
TK_PKG_DIR="Resources/Scripts"
TK_RSRC_FILE="Tk.rsrc"
|
︙ | | |
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
|
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
|
-
+
-
-
-
|
EXTRA_CC_SWITCHES="$EXTRA_CC_SWITCHES"' -DTK_FRAMEWORK_VERSION=\"$(VERSION)\"'
else
if test $tk_aqua = yes; then
EXTRA_INSTALL_BINARIES='@echo "Installing Images to $(LIB_INSTALL_DIR)/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)"; done'
fi
# libdir must be a fully qualified path and not ${exec_prefix}/lib
eval libdir="$libdir"
TK_LIB_FLAG="-l"
TK_LIB_FLAG="-ltcl9"
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
TK_LIB_FLAG="${TK_LIB_FLAG}tcl9"
fi
if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
TK_LIB_FLAG="${TK_LIB_FLAG}tk`echo ${TK_VERSION} | tr -d .`"
TK_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win ${TK_LIB_FLAG}"
else
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
TK_LIB_FLAG="${TK_LIB_FLAG}tk${TK_VERSION}"
else
|
︙ | | |
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
|
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
|
-
-
|
#------------------------------------------------------------------------
# tkConfig.sh refers to this by a different name
#------------------------------------------------------------------------
TK_SHARED_BUILD=${SHARED_BUILD}
|
︙ | | |
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
|
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
|
-
+
|
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by tk $as_me 9.0, which was
This file was extended by tk $as_me 9.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
|
︙ | | |
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
|
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
|
-
+
|
_ACEOF
ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
tk config.status 9.0
tk config.status 9.1
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
Copyright (C) 2023 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
|
︙ | | |
Changes to unix/configure.ac.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
+
-
+
-
-
+
+
-
-
+
-
|
! /bin/bash -norc
dnl This file is an input file used by the GNU "autoconf" program to
dnl generate the file "configure", which is run during Tk installation
dnl to configure the system for the local environment.
AC_INIT([tk],[9.0])
AC_INIT([tk],[9.1])
AC_PREREQ([2.69])
dnl This is only used when included from macosx/configure.ac
m4_ifdef([SC_USE_CONFIG_HEADERS], [
AC_CONFIG_HEADERS([tkConfig.h:../unix/tkConfig.h.in])
AC_CONFIG_COMMANDS_PRE([DEFS="-DHAVE_TK_CONFIG_H -imacros tkConfig.h"])
AH_TOP([
#ifndef _TKCONFIG
#define _TKCONFIG])
AH_BOTTOM([
/* Undef unused package specific autoheader defines so that we can
* include both tclConfig.h and tkConfig.h at the same time: */
/* override */ #undef PACKAGE_NAME
/* override */ #undef PACKAGE_TARNAME
/* override */ #undef PACKAGE_VERSION
/* override */ #undef PACKAGE_STRING
#endif /* _TKCONFIG */])
])
TK_VERSION=9.0
TK_VERSION=9.1
TK_MAJOR_VERSION=9
TK_MINOR_VERSION=0
TK_PATCH_LEVEL=".2"
TK_MINOR_VERSION=1
TK_PATCH_LEVEL="a0"
VERSION=${TK_VERSION}
LOCALES="cs da de el en en_gb eo es fr hu it nl pl pt ru sv"
#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------
SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG
if test "${TCL_MAJOR_VERSION}" -lt 9 ; then
if test "${TCL_MINOR_VERSION}" -lt 7 ; then
AC_MSG_ERROR([${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 8.7+
AC_MSG_ERROR([${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 9.0+
Found config for Tcl ${TCL_VERSION}])
fi
fi
SC_PROG_TCLSH
SC_BUILD_TCLSH
#------------------------------------------------------------------------
# Handle the --prefix=... option
|
︙ | | |
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
|
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
-
-
-
-
-
-
|
#--------------------------------------------------------------------
# The statements below define a collection of symbols related to
# building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"
eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval "TK_LIB_FILE_TCL8=libtk${LIB_SUFFIX}"
if test ${TCL_MAJOR_VERSION} = 8 ; then
eval "TK_LIB_FILE=libtk${LIB_SUFFIX}"
else
eval "TK_LIB_FILE=libtcl9tk${LIB_SUFFIX}"
fi
eval "TK_LIB_FILE_TCL9=libtcl9tk${LIB_SUFFIX}"
# tkConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed
# since on some platforms TK_LIB_FILE contains shell escapes.
eval "TK_LIB_FILE=${TK_LIB_FILE}"
if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
|
︙ | | |
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
|
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
|
-
-
+
-
-
-
-
-
|
unset n f v
], VERSION=${TK_VERSION} && tk_aqua=${tk_aqua})
LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH"
if test "${libdir}" = '${exec_prefix}/lib'; then
# override libdir default
libdir="/Library/Frameworks"
fi
if test ${TCL_MAJOR_VERSION} = 8 ; then
TK_LIB_FILE="Tk"
TK_LIB_FILE="Tk"
else
TK_LIB_FILE="Tk"
fi
TK_LIB_FILE_TCL8="Tk"
TK_LIB_FILE_TCL9="Tk"
TK_LIB_FLAG="-framework Tk"
TK_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk"
TK_LIB_SPEC="-F${libdir} -framework Tk"
libdir="${libdir}/Tk.framework/Versions/\${VERSION}"
TK_LIBRARY="${libdir}/Resources/Scripts"
TK_PKG_DIR="Resources/Scripts"
TK_RSRC_FILE="Tk.rsrc"
|
︙ | | |
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
|
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
|
-
+
-
-
-
|
EXTRA_CC_SWITCHES="$EXTRA_CC_SWITCHES"' -DTK_FRAMEWORK_VERSION=\"$(VERSION)\"'
else
if test $tk_aqua = yes; then
EXTRA_INSTALL_BINARIES='@echo "Installing Images to $(LIB_INSTALL_DIR)/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)"; done'
fi
# libdir must be a fully qualified path and not ${exec_prefix}/lib
eval libdir="$libdir"
TK_LIB_FLAG="-l"
TK_LIB_FLAG="-ltcl9"
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
TK_LIB_FLAG="${TK_LIB_FLAG}tcl9"
fi
if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
TK_LIB_FLAG="${TK_LIB_FLAG}tk`echo ${TK_VERSION} | tr -d .`"
TK_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win ${TK_LIB_FLAG}"
else
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
TK_LIB_FLAG="${TK_LIB_FLAG}tk${TK_VERSION}"
else
|
︙ | | |
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
|
732
733
734
735
736
737
738
739
740
741
742
743
744
745
|
-
-
|
AC_SUBST(TK_VERSION)
AC_SUBST(TK_MAJOR_VERSION)
AC_SUBST(TK_MINOR_VERSION)
AC_SUBST(TK_PATCH_LEVEL)
AC_SUBST(TK_YEAR)
AC_SUBST(TK_LIB_FILE)
AC_SUBST(TK_LIB_FILE_TCL8)
AC_SUBST(TK_LIB_FILE_TCL9)
AC_SUBST(TK_LIB_FLAG)
AC_SUBST(TK_LIB_SPEC)
AC_SUBST(TK_STUB_LIB_FILE)
AC_SUBST(TK_STUB_LIB_FLAG)
AC_SUBST(TK_STUB_LIB_SPEC)
AC_SUBST(TK_STUB_LIB_PATH)
AC_SUBST(TK_INCLUDE_SPEC)
|
︙ | | |
Changes to unix/tcl.m4.
︙ | | |
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
-
+
-
-
+
+
|
if test x"${ac_cv_c_tclconfig}" = x ; then
for i in `ls -d ${libdir} 2>/dev/null` \
`ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d ${prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
`ls -d /usr/lib/tcl9.0 2>/dev/null` \
`ls -d /usr/lib/tcl9.1 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
`ls -d /usr/local/lib/tcl9.0 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tcl9.0 2>/dev/null` \
`ls -d /usr/local/lib/tcl9.1 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tcl9.1 2>/dev/null` \
; do
if test -f "$i/tclConfig.sh" ; then
ac_cv_c_tclconfig="`(cd $i; pwd)`"
break
fi
done
fi
|
︙ | | |
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
-
+
-
-
+
+
|
if test x"${ac_cv_c_tkconfig}" = x ; then
for i in `ls -d ${libdir} 2>/dev/null` \
`ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d ${prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
`ls -d /usr/lib/tk9.0 2>/dev/null` \
`ls -d /usr/lib/tk9.1 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
`ls -d /usr/local/lib/tk9.0 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tk9.0 2>/dev/null` \
`ls -d /usr/local/lib/tk9.1 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tk9.1 2>/dev/null` \
; do
if test -f "$i/tkConfig.sh" ; then
ac_cv_c_tkconfig="`(cd $i; pwd)`"
break
fi
done
fi
|
︙ | | |
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
|
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
|
-
+
|
#
#--------------------------------------------------------------------
AC_DEFUN([SC_TIME_HANDLER], [
AC_CHECK_HEADERS(sys/time.h)
AC_CHECK_HEADERS_ONCE([sys/time.h])
AC_CHECK_FUNCS(gmtime_r localtime_r mktime)
AC_CHECK_FUNCS(gmtime_r localtime_r)
AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[struct tm tm; (void)tm.tm_tzadj;]])],
[tcl_cv_member_tm_tzadj=yes],
[tcl_cv_member_tm_tzadj=no])])
if test $tcl_cv_member_tm_tzadj = yes ; then
AC_DEFINE(HAVE_TM_TZADJ, 1, [Should we use the tm_tzadj field of struct tm?])
|
︙ | | |
Changes to unix/tk.spec.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-
+
-
-
+
+
|
# This file is the basis for a binary Tk Linux RPM.
%{!?directory:%define directory /usr/local}
Name: tk
Summary: Tk graphical toolkit for the Tcl scripting language.
Version: 9.0.2
Version: 9.1a0
Release: 2
License: BSD
Group: Development/Languages
Source: https://prdownloads.sourceforge.net/tcl/tk%{version}-src.tar.gz
URL: https://www.tcl-lang.org/
Buildroot: /var/tmp/%{name}%{version}
Buildrequires: XFree86-devel tcl >= 8.7.0
Requires: tcl >= 8.7.0
Buildrequires: XFree86-devel tcl >= 9.0.0
Requires: tcl >= 9.0.0
%description
The Tcl (Tool Command Language) provides a powerful platform for
creating integration applications that tie together diverse
applications, protocols, devices, and frameworks. When paired with
the Tk toolkit, Tcl provides the fastest and most powerful way to
create GUI applications that run on PCs, Unix, and Mac OS X. Tcl
|
︙ | | |
Changes to unix/tkAppInit.c.
︙ | | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
-
-
+
+
|
/*
* Explanation on following undef USE_TCL_STUBS by JN 2023-12-19 on the core list:
* What's going on is related to TIP #596:
* Stubs support for Embedding Tcl in other applications
*
* If an application using Tcl_Main() is compiled with USE_TCL_STUBS,
* Tcl_Main() will be replaced by a stub function, which loads
* libtcl9.0.so/tcl90.dll and then calls its Tcl_MainEx(). If
* libtcl9.0.so/tcl90.dll is not present (at runtime), a crash is what happens.
* libtcl9.1.so/tcl91.dll and then calls its Tcl_MainEx(). If
* libtcl9.1.so/tcl91.dll is not present (at runtime), a crash is what happens.
*
* So ... tkAppInit.c should not be compiled with USE_TCL_STUBS
* (unless you want to use the TIP #596 functionality)
*
* The proper solution is to make sure that Makefile.in doesn't use
* TCL_USE_STUBS when compiling tkAppInit.c. But that's a
* quite big re-organization just before a b1 release. Simpler
|
︙ | | |
Changes to win/Makefile.in.
︙ | | |
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
-
-
|
TK_ZIP_FILE = @TK_ZIP_FILE@
TK_VFS_PATH = libtk.vfs/tk_library
TK_VFS_ROOT = libtk.vfs
TK_STUB_LIB_FILE = @TK_STUB_LIB_FILE@
TK_LIB_FILE = @TK_LIB_FILE@
TK_DLL_FILE = @TK_DLL_FILE@
TK_DLL_FILE_TCL8 = @TK_DLL_FILE_TCL8@
TK_DLL_FILE_TCL9 = @TK_DLL_FILE_TCL9@
TEST_DLL_FILE = tktest$(VER)${DLLSUFFIX}
TEST_LIB_FILE = @LIBPREFIX@tktest$(VER)${DLLSUFFIX}${LIBSUFFIX}
SHARED_LIBRARIES = $(TK_DLL_FILE) $(TK_STUB_LIB_FILE)
STATIC_LIBRARIES = $(TK_LIB_FILE)
WISH = wish$(VER)${EXESUFFIX}
|
︙ | | |
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
|
-
+
|
ZIP_INSTALL_OBJS = @ZIP_INSTALL_OBJS@
CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
-I"${XLIB_DIR_NATIVE}" -I"${BITMAP_DIR_NATIVE}" \
-I"${TCL_GENERIC_NATIVE}" -I"${TCL_PLATFORM_NATIVE}" \
${AC_FLAGS} $(NO_DEPRECATED_FLAGS) -DTCL_UTF_MAX=4 -DUSE_TCL_STUBS
${AC_FLAGS} $(NO_DEPRECATED_FLAGS) -DUSE_TCL_STUBS
CC_OBJNAME = @CC_OBJNAME@
CC_EXENAME = @CC_EXENAME@
# Tk used to let the configure script choose which program to use
# for installing, but there are just too many different versions of
# "install" around; better to use the install-sh script that comes
|
︙ | | |
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
|
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
|
-
+
-
-
+
-
-
-
-
-
+
-
-
-
|
echo "Installing $$i to $(BIN_INSTALL_DIR)/"; \
$(COPY) $$i "$(BIN_INSTALL_DIR)"; \
fi; \
done
@echo "Creating package index $(PKG_INDEX)";
@$(RM) $(PKG_INDEX);
@(\
echo "if {![package vsatisfies [package provide Tcl] 8.7-]} return";\
echo "if {![package vsatisfies [package provide Tcl] 9.0]} return";\
echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\
echo " || ([info exists ::argv] && (\"-display\" in \$$::argv)))} {";\
echo " if {[package vsatisfies [package provide Tcl] 9.0]} {";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin libtcl9tk$(VERSION).dll]]]";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin libtcl9tk$(VERSION).dll]]]";\
echo " } else {";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin libtk$(VERSION).dll]]]";\
echo " }";\
echo "} else {";\
echo " if {[package vsatisfies [package provide Tcl] 9.0]} {";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin $(TK_DLL_FILE_TCL9)]]]";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin $(TK_DLL_FILE)]]]";\
echo " } else {";\
echo " package ifneeded tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin $(TK_DLL_FILE_TCL8)]]]";\
echo " }";\
echo "}";\
echo "package ifneeded Tk $(VERSION)$(PATCH_LEVEL) [list package require -exact tk $(VERSION)$(PATCH_LEVEL)]";\
) > $(PKG_INDEX);
@for i in tkConfig.sh $(TK_LIB_FILE) $(TK_STUB_LIB_FILE); \
do \
if [ -f $$i ]; then \
echo "Installing $$i to $(LIB_INSTALL_DIR)/"; \
|
︙ | | |
Changes to win/README.
1
2
3
4
5
6
7
8
|
1
2
3
4
5
6
7
8
|
-
+
|
Tk 9.0 for Windows
Tk 9.1 for Windows
Originally by Scott Stanton while at Sun Microsystems Labs
This is the directory where you configure and compile the Windows
version of Tk. This directory also contains source files for Tk
that are specific to Microsoft Windows. The rest of this file
contains information specific to the Windows version of Tk.
|
︙ | | |
Changes to win/configure.
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.72 for tk 9.0.
# Generated by GNU Autoconf 2.72 for tk 9.1.
#
#
# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
# Inc.
#
#
# This configure script is free software; the Free Software Foundation
|
︙ | | |
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
|
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
|
-
-
+
+
|
subdirs=
MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='tk'
PACKAGE_TARNAME='tk'
PACKAGE_VERSION='9.0'
PACKAGE_STRING='tk 9.0'
PACKAGE_VERSION='9.1'
PACKAGE_STRING='tk 9.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
ac_unique_file="../generic/tk.h"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stddef.h>
|
︙ | | |
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
|
687
688
689
690
691
692
693
694
695
696
697
698
699
700
|
-
-
|
TCL_MINOR_VERSION
TCL_MAJOR_VERSION
TK_BIN_DIR
TK_SRC_DIR
TK_BUILD_STUB_LIB_SPEC
TK_STUB_LIB_FLAG
TK_STUB_LIB_FILE
TK_DLL_FILE_TCL9
TK_DLL_FILE_TCL8
TK_DLL_FILE
TK_LIB_FILE
TK_PATCH_LEVEL
TK_MINOR_VERSION
TK_MAJOR_VERSION
TK_VERSION
MACHINE
|
︙ | | |
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
|
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
|
-
+
|
#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
'configure' configures tk 9.0 to adapt to many kinds of systems.
'configure' configures tk 9.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
|
︙ | | |
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
|
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
|
-
+
|
cat <<\_ACEOF
_ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of tk 9.0:";;
short | recursive ) echo "Configuration of tk 9.1:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
︙ | | |
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
|
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
|
-
+
|
cd "$ac_pwd" || { ac_status=$?; break; }
done
fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
tk configure 9.0
tk configure 9.1
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
exit
|
︙ | | |
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
|
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
|
-
+
|
ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
esac
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by tk $as_me 9.0, which was
It was created by tk $as_me 9.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
{
|
︙ | | |
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
|
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
|
-
+
-
-
+
+
|
# The following define is needed when building with Cygwin since newer
# versions of autoconf incorrectly set SHELL to /bin/bash instead of
# /bin/sh. The bash shell seems to suffer from some strange failures.
SHELL=/bin/sh
TK_VERSION=9.0
TK_VERSION=9.1
TK_MAJOR_VERSION=9
TK_MINOR_VERSION=0
TK_PATCH_LEVEL=".2"
TK_MINOR_VERSION=1
TK_PATCH_LEVEL="a0"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION
#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------
if test "${prefix}" = "NONE"; then
|
︙ | | |
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
|
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
|
-
-
-
+
+
-
|
if test "${TCL_MAJOR_VERSION}" -lt 9 ; then
if test "${TCL_MINOR_VERSION}" -lt 7; then
as_fn_error $? "${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl 8.7+.
Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl 8.7 or better." "$LINENO" 5
Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl 9.0+.
Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl 9.0 or better." "$LINENO" 5
fi
fi
#--------------------------------------------------------------------
# The statements below define a collection of compile flags. This
# macro depends on the value of SHARED_BUILD, and should be called
# after SC_ENABLE_SHARED checks the configure switches.
#--------------------------------------------------------------------
|
︙ | | |
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
|
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
|
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
+
-
-
-
|
#--------------------------------------------------------------------
TK_SHARED_LIB_SUFFIX="\${NODOT_VERSION}${DLLSUFFIX}"
TK_UNSHARED_LIB_SUFFIX="\${NODOT_VERSION}${LIBSUFFIX}"
eval "TK_SRC_DIR=\"`cd $srcdir/..; $CYGPATH $(pwd)`\""
eval "TK_DLL_FILE_TCL8=tk$VER${DLLSUFFIX}"
eval "TK_DLL_FILE_TCL9=tcl9tk$VER${DLLSUFFIX}"
if test ${TCL_MAJOR_VERSION} = 8 ; then
eval "TK_DLL_FILE=tk$VER${DLLSUFFIX}"
if test ${SHARED_BUILD} = 0 -o "$GCC" != "yes" ; then
eval "TK_LIB_FILE=${LIBPREFIX}tk${VER}${LIBSUFFIX}"
else
eval "TK_LIB_FILE=${LIBPREFIX}tk${VER}${DLLSUFFIX}.a"
fi
else
eval "TK_DLL_FILE=tcl9tk$VER${DLLSUFFIX}"
if test ${SHARED_BUILD} = 0 -o "$GCC" != "yes" ; then
eval "TK_LIB_FILE=${LIBPREFIX}tcl9tk${VER}${LIBSUFFIX}"
else
eval "TK_LIB_FILE=${LIBPREFIX}tcl9tk${VER}${DLLSUFFIX}.a"
fi
fi
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${LIBSUFFIX}" ;
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${LIBSUFFIX}" ;
else
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${VER}${LIBSUFFIX}" ;
fi
# FIXME: All of this var junk needs to be done in tcl.m4 !!!!
# I left out the other vars that also need to get defined here.
# we also need to double check about spaces in path names
TK_LIB_FLAG="-l"
TK_LIB_FLAG="-ltcl9"
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
TK_LIB_FLAG="${TK_LIB_FLAG}tcl9"
fi
eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}tk${VER}${LIBFLAGSUFFIX}\""
TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
eval "TK_BUILD_LIB_SPEC=\"-L`$CYGPATH $(pwd)` ${TK_LIB_FLAG}\""
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
eval "TK_STUB_LIB_FLAG=\"-ltkstub${LIBFLAGSUFFIX}\""
eval "TK_STUB_LIB_FLAG=\"-ltkstub${LIBFLAGSUFFIX}\""
else
eval "TK_STUB_LIB_FLAG=\"-ltkstub${VER}${LIBFLAGSUFFIX}\""
fi
eval "TK_BUILD_STUB_LIB_SPEC=\"-L`$CYGPATH $(pwd)` ${TK_STUB_LIB_FLAG}\""
TK_STUB_LIB_SPEC="-L${libdir} ${TK_STUB_LIB_FLAG}"
TK_STUB_LIB_PATH="${libdir}/${TK_STUB_LIB_FILE}"
eval "TK_BUILD_STUB_LIB_PATH=\"`$CYGPATH $(pwd)`/${TK_STUB_LIB_FILE}\""
eval "DLLSUFFIX=${DLLSUFFIX}"
|
︙ | | |
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
|
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
|
-
-
|
*a*) TK_RELEASE_LEVEL=0 ;;
*b*) TK_RELEASE_LEVEL=1 ;;
*) TK_RELEASE_LEVEL=2 ;;
esac
TK_WIN_VERSION="$TK_VERSION.$TK_RELEASE_LEVEL.`echo $TK_PATCH_LEVEL | tr -d ab.`"
# X86|AMD64|IA64 for manifest
|
︙ | | |
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
|
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
|
-
+
|
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by tk $as_me 9.0, which was
This file was extended by tk $as_me 9.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
|
︙ | | |
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
|
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
|
-
+
|
_ACEOF
ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
tk config.status 9.0
tk config.status 9.1
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
Copyright (C) 2023 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
|
︙ | | |
Changes to win/configure.ac.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
+
-
-
+
+
|
#! /bin/bash -norc
# This file is an input file used by the GNU "autoconf" program to
# generate the file "configure", which is run during Tk installation
# to configure the system for the local environment.
AC_INIT([tk],[9.0])
AC_INIT([tk],[9.1])
AC_CONFIG_SRCDIR([../generic/tk.h])
AC_PREREQ([2.69])
# The following define is needed when building with Cygwin since newer
# versions of autoconf incorrectly set SHELL to /bin/bash instead of
# /bin/sh. The bash shell seems to suffer from some strange failures.
SHELL=/bin/sh
TK_VERSION=9.0
TK_VERSION=9.1
TK_MAJOR_VERSION=9
TK_MINOR_VERSION=0
TK_PATCH_LEVEL=".2"
TK_MINOR_VERSION=1
TK_PATCH_LEVEL="a0"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION
#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------
if test "${prefix}" = "NONE"; then
|
︙ | | |
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
-
-
-
+
+
-
|
# Locate and source the tclConfig.sh file.
#--------------------------------------------------------------------
SC_PATH_TCLCONFIG($TK_PATCH_LEVEL)
SC_LOAD_TCLCONFIG
if test "${TCL_MAJOR_VERSION}" -lt 9 ; then
if test "${TCL_MINOR_VERSION}" -lt 7; then
AC_MSG_ERROR([${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl 8.7+.
Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl 8.7 or better.])
Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl 9.0+.
Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl 9.0 or better.])
fi
fi
#--------------------------------------------------------------------
# The statements below define a collection of compile flags. This
# macro depends on the value of SHARED_BUILD, and should be called
# after SC_ENABLE_SHARED checks the configure switches.
#--------------------------------------------------------------------
|
︙ | | |
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
|
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
+
-
-
-
|
#--------------------------------------------------------------------
TK_SHARED_LIB_SUFFIX="\${NODOT_VERSION}${DLLSUFFIX}"
TK_UNSHARED_LIB_SUFFIX="\${NODOT_VERSION}${LIBSUFFIX}"
eval "TK_SRC_DIR=\"`cd $srcdir/..; $CYGPATH $(pwd)`\""
eval "TK_DLL_FILE_TCL8=tk$VER${DLLSUFFIX}"
eval "TK_DLL_FILE_TCL9=tcl9tk$VER${DLLSUFFIX}"
if test ${TCL_MAJOR_VERSION} = 8 ; then
eval "TK_DLL_FILE=tk$VER${DLLSUFFIX}"
if test ${SHARED_BUILD} = 0 -o "$GCC" != "yes" ; then
eval "TK_LIB_FILE=${LIBPREFIX}tk${VER}${LIBSUFFIX}"
else
eval "TK_LIB_FILE=${LIBPREFIX}tk${VER}${DLLSUFFIX}.a"
fi
else
eval "TK_DLL_FILE=tcl9tk$VER${DLLSUFFIX}"
if test ${SHARED_BUILD} = 0 -o "$GCC" != "yes" ; then
eval "TK_LIB_FILE=${LIBPREFIX}tcl9tk${VER}${LIBSUFFIX}"
else
eval "TK_LIB_FILE=${LIBPREFIX}tcl9tk${VER}${DLLSUFFIX}.a"
fi
fi
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${LIBSUFFIX}" ;
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${LIBSUFFIX}" ;
else
eval "TK_STUB_LIB_FILE=${LIBPREFIX}tkstub${VER}${LIBSUFFIX}" ;
fi
# FIXME: All of this var junk needs to be done in tcl.m4 !!!!
# I left out the other vars that also need to get defined here.
# we also need to double check about spaces in path names
TK_LIB_FLAG="-l"
TK_LIB_FLAG="-ltcl9"
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
TK_LIB_FLAG="${TK_LIB_FLAG}tcl9"
fi
eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}tk${VER}${LIBFLAGSUFFIX}\""
TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
eval "TK_BUILD_LIB_SPEC=\"-L`$CYGPATH $(pwd)` ${TK_LIB_FLAG}\""
if test "${TCL_MAJOR_VERSION}" -gt 8 ; then
eval "TK_STUB_LIB_FLAG=\"-ltkstub${LIBFLAGSUFFIX}\""
eval "TK_STUB_LIB_FLAG=\"-ltkstub${LIBFLAGSUFFIX}\""
else
eval "TK_STUB_LIB_FLAG=\"-ltkstub${VER}${LIBFLAGSUFFIX}\""
fi
eval "TK_BUILD_STUB_LIB_SPEC=\"-L`$CYGPATH $(pwd)` ${TK_STUB_LIB_FLAG}\""
TK_STUB_LIB_SPEC="-L${libdir} ${TK_STUB_LIB_FLAG}"
TK_STUB_LIB_PATH="${libdir}/${TK_STUB_LIB_FILE}"
eval "TK_BUILD_STUB_LIB_PATH=\"`$CYGPATH $(pwd)`/${TK_STUB_LIB_FILE}\""
eval "DLLSUFFIX=${DLLSUFFIX}"
|
︙ | | |
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
-
-
|
AC_SUBST(TK_VERSION)
AC_SUBST(TK_MAJOR_VERSION)
AC_SUBST(TK_MINOR_VERSION)
AC_SUBST(TK_PATCH_LEVEL)
AC_SUBST(TK_LIB_FILE)
AC_SUBST(TK_DLL_FILE)
AC_SUBST(TK_DLL_FILE_TCL8)
AC_SUBST(TK_DLL_FILE_TCL9)
AC_SUBST(TK_STUB_LIB_FILE)
AC_SUBST(TK_STUB_LIB_FLAG)
AC_SUBST(TK_BUILD_STUB_LIB_SPEC)
AC_SUBST(TK_SRC_DIR)
AC_SUBST(TK_BIN_DIR)
AC_SUBST(TCL_VERSION)
|
︙ | | |
Changes to win/makefile.vc.
︙ | | |
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
-
-
-
-
-
-
|
# We have a custom resource file
RCFILE = tk.rc
# The rules.vc file does much of the hard work in terms of defining
# the build configuration, macros, output directories etc.
!include "rules-ext.vc"
!if ($(TCL_MAJOR_VERSION) > 8) || ($(TCL_MAJOR_VERSION) == 8 && $(TCL_MINOR_VERSION) > 6)
USING_PRE87_TCL = 0
!else
USING_PRE87_TCL = 1
!endif
# TCLINSTALL is set to 1 by rules.vc to indicate we are building against
# an installed Tcl and 0 if building against Tcl source. Tk needs the latter.
!if $(TCLINSTALL)
!message *** Warning: Tk requires the source distribution of Tcl to build from,
!message *** at this time, sorry. Please set the TCLDIR macro to point to the
!message *** Tcl sources.
!endif
|
︙ | | |
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
-
-
-
-
|
TK_EMBED_SCRIPTS = 0
!else
!message *** Tk script library will be appended to the binary.
TK_EMBED_SCRIPTS = 1
!endif
!endif
!if $(USING_PRE87_TCL)
TK_EMBED_SCRIPTS = 0
!endif
TK_NO_DEPRECATED = 0
!if "$(CHECKS)" != "" && ![nmakehlp -f "$(CHECKS)" "none"]
!if [nmakehlp -f $(CHECKS) "nodep"]
TK_NO_DEPRECATED = 1
!endif
!endif
|
︙ | | |
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
|
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
-
+
|
# Additional include and C macro definitions for the implicit rules
# defined in rules.vc
PRJ_INCLUDES = -I"$(BITMAPDIR)" -I"$(XLIBDIR)"
CONFIG_DEFS =/DHAVE_SYS_TYPES_H=1 /DHAVE_SYS_STAT_H=1 \
/DHAVE_STRING_H=1 /DHAVE_MEMORY_H=1 \
/DHAVE_STRINGS_H=1 /DTCL_UTF_MAX=4 \
/DHAVE_STRINGS_H=1 \
!if $(TTK_SQUARE_WIDGET)
/DTTK_SQUARE_WIDGET=1 \
!endif
!if $(TK_NO_DEPRECATED)
/DTK_NO_DEPRECATED=1
!endif
|
︙ | | |
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
|
-
+
-
-
-
|
TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT)
!endif
#---------------------------------------------------------------------
# Project specific targets
#---------------------------------------------------------------------
release: setup $(TKSTUBLIB) $(WISH)
release: setup $(TKSTUBLIB) $(WISH) libtkzip embed
!if !$(USING_PRE87_TCL)
release: libtkzip embed
!endif
all: release $(CAT32)
core: setup $(TKSTUBLIB) $(TKLIB)
cwish: $(WISHC)
libtkzip: setup $(TKSCRIPTZIP)
!if $(TK_EMBED_SCRIPTS)
!if $(STATIC_BUILD)
embed: setup $(WISH) $(WISHSCRIPTZIP)
|
︙ | | |
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
|
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
|
-
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
|
@$(CPY) "$(TKLIB)" "$(BIN_INSTALL_DIR)\"
!endif
@$(CPY) "$(TKIMPLIB)" "$(LIB_INSTALL_DIR)\"
@$(CPY) "$(TKSTUBLIB)" "$(LIB_INSTALL_DIR)\"
!if !$(STATIC_BUILD)
@echo creating package index
@type << > $(OUT_DIR)\pkgIndex.tcl
if {![package vsatisfies [package provide Tcl] 8.7-]} return
if {![package vsatisfies [package provide Tcl] 9.0]} return
if {($$::tcl_platform(platform) eq "unix") && ([info exists ::env(DISPLAY)]
|| ([info exists ::argv] && ("-display" in $$::argv)))} {
if {[package vsatisfies [package provide Tcl] 9.0]} {
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin libtcl9tk$(DOTVERSION).dll]]]
} else {
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin libtk$(DOTVERSION).dll]]]
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin libtcl9tk$(DOTVERSION).dll]]]
} else {
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin $(TKLIBNAME)]]]
}
} else {
if {[package vsatisfies [package provide Tcl] 9.0]} {
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin $(TKLIBNAME9)]]]
} else {
package ifneeded tk $(TK_PATCH_LEVEL) [list load [file normalize [file join $$dir .. .. bin $(TKLIBNAME8)]]]
}
}
package ifneeded Tk $(TK_PATCH_LEVEL) [list package require -exact tk $(TK_PATCH_LEVEL)]
<<
@$(CPY) $(OUT_DIR)\pkgIndex.tcl "$(SCRIPT_INSTALL_DIR)\"
!endif
#"
install-libraries:
@echo installing Tk headers
@$(CPY) "$(GENERICDIR)\tk.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tkDecls.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tkPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(XLIBDIR)\X11\*.h" "$(INCLUDE_INSTALL_DIR)\X11\"
!if !$(USING_PRE87_TCL)
@$(CPY) "$(TKSCRIPTZIP)" "$(LIB_INSTALL_DIR)"
!endif
!if !$(TK_EMBED_SCRIPTS)
@echo installing script library
@$(CPY) "$(LIBDIR)\*" "$(SCRIPT_INSTALL_DIR)\"
@echo installing theme library
@$(CPY) "$(LIBDIR)\ttk\*" "$(SCRIPT_INSTALL_DIR)\ttk\"
@echo installing images
@$(CPY) "$(LIBDIR)\images\*" "$(SCRIPT_INSTALL_DIR)\images\"
|
︙ | | |
Changes to win/rules.vc.
︙ | | |
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
|
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
|
-
+
-
+
|
DEFAULT_BUILD_TARGET = $(PROJECT)
!endif
default-target: $(DEFAULT_BUILD_TARGET)
!if $(MULTIPLATFORM_INSTALL)
default-pkgindex:
@echo if {[package vsatisfies [package provide Tcl] 9.0-]} { > $(OUT_DIR)\pkgIndex.tcl
@echo if {[package vsatisfies [package provide Tcl] 9.0]} { > $(OUT_DIR)\pkgIndex.tcl
@echo package ifneeded $(PRJ_PACKAGE_TCLNAME) $(DOTVERSION) \
[list load [file join $$dir $(PLATFORM_IDENTIFY) $(PRJLIBNAME9)]] >> $(OUT_DIR)\pkgIndex.tcl
@echo } else { >> $(OUT_DIR)\pkgIndex.tcl
@echo package ifneeded $(PRJ_PACKAGE_TCLNAME) $(DOTVERSION) \
[list load [file join $$dir $(PLATFORM_IDENTIFY) $(PRJLIBNAME8)]] >> $(OUT_DIR)\pkgIndex.tcl
@echo } >> $(OUT_DIR)\pkgIndex.tcl
!else
default-pkgindex:
@echo if {[package vsatisfies [package provide Tcl] 9.0-]} { > $(OUT_DIR)\pkgIndex.tcl
@echo if {[package vsatisfies [package provide Tcl] 9.0]} { > $(OUT_DIR)\pkgIndex.tcl
@echo package ifneeded $(PRJ_PACKAGE_TCLNAME) $(DOTVERSION) \
[list load [file join $$dir $(PRJLIBNAME9)]] >> $(OUT_DIR)\pkgIndex.tcl
@echo } else { >> $(OUT_DIR)\pkgIndex.tcl
@echo package ifneeded $(PRJ_PACKAGE_TCLNAME) $(DOTVERSION) \
[list load [file join $$dir $(PRJLIBNAME8)]] >> $(OUT_DIR)\pkgIndex.tcl
@echo } >> $(OUT_DIR)\pkgIndex.tcl
!endif
|
︙ | | |
Changes to win/tcl.m4.
︙ | | |
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
|
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
|
-
-
+
+
-
+
-
+
|
# --with-tcl=...
#
# Defines the following vars:
# TCL_BIN_DIR Full path to the tcl build dir.
#------------------------------------------------------------------------
AC_DEFUN([SC_WITH_TCL], [
if test -d ../../tcl9.0$1/win; then
TCL_BIN_DEFAULT=../../tcl9.0$1/win
if test -d ../../tcl9.1$1/win; then
TCL_BIN_DEFAULT=../../tcl9.1$1/win
else
TCL_BIN_DEFAULT=../../tcl9.0/win
TCL_BIN_DEFAULT=../../tcl9.1/win
fi
AC_ARG_WITH(tcl, [ --with-tcl=DIR use Tcl 9.0 binaries from DIR],
AC_ARG_WITH(tcl, [ --with-tcl=DIR use Tcl 9.x binaries from DIR],
TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DEFAULT; pwd`)
if test ! -d $TCL_BIN_DIR; then
AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
fi
if test ! -f $TCL_BIN_DIR/Makefile; then
AC_MSG_ERROR(There is no Makefile in $TCL_BIN_DIR: perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
else
|
︙ | | |
Changes to win/winMain.c.
︙ | | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
-
-
+
+
|
/*
* Explanation on following undef USE_TCL_STUBS by JN 2023-12-19 on the core list:
* What's going on is related to TIP #596:
* Stubs support for Embedding Tcl in other applications
*
* If an application using Tcl_Main() is compiled with USE_TCL_STUBS,
* Tcl_Main() will be replaced by a stub function, which loads
* libtcl9.0.so/tcl90.dll and then calls its Tcl_MainEx(). If
* libtcl9.0.so/tcl90.dll is not present (at runtime), a crash is what happens.
* libtcl9.1.so/tcl91.dll and then calls its Tcl_MainEx(). If
* libtcl9.1.so/tcl91.dll is not present (at runtime), a crash is what happens.
*
* So ... tkAppInit.c should not be compiled with USE_TCL_STUBS
* (unless you want to use the TIP #596 functionality)
*
* The proper solution is to make sure that Makefile.in doesn't use
* TCL_USE_STUBS when compiling tkAppInit.c. But that's a
* quite big re-organization just before a b1 release. Simpler
|
︙ | | |