Codebase list tk8.6 / 242844e
Merge tag 'upstream/8.6.1' into experimental Upstream version 8.6.1 Sergei Golovan authored 10 years ago Sergei Golovan committed 6 years ago
132 changed file(s) with 3250 addition(s) and 2716 deletion(s). Raw diff Collapse all Expand all
0 A NOTE ON THE CHANGELOG:
1 Starting in early 2011, Tk source code has been under the management of
2 fossil, hosted at http://core.tcl.tk/tk/ . Fossil presents a "Timeline"
3 view of changes made that is superior in every way to a hand edited log file.
4 Because of this, many Tk developers are now out of the habit of maintaining
5 this log file. You may still find useful things in it, but the Timeline is
6 a better first place to look now.
7 ============================================================================
8
9 2013-08-30 Don Porter <dgp@users.sourceforge.net>
10
11 *** 8.6.1 TAGGED FOR RELEASE ***
12
13 * README: Bump version number to 8.6.1
14 * generic/tk.h:
15 * library/tk.tcl:
16 * unix/configure.in:
17 * unix/tk.spec:
18 * win/configure.in:
19
20 * unix/configure: autoconf-2.59
21 * win/configure:
22
23 2013-08-25 Kevin Walzer <wordtech@users.sourceforge.net>
24
25 * macosx/tkMacOSXButton.c: Bug [3016181]: Crash after scrollbar
26 * macosx/tkMacOSXMenu.c: destroyed, Tk Cocoa.
27 * macosx/tkMacOSXScrlbr.c:
28 * macosx/tkMacOSXWm.c:
29
30 2012-08-15 Joe English <jenglish@users.sourceforge.net>
31
32 * library/ttk/progress.tcl: Bug [c597acdab3]: Call [$pb step]
33 in tail position in ttk::progressbar::Autoincrement, so that
34 the widget is in a consistent state when any write traces on
35 the linked -variable are fired.
36
37 2013-08-14 Jan Nijtmans <nijtmans@users.sf.net>
38
39 * generic/tkConfig.c: Bug [069c9e43c4]: FreeOptionInternalRep() breaks
40 * tests/config.test: Tk_CreateOptionTable()
41
42 2013-07-02 Jan Nijtmans <nijtmans@users.sf.net>
43
44 * unix/tcl.m4: Bug [32afa6e256]: dirent64 check is incorrect in tcl.m4
45 * unix/configure: (thanks to Brian Griffin)
46
47 2012-06-28 Jan Nijtmans <nijtmans@users.sf.net>
48
49 * library/ttk/scale.tcl: [Bug 2501278]: ttk::scale keyboard binding
50 problem.
51
52 2013-06-05 Jan Nijtmans <nijtmans@users.sf.net>
53
54 * generic/ttk/ttkScroll.c: [Bug 3613759]: ttk::entry and symbolic
55 index names.
56 * generic/ttk/ttkEntry.c: [Bug 2100430]: ttk::entry widget index
57 must be integer
58 * generic/tkEntry.c: Don't set interp result when it will be
59 overwritten later.
60
61 2013-06-04 Jan Nijtmans <nijtmans@users.sf.net>
62
63 * unix/tcl.m4: Eliminate NO_VIZ macro as current
64 zlib uses HAVE_HIDDEN in stead. One more last-moment
65 fix for FreeBSD by Pietro Cerutti
66
67 2013-05-23 Jan Nijtmans <nijtmans@users.sf.net>
68
69 * unix/tcl.m4: [Bug 3613668]: XFilterEvent() hangs.
70 * unix/configure:
71 * unix/tkUnixEvent.c:
72
73 2013-05-19 Jan Nijtmans <nijtmans@users.sf.net>
74
75 * unix/tcl.m4: Fix for FreeBSD, and remove support for older
76 * unix/configure: FreeBSD versions. Patch by Pietro Cerutti.
77
78 2013-04-10 Jan Nijtmans <nijtmans@users.sf.net>
79
80 * win/makefile.vc: [Bug 3568760]: Tk documentation fails to build
81
82 2013-04-01 Don Porter <dgp@users.sourceforge.net>
83
84 * tests/window.test: Bring back test window-2.9. No longer hangs.
85
86 * generic/tkInt.h: [Bug 3607830] Runtime checks that Xkb is
87 * unix/tkUnixEvent.c: available in the X server before trying to
88 * unix/tkUnixKey.c: use. Adapted from patch from Brian Griffin.
89
90 2013-03-27 Jan Nijtmans <nijtmans@users.sf.net>
91
92 * library/button.tcl: [Bug 3608074]: Add <<Invoke>> bindings to
93 * library/listbox.tcl: Button's, Listbox and Menu.
94 * library/menu.tcl:
95 * doc/event.n: Document <<Invoke>>, <<ThemeChanged>>,
96 * doc/ttk_panedwindow.n: <<EnteredChild>> (ttk_pandedwindow only) and
97 * doc/ttk_spinbox.n: <<Increment/Decrement>> (ttk_spinbox only)
98
99 2013-03-13 Jan Nijtmans <nijtmans@users.sf.net>
100
101 * unix/tcl.m4: Patch by Andrew Shadura, providing better support for
102 three architectures they have in Debian.
103
104 2013-03-11 Don Porter <dgp@users.sourceforge.net>
105
106 * generic/tkListbox.c: [Bug 3607326] Stop segfault from
107 * tests/listbox.test: [listbox .l -listvariable $array].
108
109 2013-02-28 Donal K. Fellows <dkf@users.sf.net>
110
111 * unix/tkUnixKey.c (TkpGetKeySym): [Bug 3599312]: Put the
112 initialization of the key mapping before the input method handling so
113 that Alt key handling is correct on non-OSX Unix. Thanks to Colin
114 McDonald for developing the fix.
115
116 2013-02-18 Jan Nijtmans <nijtmans@users.sf.net>
117
118 * unix/tkUnixEvent.c: Call XInitThreads once before the first Xlib
119 call. Suggested by Brian Griffin.
120
121 2013-01-14 Jan Nijtmans <nijtmans@users.sf.net>
122
123 * win/tcl.m4: More flexible search for win32 tclConfig.sh,
124 * win/configure: backported from TEA.
125
126 2013-01-13 Jan Nijtmans <nijtmans@users.sf.net>
127
128 * library/tk.tcl: [Bug 3600390]: tk_strictMotif not tested for. Now
129 * library/ttk/entry.tcl: all key-bindings for Control-a,b,e,f,n,p and
130 their shift variants respect tk_strictMotif.
131
132 2013-01-10 Jan Nijtmans <nijtmans@users.sf.net>
133
134 * library/text.tcl: [Bug 3600251]: Inappropriate replacement of Mac
135 binding.
136 * library/tk.tcl: [Bug 3600260]: Errors in new virtual event
137 definitions
138
0139 2012-12-11 Don Porter <dgp@users.sourceforge.net>
1140
2141 *** 8.6.0 TAGGED FOR RELEASE ***
11150 * unix/configure: autoconf-2.59
12151 * win/configure:
13152
14 2012-12-04 Francois Vogel <fvogelnew1@free.fr>
153 2012-12-04 François Vogel <fvogelnew1@free.fr>
15154
16155 * generic/tkTextIndex.c: [Bug 3588824]: bug in image index handling
17156 * tests/textIndex.test: for weird image names
19158 2012-11-14 Jan Nijtmans <nijtmans@users.sf.net>
20159
21160 * win/tkWinDialog.c: [Bug 3500545]: tk_getOpenFile -multiple 1 wrong
22 on windows
161 on windows.
162 [Bug 3416492]: Crash in open/save file dialog in Windows 7 libraries.
163 [Bug 3095112]: crash when selecting file from Win7 Library.
23164
24165 2012-11-11 Jan Nijtmans <nijtmans@users.sf.net>
25166
174315
175316 * win/rules.vc: Sync with tcl version of rules.vc
176317
177 2012-08-11 Francois Vogel <fvogelnew1@free.fr>
318 2012-08-11 François Vogel <fvogelnew1@free.fr>
178319
179320 * generic/tkTextTag.c: [Bug 3554273]: Test textDisp-32.2 failed
180321
311452 to allow retrieval of the drawing surface. Allows Canvas3d to be
312453 adapted to 8.6.
313454
314 2012-05-28 Francois Vogel <fvogelnew1@free.fr>
455 2012-05-28 François Vogel <fvogelnew1@free.fr>
315456
316457 * doc/text.n: [Bug 1630251]: Doc for -endline option was wrong
317458
318 2012-05-28 Francois Vogel <fvogelnew1@free.fr>
459 2012-05-28 François Vogel <fvogelnew1@free.fr>
319460
320461 * generic/tkTextDisp.c: [Bug 1630254]: missing scrolling of text widget
321462 when from a -startline == -endline initial state it is configured to
431572 * unix/tcl.m4: Patch from the cygwin folks
432573 * unix/configure: (re-generated)
433574
434 2012-02-28 Francois Vogel <fvogelnew1@free.fr>
575 2012-02-28 François Vogel <fvogelnew1@free.fr>
435576
436577 * generic/tkText.c: [Bug 1630262, Bug 1615425]: segfault
437578 * generic/tkTextBTree.c when deleting lines or tagging outside of
482623
483624 * win/tkWinDialog.c: [Bug 3480471]: tk_getOpenFile crashes on Win64
484625
485 2012-01-26 Francois Vogel <fvogelnew1@free.fr>
626 2012-01-26 François Vogel <fvogelnew1@free.fr>
486627
487628 * generic/tkTextDisp.c: [Bug-1754043] and [Bug-2321450]: When
488629 -blockcursor is true, the cursor appears as a blinking bar which
493634 * generic/tkImgPhoto.c: [Bug 2433260]: non-critical error in
494635 Tk_PhotoPutBlock
495636
496 2012-01-25 Francois Vogel <fvogelnew1@free.fr>
637 2012-01-25 François Vogel <fvogelnew1@free.fr>
497638
498639 * generic/tkText.c: Don't increase the epoch twice
499640
500 2012-01-25 Francois Vogel <fvogelnew1@free.fr>
641 2012-01-25 François Vogel <fvogelnew1@free.fr>
501642
502643 * generic/tkText.c: [Bug-1630271]: segfault/infinite loop
503644 * generic/tkTextMark.c: when a mark is before -startline
504645 * tests/textMark.test:
505646
506 2012-01-25 Francois Vogel <fvogelnew1@free.fr>
647 2012-01-25 François Vogel <fvogelnew1@free.fr>
507648
508649 * generic/tkText.c: [Bug-3475627]: Test text-31.11 fails
509650
510 2012-01-22 Francois Vogel <fvogelnew1@free.fr>
651 2012-01-22 François Vogel <fvogelnew1@free.fr>
511652
512653 * generic/tkTextMark.c: [Bug-3288113,3288121]: Missing marks/endless
513654 * tests/textMark.test: loop in text mark prev/next
514655
515 2012-01-19 Francois Vogel <fvogelnew1@free.fr>
656 2012-01-19 François Vogel <fvogelnew1@free.fr>
516657
517658 * generic/tkText.c: [Bug-3021557]: Moving the cursor in
518659 * tests/text.test: elided text freezes Tk
00 README: Tk
1 This is the Tk 8.6.0 source distribution.
2 http://tcl.sourceforge.net/
3 You can get any source release of Tcl from the file distributions
4 link at the above URL.
1 This is the Tk 8.6.1 source distribution.
2 http://sourceforge.net/projects/tcl/files/Tcl/
3 You can get any source release of Tk from the URL above.
54
65 1. Introduction
76 ---------------
1716 or refer to the "changes" file in this directory, which contains a
1817 historical record of all changes to Tk.
1918
20 Tk is maintained, enhanced, and distributed freely by members of the
21 Tcl community. The home for Tcl/Tk sources and bug database is on
22 SourceForge at:
19 Tk is maintained, enhanced, and distributed freely by the Tcl community.
20 Source code development and tracking of bug reports and feature requests
21 takes place at:
2322
24 http://tcl.sourceforge.net/
23 http://core.tcl.tk/tk/
2524
2625 with the Tcl Developer Xchange at:
2726
70307030 2012-12-06 (bug fix)[3592736] stop pink greys from buggy mingw builds (fellows)
70317031
70327032 --- Released 8.6.0, December 20, 2012 --- See ChangeLog for details ---
7033
7034 2013-01-04 (bug fix) Tk_InitStubs("8.6") rejected in 8.60 interp (nijtmans)
7035
7036 2013-01-10 (bug fix)[3600251] Mac <Control-v> binding (kjnash,nijtmans)
7037
7038 2013-01-10 (bug fix)[3600260] <<SelectNextPara>> binding (kjnash,nijtmans)
7039
7040 2013-01-13 (bug fix)[3600290] restore $tk_strictMotif respect (kjnash,nijtmans)
7041
7042 2013-01-22 (bug fix)[3601782] Tcl_InitStubs failure message (nijtmans)
7043
7044 2013-01-31 (bug fix)[3599928] use XKeycodeToKeysym on old systems (cassoff)
7045
7046 2013-02-04 (bug fix)[3603077] treeview update on tag add/remove (english)
7047
7048 2013-02-28 (bug fix)[3599312] First Alt key event is lost (mcdonald)
7049
7050 2013-03-11 (bug fix)[3607326] Crash [listbox .l -listvariable $array] (porter)
7051
7052 2013-03-13 (enhancement) better build support for Debian arch (shadura)
7053
7054 2013-03-27 (bug fix)[3608074] button, listbox, menu <<Invoke>> (nijtmans)
7055
7056 2013-04-01 (bug fix)[3607830] Xkb runtime checks (griffin)
7057
7058 2013-05-19 (platform support) FreeBSD updates (cerutti)
7059
7060 2013-06-05 (bug fix)[3613759] [ttk::entry .e; .e xview end] (nijtmans)
7061
7062 2013-06-05 (bug fix)[2100430] [ttk::entry .e; .e xview insert] (nijtmans)
7063
7064 2013-06-28 (bug fix)[2501278] reverse ttk::scale key bindings {mcdonald)
7065
7066 2013-07-02 (bug fix)[32afa6] corrected dirent64 check (griffin)
7067
7068 2013-08-14 (bug fix)[069c9e] "option" value refcount crash (tim,nijtmans)
7069
7070 2013-08-15 (bug fix)[c597acd] [$pb step] work with traces (english)
7071
7072 2013-08-25 (bug fix)[3016181] Cocoa: [destroy $scrollbar] => crash (goddard)
7073
7074 --- Released 8.6.1, September 19, 2013 --- http://core.tcl.tk/tk/ for details
1313 #ifndef _UNISTD
1414 #define _UNISTD
1515
16 #include "tcl.h"
1716 #include <sys/types.h>
1817
1918 #ifndef NULL
316316 this is to either focus into the widget (or some related widget) or to
317317 invoke the widget.
318318 .TP
319 \fB<<Invoke>>\fR
320 This can be sent to some widgets (e.g. button, listbox, menu) as an
321 alternative to <space>.
322 .TP
319323 \fB<<ListboxSelect>>\fR
320324 This is sent to a listbox when the set of selected item(s) in the
321325 listbox is updated.
331335 \fB<<Selection>>\fR
332336 This is sent to a text widget when the selection in the widget is
333337 changed.
338 .TP
339 \fB<<ThemeChanged>>\fR
340 This is sent to a text widget when the ttk (Tile) theme changed.
334341 .TP
335342 \fB<<TraverseIn>>\fR
336343 This is sent to a widget when the focus enters the widget because of a
104104 .\" depending on which changed most recently.
105105 Returns the new position of sash number \fIindex\fR.
106106 .\" Full story: new position may be different than the requested position.
107 .SH "VIRTUAL EVENTS"
108 .PP
109 The panedwindow widget generates an \fB<<EnteredChild>>\fR virtual event on
110 LeaveNotify/NotifyInferior events, because Tk does not execute binding scripts
111 for <Leave> events when the pointer crosses from a parent to a child. The
112 panedwindow widget needs to know when that happens.
107113 .SH "SEE ALSO"
108114 ttk::widget(n), ttk::notebook(n), panedwindow(n)
109115 '\" Local Variables:
7676 been configured then this format will be applied. If formatting fails
7777 or is not set or the \fB\-values\fR option has been used then the value
7878 is set directly.
79 .SH "VIRTUAL EVENTS"
80 .PP
81 The spinbox widget generates a \fB<<Increment>>\fR virtual event when
82 the user presses <Up>, and a \fB<<Decrement>>\fR virtual event when the
83 user presses <Down>.
7984 .SH "SEE ALSO"
8085 ttk::widget(n), ttk::entry(n), spinbox(n)
8186 .SH KEYWORDS
10681068 void Tk_CreateOldPhotoImageFormat(const Tk_PhotoImageFormat *formatPtr)
10691069 }
10701070
1071 declare 274 {
1072 void reserved274(void)
1073 }
1074 declare 275 {
1075 void reserved275(void)
1076 }
1077
10781071 # Define the platform specific public Tk interface. These functions are
10791072 # only available on the designated platform.
10801073
1919 #if (TCL_MAJOR_VERSION != 8) || (TCL_MINOR_VERSION < 6)
2020 # error Tk 8.6 must be compiled with tcl.h from Tcl 8.6 or better
2121 #endif
22
22
23 #ifndef CONST84
24 # define CONST84 const
25 # define CONST84_RETURN const
26 #endif
27 #ifndef CONST86
28 # define CONST86 CONST84
29 #endif
30 #ifndef EXTERN
31 # define EXTERN extern TCL_STORAGE_CLASS
32 #endif
33
34 /*
35 * Utility macros: STRINGIFY takes an argument and wraps it in "" (double
36 * quotation marks), JOIN joins two arguments.
37 */
38
39 #ifndef STRINGIFY
40 # define STRINGIFY(x) STRINGIFY1(x)
41 # define STRINGIFY1(x) #x
42 #endif
43 #ifndef JOIN
44 # define JOIN(a,b) JOIN1(a,b)
45 # define JOIN1(a,b) a##b
46 #endif
47
2348 /*
2449 * For C++ compilers, use extern "C"
2550 */
5277 #define TK_RELEASE_SERIAL 0
5378
5479 #define TK_VERSION "8.6"
55 #define TK_PATCH_LEVEL "8.6.0"
80 #define TK_PATCH_LEVEL "8.6.1"
5681
5782 /*
5883 * A special definition used to allow this header file to be included from
623623 * from. */
624624 int *resultPtr) /* Where to place the answer. */
625625 {
626 return Tcl_GetIndexFromObj(interp, objPtr, reliefStrings, "relief", 0,
627 resultPtr);
626 return Tcl_GetIndexFromObjStruct(interp, objPtr, reliefStrings,
627 sizeof(char *), "relief", 0, resultPtr);
628628 }
629629
630630 /*
22962296 int code;
22972297
22982298 Tcl_IncrRefCount(cmdObj);
2299 code = Tcl_GlobalEvalObj(interp, cmdObj);
2299 code = Tcl_EvalObjEx(interp, cmdObj, TCL_EVAL_GLOBAL);
23002300 if (code != TCL_OK) {
23012301 Tcl_AddErrorInfo(interp,
23022302 "\n (changing screen in event binding)");
23482348 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg?");
23492349 return TCL_ERROR;
23502350 }
2351 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
2352 &index) != TCL_OK) {
2351 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
2352 sizeof(char *), "option", 0, &index) != TCL_OK) {
23532353 return TCL_ERROR;
23542354 }
23552355
26422642 eventPSPtr = FindSequence(interp, &vetPtr->patternTable, NULL,
26432643 eventString, 0, 0, &eventMask);
26442644 if (eventPSPtr == NULL) {
2645 const char *string = Tcl_GetStringResult(interp);
2645 const char *string = Tcl_GetString(Tcl_GetObjResult(interp));
26462646
26472647 return (string[0] != '\0') ? TCL_ERROR : TCL_OK;
26482648 }
30053005 optionPtr = objv[i];
30063006 valuePtr = objv[i + 1];
30073007
3008 if (Tcl_GetIndexFromObj(interp, optionPtr, fieldStrings, "option",
3009 TCL_EXACT, &index) != TCL_OK) {
3008 if (Tcl_GetIndexFromObjStruct(interp, optionPtr, fieldStrings,
3009 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
30103010 return TCL_ERROR;
30113011 }
30123012 if (objc & 1) {
4242 static int ConfigureBusy(Tcl_Interp *interp, Busy *busyPtr,
4343 int objc, Tcl_Obj *const objv[]);
4444 static Busy * CreateBusy(Tcl_Interp *interp, Tk_Window tkRef);
45 static void DestroyBusy(char *dataPtr);
45 static void DestroyBusy(void *dataPtr);
4646 static void DoConfigureNotify(Tk_FakeWin *winPtr);
4747 static inline Tk_Window FirstChild(Tk_Window parent);
4848 static Busy * GetBusy(Tcl_Interp *interp,
135135 busyPtr);
136136 TkpHideBusyWindow(busyPtr);
137137 busyPtr->tkBusy = NULL;
138 Tcl_EventuallyFree(busyPtr, DestroyBusy);
138 Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy);
139139 }
140140
141141 /*
261261 * Arrange for the busy structure to be removed at a proper time.
262262 */
263263
264 Tcl_EventuallyFree(busyPtr, DestroyBusy);
264 Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy);
265265 break;
266266
267267 case ConfigureNotify:
332332
333333 static void
334334 DestroyBusy(
335 char *data) /* Busy window structure record */
336 {
337 register Busy *busyPtr = (Busy *) data;
335 void *data) /* Busy window structure record */
336 {
337 register Busy *busyPtr = data;
338338
339339 if (busyPtr->hashPtr != NULL) {
340340 Tcl_DeleteHashEntry(busyPtr->hashPtr);
382382
383383 if (eventPtr->type == DestroyNotify) {
384384 busyPtr->tkBusy = NULL;
385 Tcl_EventuallyFree(busyPtr, DestroyBusy);
385 Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy);
386386 }
387387 }
388388
815815 return HoldBusy(busyTablePtr, interp, objv[1], objc-2, objv+2);
816816 }
817817
818 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
819 &index) != TCL_OK) {
818 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
819 sizeof(char *), "option", 0, &index) != TCL_OK) {
820820 return TCL_ERROR;
821821 }
822822 switch ((enum options) index) {
894894 return TCL_ERROR;
895895 }
896896 TkpHideBusyWindow(busyPtr);
897 Tcl_EventuallyFree(busyPtr, DestroyBusy);
897 Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy);
898898 return TCL_OK;
899899
900900 case BUSY_HOLD:
796796 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
797797 return TCL_ERROR;
798798 }
799 result = Tcl_GetIndexFromObj(interp, objv[1], commandNames[butPtr->type],
800 "option", 0, &index);
799 result = Tcl_GetIndexFromObjStruct(interp, objv[1], commandNames[butPtr->type],
800 sizeof(char *), "option", 0, &index);
801801 if (result != TCL_OK) {
802802 return result;
803803 }
961961
962962 Tcl_DeleteCommandFromToken(butPtr->interp, butPtr->widgetCmd);
963963 if (butPtr->textVarNamePtr != NULL) {
964 Tcl_UntraceVar(butPtr->interp, Tcl_GetString(butPtr->textVarNamePtr),
965 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
964 Tcl_UntraceVar2(butPtr->interp, Tcl_GetString(butPtr->textVarNamePtr),
965 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
966966 ButtonTextVarProc, butPtr);
967967 }
968968 if (butPtr->image != NULL) {
996996 Tk_FreeTextLayout(butPtr->textLayout);
997997 }
998998 if (butPtr->selVarNamePtr != NULL) {
999 Tcl_UntraceVar(butPtr->interp, Tcl_GetString(butPtr->selVarNamePtr),
1000 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
999 Tcl_UntraceVar2(butPtr->interp, Tcl_GetString(butPtr->selVarNamePtr),
1000 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10011001 ButtonVarProc, butPtr);
10021002 }
10031003 Tk_FreeConfigOptions((char *) butPtr, butPtr->optionTable,
10441044 */
10451045
10461046 if (butPtr->textVarNamePtr != NULL) {
1047 Tcl_UntraceVar(interp, Tcl_GetString(butPtr->textVarNamePtr),
1048 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1047 Tcl_UntraceVar2(interp, Tcl_GetString(butPtr->textVarNamePtr),
1048 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10491049 ButtonTextVarProc, butPtr);
10501050 }
10511051 if (butPtr->selVarNamePtr != NULL) {
1052 Tcl_UntraceVar(interp, Tcl_GetString(butPtr->selVarNamePtr),
1053 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1052 Tcl_UntraceVar2(interp, Tcl_GetString(butPtr->selVarNamePtr),
1053 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10541054 ButtonVarProc, butPtr);
10551055 }
10561056
12961296 */
12971297
12981298 if (butPtr->textVarNamePtr != NULL) {
1299 Tcl_TraceVar(interp, Tcl_GetString(butPtr->textVarNamePtr),
1300 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1299 Tcl_TraceVar2(interp, Tcl_GetString(butPtr->textVarNamePtr),
1300 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
13011301 ButtonTextVarProc, butPtr);
13021302 }
13031303 if (butPtr->selVarNamePtr != NULL) {
1304 Tcl_TraceVar(interp, Tcl_GetString(butPtr->selVarNamePtr),
1305 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1304 Tcl_TraceVar2(interp, Tcl_GetString(butPtr->selVarNamePtr),
1305 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
13061306 ButtonVarProc, butPtr);
13071307 }
13081308
16171617 if (flags & TCL_TRACE_UNSETS) {
16181618 butPtr->flags &= ~(SELECTED | TRISTATED);
16191619 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
1620 Tcl_TraceVar(interp, Tcl_GetString(butPtr->selVarNamePtr),
1621 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1620 Tcl_TraceVar2(interp, Tcl_GetString(butPtr->selVarNamePtr),
1621 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
16221622 ButtonVarProc, clientData);
16231623 }
16241624 goto redisplay;
16421642 }
16431643 butPtr->flags |= SELECTED;
16441644 butPtr->flags &= ~TRISTATED;
1645 } else if (butPtr->offValuePtr
1645 } else if (butPtr->offValuePtr
16461646 && strcmp(value, Tcl_GetString(butPtr->offValuePtr)) == 0) {
16471647 if (!(butPtr->flags & (SELECTED | TRISTATED))) {
16481648 return NULL;
17111711 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
17121712 Tcl_ObjSetVar2(interp, butPtr->textVarNamePtr, NULL,
17131713 butPtr->textPtr, TCL_GLOBAL_ONLY);
1714 Tcl_TraceVar(interp, Tcl_GetString(butPtr->textVarNamePtr),
1715 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1714 Tcl_TraceVar2(interp, Tcl_GetString(butPtr->textVarNamePtr),
1715 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
17161716 ButtonTextVarProc, clientData);
17171717 }
17181718 return NULL;
17421742 int *indexPtr) /* Where to store converted index. */
17431743 {
17441744 LineItem *linePtr = (LineItem *) itemPtr;
1745 int length;
1746 const char *string = Tcl_GetStringFromObj(obj, &length);
1745 const char *string = Tcl_GetString(obj);
17471746
17481747 if (string[0] == 'e') {
1749 if (strncmp(string, "end", (unsigned) length) == 0) {
1748 if (strncmp(string, "end", obj->length) == 0) {
17501749 *indexPtr = 2*linePtr->numPoints;
17511750 } else {
17521751 goto badIndex;
16721672 int *indexPtr) /* Where to store converted index. */
16731673 {
16741674 PolygonItem *polyPtr = (PolygonItem *) itemPtr;
1675 int length;
1676 const char *string = Tcl_GetStringFromObj(obj, &length);
1675 const char *string = Tcl_GetString(obj);
16771676
16781677 if (string[0] == 'e') {
1679 if (strncmp(string, "end", (unsigned)length) != 0) {
1678 if (strncmp(string, "end", obj->length) != 0) {
16801679 goto badIndex;
16811680 }
16821681 *indexPtr = 2*(polyPtr->numPoints - polyPtr->autoClosed);
192192 * such.
193193 */
194194
195 result = Tcl_Eval(interp, "::tk::ensure_psenc_is_loaded");
195 result = Tcl_EvalEx(interp, "::tk::ensure_psenc_is_loaded", -1, 0);
196196 if (result != TCL_OK) {
197197 return result;
198198 }
10461046 command = Tk_GetBinding(interp, canvasPtr->bindingTable,
10471047 object, Tcl_GetString(objv[3]));
10481048 if (command == NULL) {
1049 const char *string = Tcl_GetStringResult(interp);
1049 const char *string = Tcl_GetString(Tcl_GetObjResult(interp));
10501050
10511051 /*
10521052 * Ignore missing binding errors. This is a special hack that
12411241 int isNew = 0;
12421242 Tcl_HashEntry *entryPtr;
12431243 const char *arg;
1244 int length;
1244 size_t length;
12451245
12461246 if (objc < 3) {
12471247 Tcl_WrongNumArgs(interp, 2, objv, "type coords ?arg ...?");
12481248 result = TCL_ERROR;
12491249 goto done;
12501250 }
1251 arg = Tcl_GetStringFromObj(objv[2], &length);
1251 arg = Tcl_GetString(objv[2]);
1252 length = objv[2]->length;
12521253 c = arg[0];
12531254
12541255 /*
12601261 Tcl_MutexLock(&typeListMutex);
12611262 for (typePtr = typeList; typePtr != NULL; typePtr = typePtr->nextPtr){
12621263 if ((c == typePtr->name[0])
1263 && (!strncmp(arg, typePtr->name, (unsigned)length))) {
1264 && (!strncmp(arg, typePtr->name, length))) {
12641265 if (matchPtr != NULL) {
12651266 Tcl_MutexUnlock(&typeListMutex);
12661267 goto badType;
55385539 int xOrigin, yOrigin, inset, width, height;
55395540 int scrollX1, scrollX2, scrollY1, scrollY2;
55405541 char *xScrollCmd, *yScrollCmd;
5542 Tcl_DString buf;
55415543
55425544 /*
55435545 * Save all the relevant values from the canvasPtr, because it might be
55685570 Tcl_Obj *fractions = ScrollFractions(xOrigin + inset,
55695571 xOrigin + width - inset, scrollX1, scrollX2);
55705572
5571 result = Tcl_VarEval(interp, xScrollCmd," ",Tcl_GetString(fractions),
5572 NULL);
5573 Tcl_DStringInit(&buf);
5574 Tcl_DStringAppend(&buf, xScrollCmd, -1);
5575 Tcl_DStringAppend(&buf, " ", -1);
5576 Tcl_DStringAppend(&buf, Tcl_GetString(fractions), -1);
5577 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
5578 Tcl_DStringFree(&buf);
55735579 Tcl_DecrRefCount(fractions);
55745580 if (result != TCL_OK) {
55755581 Tcl_BackgroundException(interp, result);
55825588 Tcl_Obj *fractions = ScrollFractions(yOrigin + inset,
55835589 yOrigin + height - inset, scrollY1, scrollY2);
55845590
5585 result = Tcl_VarEval(interp, yScrollCmd," ",Tcl_GetString(fractions),
5586 NULL);
5591 Tcl_DStringInit(&buf);
5592 Tcl_DStringAppend(&buf, yScrollCmd, -1);
5593 Tcl_DStringAppend(&buf, " ", -1);
5594 Tcl_DStringAppend(&buf, Tcl_GetString(fractions), -1);
5595 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
5596 Tcl_DStringFree(&buf);
55875597 Tcl_DecrRefCount(fractions);
55885598 if (result != TCL_OK) {
55895599 Tcl_BackgroundException(interp, result);
108108 }
109109
110110 for (i = 1; i < objc; i++) {
111 if (Tcl_GetIndexFromObj(interp, objv[i], bellOptions, "option", 0,
112 &index) != TCL_OK) {
111 if (Tcl_GetIndexFromObjStruct(interp, objv[i], bellOptions,
112 sizeof(char *), "option", 0, &index) != TCL_OK) {
113113 return TCL_ERROR;
114114 }
115115 switch ((enum options) index) {
451451 * have to be freed.
452452 */
453453
454 ckfree(p);
454 ckfree((char *)p);
455455 }
456456 }
457457 ckfree(winPtr->tagPtr);
10171017
10181018 switch ((enum options) index) {
10191019 case TKWAIT_VARIABLE:
1020 if (Tcl_TraceVar(interp, Tcl_GetString(objv[2]),
1021 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1020 if (Tcl_TraceVar2(interp, Tcl_GetString(objv[2]),
1021 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10221022 WaitVariableProc, &done) != TCL_OK) {
10231023 return TCL_ERROR;
10241024 }
10301030 }
10311031 Tcl_DoOneEvent(0);
10321032 }
1033 Tcl_UntraceVar(interp, Tcl_GetString(objv[2]),
1034 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1033 Tcl_UntraceVar2(interp, Tcl_GetString(objv[2]),
1034 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10351035 WaitVariableProc, &done);
10361036 break;
10371037
21172117 const char **argv) /* Argument strings. */
21182118 {
21192119 Tcl_SetObjResult(interp, Tcl_ObjPrintf(
2120 "can't invoke \"%s\" command: application has been destroyed",
2120 "can't invoke \"%s\" command: application has been destroyed",
21212121 argv[0]));
21222122 return TCL_ERROR;
21232123 }
2626 #include "tkFont.h"
2727
2828 /*
29 * The following definition is an AssocData key used to keep track of all of
30 * the option tables that have been created for an interpreter.
31 */
32
33 #define OPTION_HASH_KEY "TkOptionTable"
29 * The following definition keeps track of all of
30 * the option tables that have been created for a thread.
31 */
32
33 typedef struct ThreadSpecificData {
34 int initialized; /* 0 means table below needs initializing. */
35 Tcl_HashTable hashTable;
36 } ThreadSpecificData;
37 static Tcl_ThreadDataKey dataKey;
38
3439
3540 /*
3641 * The following two structures are used along with Tk_OptionSpec structures
99104 * chain. */
100105 int numOptions; /* The number of items in the options array
101106 * below. */
102 int refCount2; /* Reference counter for controlling the freeing
103 * of the memory occupied by this OptionTable */
104107 Option options[1]; /* Information about the individual options in
105108 * the table. This must be the last field in
106109 * the structure: the actual size of the array
114117 static int DoObjConfig(Tcl_Interp *interp, char *recordPtr,
115118 Option *optionPtr, Tcl_Obj *valuePtr,
116119 Tk_Window tkwin, Tk_SavedOption *savePtr);
117 static void DestroyOptionHashTable(ClientData clientData,
118 Tcl_Interp *interp);
119120 static void FreeResources(Option *optionPtr, Tcl_Obj *objPtr,
120121 char *internalPtr, Tk_Window tkwin);
121122 static Tcl_Obj * GetConfigList(char *recordPtr,
127128 Tcl_Obj *objPtr, OptionTable *tablePtr);
128129 static int ObjectIsEmpty(Tcl_Obj *objPtr);
129130 static void FreeOptionInternalRep(Tcl_Obj *objPtr);
130 static int SetOptionFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr);
131 static void DupOptionInternalRep(Tcl_Obj *, Tcl_Obj *);
131132
132133 /*
133134 * The structure below defines an object type that is used to cache the result
139140 static const Tcl_ObjType optionObjType = {
140141 "option", /* name */
141142 FreeOptionInternalRep, /* freeIntRepProc */
142 NULL, /* dupIntRepProc */
143 DupOptionInternalRep, /* dupIntRepProc */
143144 NULL, /* updateStringProc */
144 SetOptionFromAny /* setFromAnyProc */
145 NULL /* setFromAnyProc */
145146 };
146147
147148 /*
170171 /* Static information about the configuration
171172 * options. */
172173 {
173 Tcl_HashTable *hashTablePtr;
174174 Tcl_HashEntry *hashEntryPtr;
175175 int newEntry;
176176 OptionTable *tablePtr;
177177 const Tk_OptionSpec *specPtr, *specPtr2;
178178 Option *optionPtr;
179179 int numOptions, i;
180 ThreadSpecificData *tsdPtr =
181 Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
180182
181183 /*
182 * We use an AssocData value in the interpreter to keep a hash table of
183 * all the option tables we've created for this application. This is used
184 * for two purposes. First, it allows us to share the tables (e.g. in
185 * several chains) and second, we use the deletion callback for the
186 * AssocData to delete all the option tables when the interpreter is
187 * deleted. The code below finds the hash table or creates a new one if it
184 * We use an TSD in the thread to keep a hash table of
185 * all the option tables we've created for this application. This is
186 * used for allowing us to share the tables (e.g. in several chains).
187 * The code below finds the hash table or creates a new one if it
188188 * doesn't already exist.
189189 */
190190
191 hashTablePtr = Tcl_GetAssocData(interp, OPTION_HASH_KEY, NULL);
192 if (hashTablePtr == NULL) {
193 hashTablePtr = ckalloc(sizeof(Tcl_HashTable));
194 Tcl_InitHashTable(hashTablePtr, TCL_ONE_WORD_KEYS);
195 Tcl_SetAssocData(interp, OPTION_HASH_KEY, DestroyOptionHashTable,
196 hashTablePtr);
191 if (!tsdPtr->initialized) {
192 Tcl_InitHashTable(&tsdPtr->hashTable, TCL_ONE_WORD_KEYS);
193 tsdPtr->initialized = 1;
197194 }
198195
199196 /*
201198 * reuse the existing table.
202199 */
203200
204 hashEntryPtr = Tcl_CreateHashEntry(hashTablePtr, (char *) templatePtr,
201 hashEntryPtr = Tcl_CreateHashEntry(&tsdPtr->hashTable, (char *) templatePtr,
205202 &newEntry);
206203 if (!newEntry) {
207204 tablePtr = Tcl_GetHashValue(hashEntryPtr);
220217 }
221218 tablePtr = ckalloc(sizeof(OptionTable) + (numOptions * sizeof(Option)));
222219 tablePtr->refCount = 1;
223 tablePtr->refCount2 = 1;
224220 tablePtr->hashEntryPtr = hashEntryPtr;
225221 tablePtr->nextPtr = NULL;
226222 tablePtr->numOptions = numOptions;
356352 }
357353 }
358354 Tcl_DeleteHashEntry(tablePtr->hashEntryPtr);
359 tablePtr->refCount2--;
360 if (tablePtr->refCount2 <= 0) {
361 ckfree(tablePtr);
362 }
363 }
364
365 /*
366 *----------------------------------------------------------------------
367 *
368 * DestroyOptionHashTable --
369 *
370 * This function is the deletion callback associated with the AssocData
371 * entry created by Tk_CreateOptionTable. It is invoked when an
372 * interpreter is deleted, and deletes all of the option tables
373 * associated with that interpreter.
374 *
375 * Results:
376 * None.
377 *
378 * Side effects:
379 * The option hash table is destroyed along with all of the OptionTable
380 * structures that it refers to.
381 *
382 *----------------------------------------------------------------------
383 */
384
385 static void
386 DestroyOptionHashTable(
387 ClientData clientData, /* The hash table we are destroying */
388 Tcl_Interp *interp) /* The interpreter we are destroying */
389 {
390 Tcl_HashTable *hashTablePtr = clientData;
391 Tcl_HashSearch search;
392 Tcl_HashEntry *hashEntryPtr;
393
394 for (hashEntryPtr = Tcl_FirstHashEntry(hashTablePtr, &search);
395 hashEntryPtr != NULL;
396 hashEntryPtr = Tcl_NextHashEntry(&search)) {
397 OptionTable *tablePtr = Tcl_GetHashValue(hashEntryPtr);
398
399 /*
400 * The following statements do two tricky things:
401 * 1. They ensure that the option table is deleted, even if there are
402 * outstanding references to it.
403 * 2. They ensure that Tk_DeleteOptionTable doesn't delete other
404 * tables chained from this one; we'll do it when we come across
405 * the hash table entry for the chained table (in fact, the chained
406 * table may already have been deleted).
407 */
408
409 tablePtr->refCount = 1;
410 tablePtr->nextPtr = NULL;
411 Tk_DeleteOptionTable((Tk_OptionTable) tablePtr);
412 }
413 Tcl_DeleteHashTable(hashTablePtr);
414 ckfree(hashTablePtr);
355 ckfree(tablePtr);
415356 }
416357
417358 /*
736677 case TK_OPTION_STRING_TABLE: {
737678 int newValue;
738679
739 if (Tcl_GetIndexFromObj(interp, valuePtr,
740 optionPtr->specPtr->clientData,
680 if (Tcl_GetIndexFromObjStruct(interp, valuePtr,
681 optionPtr->specPtr->clientData, sizeof(char *),
741682 optionPtr->specPtr->optionName+1, 0, &newValue) != TCL_OK) {
742683 return TCL_ERROR;
743684 }
1003944 if (objPtr->bytes != NULL) {
1004945 return (objPtr->length == 0);
1005946 }
1006 Tcl_GetStringFromObj(objPtr, &length);
947 (void)Tcl_GetStringFromObj(objPtr, &length);
1007948 return (length == 0);
1008949 }
1009950
11511092 objPtr->internalRep.twoPtrValue.ptr1 = (void *) tablePtr;
11521093 objPtr->internalRep.twoPtrValue.ptr2 = (void *) bestPtr;
11531094 objPtr->typePtr = &optionObjType;
1154 tablePtr->refCount2++;
1095 tablePtr->refCount++;
11551096 return bestPtr;
11561097
11571098 error:
12031144 /*
12041145 *----------------------------------------------------------------------
12051146 *
1206 * SetOptionFromAny --
1207 *
1208 * This function is called to convert a Tcl object to option internal
1209 * form. However, this doesn't make sense (need to have a table of
1210 * options in order to do the conversion) so the function always
1211 * generates an error.
1212 *
1213 * Results:
1214 * The return value is always TCL_ERROR, and an error message is left in
1215 * interp's result if interp isn't NULL.
1216 *
1217 * Side effects:
1218 * None.
1219 *
1220 *----------------------------------------------------------------------
1221 */
1222
1223 static int
1224 SetOptionFromAny(
1225 Tcl_Interp *interp, /* Used for error reporting if not NULL. */
1226 register Tcl_Obj *objPtr) /* The object to convert. */
1227 {
1228 Tcl_SetObjResult(interp, Tcl_NewStringObj(
1229 "can't convert value to option except via GetOptionFromObj API",
1230 -1));
1231 Tcl_SetErrorCode(interp, "TK", "API_ABUSE", NULL);
1232 return TCL_ERROR;
1233 }
1234
1235 /*
1236 *----------------------------------------------------------------------
1237 *
12381147 * FreeOptionInternalRep --
12391148 *
12401149 * Part of the option Tcl object type implementation. Frees the storage
12561165 FreeOptionInternalRep(
12571166 register Tcl_Obj *objPtr) /* Object whose internal rep to free. */
12581167 {
1259 register OptionTable *tablePtr = (OptionTable *) objPtr->internalRep.twoPtrValue.ptr1;
1260
1261 tablePtr->refCount2--;
1262 if (tablePtr->refCount2 <= 0) {
1263 ckfree(tablePtr);
1264 }
1168 register Tk_OptionTable tablePtr = (Tk_OptionTable) objPtr->internalRep.twoPtrValue.ptr1;
1169
1170 Tk_DeleteOptionTable(tablePtr);
12651171 objPtr->typePtr = NULL;
12661172 objPtr->internalRep.twoPtrValue.ptr1 = NULL;
12671173 objPtr->internalRep.twoPtrValue.ptr2 = NULL;
1174 }
1175
1176 /*
1177 *---------------------------------------------------------------------------
1178 *
1179 * DupOptionInternalRep --
1180 *
1181 * When a cached option object is duplicated, this is called to update the
1182 * internal reps.
1183 *
1184 *---------------------------------------------------------------------------
1185 */
1186
1187 static void
1188 DupOptionInternalRep(
1189 Tcl_Obj *srcObjPtr, /* The object we are copying from. */
1190 Tcl_Obj *dupObjPtr) /* The object we are copying to. */
1191 {
1192 register OptionTable *tablePtr = (OptionTable *) srcObjPtr->internalRep.twoPtrValue.ptr1;
1193 tablePtr->refCount++;
1194 dupObjPtr->typePtr = srcObjPtr->typePtr;
1195 dupObjPtr->internalRep = srcObjPtr->internalRep;
12681196 }
12691197
12701198 /*
13461274 if (interp != NULL) {
13471275 Tcl_SetObjResult(interp, Tcl_ObjPrintf(
13481276 "value for \"%s\" missing",
1349 Tcl_GetStringFromObj(*objv, NULL)));
1277 Tcl_GetString(*objv)));
13501278 Tcl_SetErrorCode(interp, "TK", "VALUE_MISSING", NULL);
13511279 goto error;
13521280 }
13711299 : NULL) != TCL_OK) {
13721300 Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
13731301 "\n (processing \"%.40s\" option)",
1374 Tcl_GetStringFromObj(*objv, NULL)));
1302 Tcl_GetString(*objv)));
13751303 goto error;
13761304 }
13771305 if (savePtr != NULL) {
21452073 * interpreter anymore. */
21462074 {
21472075 OptionTable *tablePtr = (OptionTable *) table;
2148 Tcl_HashTable *hashTablePtr;
21492076 Tcl_HashEntry *hashEntryPtr;
21502077 Tcl_HashSearch search;
21512078 Tcl_Obj *objPtr;
2079 ThreadSpecificData *tsdPtr =
2080 Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
21522081
21532082 objPtr = Tcl_NewObj();
2154 hashTablePtr = Tcl_GetAssocData(interp, OPTION_HASH_KEY, NULL);
2155 if (hashTablePtr == NULL) {
2083 if (!tablePtr || !tsdPtr->initialized) {
21562084 return objPtr;
21572085 }
21582086
21612089 * want still is valid.
21622090 */
21632091
2164 for (hashEntryPtr = Tcl_FirstHashEntry(hashTablePtr, &search);
2092 for (hashEntryPtr = Tcl_FirstHashEntry(&tsdPtr->hashTable, &search);
21652093 hashEntryPtr != NULL;
21662094 hashEntryPtr = Tcl_NextHashEntry(&search)) {
21672095 if (tablePtr == (OptionTable *) Tcl_GetHashValue(hashEntryPtr)) {
219219 Tcl_Channel consoleChannel;
220220
221221 /*
222 * Ensure that we are getting a compatible version of Tcl. This is really
223 * only an issue when Tk is loaded dynamically.
222 * Ensure that we are getting a compatible version of Tcl.
224223 */
225224
226 if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) {
225 if (Tcl_InitStubs(interp, "8.6", 0) == NULL) {
227226 return;
228227 }
229228
438437 }
439438
440439 Tcl_Preserve(consoleInterp);
441 result = Tcl_GlobalEval(consoleInterp, "source $tk_library/console.tcl");
440 result = Tcl_EvalEx(consoleInterp, "source $tk_library/console.tcl",
441 -1, TCL_EVAL_GLOBAL);
442442 if (result == TCL_ERROR) {
443443 Tcl_SetReturnOptions(interp,
444444 Tcl_GetReturnOptions(consoleInterp, result));
530530
531531 Tcl_DStringFree(&ds);
532532 Tcl_IncrRefCount(cmd);
533 Tcl_GlobalEvalObj(consoleInterp, cmd);
533 Tcl_EvalObjEx(consoleInterp, cmd, TCL_EVAL_GLOBAL);
534534 Tcl_DecrRefCount(cmd);
535535 }
536536 }
696696 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg?");
697697 return TCL_ERROR;
698698 }
699 if (Tcl_GetIndexFromObj(interp, objv[1], options, "option", 0, &index)
700 != TCL_OK) {
699 if (Tcl_GetIndexFromObjStruct(interp, objv[1], options,
700 sizeof(char *), "option", 0, &index) != TCL_OK) {
701701 return TCL_ERROR;
702702 }
703703
740740 Tcl_IncrRefCount(cmd);
741741 if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) {
742742 Tcl_Preserve(consoleInterp);
743 result = Tcl_GlobalEvalObj(consoleInterp, cmd);
743 result = Tcl_EvalObjEx(consoleInterp, cmd, TCL_EVAL_GLOBAL);
744744 Tcl_SetReturnOptions(interp,
745745 Tcl_GetReturnOptions(consoleInterp, result));
746746 Tcl_SetObjResult(interp, Tcl_GetObjResult(consoleInterp));
786786 Tcl_WrongNumArgs(interp, 1, objv, "option arg");
787787 return TCL_ERROR;
788788 }
789 if (Tcl_GetIndexFromObj(interp, objv[1], options, "option", 0, &index)
790 != TCL_OK) {
789 if (Tcl_GetIndexFromObjStruct(interp, objv[1], options,
790 sizeof(char *), "option", 0, &index) != TCL_OK) {
791791 return TCL_ERROR;
792792 }
793793
806806 Tcl_Preserve(otherInterp);
807807 switch ((enum option) index) {
808808 case OTHER_EVAL:
809 result = Tcl_GlobalEvalObj(otherInterp, objv[2]);
809 result = Tcl_EvalObjEx(otherInterp, objv[2], TCL_EVAL_GLOBAL);
810810
811811 /*
812812 * TODO: Should exceptions be filtered here?
945945 Tcl_Interp *consoleInterp = info->consoleInterp;
946946
947947 if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) {
948 Tcl_GlobalEval(consoleInterp, "tk::ConsoleExit");
948 Tcl_EvalEx(consoleInterp, "tk::ConsoleExit", -1, TCL_EVAL_GLOBAL);
949949 }
950950
951951 if (--info->refCount <= 0) {
859859 /* 273 */
860860 EXTERN void Tk_CreateOldPhotoImageFormat(
861861 const Tk_PhotoImageFormat *formatPtr);
862 /* 274 */
863 EXTERN void reserved274(void);
864 /* 275 */
865 EXTERN void reserved275(void);
866862
867863 typedef struct {
868864 const struct TkPlatStubs *tkPlatStubs;
11491145 Tcl_Interp * (*tk_Interp) (Tk_Window tkwin); /* 271 */
11501146 void (*tk_CreateOldImageType) (const Tk_ImageType *typePtr); /* 272 */
11511147 void (*tk_CreateOldPhotoImageFormat) (const Tk_PhotoImageFormat *formatPtr); /* 273 */
1152 void (*reserved274) (void); /* 274 */
1153 void (*reserved275) (void); /* 275 */
11541148 } TkStubs;
11551149
11561150 #ifdef __cplusplus
17131707 (tkStubsPtr->tk_CreateOldImageType) /* 272 */
17141708 #define Tk_CreateOldPhotoImageFormat \
17151709 (tkStubsPtr->tk_CreateOldPhotoImageFormat) /* 273 */
1716 #define reserved274 \
1717 (tkStubsPtr->reserved274) /* 274 */
1718 #define reserved275 \
1719 (tkStubsPtr->reserved275) /* 275 */
17201710
17211711 #endif /* defined(USE_TK_STUBS) */
17221712
391391 static int ConfigureEntry(Tcl_Interp *interp, Entry *entryPtr,
392392 int objc, Tcl_Obj *const objv[], int flags);
393393 static void DeleteChars(Entry *entryPtr, int index, int count);
394 static void DestroyEntry(char *memPtr);
394 static void DestroyEntry(void *memPtr);
395395 static void DisplayEntry(ClientData clientData);
396396 static void EntryBlinkProc(ClientData clientData);
397397 static void EntryCmdDeletedProc(ClientData clientData);
10091009
10101010 static void
10111011 DestroyEntry(
1012 char *memPtr) /* Info about entry widget. */
1012 void *memPtr) /* Info about entry widget. */
10131013 {
1014 Entry *entryPtr = (Entry *) memPtr;
1014 Entry *entryPtr = memPtr;
10151015
10161016 /*
10171017 * Free up all the stuff that requires special handling, then let
10181018 * Tk_FreeOptions handle all the standard option-related stuff.
10191019 */
10201020
1021 ckfree(entryPtr->string);
1021 ckfree((char *)entryPtr->string);
10221022 if (entryPtr->textVarName != NULL) {
1023 Tcl_UntraceVar(entryPtr->interp, entryPtr->textVarName,
1024 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1023 Tcl_UntraceVar2(entryPtr->interp, entryPtr->textVarName,
1024 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
10251025 EntryTextVarProc, entryPtr);
10261026 entryPtr->flags &= ~ENTRY_VAR_TRACED;
10271027 }
10331033 }
10341034 Tcl_DeleteTimerHandler(entryPtr->insertBlinkHandler);
10351035 if (entryPtr->displayString != entryPtr->string) {
1036 ckfree(entryPtr->displayString);
1036 ckfree((char *)entryPtr->displayString);
10371037 }
10381038 if (entryPtr->type == TK_SPINBOX) {
10391039 Spinbox *sbPtr = (Spinbox *) entryPtr;
11041104
11051105 if ((entryPtr->textVarName != NULL)
11061106 && (entryPtr->flags & ENTRY_VAR_TRACED)) {
1107 Tcl_UntraceVar(interp, entryPtr->textVarName,
1107 Tcl_UntraceVar2(interp, entryPtr->textVarName, NULL,
11081108 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
11091109 EntryTextVarProc, entryPtr);
11101110 entryPtr->flags &= ~ENTRY_VAR_TRACED;
13021302 if (entryPtr->textVarName != NULL) {
13031303 const char *value;
13041304
1305 value = Tcl_GetVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY);
1305 value = Tcl_GetVar2(interp, entryPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
13061306 if (value == NULL) {
13071307 EntryValueChanged(entryPtr, NULL);
13081308 } else {
13561356
13571357 if ((entryPtr->textVarName != NULL)
13581358 && !(entryPtr->flags & ENTRY_VAR_TRACED)) {
1359 Tcl_TraceVar(interp, entryPtr->textVarName,
1360 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1359 Tcl_TraceVar2(interp, entryPtr->textVarName,
1360 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
13611361 EntryTextVarProc, entryPtr);
13621362 entryPtr->flags |= ENTRY_VAR_TRACED;
13631363 }
18801880 char *p;
18811881
18821882 if (entryPtr->displayString != entryPtr->string) {
1883 ckfree(entryPtr->displayString);
1883 ckfree((char *)entryPtr->displayString);
18841884 entryPtr->displayString = entryPtr->string;
18851885 entryPtr->numDisplayBytes = entryPtr->numBytes;
18861886 }
20362036 return;
20372037 }
20382038
2039 ckfree(string);
2039 ckfree((char *)string);
20402040 entryPtr->string = newStr;
20412041
20422042 /*
21412141 }
21422142
21432143 ckfree(toDelete);
2144 ckfree(entryPtr->string);
2144 ckfree((char *)entryPtr->string);
21452145 entryPtr->string = newStr;
21462146 entryPtr->numChars -= count;
21472147 entryPtr->numBytes -= byteCount;
22302230 if (entryPtr->textVarName == NULL) {
22312231 newValue = NULL;
22322232 } else {
2233 newValue = Tcl_SetVar(entryPtr->interp, entryPtr->textVarName,
2234 entryPtr->string, TCL_GLOBAL_ONLY);
2233 newValue = Tcl_SetVar2(entryPtr->interp, entryPtr->textVarName,
2234 NULL, entryPtr->string, TCL_GLOBAL_ONLY);
22352235 }
22362236
22372237 if ((newValue != NULL) && (strcmp(newValue, entryPtr->string) != 0)) {
23172317
23182318 if (entryPtr->flags & VALIDATE_ABORT) {
23192319 entryPtr->flags &= ~VALIDATE_ABORT;
2320 ckfree(value);
2320 ckfree((char *)value);
23212321 return;
23222322 }
23232323 }
23242324
23252325 oldSource = entryPtr->string;
2326 ckfree(entryPtr->string);
2326 ckfree((char *)entryPtr->string);
23272327
23282328 if (malloced) {
23292329 entryPtr->string = value;
24282428 if (entryPtr->flags & REDRAW_PENDING) {
24292429 Tcl_CancelIdleCall(DisplayEntry, clientData);
24302430 }
2431 Tcl_EventuallyFree(clientData, DestroyEntry);
2431 Tcl_EventuallyFree(clientData, (Tcl_FreeProc *) DestroyEntry);
24322432 }
24332433 break;
24342434 case ConfigureNotify:
25592559 case '@': {
25602560 int x, roundUp, maxWidth;
25612561
2562 if (Tcl_GetInt(interp, string + 1, &x) != TCL_OK) {
2562 if (Tcl_GetInt(NULL, string + 1, &x) != TCL_OK) {
25632563 goto badIndex;
25642564 }
25652565 if (x < entryPtr->inset) {
25882588 break;
25892589 }
25902590 default:
2591 if (Tcl_GetInt(interp, string, indexPtr) != TCL_OK) {
2591 if (Tcl_GetInt(NULL, string, indexPtr) != TCL_OK) {
25922592 goto badIndex;
25932593 }
25942594 if (*indexPtr < 0){
29382938 int code;
29392939 double first, last;
29402940 Tcl_Interp *interp;
2941 Tcl_DString buf;
29412942
29422943 if (entryPtr->scrollCmd == NULL) {
29432944 return;
29482949 EntryVisibleRange(entryPtr, &first, &last);
29492950 Tcl_PrintDouble(NULL, first, firstStr);
29502951 Tcl_PrintDouble(NULL, last, lastStr);
2951 code = Tcl_VarEval(interp, entryPtr->scrollCmd, " ", firstStr, " ",
2952 lastStr, NULL);
2952 Tcl_DStringInit(&buf);
2953 Tcl_DStringAppend(&buf, entryPtr->scrollCmd, -1);
2954 Tcl_DStringAppend(&buf, " ", -1);
2955 Tcl_DStringAppend(&buf, firstStr, -1);
2956 Tcl_DStringAppend(&buf, " ", -1);
2957 Tcl_DStringAppend(&buf, lastStr, -1);
2958 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
2959 Tcl_DStringFree(&buf);
29532960 if (code != TCL_OK) {
29542961 Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
29552962 "\n (horizontal scrolling command executed by %s)",
30943101
30953102 if (flags & TCL_TRACE_UNSETS) {
30963103 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
3097 Tcl_SetVar(interp, entryPtr->textVarName, entryPtr->string,
3098 TCL_GLOBAL_ONLY);
3099 Tcl_TraceVar(interp, entryPtr->textVarName,
3104 Tcl_SetVar2(interp, entryPtr->textVarName, NULL,
3105 entryPtr->string, TCL_GLOBAL_ONLY);
3106 Tcl_TraceVar2(interp, entryPtr->textVarName, NULL,
31003107 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
31013108 EntryTextVarProc, clientData);
31023109 entryPtr->flags |= ENTRY_VAR_TRACED;
31103117 * value because we changed it because someone typed in the entry).
31113118 */
31123119
3113 value = Tcl_GetVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY);
3120 value = Tcl_GetVar2(interp, entryPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
31143121 if (value == NULL) {
31153122 value = "";
31163123 }
31703177 &bool) != TCL_OK) {
31713178 Tcl_AddErrorInfo(interp,
31723179 "\n (invalid boolean result from validation command)");
3173 Tcl_BackgroundError(interp);
3180 Tcl_BackgroundException(interp, TCL_ERROR);
31743181 Tcl_ResetResult(interp);
31753182 return TCL_ERROR;
31763183 }
161161 * We have a subcommand to parse and act upon.
162162 */
163163
164 if (Tcl_GetIndexFromObj(interp, objv[1], focusOptions, "option", 0,
165 &index) != TCL_OK) {
164 if (Tcl_GetIndexFromObjStruct(interp, objv[1], focusOptions,
165 sizeof(char *), "option", 0, &index) != TCL_OK) {
166166 return TCL_ERROR;
167167 }
168168 if (objc != 3) {
307307 static int CreateFrame(ClientData clientData, Tcl_Interp *interp,
308308 int objc, Tcl_Obj *const argv[],
309309 enum FrameType type, const char *appName);
310 static void DestroyFrame(char *memPtr);
310 static void DestroyFrame(void *memPtr);
311311 static void DestroyFramePartly(Frame *framePtr);
312312 static void DisplayFrame(ClientData clientData);
313313 static void FrameCmdDeletedProc(ClientData clientData);
726726 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
727727 return TCL_ERROR;
728728 }
729 if (Tcl_GetIndexFromObj(interp, objv[1], frameOptions, "option", 0,
730 &index) != TCL_OK) {
729 if (Tcl_GetIndexFromObjStruct(interp, objv[1], frameOptions,
730 sizeof(char *), "option", 0, &index) != TCL_OK) {
731731 return TCL_ERROR;
732732 }
733733 Tcl_Preserve(framePtr);
833833
834834 static void
835835 DestroyFrame(
836 char *memPtr) /* Info about frame widget. */
836 void *memPtr) /* Info about frame widget. */
837837 {
838 register Frame *framePtr = (Frame *) memPtr;
839 register Labelframe *labelframePtr = (Labelframe *) memPtr;
838 register Frame *framePtr = memPtr;
839 register Labelframe *labelframePtr = memPtr;
840840
841841 if (framePtr->type == TYPE_LABELFRAME) {
842842 Tk_FreeTextLayout(labelframePtr->textLayout);
16551655 Tcl_CancelIdleCall(DisplayFrame, framePtr);
16561656 }
16571657 Tcl_CancelIdleCall(MapFrame, framePtr);
1658 Tcl_EventuallyFree(framePtr, DestroyFrame);
1658 Tcl_EventuallyFree(framePtr, (Tcl_FreeProc *) DestroyFrame);
16591659 } else if (eventPtr->type == FocusIn) {
16601660 if (eventPtr->xfocus.detail != NotifyInferior) {
16611661 framePtr->flags |= GOT_FOCUS;
241241 * Tk will set its requested size to fit the
242242 * needs of its slaves.
243243 * ALLOCED_MASTER 1 means that Grid has allocated itself as
244 * geometry master for this window.
244 * geometry master for this window.
245245 */
246246
247247 #define REQUESTED_RELAYOUT 1
261261 int slotType, int checkOnly);
262262 static int ConfigureSlaves(Tcl_Interp *interp, Tk_Window tkwin,
263263 int objc, Tcl_Obj *const objv[]);
264 static void DestroyGrid(char *memPtr);
264 static void DestroyGrid(void *memPtr);
265265 static Gridder * GetGrid(Tk_Window tkwin);
266266 static int GridAnchorCommand(Tk_Window tkwin, Tcl_Interp *interp,
267267 int objc, Tcl_Obj *const objv[]);
360360 return TCL_ERROR;
361361 }
362362
363 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
364 &index) != TCL_OK) {
363 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
364 sizeof(char *), "option", 0, &index) != TCL_OK) {
365365 return TCL_ERROR;
366366 }
367367
909909
910910 if (masterPtr->slavePtr != NULL) {
911911 if (TkSetGeometryMaster(interp, master, "grid") != TCL_OK) {
912 return TCL_ERROR;
912 return TCL_ERROR;
913913 }
914914 masterPtr->flags |= ALLOCED_MASTER;
915915 }
10751075 * returned.
10761076 */
10771077
1078 if (Tcl_GetIndexFromObj(interp, objv[4], optionStrings, "option", 0,
1079 &index) != TCL_OK) {
1078 if (Tcl_GetIndexFromObjStruct(interp, objv[4], optionStrings,
1079 sizeof(char *), "option", 0, &index) != TCL_OK) {
10801080 Tcl_DecrRefCount(listCopy);
10811081 return TCL_ERROR;
10821082 }
11741174 */
11751175
11761176 for (i = 4; i < objc; i += 2) {
1177 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings,
1178 "option", 0, &index) != TCL_OK) {
1177 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
1178 sizeof(char *), "option", 0, &index) != TCL_OK) {
11791179 Tcl_DecrRefCount(listCopy);
11801180 return TCL_ERROR;
11811181 }
13631363 }
13641364
13651365 for (i = 3; i < objc; i += 2) {
1366 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option", 0,
1367 &index) != TCL_OK) {
1366 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
1367 sizeof(char *), "option", 0, &index) != TCL_OK) {
13681368 return TCL_ERROR;
13691369 }
13701370 if (Tcl_GetIntFromObj(interp, objv[i+1], &value) != TCL_OK) {
28062806
28072807 static void
28082808 DestroyGrid(
2809 char *memPtr) /* Info about window that is now dead. */
2809 void *memPtr) /* Info about window that is now dead. */
28102810 {
2811 register Gridder *gridPtr = (Gridder *) memPtr;
2811 register Gridder *gridPtr = memPtr;
28122812
28132813 if (gridPtr->masterDataPtr != NULL) {
28142814 if (gridPtr->masterDataPtr->rowPtr != NULL) {
28852885 Tcl_CancelIdleCall(ArrangeGrid, gridPtr);
28862886 }
28872887 gridPtr->tkwin = NULL;
2888 Tcl_EventuallyFree(gridPtr, DestroyGrid);
2888 Tcl_EventuallyFree(gridPtr, (Tcl_FreeProc *)DestroyGrid);
28892889 } else if (eventPtr->type == MapNotify) {
28902890 if ((gridPtr->slavePtr != NULL)
28912891 && !(gridPtr->flags & REQUESTED_RELAYOUT)) {
30573057 */
30583058
30593059 for (i = numWindows; i < objc; i += 2) {
3060 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option", 0,
3061 &index) != TCL_OK) {
3060 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
3061 sizeof(char *), "option", 0, &index) != TCL_OK) {
30623062 return TCL_ERROR;
30633063 }
30643064 if (index == CONF_IN) {
31603160 */
31613161
31623162 for (i = numWindows; i < objc; i += 2) {
3163 Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option", 0,
3164 &index);
3163 Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
3164 sizeof(char *), "option", 0, &index);
31653165 switch ((enum options) index) {
31663166 case CONF_COLUMN:
31673167 if (Tcl_GetIntFromObj(NULL, objv[i+1], &tmp) != TCL_OK
233233 return TCL_ERROR;
234234 }
235235
236 if (Tcl_GetIndexFromObj(interp, objv[1], imageOptions, "option", 0,
237 &index) != TCL_OK) {
236 if (Tcl_GetIndexFromObjStruct(interp, objv[1], imageOptions,
237 sizeof(char *), "option", 0, &index) != TCL_OK) {
238238 return TCL_ERROR;
239239 }
240240 switch ((enum options) index) {
329329 * None.
330330 *
331331 * Side effects:
332 * Generates errors via Tcl_BackgroundError if there are problems in
332 * Generates errors via Tcl_BackgroundException if there are problems in
333333 * setting up the instance.
334334 *
335335 *----------------------------------------------------------------------
447447 Tcl_AppendObjToErrorInfo(masterPtr->interp, Tcl_ObjPrintf(
448448 "\n (while configuring image \"%s\")", Tk_NameOfImage(
449449 masterPtr->tkMaster)));
450 Tcl_BackgroundError(masterPtr->interp);
450 Tcl_BackgroundException(masterPtr->interp, TCL_ERROR);
451451 }
452452
453453 /*
763763 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
764764 return TCL_ERROR;
765765 }
766 if (Tcl_GetIndexFromObj(interp, objv[1], bmapOptions, "option", 0,
767 &index) != TCL_OK) {
766 if (Tcl_GetIndexFromObjStruct(interp, objv[1], bmapOptions,
767 sizeof(char *), "option", 0, &index) != TCL_OK) {
768768 return TCL_ERROR;
769769 }
770770 switch (index) {
424424 return TCL_ERROR;
425425 }
426426 for (i = 1; i < argc; i++) {
427 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option name",
428 0, &nBytes) != TCL_OK) {
427 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
428 sizeof(char *), "option name", 0, &nBytes) != TCL_OK) {
429429 return TCL_ERROR;
430430 }
431431 if (i == (argc-1)) {
333333
334334 if (Tcl_ZlibStreamInit(NULL, dir, TCL_ZLIB_FORMAT_ZLIB,
335335 TCL_ZLIB_COMPRESS_DEFAULT, NULL, &pngPtr->stream) != TCL_OK) {
336 Tcl_SetObjResult(interp, Tcl_NewStringObj(
337 "zlib initialization failed", -1));
338 Tcl_SetErrorCode(interp, "TK", "IMAGE", "PNG", "ZLIB_INIT", NULL);
336 if (interp) {
337 Tcl_SetObjResult(interp, Tcl_NewStringObj(
338 "zlib initialization failed", -1));
339 Tcl_SetErrorCode(interp, "TK", "IMAGE", "PNG", "ZLIB_INIT", NULL);
340 }
339341 if (objPtr) {
340342 Tcl_DecrRefCount(objPtr);
341343 }
798800 /*
799801 * 4.3. Summary of standard chunks
800802 *
801 * This table summarizes some properties of the standard chunk types.
803 * This table summarizes some properties of the standard chunk types.
802804 *
803805 * Critical chunks (must appear in this order, except PLTE is optional):
804806 *
22982300 for (; objc>0 ; objc--, objv++) {
22992301 int optIndex;
23002302
2301 if (Tcl_GetIndexFromObj(interp, objv[0], fmtOptions, "option", 0,
2302 &optIndex) == TCL_ERROR) {
2303 if (Tcl_GetIndexFromObjStruct(interp, objv[0], fmtOptions,
2304 sizeof(char *), "option", 0, &optIndex) == TCL_ERROR) {
23032305 return TCL_ERROR;
23042306 }
23052307
26662668 {
26672669 PNGImage png;
26682670 int match = 0;
2669 Tcl_SavedResult sya;
2670
2671 Tcl_SaveResult(interp, &sya);
2672
2673 InitPNGImage(interp, &png, chan, NULL, TCL_ZLIB_STREAM_INFLATE);
2671
2672 InitPNGImage(NULL, &png, chan, NULL, TCL_ZLIB_STREAM_INFLATE);
26742673
26752674 if (ReadIHDR(interp, &png) == TCL_OK) {
26762675 *widthPtr = png.block.width;
26792678 }
26802679
26812680 CleanupPNGImage(&png);
2682 Tcl_RestoreResult(interp, &sya);
26832681
26842682 return match;
26852683 }
27582756 {
27592757 PNGImage png;
27602758 int match = 0;
2761 Tcl_SavedResult sya;
2762
2763 Tcl_SaveResult(interp, &sya);
2764 InitPNGImage(interp, &png, NULL, pObjData, TCL_ZLIB_STREAM_INFLATE);
2759
2760 InitPNGImage(NULL, &png, NULL, pObjData, TCL_ZLIB_STREAM_INFLATE);
27652761
27662762 png.strDataBuf = Tcl_GetByteArrayFromObj(pObjData, &png.strDataLen);
27672763
27722768 }
27732769
27742770 CleanupPNGImage(&png);
2775 Tcl_RestoreResult(interp, &sya);
27762771 return match;
27772772 }
27782773
31623157
31633158 *destPtr++ = srcPtr[blockPtr->offset[0]];
31643159
3165 /*
3160 /*
31663161 * If not grayscale, copy the green and blue channels.
31673162 */
31683163
6363 * None.
6464 *
6565 * Side effects:
66 * Generates errors via Tcl_BackgroundError if there are problems in
66 * Generates errors via Tcl_BackgroundException if there are problems in
6767 * setting up the instance.
6868 *
6969 *----------------------------------------------------------------------
229229 while (tsdPtr->formatList != NULL) {
230230 freePtr = tsdPtr->formatList;
231231 tsdPtr->formatList = tsdPtr->formatList->nextPtr;
232 ckfree(freePtr->name);
232 ckfree((char *)freePtr->name);
233233 ckfree(freePtr);
234234 }
235235 }
525525 #define TK_DISPLAY_USE_IM (1 << 1)
526526 #define TK_DISPLAY_WM_TRACING (1 << 3)
527527 #define TK_DISPLAY_IN_WARP (1 << 4)
528 #define TK_DISPLAY_USE_XKB (1 << 5)
528529
529530 /*
530531 * One of the following structures exists for each error handler created by a
391391 Tcl_Obj *const objv[], int index);
392392 static int ListboxDeleteSubCmd(Listbox *listPtr,
393393 int first, int last);
394 static void DestroyListbox(char *memPtr);
394 static void DestroyListbox(void *memPtr);
395395 static void DestroyListboxOptionTables(ClientData clientData,
396396 Tcl_Interp *interp);
397397 static void DisplayListbox(ClientData clientData);
14271427
14281428 static void
14291429 DestroyListbox(
1430 char *memPtr) /* Info about listbox widget. */
1430 void *memPtr) /* Info about listbox widget. */
14311431 {
1432 register Listbox *listPtr = (Listbox *) memPtr;
1432 register Listbox *listPtr = memPtr;
14331433 Tcl_HashEntry *entry;
14341434 Tcl_HashSearch search;
14351435
14431443 }
14441444
14451445 if (listPtr->listVarName != NULL) {
1446 Tcl_UntraceVar(listPtr->interp, listPtr->listVarName,
1446 Tcl_UntraceVar2(listPtr->interp, listPtr->listVarName, NULL,
14471447 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
14481448 ListboxListVarProc, listPtr);
14491449 }
15511551
15521552 oldExport = listPtr->exportSelection;
15531553 if (listPtr->listVarName != NULL) {
1554 Tcl_UntraceVar(interp, listPtr->listVarName,
1554 Tcl_UntraceVar2(interp, listPtr->listVarName, NULL,
15551555 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
15561556 ListboxListVarProc, listPtr);
15571557 }
16281628 if (Tcl_SetVar2Ex(interp, listPtr->listVarName, NULL,
16291629 listVarObj, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG)
16301630 == NULL) {
1631 if (oldListObj == NULL) {
1632 Tcl_DecrRefCount(listVarObj);
1633 }
16341631 continue;
16351632 }
16361633 }
16471644 }
16481645
16491646 listPtr->listObj = listVarObj;
1650 Tcl_TraceVar(listPtr->interp, listPtr->listVarName,
1651 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1647 Tcl_TraceVar2(listPtr->interp, listPtr->listVarName,
1648 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
16521649 ListboxListVarProc, listPtr);
16531650 } else if (listPtr->listObj == NULL) {
16541651 listPtr->listObj = Tcl_NewObj();
26002597 if (listPtr->flags & REDRAW_PENDING) {
26012598 Tcl_CancelIdleCall(DisplayListbox, clientData);
26022599 }
2603 Tcl_EventuallyFree(clientData, DestroyListbox);
2600 Tcl_EventuallyFree(clientData, (Tcl_FreeProc *) DestroyListbox);
26042601 }
26052602 } else if (eventPtr->type == ConfigureNotify) {
26062603 int vertSpace;
32433240 double first, last;
32443241 int result;
32453242 Tcl_Interp *interp;
3243 Tcl_DString buf;
32463244
32473245 if (listPtr->yScrollCmd == NULL) {
32483246 return;
32683266
32693267 interp = listPtr->interp;
32703268 Tcl_Preserve(interp);
3271 result = Tcl_VarEval(interp, listPtr->yScrollCmd, " ", firstStr, " ",
3272 lastStr, NULL);
3269 Tcl_DStringInit(&buf);
3270 Tcl_DStringAppend(&buf, listPtr->yScrollCmd, -1);
3271 Tcl_DStringAppend(&buf, " ", -1);
3272 Tcl_DStringAppend(&buf, firstStr, -1);
3273 Tcl_DStringAppend(&buf, " ", -1);
3274 Tcl_DStringAppend(&buf, lastStr, -1);
3275 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
3276 Tcl_DStringFree(&buf);
32733277 if (result != TCL_OK) {
32743278 Tcl_AddErrorInfo(interp,
32753279 "\n (vertical scrolling command executed by listbox)");
33063310 int result, windowWidth;
33073311 double first, last;
33083312 Tcl_Interp *interp;
3313 Tcl_DString buf;
33093314
33103315 if (listPtr->xScrollCmd == NULL) {
33113316 return;
33333338
33343339 interp = listPtr->interp;
33353340 Tcl_Preserve(interp);
3336 result = Tcl_VarEval(interp, listPtr->xScrollCmd, " ", firstStr, " ",
3337 lastStr, NULL);
3341 Tcl_DStringInit(&buf);
3342 Tcl_DStringAppend(&buf, listPtr->xScrollCmd, -1);
3343 Tcl_DStringAppend(&buf, " ", -1);
3344 Tcl_DStringAppend(&buf, firstStr, -1);
3345 Tcl_DStringAppend(&buf, " ", -1);
3346 Tcl_DStringAppend(&buf, lastStr, -1);
3347 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
3348 Tcl_DStringFree(&buf);
33383349 if (result != TCL_OK) {
33393350 Tcl_AddErrorInfo(interp,
33403351 "\n (horizontal scrolling command executed by listbox)");
33803391 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
33813392 Tcl_SetVar2Ex(interp, listPtr->listVarName, NULL,
33823393 listPtr->listObj, TCL_GLOBAL_ONLY);
3383 Tcl_TraceVar(interp, listPtr->listVarName,
3384 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
3394 Tcl_TraceVar2(interp, listPtr->listVarName,
3395 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
33853396 ListboxListVarProc, clientData);
33863397 return NULL;
33873398 }
183183 InteractiveState is;
184184
185185 /*
186 * Ensure that we are getting a compatible version of Tcl. This is really
187 * only an issue when Tk is loaded dynamically.
188 */
189
190 if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) {
191 abort();
192 }
193
194 #if defined(__WIN32__) && !defined(__WIN64__) && !defined(UNICODE) && !defined(STATIC_BUILD)
186 * Ensure that we are getting a compatible version of Tcl.
187 */
188
189 if (Tcl_InitStubs(interp, "8.6", 0) == NULL) {
190 if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
191 abort();
192 } else {
193 Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp)));
194 }
195 }
196
197 #if defined(__WIN32__) && !defined(UNICODE) && !defined(STATIC_BUILD)
195198
196199 if (tclStubsPtr->reserved9) {
197200 /* We are running win32 Tk under Cygwin, so let's check
314317 */
315318
316319 if (appInitProc(interp) != TCL_OK) {
317 TkpDisplayWarning(Tcl_GetStringResult(interp),
320 TkpDisplayWarning(Tcl_GetString(Tcl_GetObjResult(interp)),
318321 "application-specific initialization failed");
319322 }
320323
334337 */
335338
336339 Tcl_AddErrorInfo(interp, "");
337 TkpDisplayWarning(Tcl_GetVar(interp, "errorInfo",
340 TkpDisplayWarning(Tcl_GetVar2(interp, "errorInfo", NULL,
338341 TCL_GLOBAL_ONLY), "Error in startup script");
339342 Tcl_DeleteInterp(interp);
340343 Tcl_Exit(1);
447450 Tcl_CreateChannelHandler(isPtr->input, TCL_READABLE, StdinProc, isPtr);
448451 }
449452 Tcl_DStringFree(&isPtr->command);
450 if (Tcl_GetStringResult(interp)[0] != '\0') {
453 if (Tcl_GetString(Tcl_GetObjResult(interp))[0] != '\0') {
451454 if ((code != TCL_OK) || (isPtr->tty)) {
452455 chan = Tcl_GetStdChannel((code != TCL_OK) ? TCL_STDERR : TCL_STDOUT);
453456 if (chan) {
510513 if (code != TCL_OK) {
511514 Tcl_AddErrorInfo(interp,
512515 "\n (script that generates prompt)");
513 if (Tcl_GetStringResult(interp)[0] != '\0') {
516 if (Tcl_GetString(Tcl_GetObjResult(interp))[0] != '\0') {
514517 chan = Tcl_GetStdChannel(TCL_STDERR);
515518 if (chan != NULL) {
516519 Tcl_WriteObj(chan, Tcl_GetObjResult(interp));
337337 static void DestroyMenuHashTable(ClientData clientData,
338338 Tcl_Interp *interp);
339339 static void DestroyMenuInstance(TkMenu *menuPtr);
340 static void DestroyMenuEntry(char *memPtr);
340 static void DestroyMenuEntry(void *memPtr);
341341 static int GetIndexFromCoords(Tcl_Interp *interp,
342342 TkMenu *menuPtr, const char *string,
343343 int *indexPtr);
475475
476476 toplevel = 1;
477477 for (i = 2; i < (objc - 1); i++) {
478 if (Tcl_GetIndexFromObj(NULL, objv[i], typeStringList, NULL, 0,
479 &index) != TCL_ERROR) {
480 if ((Tcl_GetIndexFromObj(NULL, objv[i + 1], menuTypeStrings, NULL,
481 0, &index) == TCL_OK) && (index == MENUBAR)) {
478 if (Tcl_GetIndexFromObjStruct(NULL, objv[i], typeStringList,
479 sizeof(char *), NULL, 0, &index) != TCL_ERROR) {
480 if ((Tcl_GetIndexFromObjStruct(NULL, objv[i + 1], menuTypeStrings,
481 sizeof(char *), NULL, 0, &index) == TCL_OK) && (index == MENUBAR)) {
482482 toplevel = 0;
483483 }
484484 break;
679679 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
680680 return TCL_ERROR;
681681 }
682 if (Tcl_GetIndexFromObj(interp, objv[1], menuOptions, "option", 0,
683 &option) != TCL_OK) {
682 if (Tcl_GetIndexFromObjStruct(interp, objv[1], menuOptions,
683 sizeof(char *), "option", 0, &option) != TCL_OK) {
684684 return TCL_ERROR;
685685 }
686686 Tcl_Preserve(menuPtr);
10601060 Tcl_DStringInit(&ds);
10611061 Tcl_DStringAppend(&ds, "tk::TearOffMenu ", -1);
10621062 Tcl_DStringAppend(&ds, Tk_PathName(menuPtr->tkwin), -1);
1063 result = Tcl_Eval(interp, Tcl_DStringValue(&ds));
1063 result = Tcl_EvalEx(interp, Tcl_DStringValue(&ds), -1, 0);
10641064 Tcl_DStringFree(&ds);
10651065 } else if ((mePtr->type == CHECK_BUTTON_ENTRY)
10661066 && (mePtr->namePtr != NULL)) {
12241224 * for menu entries (i+1)...numEntries.
12251225 */
12261226
1227 DestroyMenuEntry((char *) menuPtr->entries[i]);
1227 DestroyMenuEntry(menuPtr->entries[i]);
12281228 menuPtr->numEntries = i;
12291229 }
12301230 if (menuPtr->entries != NULL) {
14221422
14231423 static void
14241424 DestroyMenuEntry(
1425 char *memPtr) /* Pointer to entry to be freed. */
1425 void *memPtr) /* Pointer to entry to be freed. */
14261426 {
1427 register TkMenuEntry *mePtr = (TkMenuEntry *) memPtr;
1427 register TkMenuEntry *mePtr = memPtr;
14281428 TkMenu *menuPtr = mePtr->menuPtr;
14291429
14301430 if (menuPtr->postedCascade == mePtr) {
14911491 && (mePtr->namePtr != NULL)) {
14921492 const char *varName = Tcl_GetString(mePtr->namePtr);
14931493
1494 Tcl_UntraceVar(menuPtr->interp, varName,
1494 Tcl_UntraceVar2(menuPtr->interp, varName, NULL,
14951495 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
14961496 MenuVarProc, mePtr);
14971497 }
15961596 */
15971597
15981598 if (menuListPtr->menuType == UNKNOWN_TYPE) {
1599 Tcl_GetIndexFromObj(NULL, menuListPtr->menuTypePtr,
1600 menuTypeStrings, NULL, 0, &menuListPtr->menuType);
1599 Tcl_GetIndexFromObjStruct(NULL, menuListPtr->menuTypePtr,
1600 menuTypeStrings, sizeof(char *), NULL, 0, &menuListPtr->menuType);
16011601
16021602 /*
16031603 * Configure the new window to be either a pop-up menu or a
16611661 && (menuListPtr->entries[0]->type == TEAROFF_ENTRY)) {
16621662 int i;
16631663
1664 Tcl_EventuallyFree(menuListPtr->entries[0], DestroyMenuEntry);
1664 Tcl_EventuallyFree(menuListPtr->entries[0], (Tcl_FreeProc *) DestroyMenuEntry);
16651665
16661666 for (i = 0; i < menuListPtr->numEntries - 1; i++) {
16671667 menuListPtr->entries[i] = menuListPtr->entries[i + 1];
17411741 if (mePtr->labelPtr == NULL) {
17421742 mePtr->labelLength = 0;
17431743 } else {
1744 Tcl_GetStringFromObj(mePtr->labelPtr, &mePtr->labelLength);
1744 (void)Tcl_GetStringFromObj(mePtr->labelPtr, &mePtr->labelLength);
17451745 }
17461746 if (mePtr->accelPtr == NULL) {
17471747 mePtr->accelLength = 0;
17481748 } else {
1749 Tcl_GetStringFromObj(mePtr->accelPtr, &mePtr->accelLength);
1749 (void)Tcl_GetStringFromObj(mePtr->accelPtr, &mePtr->accelLength);
17501750 }
17511751
17521752 /*
19051905 }
19061906 if (mePtr->namePtr != NULL) {
19071907 name = Tcl_GetString(mePtr->namePtr);
1908 Tcl_TraceVar(menuPtr->interp, name,
1909 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1908 Tcl_TraceVar2(menuPtr->interp, name,
1909 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
19101910 MenuVarProc, mePtr);
19111911 }
19121912 }
19581958 || (mePtr->type == RADIO_BUTTON_ENTRY))) {
19591959 const char *name = Tcl_GetString(mePtr->namePtr);
19601960
1961 Tcl_UntraceVar(menuPtr->interp, name,
1961 Tcl_UntraceVar2(menuPtr->interp, name, NULL,
19621962 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
19631963 MenuVarProc, mePtr);
19641964 }
24052405 * Figure out the type of the new entry.
24062406 */
24072407
2408 if (Tcl_GetIndexFromObj(interp, objv[0], menuEntryTypeStrings,
2409 "menu entry type", 0, &type) != TCL_OK) {
2408 if (Tcl_GetIndexFromObjStruct(interp, objv[0], menuEntryTypeStrings,
2409 sizeof(char *), "menu entry type", 0, &type) != TCL_OK) {
24102410 return TCL_ERROR;
24112411 }
24122412
24292429 errorMenuPtr != NULL;
24302430 errorMenuPtr = errorMenuPtr->nextInstancePtr) {
24312431 Tcl_EventuallyFree(errorMenuPtr->entries[index],
2432 DestroyMenuEntry);
2432 (Tcl_FreeProc *) DestroyMenuEntry);
24332433 for (i = index; i < errorMenuPtr->numEntries - 1; i++) {
24342434 errorMenuPtr->entries[i] = errorMenuPtr->entries[i + 1];
24352435 errorMenuPtr->entries[i]->index = i;
25432543 if (flags & TCL_TRACE_UNSETS) {
25442544 mePtr->entryFlags &= ~ENTRY_SELECTED;
25452545 if (flags & TCL_TRACE_DESTROYED) {
2546 Tcl_TraceVar(interp, name,
2546 Tcl_TraceVar2(interp, name, NULL,
25472547 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
25482548 MenuVarProc, clientData);
25492549 }
25572557 * entry.
25582558 */
25592559
2560 value = Tcl_GetVar(interp, name, TCL_GLOBAL_ONLY);
2560 value = Tcl_GetVar2(interp, name, NULL, TCL_GLOBAL_ONLY);
25612561 if (value == NULL) {
25622562 value = "";
25632563 }
27102710 if (newMenuTypePtr == NULL) {
27112711 menuType = MASTER_MENU;
27122712 } else {
2713 if (Tcl_GetIndexFromObj(menuPtr->interp, newMenuTypePtr,
2714 menuTypeStrings, "menu type", 0, &menuType) != TCL_OK) {
2713 if (Tcl_GetIndexFromObjStruct(menuPtr->interp, newMenuTypePtr,
2714 menuTypeStrings, sizeof(char *), "menu type", 0, &menuType) != TCL_OK) {
27152715 return TCL_ERROR;
27162716 }
27172717 }
29862986
29872987 *indexPtr = -1;
29882988
2989 /* set the width of the final column to the remainder of the window
2989 /* set the width of the final column to the remainder of the window
29902990 * being aware of windows that may not be mapped yet.
29912991 */
2992 max = Tk_IsMapped(menuPtr->tkwin)
2992 max = Tk_IsMapped(menuPtr->tkwin)
29932993 ? Tk_Width(menuPtr->tkwin) : Tk_ReqWidth(menuPtr->tkwin);
29942994 max -= borderwidth;
29952995
35393539 for (menuListPtr = menuPtr->masterMenuPtr; menuListPtr != NULL;
35403540 menuListPtr = menuListPtr->nextInstancePtr) {
35413541 for (i = last; i >= first; i--) {
3542 Tcl_EventuallyFree(menuListPtr->entries[i], DestroyMenuEntry);
3542 Tcl_EventuallyFree(menuListPtr->entries[i], (Tcl_FreeProc *) DestroyMenuEntry);
35433543 }
35443544 for (i = last + 1; i < menuListPtr->numEntries; i++) {
35453545 j = i - numDeleted;
354354 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
355355 return TCL_ERROR;
356356 }
357 result = Tcl_GetIndexFromObj(interp, objv[1], commandNames, "option", 0,
358 &index);
357 result = Tcl_GetIndexFromObjStruct(interp, objv[1], commandNames,
358 sizeof(char *), "option", 0, &index);
359359 if (result != TCL_OK) {
360360 return result;
361361 }
435435
436436 Tcl_DeleteCommandFromToken(mbPtr->interp, mbPtr->widgetCmd);
437437 if (mbPtr->textVarName != NULL) {
438 Tcl_UntraceVar(mbPtr->interp, mbPtr->textVarName,
438 Tcl_UntraceVar2(mbPtr->interp, mbPtr->textVarName, NULL,
439439 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
440440 MenuButtonTextVarProc, mbPtr);
441441 }
505505 */
506506
507507 if (mbPtr->textVarName != NULL) {
508 Tcl_UntraceVar(interp, mbPtr->textVarName,
508 Tcl_UntraceVar2(interp, mbPtr->textVarName, NULL,
509509 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
510510 MenuButtonTextVarProc, mbPtr);
511511 }
624624 */
625625 const char *value;
626626
627 value = Tcl_GetVar(interp, mbPtr->textVarName, TCL_GLOBAL_ONLY);
627 value = Tcl_GetVar2(interp, mbPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
628628 if (value == NULL) {
629 Tcl_SetVar(interp, mbPtr->textVarName, mbPtr->text,
629 Tcl_SetVar2(interp, mbPtr->textVarName, NULL, mbPtr->text,
630630 TCL_GLOBAL_ONLY);
631631 } else {
632632 if (mbPtr->text != NULL) {
635635 mbPtr->text = ckalloc(strlen(value) + 1);
636636 strcpy(mbPtr->text, value);
637637 }
638 Tcl_TraceVar(interp, mbPtr->textVarName,
638 Tcl_TraceVar2(interp, mbPtr->textVarName, NULL,
639639 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
640640 MenuButtonTextVarProc, mbPtr);
641641 }
887887
888888 if (flags & TCL_TRACE_UNSETS) {
889889 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
890 Tcl_SetVar(interp, mbPtr->textVarName, mbPtr->text,
890 Tcl_SetVar2(interp, mbPtr->textVarName, NULL, mbPtr->text,
891891 TCL_GLOBAL_ONLY);
892 Tcl_TraceVar(interp, mbPtr->textVarName,
892 Tcl_TraceVar2(interp, mbPtr->textVarName, NULL,
893893 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
894894 MenuButtonTextVarProc, clientData);
895895 }
896896 return NULL;
897897 }
898898
899 value = Tcl_GetVar(interp, mbPtr->textVarName, TCL_GLOBAL_ONLY);
899 value = Tcl_GetVar2(interp, mbPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
900900 if (value == NULL) {
901901 value = "";
902902 }
317317 return TCL_ERROR;
318318 }
319319
320 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
321 &index) != TCL_OK) {
320 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
321 sizeof(char *), "option", 0, &index) != TCL_OK) {
322322 return TCL_ERROR;
323323 }
324324
404404 Tk_FreeTextLayout(msgPtr->textLayout);
405405 }
406406 if (msgPtr->textVarName != NULL) {
407 Tcl_UntraceVar(msgPtr->interp, msgPtr->textVarName,
407 Tcl_UntraceVar2(msgPtr->interp, msgPtr->textVarName, NULL,
408408 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
409409 MessageTextVarProc, msgPtr);
410410 }
449449 */
450450
451451 if (msgPtr->textVarName != NULL) {
452 Tcl_UntraceVar(interp, msgPtr->textVarName,
452 Tcl_UntraceVar2(interp, msgPtr->textVarName, NULL,
453453 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
454454 MessageTextVarProc, msgPtr);
455455 }
469469 if (msgPtr->textVarName != NULL) {
470470 const char *value;
471471
472 value = Tcl_GetVar(interp, msgPtr->textVarName, TCL_GLOBAL_ONLY);
472 value = Tcl_GetVar2(interp, msgPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
473473 if (value == NULL) {
474 Tcl_SetVar(interp, msgPtr->textVarName, msgPtr->string,
474 Tcl_SetVar2(interp, msgPtr->textVarName, NULL, msgPtr->string,
475475 TCL_GLOBAL_ONLY);
476476 } else {
477477 if (msgPtr->string != NULL) {
479479 }
480480 msgPtr->string = strcpy(ckalloc(strlen(value) + 1), value);
481481 }
482 Tcl_TraceVar(interp, msgPtr->textVarName,
482 Tcl_TraceVar2(interp, msgPtr->textVarName, NULL,
483483 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
484484 MessageTextVarProc, msgPtr);
485485 }
844844
845845 if (flags & TCL_TRACE_UNSETS) {
846846 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
847 Tcl_SetVar(interp, msgPtr->textVarName, msgPtr->string,
847 Tcl_SetVar2(interp, msgPtr->textVarName, NULL, msgPtr->string,
848848 TCL_GLOBAL_ONLY);
849 Tcl_TraceVar(interp, msgPtr->textVarName,
849 Tcl_TraceVar2(interp, msgPtr->textVarName, NULL,
850850 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
851851 MessageTextVarProc, clientData);
852852 }
853853 return NULL;
854854 }
855855
856 value = Tcl_GetVar(interp, msgPtr->textVarName, TCL_GLOBAL_ONLY);
856 value = Tcl_GetVar2(interp, msgPtr->textVarName, NULL, TCL_GLOBAL_ONLY);
857857 if (value == NULL) {
858858 value = "";
859859 }
3232 (PTR2INT((objPtr)->internalRep.twoPtrValue.ptr1))
3333
3434 #define SET_COMPLEXPIXEL(objPtr, repPtr) \
35 (objPtr)->internalRep.twoPtrValue.ptr1 = 0; \
35 (objPtr)->internalRep.twoPtrValue.ptr1 = NULL; \
3636 (objPtr)->internalRep.twoPtrValue.ptr2 = repPtr
3737
3838 #define GET_COMPLEXPIXEL(objPtr) \
446446 double d;
447447 int i, units;
448448
449 string = Tcl_GetStringFromObj(objPtr, NULL);
449 string = Tcl_GetString(objPtr);
450450
451451 d = strtod(string, &rest);
452452 if (rest == string) {
552552 }
553553 }
554554
555 mmPtr = objPtr->internalRep.otherValuePtr;
555 mmPtr = objPtr->internalRep.twoPtrValue.ptr1;
556556 if (mmPtr->tkwin != tkwin) {
557557 d = mmPtr->value;
558558 if (mmPtr->units == -1) {
591591 FreeMMInternalRep(
592592 Tcl_Obj *objPtr) /* MM object with internal rep to free. */
593593 {
594 ckfree(objPtr->internalRep.otherValuePtr);
595 objPtr->internalRep.otherValuePtr = NULL;
594 ckfree(objPtr->internalRep.twoPtrValue.ptr1);
595 objPtr->internalRep.twoPtrValue.ptr1 = NULL;
596596 objPtr->typePtr = NULL;
597597 }
598598
622622 MMRep *oldPtr, *newPtr;
623623
624624 copyPtr->typePtr = srcPtr->typePtr;
625 oldPtr = srcPtr->internalRep.otherValuePtr;
625 oldPtr = srcPtr->internalRep.twoPtrValue.ptr1;
626626 newPtr = ckalloc(sizeof(MMRep));
627627 newPtr->value = oldPtr->value;
628628 newPtr->units = oldPtr->units;
629629 newPtr->tkwin = oldPtr->tkwin;
630630 newPtr->returnValue = oldPtr->returnValue;
631 copyPtr->internalRep.otherValuePtr = newPtr;
631 copyPtr->internalRep.twoPtrValue.ptr1 = newPtr;
632632 }
633633
634634 /*
658658 char buffer[TCL_DOUBLE_SPACE];
659659 register int len;
660660
661 mmPtr = objPtr->internalRep.otherValuePtr;
661 mmPtr = objPtr->internalRep.twoPtrValue.ptr1;
662662 /* assert( mmPtr->units == -1 && objPtr->bytes == NULL ); */
663663 if ((mmPtr->units != -1) || (objPtr->bytes != NULL)) {
664664 Tcl_Panic("UpdateStringOfMM: false precondition");
718718 * ints again from mm obj types.
719719 */
720720
721 (void) Tcl_GetStringFromObj(objPtr, NULL);
721 (void) Tcl_GetString(objPtr);
722722 } else {
723723 /*
724724 * It wasn't a known int or double, so parse it.
725725 */
726726
727 string = Tcl_GetStringFromObj(objPtr, NULL);
727 string = Tcl_GetString(objPtr);
728728
729729 d = strtod(string, &rest);
730730 if (rest == string) {
781781 mmPtr->tkwin = NULL;
782782 mmPtr->returnValue = d;
783783
784 objPtr->internalRep.otherValuePtr = mmPtr;
784 objPtr->internalRep.twoPtrValue.ptr1 = mmPtr;
785785
786786 return TCL_OK;
787787 }
816816 {
817817 TkMainInfo *mainPtr = ((TkWindow *) tkwin)->mainPtr;
818818 register WindowRep *winPtr;
819 int result;
820
821 result = Tcl_ConvertToType(interp, objPtr, &windowObjType);
822 if (result != TCL_OK) {
823 return result;
824 }
825
826 winPtr = objPtr->internalRep.otherValuePtr;
819
820 if (objPtr->typePtr != &windowObjType) {
821 int result = SetWindowFromAny(interp, objPtr);
822 if (result != TCL_OK) {
823 return result;
824 }
825 }
826
827 winPtr = objPtr->internalRep.twoPtrValue.ptr1;
827828 if (winPtr->tkwin == NULL
828829 || winPtr->mainPtr == NULL
829830 || winPtr->mainPtr != mainPtr
833834 */
834835
835836 winPtr->tkwin = Tk_NameToWindow(interp,
836 Tcl_GetStringFromObj(objPtr, NULL), tkwin);
837 Tcl_GetString(objPtr), tkwin);
837838 if (winPtr->tkwin == NULL) {
838839 /* ASSERT: Tk_NameToWindow has left error message in interp */
839840 return TCL_ERROR;
879880 * Free the old internalRep before setting the new one.
880881 */
881882
882 Tcl_GetStringFromObj(objPtr, NULL);
883 (void)Tcl_GetString(objPtr);
883884 typePtr = objPtr->typePtr;
884885 if ((typePtr != NULL) && (typePtr->freeIntRepProc != NULL)) {
885886 typePtr->freeIntRepProc(objPtr);
890891 winPtr->mainPtr = NULL;
891892 winPtr->epoch = 0;
892893
893 objPtr->internalRep.otherValuePtr = winPtr;
894 objPtr->internalRep.twoPtrValue.ptr1 = winPtr;
894895 objPtr->typePtr = &windowObjType;
895896
896897 return TCL_OK;
921922 {
922923 register WindowRep *oldPtr, *newPtr;
923924
924 oldPtr = srcPtr->internalRep.otherValuePtr;
925 oldPtr = srcPtr->internalRep.twoPtrValue.ptr1;
925926 newPtr = ckalloc(sizeof(WindowRep));
926927 newPtr->tkwin = oldPtr->tkwin;
927928 newPtr->mainPtr = oldPtr->mainPtr;
928929 newPtr->epoch = oldPtr->epoch;
929 copyPtr->internalRep.otherValuePtr = newPtr;
930 copyPtr->internalRep.twoPtrValue.ptr1 = newPtr;
930931 copyPtr->typePtr = srcPtr->typePtr;
931932 }
932933
952953 FreeWindowInternalRep(
953954 Tcl_Obj *objPtr) /* Window object with internal rep to free. */
954955 {
955 ckfree(objPtr->internalRep.otherValuePtr);
956 objPtr->internalRep.otherValuePtr = NULL;
956 ckfree(objPtr->internalRep.twoPtrValue.ptr1);
957 objPtr->internalRep.twoPtrValue.ptr1 = NULL;
957958 objPtr->typePtr = NULL;
958959 }
959960
984985
985986 SetWindowFromAny(NULL, objPtr);
986987
987 winPtr = objPtr->internalRep.otherValuePtr;
988 winPtr = objPtr->internalRep.twoPtrValue.ptr1;
988989 winPtr->tkwin = tkwin;
989990 winPtr->mainPtr = mainPtr;
990991 winPtr->epoch = mainPtr->deletionEpoch;
121121 const char *arg;
122122
123123 if (flags & TK_CONFIG_OBJS) {
124 arg = Tcl_GetStringFromObj((Tcl_Obj *) *argv, NULL);
124 arg = Tcl_GetString((Tcl_Obj *) *argv);
125125 } else {
126126 arg = *argv;
127127 }
717717 result = Tcl_Merge(5, argv);
718718 if (freeProc != NULL) {
719719 if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) {
720 ckfree(argv[4]);
720 ckfree((char *) argv[4]);
721721 } else {
722722 freeProc((char *) argv[4]);
723723 }
938938 Tcl_SetObjResult(interp, Tcl_NewStringObj(result, -1));
939939 if (freeProc != NULL) {
940940 if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) {
941 ckfree(result);
941 ckfree((char *) result);
942942 } else {
943943 freeProc((char *) result);
944944 }
267267 XGCValues gcValues;
268268
269269 sprintf(buffer, "%s get", timPtr->imageName);
270 Tcl_SetVar(timPtr->interp, timPtr->varName, buffer,
270 Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer,
271271 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
272272
273273 instPtr = ckalloc(sizeof(TImageInstance));
314314 sprintf(buffer, "%s display %d %d %d %d %d %d",
315315 instPtr->masterPtr->imageName, imageX, imageY, width, height,
316316 drawableX, drawableY);
317 Tcl_SetVar(instPtr->masterPtr->interp, instPtr->masterPtr->varName, buffer,
318 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
317 Tcl_SetVar2(instPtr->masterPtr->interp, instPtr->masterPtr->varName, NULL,
318 buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
319319 if (width > (instPtr->masterPtr->width - imageX)) {
320320 width = instPtr->masterPtr->width - imageX;
321321 }
357357 char buffer[200];
358358
359359 sprintf(buffer, "%s free", instPtr->masterPtr->imageName);
360 Tcl_SetVar(instPtr->masterPtr->interp, instPtr->masterPtr->varName, buffer,
361 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
360 Tcl_SetVar2(instPtr->masterPtr->interp, instPtr->masterPtr->varName, NULL,
361 buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
362362 Tk_FreeColor(instPtr->fg);
363363 Tk_FreeGC(display, instPtr->gc);
364364 ckfree(instPtr);
391391 char buffer[100];
392392
393393 sprintf(buffer, "%s delete", timPtr->imageName);
394 Tcl_SetVar(timPtr->interp, timPtr->varName, buffer,
394 Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer,
395395 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
396396
397397 Tcl_DeleteCommand(timPtr->interp, timPtr->imageName);
630630 return TCL_ERROR;
631631 }
632632
633 result = Tcl_GetIndexFromObj(interp, objv[1], optionCmds, "option", 0,
634 &index);
633 result = Tcl_GetIndexFromObjStruct(interp, objv[1], optionCmds,
634 sizeof(char *), "option", 0, &index);
635635 if (result != TCL_OK) {
636636 return result;
637637 }
8787 * Tk will set its requested size to fit the
8888 * needs of its slaves.
8989 * ALLOCED_MASTER 1 means that Pack has allocated itself as
90 * geometry master for this window.
90 * geometry master for this window.
9191 */
9292
9393 #define REQUESTED_REPACK 1
119119 static void ArrangePacking(ClientData clientData);
120120 static int ConfigureSlaves(Tcl_Interp *interp, Tk_Window tkwin,
121121 int objc, Tcl_Obj *const objv[]);
122 static void DestroyPacker(char *memPtr);
122 static void DestroyPacker(void *memPtr);
123123 static Packer * GetPacker(Tk_Window tkwin);
124124 static int PackAfter(Tcl_Interp *interp, Packer *prevPtr,
125125 Packer *masterPtr, int objc,Tcl_Obj *const objv[]);
216216 return TCL_ERROR;
217217 }
218218
219 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
220 &index) != TCL_OK) {
219 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
220 sizeof(char *), "option", 0, &index) != TCL_OK) {
221221 /*
222222 * Call it again without the deprecated ones to get a proper error
223223 * message. This works well since there can't be any ambiguity between
225225 */
226226
227227 Tcl_ResetResult(interp);
228 Tcl_GetIndexFromObj(interp, objv[1], &optionStrings[4], "option", 0,
229 &index);
228 Tcl_GetIndexFromObjStruct(interp, objv[1], &optionStrings[4],
229 sizeof(char *), "option", 0, &index);
230230 return TCL_ERROR;
231231 }
232232
408408
409409 if (masterPtr->slavePtr != NULL) {
410410 if (TkSetGeometryMaster(interp, master, "pack") != TCL_OK) {
411 return TCL_ERROR;
411 return TCL_ERROR;
412412 }
413413 masterPtr->flags |= ALLOCED_MASTER;
414414 }
11001100 {
11011101 register Packer *packPtr;
11021102 Tk_Window tkwin, ancestor, parent;
1103 int length;
11041103 Tcl_Obj **options;
11051104 int index, optionCount, c;
11061105
11691168 packPtr->flags |= OLD_STYLE;
11701169 for (index = 0 ; index < optionCount; index++) {
11711170 Tcl_Obj *curOptPtr = options[index];
1172 const char *curOpt = Tcl_GetStringFromObj(curOptPtr, &length);
1171 const char *curOpt = Tcl_GetString(curOptPtr);
1172 size_t length = curOptPtr->length;
11731173
11741174 c = curOpt[0];
11751175
11761176 if ((c == 't')
1177 && (strncmp(curOpt, "top", (size_t) length)) == 0) {
1177 && (strncmp(curOpt, "top", length)) == 0) {
11781178 packPtr->side = TOP;
11791179 } else if ((c == 'b')
1180 && (strncmp(curOpt, "bottom", (size_t) length)) == 0) {
1180 && (strncmp(curOpt, "bottom", length)) == 0) {
11811181 packPtr->side = BOTTOM;
11821182 } else if ((c == 'l')
1183 && (strncmp(curOpt, "left", (size_t) length)) == 0) {
1183 && (strncmp(curOpt, "left", length)) == 0) {
11841184 packPtr->side = LEFT;
11851185 } else if ((c == 'r')
1186 && (strncmp(curOpt, "right", (size_t) length)) == 0) {
1186 && (strncmp(curOpt, "right", length)) == 0) {
11871187 packPtr->side = RIGHT;
11881188 } else if ((c == 'e')
1189 && (strncmp(curOpt, "expand", (size_t) length)) == 0) {
1189 && (strncmp(curOpt, "expand", length)) == 0) {
11901190 packPtr->flags |= EXPAND;
11911191 } else if ((c == 'f')
11921192 && (strcmp(curOpt, "fill")) == 0) {
12861286 != TCL_OK) {
12871287 Tk_ManageGeometry(tkwin, NULL, NULL);
12881288 Unlink(packPtr);
1289 return TCL_ERROR;
1289 return TCL_ERROR;
12901290 }
12911291 masterPtr->flags |= ALLOCED_MASTER;
12921292 }
13881388
13891389 static void
13901390 DestroyPacker(
1391 char *memPtr) /* Info about packed window that is now
1391 void *memPtr) /* Info about packed window that is now
13921392 * dead. */
13931393 {
1394 register Packer *packPtr = (Packer *) memPtr;
1394 register Packer *packPtr = memPtr;
13951395
13961396 ckfree(packPtr);
13971397 }
14621462 Tcl_CancelIdleCall(ArrangePacking, packPtr);
14631463 }
14641464 packPtr->tkwin = NULL;
1465 Tcl_EventuallyFree(packPtr, DestroyPacker);
1465 Tcl_EventuallyFree(packPtr, (Tcl_FreeProc *) DestroyPacker);
14661466 } else if (eventPtr->type == MapNotify) {
14671467 /*
14681468 * When a master gets mapped, must redo the geometry computation so
15921592 Tcl_SetErrorCode(interp, "TK", "PACK", "BAD_PARAMETER", NULL);
15931593 return TCL_ERROR;
15941594 }
1595 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option",
1596 0, &index) != TCL_OK) {
1595 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
1596 sizeof(char *), "option", 0, &index) != TCL_OK) {
15971597 return TCL_ERROR;
15981598 }
15991599
17241724 }
17251725 break;
17261726 case CONF_SIDE:
1727 if (Tcl_GetIndexFromObj(interp, objv[i+1], sideNames, "side",
1728 TCL_EXACT, &side) != TCL_OK) {
1727 if (Tcl_GetIndexFromObjStruct(interp, objv[i+1], sideNames,
1728 sizeof(char *), "side", TCL_EXACT, &side) != TCL_OK) {
17291729 return TCL_ERROR;
17301730 }
17311731 slavePtr->side = (Side) side;
18281828 != TCL_OK) {
18291829 Tk_ManageGeometry(slave, NULL, NULL);
18301830 Unlink(slavePtr);
1831 return TCL_ERROR;
1831 return TCL_ERROR;
18321832 }
18331833 masterPtr->flags |= ALLOCED_MASTER;
18341834 }
383383 }
384384
385385 tkwin = Tk_CreateWindowFromPath(interp, Tk_MainWindow(interp),
386 Tcl_GetStringFromObj(objv[1], NULL), NULL);
386 Tcl_GetString(objv[1]), NULL);
387387 if (tkwin == NULL) {
388388 return TCL_ERROR;
389389 }
29042904 if (objPtr->bytes != NULL) {
29052905 return (objPtr->length == 0);
29062906 }
2907 Tcl_GetStringFromObj(objPtr, &length);
2907 (void)Tcl_GetStringFromObj(objPtr, &length);
29082908 return (length == 0);
29092909 }
29102910
275275 dispPtr->placeInit = 1;
276276 }
277277
278 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
279 &index) != TCL_OK) {
278 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
279 sizeof(char *), "option", 0, &index) != TCL_OK) {
280280 return TCL_ERROR;
281281 }
282282
339339 Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?");
340340 return TCL_ERROR;
341341 }
342 result = Tcl_GetIndexFromObj(interp, objv[1], commandNames,
343 "option", 0, &index);
342 result = Tcl_GetIndexFromObjStruct(interp, objv[1], commandNames,
343 sizeof(char *), "option", 0, &index);
344344 if (result != TCL_OK) {
345345 return result;
346346 }
503503 */
504504
505505 if (scalePtr->varNamePtr != NULL) {
506 Tcl_UntraceVar(scalePtr->interp, Tcl_GetString(scalePtr->varNamePtr),
507 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
506 Tcl_UntraceVar2(scalePtr->interp, Tcl_GetString(scalePtr->varNamePtr),
507 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
508508 ScaleVarProc, scalePtr);
509509 }
510510 if (scalePtr->troughGC != None) {
560560 */
561561
562562 if (scalePtr->varNamePtr != NULL) {
563 Tcl_UntraceVar(interp, Tcl_GetString(scalePtr->varNamePtr),
564 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
563 Tcl_UntraceVar2(interp, Tcl_GetString(scalePtr->varNamePtr),
564 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
565565 ScaleVarProc, scalePtr);
566566 }
567567
676676 ScaleSetVariable(scalePtr);
677677 }
678678 }
679 Tcl_TraceVar(interp, Tcl_GetString(scalePtr->varNamePtr),
680 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
679 Tcl_TraceVar2(interp, Tcl_GetString(scalePtr->varNamePtr),
680 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
681681 ScaleVarProc, scalePtr);
682682 }
683683
11791179
11801180 if (flags & TCL_TRACE_UNSETS) {
11811181 if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) {
1182 Tcl_TraceVar(interp, Tcl_GetString(scalePtr->varNamePtr),
1183 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
1182 Tcl_TraceVar2(interp, Tcl_GetString(scalePtr->varNamePtr),
1183 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
11841184 ScaleVarProc, clientData);
11851185 scalePtr->flags |= NEVER_SET;
11861186 TkScaleSetValue(scalePtr, scalePtr->value, 1, 0);
9797
9898 static void SquareDeletedProc(ClientData clientData);
9999 static int SquareConfigure(Tcl_Interp *interp, Square *squarePtr);
100 static void SquareDestroy(char *memPtr);
100 static void SquareDestroy(void *memPtr);
101101 static void SquareDisplay(ClientData clientData);
102102 static void KeepInWindow(Square *squarePtr);
103103 static void SquareObjEventProc(ClientData clientData,
236236 return TCL_ERROR;
237237 }
238238
239 if (Tcl_GetIndexFromObj(interp, objv[1], squareOptions, "command",
240 0, &index) != TCL_OK) {
239 if (Tcl_GetIndexFromObjStruct(interp, objv[1], squareOptions,
240 sizeof(char *), "command", 0, &index) != TCL_OK) {
241241 return TCL_ERROR;
242242 }
243243
409409 if (squarePtr->updatePending) {
410410 Tcl_CancelIdleCall(SquareDisplay, squarePtr);
411411 }
412 Tcl_EventuallyFree(squarePtr, SquareDestroy);
412 Tcl_EventuallyFree(squarePtr, (Tcl_FreeProc *) SquareDestroy);
413413 }
414414 }
415415
553553
554554 static void
555555 SquareDestroy(
556 char *memPtr) /* Info about square widget. */
557 {
558 Square *squarePtr = (Square *) memPtr;
556 void *memPtr) /* Info about square widget. */
557 {
558 Square *squarePtr = memPtr;
559559
560560 ckfree(squarePtr);
561561 }
224224 # define TkSubtractRegion (void (*) (TkRegion, TkRegion, TkRegion)) XSubtractRegion
225225 # endif
226226 #endif /* !__WIN32__ */
227
228 #define reserved274 (void (*)(void)) Tk_DefineBitmap
229 #define reserved275 (void (*)(void)) Tk_GetBitmapFromData
230227
231228 /*
232229 * WARNING: The contents of this file is automatically generated by the
11051102 Tk_Interp, /* 271 */
11061103 Tk_CreateOldImageType, /* 272 */
11071104 Tk_CreateOldPhotoImageFormat, /* 273 */
1108 reserved274, /* 274 */
1109 reserved275, /* 275 */
11101105 };
11111106
11121107 /* !END!: Do not edit above this line. */
00 /*
11 * tkStubLib.c --
22 *
3 * Stub object that will be statically linked into extensions that wish
3 * Stub object that will be statically linked into extensions that want
44 * to access Tk.
55 *
6 * Copyright (c) 1998-1999 by Scriptics Corporation.
67 * Copyright (c) 1998 Paul Duffin.
7 * Copyright (c) 1998-1999 by Scriptics Corporation.
88 *
99 * See the file "license.terms" for information on usage and redistribution of
1010 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
1111 */
12
13 /*
14 * We need to ensure that we use the stub macros so that this file contains no
15 * references to any of the stub functions. This will make it possible to
16 * build an extension that references Tk_InitStubs but doesn't end up
17 * including the rest of the stub functions.
18 */
19
20 #undef USE_TCL_STUBS
21 #define USE_TCL_STUBS
22
23 #define USE_TK_STUBS
2412
2513 #include "tkInt.h"
2614
5745 */
5846
5947 static int
60 isDigit(
61 const int c)
48 isDigit(const int c)
6249 {
6350 return (c >= '0' && c <= '9');
6451 }
8067 *
8168 *----------------------------------------------------------------------
8269 */
83
70 #undef Tk_InitStubs
8471 MODULE_SCOPE const char *
8572 Tk_InitStubs(
8673 Tcl_Interp *interp,
8774 const char *version,
8875 int exact)
8976 {
90 ClientData pkgClientData = NULL;
91 const char *actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, 0,
92 &pkgClientData);
93 const TkStubs *stubsPtr = pkgClientData;
77 const char *packageName = "Tk";
78 const char *errMsg = NULL;
79 ClientData clientData = NULL;
80 const char *actualVersion = tclStubsPtr->tcl_PkgRequireEx(interp,
81 packageName, version, 0, &clientData);
82 const TkStubs *stubsPtr = clientData;
9483
95 if (!actualVersion) {
84 if (actualVersion == NULL) {
9685 return NULL;
9786 }
87
9888 if (exact) {
99 const char *p = version;
100 int count = 0;
89 const char *p = version;
90 int count = 0;
10191
102 while (*p) {
103 count += !isDigit(*p++);
104 }
105 if (count == 1) {
92 while (*p) {
93 count += !isDigit(*p++);
94 }
95 if (count == 1) {
10696 const char *q = actualVersion;
10797
10898 p = version;
10999 while (*p && (*p == *q)) {
110100 p++; q++;
111101 }
112 if (*p) {
102 if (*p || isDigit(*q)) {
113103 /* Construct error message */
114 Tcl_PkgRequireEx(interp, "Tk", version, 1, NULL);
115 return NULL;
116 }
117 } else {
118 actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, 1, NULL);
119 if (actualVersion == NULL) {
120 return NULL;
121 }
122 }
104 tclStubsPtr->tcl_PkgRequireEx(interp, packageName, version, 1, NULL);
105 return NULL;
106 }
107 } else {
108 actualVersion = tclStubsPtr->tcl_PkgRequireEx(interp, packageName,
109 version, 1, NULL);
110 if (actualVersion == NULL) {
111 return NULL;
112 }
113 }
123114 }
124
125 if (!stubsPtr) {
126 Tcl_SetObjResult(interp, Tcl_NewStringObj(
127 "this implementation of Tk does not support stubs", -1));
128 return NULL;
115 if (stubsPtr == NULL) {
116 errMsg = "missing stub table pointer";
117 } else {
118 tkStubsPtr = stubsPtr;
119 if (stubsPtr->hooks) {
120 tkPlatStubsPtr = stubsPtr->hooks->tkPlatStubs;
121 tkIntStubsPtr = stubsPtr->hooks->tkIntStubs;
122 tkIntPlatStubsPtr = stubsPtr->hooks->tkIntPlatStubs;
123 tkIntXlibStubsPtr = stubsPtr->hooks->tkIntXlibStubs;
124 } else {
125 tkPlatStubsPtr = NULL;
126 tkIntStubsPtr = NULL;
127 tkIntPlatStubsPtr = NULL;
128 tkIntXlibStubsPtr = NULL;
129 }
130 return actualVersion;
129131 }
130
131 tkPlatStubsPtr = stubsPtr->hooks->tkPlatStubs;
132 tkIntStubsPtr = stubsPtr->hooks->tkIntStubs;
133 tkIntPlatStubsPtr = stubsPtr->hooks->tkIntPlatStubs;
134 tkIntXlibStubsPtr = stubsPtr->hooks->tkIntXlibStubs;
135 tkStubsPtr = stubsPtr;
136
137 return actualVersion;
132 tclStubsPtr->tcl_ResetResult(interp);
133 tclStubsPtr->tcl_AppendResult(interp, "Error loading ", packageName,
134 " (requested version ", version, ", actual version ",
135 actualVersion, "): ", errMsg, NULL);
136 return NULL;
138137 }
139138
140139 /*
145145
146146 /*
147147 * The following structure defines the implementation of the "style" Tcl
148 * object, used for drawing. The internalRep.otherValuePtr field of each style
149 * object points to the Style structure for the stylefont, or NULL.
148 * object, used for drawing. The internalRep.twoPtrValue.ptr1 field of each
149 * style object points to the Style structure for the stylefont, or NULL.
150150 */
151151
152152 static const Tcl_ObjType styleObjType = {
14091409 if (objPtr->typePtr != &styleObjType) {
14101410 SetStyleFromAny(interp, objPtr);
14111411 }
1412 stylePtr = objPtr->internalRep.otherValuePtr;
1412 stylePtr = objPtr->internalRep.twoPtrValue.ptr1;
14131413
14141414 return (Tk_Style) stylePtr;
14151415 }
14411441 SetStyleFromAny(NULL, objPtr);
14421442 }
14431443
1444 return objPtr->internalRep.otherValuePtr;
1444 return objPtr->internalRep.twoPtrValue.ptr1;
14451445 }
14461446
14471447 /*
14961496 }
14971497
14981498 objPtr->typePtr = &styleObjType;
1499 objPtr->internalRep.otherValuePtr = Tk_GetStyle(interp, name);
1499 objPtr->internalRep.twoPtrValue.ptr1 = Tk_GetStyle(interp, name);
15001500
15011501 return TCL_OK;
15021502 }
15191519 FreeStyleObjProc(
15201520 Tcl_Obj *objPtr) /* The object we are releasing. */
15211521 {
1522 objPtr->internalRep.otherValuePtr = NULL;
1522 objPtr->internalRep.twoPtrValue.ptr1 = NULL;
15231523 objPtr->typePtr = NULL;
15241524 }
15251525
15401540 Tcl_Obj *dupObjPtr) /* The object we are copying to. */
15411541 {
15421542 dupObjPtr->typePtr = srcObjPtr->typePtr;
1543 dupObjPtr->internalRep.otherValuePtr =
1544 srcObjPtr->internalRep.otherValuePtr;
1543 dupObjPtr->internalRep.twoPtrValue.ptr1 =
1544 srcObjPtr->internalRep.twoPtrValue.ptr1;
15451545 }
15461546
15471547 /*
159159 Tcl_Obj *const objv[]);
160160 static int TestmakeexistCmd(ClientData dummy,
161161 Tcl_Interp *interp, int argc, const char **argv);
162 #if !(defined(__WIN32__) || defined(MAC_OSX_TK))
162 #if !(defined(__WIN32__) || defined(MAC_OSX_TK) || defined(__CYGWIN__))
163163 static int TestmenubarCmd(ClientData dummy,
164164 Tcl_Interp *interp, int argc, const char **argv);
165165 #endif
185185 Tk_Window tkwin, char *internalPtr);
186186 static int TestpropCmd(ClientData dummy,
187187 Tcl_Interp *interp, int argc, const char **argv);
188 #if !(defined(__WIN32__) || defined(MAC_OSX_TK))
188 #if !(defined(__WIN32__) || defined(MAC_OSX_TK) || defined(__CYGWIN__))
189189 static int TestwrapperCmd(ClientData dummy,
190190 Tcl_Interp *interp, int argc, const char **argv);
191191 #endif
222222 if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
223223 return TCL_ERROR;
224224 }
225 if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
225 if (Tk_InitStubs(interp, TK_VERSION, 0) == NULL) {
226226 return TCL_ERROR;
227227 }
228228
230230 * Create additional commands for testing Tk.
231231 */
232232
233 if (Tcl_PkgProvide(interp, "Tktest", TK_VERSION) == TCL_ERROR) {
233 if (Tcl_PkgProvideEx(interp, "Tktest", TK_VERSION, NULL) == TCL_ERROR) {
234234 return TCL_ERROR;
235235 }
236236
261261 #if defined(__WIN32__) || defined(MAC_OSX_TK)
262262 Tcl_CreateCommand(interp, "testmetrics", TestmetricsCmd,
263263 (ClientData) Tk_MainWindow(interp), NULL);
264 #else
264 #elif !defined(__CYGWIN__)
265265 Tcl_CreateCommand(interp, "testmenubar", TestmenubarCmd,
266266 (ClientData) Tk_MainWindow(interp), NULL);
267267 Tcl_CreateCommand(interp, "testsend", TkpTestsendCmd,
496496 Tcl_Obj *const objv[]) /* Argument objects. */
497497 {
498498 static const char *const options[] = {
499 "alltypes", "chain1", "chain2", "configerror", "delete", "info",
499 "alltypes", "chain1", "chain2", "chain3", "configerror", "delete", "info",
500500 "internal", "new", "notenoughparams", "twowindows", NULL
501501 };
502502 enum {
503 ALL_TYPES, CHAIN1, CHAIN2, CONFIG_ERROR,
503 ALL_TYPES, CHAIN1, CHAIN2, CHAIN3, CONFIG_ERROR,
504504 DEL, /* Can't use DELETE: VC++ compiler barfs. */
505505 INFO, INTERNAL, NEW, NOT_ENOUGH_PARAMS, TWO_WINDOWS
506506 };
546546 return TCL_ERROR;
547547 }
548548
549 if (Tcl_GetIndexFromObj(interp, objv[1], options, "command", 0, &index)
550 != TCL_OK) {
549 if (Tcl_GetIndexFromObjStruct(interp, objv[1], options,
550 sizeof(char *), "command", 0, &index)!= TCL_OK) {
551551 return TCL_ERROR;
552552 }
553553
719719 break;
720720 }
721721
722 case CHAIN2: {
722 case CHAIN2:
723 case CHAIN3: {
723724 ExtensionWidgetRecord *recordPtr;
724725 static const Tk_OptionSpec extensionSpecs[] = {
725726 {TK_OPTION_STRING, "-three", "three", "Three", "three",
796797 Tcl_WrongNumArgs(interp, 2, objv, "tableName");
797798 return TCL_ERROR;
798799 }
799 if (Tcl_GetIndexFromObj(interp, objv[2], options, "table", 0,
800 &index) != TCL_OK) {
800 if (Tcl_GetIndexFromObjStruct(interp, objv[2], options,
801 sizeof(char *), "table", 0, &index) != TCL_OK) {
801802 return TCL_ERROR;
802803 }
803804 if (tables[index] != NULL) {
804805 Tk_DeleteOptionTable(tables[index]);
806 /* Make sure that Tk_DeleteOptionTable() is never done
807 * twice for the same table. */
808 tables[index] = NULL;
805809 }
806810 break;
807811
810814 Tcl_WrongNumArgs(interp, 2, objv, "tableName");
811815 return TCL_ERROR;
812816 }
813 if (Tcl_GetIndexFromObj(interp, objv[2], options, "table", 0,
814 &index) != TCL_OK) {
817 if (Tcl_GetIndexFromObjStruct(interp, objv[2], options,
818 sizeof(char *), "table", 0, &index) != TCL_OK) {
815819 return TCL_ERROR;
816820 }
817821 Tcl_SetObjResult(interp, TkDebugConfig(interp, tables[index]));
11421146 return TCL_ERROR;
11431147 }
11441148
1145 if (Tcl_GetIndexFromObj(interp, objv[1], options, "command", 0,
1146 &index) != TCL_OK) {
1149 if (Tcl_GetIndexFromObjStruct(interp, objv[1], options,
1150 sizeof(char *), "command", 0, &index) != TCL_OK) {
11471151 return TCL_ERROR;
11481152 }
11491153
13201324 return TCL_ERROR;
13211325 }
13221326
1323 if (Tcl_GetIndexFromObj(interp, objv[1], options, "command", 0, &index)
1324 != TCL_OK) {
1327 if (Tcl_GetIndexFromObjStruct(interp, objv[1], options,
1328 sizeof(char *), "command", 0, &index)!= TCL_OK) {
13251329 return TCL_ERROR;
13261330 }
13271331
14951499 XGCValues gcValues;
14961500
14971501 sprintf(buffer, "%s get", timPtr->imageName);
1498 Tcl_SetVar(timPtr->interp, timPtr->varName, buffer,
1502 Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer,
14991503 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
15001504
15011505 instPtr = ckalloc(sizeof(TImageInstance));
15421546 sprintf(buffer, "%s display %d %d %d %d %d %d",
15431547 instPtr->masterPtr->imageName, imageX, imageY, width, height,
15441548 drawableX, drawableY);
1545 Tcl_SetVar(instPtr->masterPtr->interp, instPtr->masterPtr->varName, buffer,
1546 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
1549 Tcl_SetVar2(instPtr->masterPtr->interp, instPtr->masterPtr->varName, NULL,
1550 buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
15471551 if (width > (instPtr->masterPtr->width - imageX)) {
15481552 width = instPtr->masterPtr->width - imageX;
15491553 }
15851589 char buffer[200];
15861590
15871591 sprintf(buffer, "%s free", instPtr->masterPtr->imageName);
1588 Tcl_SetVar(instPtr->masterPtr->interp, instPtr->masterPtr->varName, buffer,
1589 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
1592 Tcl_SetVar2(instPtr->masterPtr->interp, instPtr->masterPtr->varName, NULL,
1593 buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
15901594 Tk_FreeColor(instPtr->fg);
15911595 Tk_FreeGC(display, instPtr->gc);
15921596 ckfree(instPtr);
16191623 char buffer[100];
16201624
16211625 sprintf(buffer, "%s delete", timPtr->imageName);
1622 Tcl_SetVar(timPtr->interp, timPtr->varName, buffer,
1626 Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer,
16231627 TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT);
16241628
16251629 Tcl_DeleteCommand(timPtr->interp, timPtr->imageName);
16881692 */
16891693
16901694 /* ARGSUSED */
1691 #if !(defined(__WIN32__) || defined(MAC_OSX_TK))
1695 #if !(defined(__WIN32__) || defined(MAC_OSX_TK) || defined(__CYGWIN__))
16921696 static int
16931697 TestmenubarCmd(
16941698 ClientData clientData, /* Main window for application. */
17331737
17341738 return TCL_OK;
17351739 #else
1736 Tcl_SetResult(interp, "testmenubar is supported only under Unix",
1737 TCL_STATIC);
1740 Tcl_AppendResult(interp, "testmenubar is supported only under Unix", NULL);
17381741 return TCL_ERROR;
17391742 #endif
17401743 }
18671870 *p = '\n';
18681871 }
18691872 }
1870 Tcl_SetResult(interp, (/*!unsigned*/char*)property, TCL_VOLATILE);
1873 Tcl_SetObjResult(interp, Tcl_NewStringObj((/*!unsigned*/char*)property, -1));
18711874 } else {
18721875 for (p = property; length > 0; length--) {
18731876 if (actualFormat == 32) {
18911894 return TCL_OK;
18921895 }
18931896
1894 #if !(defined(__WIN32__) || defined(MAC_OSX_TK))
1897 #if !(defined(__WIN32__) || defined(MAC_OSX_TK) || defined(__CYGWIN__))
18951898 /*
18961899 *----------------------------------------------------------------------
18971900 *
19381941 char buf[TCL_INTEGER_SPACE];
19391942
19401943 TkpPrintWindowId(buf, Tk_WindowId(wrapperPtr));
1941 Tcl_SetResult(interp, buf, TCL_VOLATILE);
1944 Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, -1));
19421945 }
19431946 return TCL_OK;
19441947 }
19811984 char *saveInternalPtr,
19821985 int flags)
19831986 {
1984 int objEmpty, length;
1987 int objEmpty;
19851988 char *newStr, *string, *internalPtr;
19861989
19871990 objEmpty = 0;
20022005 } else if ((*value)->bytes != NULL) {
20032006 objEmpty = ((*value)->length == 0);
20042007 } else {
2005 Tcl_GetStringFromObj((*value), &length);
2006 objEmpty = (length == 0);
2008 (void)Tcl_GetString(*value);
2009 objEmpty = ((*value)->length == 0);
20072010 }
20082011
20092012 if ((flags & TK_OPTION_NULL_OK) && objEmpty) {
20102013 *value = NULL;
20112014 } else {
2012 string = Tcl_GetStringFromObj((*value), &length);
2015 string = Tcl_GetString(*value);
20132016 Tcl_UtfToUpper(string);
20142017 if (strcmp(string, "BAD") == 0) {
2015 Tcl_SetResult(interp, "expected good value, got \"BAD\"",
2016 TCL_STATIC);
2018 Tcl_SetObjResult(interp, Tcl_NewStringObj("expected good value, got \"BAD\"", -1));
20172019 return TCL_ERROR;
20182020 }
20192021 }
20202022 if (internalPtr != NULL) {
2021 if ((*value) != NULL) {
2022 string = Tcl_GetStringFromObj((*value), &length);
2023 newStr = ckalloc(length + 1);
2023 if (*value != NULL) {
2024 string = Tcl_GetString(*value);
2025 newStr = ckalloc((*value)->length + 1);
20242026 strcpy(newStr, string);
20252027 } else {
20262028 newStr = NULL;
717717 return TCL_ERROR;
718718 }
719719
720 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
721 &index) != TCL_OK) {
720 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
721 sizeof(char *), "option", 0, &index) != TCL_OK) {
722722 return TCL_ERROR;
723723 }
724724 textPtr->refCount++;
858858
859859 for (i = 2; i < objc-2; i++) {
860860 int value, length;
861 const char *option = Tcl_GetStringFromObj(objv[i], &length);
861 const char *option = Tcl_GetString(objv[i]);
862862 char c;
863863
864 length = objv[i]->length;
864865 if (length < 2 || option[0] != '-') {
865866 goto badOption;
866867 }
12591260
12601261 i = 2;
12611262 if (objc > 3) {
1262 name = Tcl_GetStringFromObj(objv[i], &length);
1263 name = Tcl_GetString(objv[i]);
1264 length = objv[i]->length;
12631265 if (length > 1 && name[0] == '-') {
12641266 if (strncmp("-displaychars", name, (unsigned) length) == 0) {
12651267 i++;
12661268 visible = 1;
1267 name = Tcl_GetStringFromObj(objv[i], &length);
1269 name = Tcl_GetString(objv[i]);
1270 length = objv[i]->length;
12681271 }
12691272 if ((i < objc-1) && (length == 2) && !strcmp("--", name)) {
12701273 i++;
15581561 return TCL_ERROR;
15591562 }
15601563
1561 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
1562 &index) != TCL_OK) {
1564 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
1565 sizeof(char *), "option", 0, &index) != TCL_OK) {
15631566 return TCL_ERROR;
15641567 }
15651568
16631666 return TCL_ERROR;
16641667 }
16651668
1666 if (Tcl_GetIndexFromObj(interp, objv[2], peerOptionStrings,
1667 "peer option", 0, &index) != TCL_OK) {
1669 if (Tcl_GetIndexFromObjStruct(interp, objv[2], peerOptionStrings,
1670 sizeof(char *), "peer option", 0, &index) != TCL_OK) {
16681671 return TCL_ERROR;
16691672 }
16701673
25512554 int *lineAndByteIndex;
25522555 int resetViewCount;
25532556 int pixels[2*PIXEL_CLIENTS];
2554
2555 const char *string = Tcl_GetStringFromObj(stringPtr, &length);
2556
2557 const char *string = Tcl_GetString(stringPtr);
2558
2559 length = stringPtr->length;
25572560 if (sharedTextPtr == NULL) {
25582561 sharedTextPtr = textPtr->sharedTextPtr;
25592562 }
37123715 break;
37133716 }
37143717
3715 if (Tcl_GetIndexFromObj(NULL, objv[i], switchStrings, "switch", 0,
3716 &index) != TCL_OK) {
3718 if (Tcl_GetIndexFromObjStruct(NULL, objv[i], switchStrings,
3719 sizeof(char *), "switch", 0, &index) != TCL_OK) {
37173720 /*
37183721 * Hide the -hidden option, generating the error description with
37193722 * the side effects of T_GIFO.
37203723 */
37213724
3722 (void) Tcl_GetIndexFromObj(interp, objv[i], switchStrings+1,
3723 "switch", 0, &index);
3725 (void) Tcl_GetIndexFromObjStruct(interp, objv[i], switchStrings+1,
3726 sizeof(char *), "switch", 0, &index);
37243727 return TCL_ERROR;
37253728 }
37263729
40924095
40934096 if (lenPtr != NULL) {
40944097 if (searchSpecPtr->exact) {
4095 Tcl_GetStringFromObj(theLine, lenPtr);
4098 (void)Tcl_GetString(theLine);
4099 *lenPtr = theLine->length;
40964100 } else {
40974101 *lenPtr = Tcl_GetCharLength(theLine);
40984102 }
44814485 }
44824486 i += 1;
44834487
4484 if (Tcl_GetIndexFromObj(interp, objv[i], tabOptionStrings,
4485 "tab alignment", 0, &index) != TCL_OK) {
4488 if (Tcl_GetIndexFromObjStruct(interp, objv[i], tabOptionStrings,
4489 sizeof(char *), "tab alignment", 0, &index) != TCL_OK) {
44864490 goto error;
44874491 }
44884492 tabPtr->alignment = (TkTextTabAlign) index;
45594563 if (Tcl_GetString(objv[arg])[0] != '-') {
45604564 break;
45614565 }
4562 if (Tcl_GetIndexFromObj(interp, objv[arg], optStrings, "option", 0,
4563 &index) != TCL_OK) {
4566 if (Tcl_GetIndexFromObjStruct(interp, objv[arg], optStrings,
4567 sizeof(char *), "option", 0, &index) != TCL_OK) {
45644568 return TCL_ERROR;
45654569 }
45664570 switch ((enum opts) index) {
46184622 if (TkTextGetObjIndex(interp, textPtr, objv[arg], &index2) != TCL_OK) {
46194623 return TCL_ERROR;
46204624 }
4621 str = Tcl_GetStringFromObj(objv[arg], &length);
4625 str = Tcl_GetString(objv[arg]);
4626 length = objv[arg]->length;
46224627 if (strncmp(str, "end", (unsigned) length) == 0) {
46234628 atEnd = 1;
46244629 }
49354940 return 0;
49364941 } else {
49374942 int oldStateEpoch = TkBTreeEpoch(textPtr->sharedTextPtr->tree);
4938
4939 Tcl_VarEval(interp, Tcl_GetString(command), " ", Tcl_GetString(tuple),
4940 NULL);
4943 Tcl_DString buf;
4944 int code;
4945
4946 Tcl_DStringInit(&buf);
4947 Tcl_DStringAppend(&buf, Tcl_GetString(command), -1);
4948 Tcl_DStringAppend(&buf, " ", -1);
4949 Tcl_DStringAppend(&buf, Tcl_GetString(tuple), -1);
4950 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
4951 Tcl_DStringFree(&buf);
4952 if (code != TCL_OK) {
4953 Tcl_AddErrorInfo(interp,
4954 "\n (segment dumping command executed by text)");
4955 Tcl_BackgroundException(interp, code);
4956 }
49414957 Tcl_DecrRefCount(tuple);
49424958 return ((textPtr->flags & DESTROYED) ||
49434959 TkBTreeEpoch(textPtr->sharedTextPtr->tree) != oldStateEpoch);
50765092 return TCL_ERROR;
50775093 }
50785094
5079 if (Tcl_GetIndexFromObj(interp, objv[2], editOptionStrings,
5080 "edit option", 0, &index) != TCL_OK) {
5095 if (Tcl_GetIndexFromObjStruct(interp, objv[2], editOptionStrings,
5096 sizeof(char *), "edit option", 0, &index) != TCL_OK) {
50815097 return TCL_ERROR;
50825098 }
50835099
55405556 * it has dual purpose.
55415557 */
55425558
5543 pattern = Tcl_GetStringFromObj(patObj, &matchLength);
5559 pattern = Tcl_GetString(patObj);
5560 matchLength = patObj->length;
55445561 nl = strchr(pattern, '\n');
55455562
55465563 /*
66086625 ObjectIsEmpty(
66096626 Tcl_Obj *objPtr) /* Object to test. May be NULL. */
66106627 {
6611 int length;
6612
66136628 if (objPtr == NULL) {
66146629 return 1;
66156630 }
66166631 if (objPtr->bytes != NULL) {
66176632 return (objPtr->length == 0);
66186633 }
6619 Tcl_GetStringFromObj(objPtr, &length);
6620 return (length == 0);
6634 (void)Tcl_GetString(objPtr);
6635 return (objPtr->length == 0);
66216636 }
66226637
66236638 /*
60636063 if (textPtr->xScrollCmd != NULL) {
60646064 char buf1[TCL_DOUBLE_SPACE+1];
60656065 char buf2[TCL_DOUBLE_SPACE+1];
6066 Tcl_DString buf;
60666067
60676068 buf1[0] = ' ';
60686069 buf2[0] = ' ';
60696070 Tcl_PrintDouble(NULL, first, buf1+1);
60706071 Tcl_PrintDouble(NULL, last, buf2+1);
6071 code = Tcl_VarEval(interp, textPtr->xScrollCmd, buf1, buf2, NULL);
6072 Tcl_DStringInit(&buf);
6073 Tcl_DStringAppend(&buf, textPtr->xScrollCmd, -1);
6074 Tcl_DStringAppend(&buf, buf1, -1);
6075 Tcl_DStringAppend(&buf, buf2, -1);
6076 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
6077 Tcl_DStringFree(&buf);
60726078 if (code != TCL_OK) {
60736079 Tcl_AddErrorInfo(interp,
60746080 "\n (horizontal scrolling command executed by text)");
63456351 if (textPtr->yScrollCmd != NULL) {
63466352 char buf1[TCL_DOUBLE_SPACE+1];
63476353 char buf2[TCL_DOUBLE_SPACE+1];
6354 Tcl_DString buf;
63486355
63496356 buf1[0] = ' ';
63506357 buf2[0] = ' ';
63516358 Tcl_PrintDouble(NULL, first, buf1+1);
63526359 Tcl_PrintDouble(NULL, last, buf2+1);
6353 code = Tcl_VarEval(interp, textPtr->yScrollCmd, buf1, buf2, NULL);
6360 Tcl_DStringInit(&buf);
6361 Tcl_DStringAppend(&buf, textPtr->yScrollCmd, -1);
6362 Tcl_DStringAppend(&buf, buf1, -1);
6363 Tcl_DStringAppend(&buf, buf2, -1);
6364 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
6365 Tcl_DStringFree(&buf);
63546366 if (code != TCL_OK) {
63556367 Tcl_AddErrorInfo(interp,
63566368 "\n (vertical scrolling command executed by text)");
81958207 };
81968208 int index;
81978209
8198 if (Tcl_GetIndexFromObj(interp, objv[2], subcommands, "option", 0,
8199 &index) != TCL_OK) {
8210 if (Tcl_GetIndexFromObjStruct(interp, objv[2], subcommands,
8211 sizeof(char *), "option", 0, &index) != TCL_OK) {
82008212 return TKTEXT_SCROLL_ERROR;
82018213 }
82028214
82158227 Tcl_WrongNumArgs(interp, 3, objv, "number units|pages|pixels");
82168228 return TKTEXT_SCROLL_ERROR;
82178229 }
8218 if (Tcl_GetIndexFromObj(interp, objv[4], units, "argument", 0,
8219 &index) != TCL_OK) {
8230 if (Tcl_GetIndexFromObjStruct(interp, objv[4], units,
8231 sizeof(char *), "argument", 0, &index) != TCL_OK) {
82208232 return TKTEXT_SCROLL_ERROR;
82218233 }
82228234 switch ((enum viewUnits) index) {
137137 Tcl_WrongNumArgs(interp, 2, objv, "option ?arg ...?");
138138 return TCL_ERROR;
139139 }
140 if (Tcl_GetIndexFromObj(interp, objv[2], optionStrings, "option", 0,
141 &idx) != TCL_OK) {
140 if (Tcl_GetIndexFromObjStruct(interp, objv[2], optionStrings,
141 sizeof(char *), "option", 0, &idx) != TCL_OK) {
142142 return TCL_ERROR;
143143 }
144144 switch ((enum opts) idx) {
4747 static void DupTextIndexInternalRep(Tcl_Obj *srcPtr,
4848 Tcl_Obj *copyPtr);
4949 static void FreeTextIndexInternalRep(Tcl_Obj *listPtr);
50 static int SetTextIndexFromAny(Tcl_Interp *interp,
51 Tcl_Obj *objPtr);
5250 static void UpdateStringOfTextIndex(Tcl_Obj *objPtr);
5351
5452 /*
7472 FreeTextIndexInternalRep, /* freeIntRepProc */
7573 DupTextIndexInternalRep, /* dupIntRepProc */
7674 NULL, /* updateStringProc */
77 SetTextIndexFromAny /* setFromAnyProc */
75 NULL /* setFromAnyProc */
7876 };
7977
8078 static void
140138 objPtr->bytes = ckalloc(len + 1);
141139 strcpy(objPtr->bytes, buffer);
142140 objPtr->length = len;
143 }
144
145 static int
146 SetTextIndexFromAny(
147 Tcl_Interp *interp, /* Used for error reporting if not NULL. */
148 Tcl_Obj *objPtr) /* The object to convert. */
149 {
150 Tcl_SetObjResult(interp, Tcl_NewStringObj(
151 "can't convert value to textindex except via"
152 " TkTextGetIndexFromObj API", -1));
153 Tcl_SetErrorCode(interp, "TK", "API_ABUSE", NULL);
154 return TCL_ERROR;
155141 }
156142
157143 /*
117117 Tcl_WrongNumArgs(interp, 2, objv, "option ?arg ...?");
118118 return TCL_ERROR;
119119 }
120 if (Tcl_GetIndexFromObj(interp, objv[2], markOptionStrings, "mark option",
121 0, &optionIndex) != TCL_OK) {
120 if (Tcl_GetIndexFromObjStruct(interp, objv[2], markOptionStrings,
121 sizeof(char *), "mark option", 0, &optionIndex) != TCL_OK) {
122122 return TCL_ERROR;
123123 }
124124
147147 return TCL_ERROR;
148148 }
149149
150 if (Tcl_GetIndexFromObj(interp, objv[2], tagOptionStrings,
151 "tag option", 0, &optionIndex) != TCL_OK) {
150 if (Tcl_GetIndexFromObjStruct(interp, objv[2], tagOptionStrings,
151 sizeof(char *), "tag option", 0, &optionIndex) != TCL_OK) {
152152 return TCL_ERROR;
153153 }
154154
288288 textPtr->sharedTextPtr->bindingTable,
289289 (ClientData) tagPtr->name, Tcl_GetString(objv[4]));
290290 if (command == NULL) {
291 const char *string = Tcl_GetStringResult(interp);
291 const char *string = Tcl_GetString(Tcl_GetObjResult(interp));
292292
293293 /*
294294 * Ignore missing binding errors. This is a special hack that
152152 Tcl_WrongNumArgs(interp, 2, objv, "option ?arg ...?");
153153 return TCL_ERROR;
154154 }
155 if (Tcl_GetIndexFromObj(interp, objv[2], windOptionStrings,
156 "window option", 0, &optionIndex) != TCL_OK) {
155 if (Tcl_GetIndexFromObjStruct(interp, objv[2], windOptionStrings,
156 sizeof(char *), "window option", 0, &optionIndex) != TCL_OK) {
157157 return TCL_ERROR;
158158 }
159159 switch ((enum windOptions) optionIndex) {
910910
911911 if (dsPtr != NULL) {
912912 Tcl_DStringAppend(dsPtr, before, (int) (string-before));
913 code = Tcl_GlobalEval(textPtr->interp, Tcl_DStringValue(dsPtr));
913 code = Tcl_EvalEx(textPtr->interp, Tcl_DStringValue(dsPtr), -1, TCL_EVAL_GLOBAL);
914914 Tcl_DStringFree(dsPtr);
915915 } else {
916 code = Tcl_GlobalEval(textPtr->interp, ewPtr->body.ew.create);
916 code = Tcl_EvalEx(textPtr->interp, ewPtr->body.ew.create, -1, TCL_EVAL_GLOBAL);
917917 }
918918 if (code != TCL_OK) {
919919 Tcl_BackgroundException(textPtr->interp, code);
926926 Tcl_GetString(nameObj), textPtr->tkwin);
927927 Tcl_DecrRefCount(nameObj);
928928 if (ewPtr->body.ew.tkwin == NULL) {
929 Tcl_BackgroundError(textPtr->interp);
929 Tcl_BackgroundException(textPtr->interp, TCL_ERROR);
930930 goto gotWindow;
931931 }
932932
947947 Tk_PathName(textPtr->tkwin)));
948948 Tcl_SetErrorCode(textPtr->interp, "TK", "GEOMETRY", "HIERARCHY",
949949 NULL);
950 Tcl_BackgroundError(textPtr->interp);
950 Tcl_BackgroundException(textPtr->interp, TCL_ERROR);
951951 ewPtr->body.ew.tkwin = NULL;
952952 goto gotWindow;
953953 }
728728 int *intPtr) /* Filled in with number of pages or lines to
729729 * scroll, if any. */
730730 {
731 int length;
732 const char *arg = Tcl_GetStringFromObj(objv[2], &length);
731 const char *arg = Tcl_GetString(objv[2]);
732 size_t length = objv[2]->length;
733733
734734 #define ArgPfxEq(str) \
735735 ((arg[0] == str[0]) && !strncmp(arg, str, (unsigned)length))
752752 return TK_SCROLL_ERROR;
753753 }
754754
755 arg = Tcl_GetStringFromObj(objv[4], &length);
755 arg = Tcl_GetString(objv[4]);
756 length = objv[4]->length;
756757 if (ArgPfxEq("pages")) {
757758 return TK_SCROLL_PAGES;
758759 } else if (ArgPfxEq("units")) {
969970 * Not there. Look in the state map.
970971 */
971972
972 key = Tcl_GetStringFromObj(keyPtr, NULL);
973 key = Tcl_GetString(keyPtr);
973974 for (mPtr = mapPtr; mPtr->strKey != NULL; mPtr++) {
974975 if (strcmp(key, mPtr->strKey) == 0) {
975976 typePtr = keyPtr->typePtr;
992992 * Set variables for the intepreter.
993993 */
994994
995 Tcl_SetVar(interp, "tk_patchLevel", TK_PATCH_LEVEL, TCL_GLOBAL_ONLY);
996 Tcl_SetVar(interp, "tk_version", TK_VERSION, TCL_GLOBAL_ONLY);
995 Tcl_SetVar2(interp, "tk_patchLevel", NULL, TK_PATCH_LEVEL, TCL_GLOBAL_ONLY);
996 Tcl_SetVar2(interp, "tk_version", NULL, TK_VERSION, TCL_GLOBAL_ONLY);
997997
998998 tsdPtr->numMainWindows++;
999999 return tkwin;
28512851 tsdPtr->initialized = 0;
28522852 }
28532853
2854 #if defined(__WIN32__) && !defined(__WIN64__)
2854 #if defined(__WIN32__)
28552855
28562856 static HMODULE tkcygwindll = NULL;
28572857
28972897 tkmainex(argc, argv, appInitProc, interp);
28982898 return 1;
28992899 }
2900 #endif /* __WIN32__ && !__WIN64__ */
2900 #endif /* __WIN32__ */
29012901
29022902 /*
29032903 *----------------------------------------------------------------------
29262926 Tk_Init(
29272927 Tcl_Interp *interp) /* Interpreter to initialize. */
29282928 {
2929 #if defined(__WIN32__) && !defined(__WIN64__)
2929 #if defined(__WIN32__)
29302930 if (tkcygwindll) {
29312931 int (*tkinit)(Tcl_Interp *);
29322932
29352935 return tkinit(interp);
29362936 }
29372937 }
2938 #endif /* __WIN32__ && !__WIN64__ */
2938 #endif /* __WIN32__ */
29392939 return Initialize(interp);
29402940 }
29412941
29992999 * checked at several places to differentiate the two initialisations.
30003000 */
30013001
3002 #if defined(__WIN32__) && !defined(__WIN64__)
3002 #if defined(__WIN32__)
30033003 if (tkcygwindll) {
30043004 int (*tksafeinit)(Tcl_Interp *);
30053005
30093009 return tksafeinit(interp);
30103010 }
30113011 }
3012 #endif /* __WIN32__ && !__WIN64__ */
3012 #endif /* __WIN32__ */
30133013 return Initialize(interp);
30143014 }
30153015
30463046 ThreadSpecificData *tsdPtr;
30473047
30483048 /*
3049 * Ensure that we are getting a compatible version of Tcl. This is really
3050 * only an issue when Tk is loaded dynamically.
3051 */
3052
3053 if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) {
3049 * Ensure that we are getting a compatible version of Tcl.
3050 */
3051
3052 if (Tcl_InitStubs(interp, "8.6", 0) == NULL) {
30543053 return TCL_ERROR;
30553054 }
30563055
31353134
31363135 Tcl_DStringInit(&ds);
31373136 Tcl_DStringAppendElement(&ds, "::safe::TkInit");
3138 Tcl_DStringAppendElement(&ds, Tcl_GetStringResult(master));
3137 Tcl_DStringAppendElement(&ds, Tcl_GetString(Tcl_GetObjResult(master)));
31393138
31403139 /*
31413140 * Step 2 : Eval in the master. The argument is the *reversed* interp
31423141 * path of the slave.
31433142 */
31443143
3145 code = Tcl_Eval(master, Tcl_DStringValue(&ds));
3144 code = Tcl_EvalEx(master, Tcl_DStringValue(&ds), -1, 0);
31463145 if (code != TCL_OK) {
31473146 /*
31483147 * We might want to transfer the error message or not. We don't.
31633162 * changing the code below.
31643163 */
31653164
3166 argString = Tcl_GetStringResult(master);
3165 argString = Tcl_GetString(Tcl_GetObjResult(master));
31673166 } else {
31683167 /*
31693168 * If there is an "argv" variable, get its value, extract out relevant
32783277 */
32793278
32803279 if (geometry != NULL) {
3281 Tcl_SetVar(interp, "geometry", geometry, TCL_GLOBAL_ONLY);
3282 code = Tcl_VarEval(interp, "wm geometry . ", geometry, NULL);
3280 Tcl_DString buf;
3281
3282 Tcl_SetVar2(interp, "geometry", NULL, geometry, TCL_GLOBAL_ONLY);
3283 Tcl_DStringInit(&buf);
3284 Tcl_DStringAppend(&buf, "wm geometry . ", -1);
3285 Tcl_DStringAppend(&buf, geometry, -1);
3286 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
3287 Tcl_DStringFree(&buf);
32833288 if (code != TCL_OK) {
32843289 goto done;
32853290 }
32863291 geometry = NULL;
3287 }
3288
3289 if (Tcl_PkgRequire(interp, "Tcl", TCL_VERSION, 0) == NULL) {
3290 code = TCL_ERROR;
3291 goto done;
32923292 }
32933293
32943294 /*
33423342 * an alternate [tkInit] command before calling Tk_Init().
33433343 */
33443344
3345 code = Tcl_Eval(interp,
3345 code = Tcl_EvalEx(interp,
33463346 "if {[namespace which -command tkInit] eq \"\"} {\n\
33473347 proc tkInit {} {\n\
33483348 global tk_library tk_version tk_patchLevel\n\
33503350 tcl_findLibrary tk $tk_version $tk_patchLevel tk.tcl TK_LIBRARY tk_library\n\
33513351 }\n\
33523352 }\n\
3353 tkInit");
3353 tkInit", -1, 0);
33543354 }
33553355 if (code == TCL_OK) {
33563356 /*
33963396 const char * version,
33973397 int exact)
33983398 {
3399 const char *actualVersion = Tcl_PkgRequire(interp, "Tk", version, 0);
3399 const char *actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, 0, NULL);
34003400
34013401 if (exact && actualVersion) {
34023402 const char *p = version;
34083408 if (count == 1) {
34093409 if (0 != strncmp(version, actualVersion, strlen(version))) {
34103410 /* Construct error message */
3411 Tcl_PkgPresent(interp, "Tk", version, 1);
3411 Tcl_PkgPresentEx(interp, "Tk", version, 1, NULL);
34123412 return NULL;
34133413 }
34143414 } else {
3415 return Tcl_PkgPresent(interp, "Tk", version, 1);
3415 return Tcl_PkgPresentEx(interp, "Tk", version, 1, NULL);
34163416 }
34173417 }
34183418 return actualVersion;
269269 } else {
270270 Tcl_DecrRefCount(cacheObj);
271271 Tcl_SetHashValue(entryPtr, NULL);
272 Tcl_BackgroundError(interp);
272 Tcl_BackgroundException(interp, TCL_ERROR);
273273 return NULL;
274274 }
275275 }
340340 Tcl_SetHashValue(entryPtr, image);
341341
342342 if (!image) {
343 Tcl_BackgroundError(cache->interp);
343 Tcl_BackgroundException(cache->interp, TCL_ERROR);
344344 }
345345
346346 return image;
1212 interp, TTK_VERSION, TTK_STUBS_EPOCH, TTK_STUBS_REVISION)
1313 #else
1414
15 #define Ttk_InitStubs(interp) Tcl_PkgRequire(interp, "Ttk", TTK_VERSION, 0)
15 #define Ttk_InitStubs(interp) Tcl_PkgRequireEx(interp, "Ttk", TTK_VERSION, 0, NULL)
1616
1717 #endif
1818
721721 int width = 0, height = 0;
722722
723723 Tk_GetPixelsFromObj(NULL, tkwin, arrow->sizeObj, &size);
724 Tcl_GetIndexFromObj(NULL, arrow->directionObj, directionStrings,
725 ""/*message*/, 0/*flags*/, &postDirection);
724 Tcl_GetIndexFromObjStruct(NULL, arrow->directionObj, directionStrings,
725 sizeof(char *), ""/*message*/, 0/*flags*/, &postDirection);
726726
727727 /* ... this might not be such a great idea ... */
728728 switch (postDirection) {
12741274 /*
12751275 * Register "default" as a user-loadable theme (for now):
12761276 */
1277 Tcl_PkgProvide(interp, "ttk::theme::default", TTK_VERSION);
1277 Tcl_PkgProvideEx(interp, "ttk::theme::default", TTK_VERSION, NULL);
12781278 }
12791279
12801280 /*EOF*/
651651 {
652652 Tcl_Interp *interp = entryPtr->core.interp;
653653 if (EntryRevalidate(interp, entryPtr, reason) == TCL_ERROR) {
654 Tcl_BackgroundError(interp);
654 Tcl_BackgroundException(interp, TCL_ERROR);
655655 }
656656 }
657657
757757 Tcl_GetString(entryPtr->entry.textVariableObj);
758758 if (textVarName && *textVarName) {
759759 entryPtr->core.flags |= SYNCING_VARIABLE;
760 value = Tcl_SetVar(entryPtr->core.interp, textVarName,
761 value, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG);
760 value = Tcl_SetVar2(entryPtr->core.interp, textVarName,
761 NULL, value, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG);
762762 entryPtr->core.flags &= ~SYNCING_VARIABLE;
763763 if (!value || WidgetDestroyed(&entryPtr->core)) {
764764 return TCL_ERROR;
785785 }
786786
787787 if (entryPtr->core.flags & SYNCING_VARIABLE) {
788 /* Trace was fired due to Tcl_SetVar call in EntrySetValue.
788 /* Trace was fired due to Tcl_SetVar2 call in EntrySetValue.
789789 * Don't do anything.
790790 */
791791 return;
13131313 int *indexPtr) /* Return value */
13141314 {
13151315 # define EntryWidth(e) (Tk_Width(entryPtr->core.tkwin)) /* Not Right */
1316 int length;
1317 const char *string = Tcl_GetStringFromObj(indexObj, &length);
1316 const char *string = Tcl_GetString(indexObj);
1317 size_t length = indexObj->length;
13181318
13191319 if (strncmp(string, "end", length) == 0) {
13201320 *indexPtr = entryPtr->entry.numChars;
16431643 void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
16441644 {
16451645 Entry *entryPtr = recordPtr;
1646 if (objc == 3) {
1647 int newFirst;
1648 if (EntryIndex(interp, entryPtr, objv[2], &newFirst) != TCL_OK) {
1649 return TCL_ERROR;
1650 }
1651 TtkScrollTo(entryPtr->entry.xscrollHandle, newFirst);
1652 return TCL_OK;
1653 }
16461654 return TtkScrollviewCommand(interp, objc, objv, entryPtr->entry.xscrollHandle);
16471655 }
16481656
3535
3636 /* TtkGetImageSpec --
3737 * Constructs a Ttk_ImageSpec * from a Tcl_Obj *.
38 * Result must be released using TtkFreeImageSpec.
38 * Result must be released using TtkFreeImageSpec.
3939 *
4040 * TODO: Need a variant of this that takes a user-specified ImageChanged proc
4141 */
363363 }
364364 #endif
365365
366 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings,
367 "option", 0, &option) != TCL_OK) {
366 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
367 sizeof(char *), "option", 0, &option) != TCL_OK) {
368368 goto error;
369369 }
370370
2020 Tcl_Interp *interp, Tcl_Obj *objPtr, int *statePtr)
2121 {
2222 *statePtr = TTK_BUTTON_DEFAULT_DISABLED;
23 return Tcl_GetIndexFromObj(interp, objPtr,
24 ttkDefaultStrings, "default state", 0, statePtr);
23 return Tcl_GetIndexFromObjStruct(interp, objPtr, ttkDefaultStrings,
24 sizeof(char *), "default state", 0, statePtr);
2525 }
2626
2727 /*
3737 Tcl_Interp *interp, Tcl_Obj *objPtr, int *statePtr)
3838 {
3939 *statePtr = TTK_COMPOUND_NONE;
40 return Tcl_GetIndexFromObj(interp, objPtr,
41 ttkCompoundStrings, "compound layout", 0, statePtr);
40 return Tcl_GetIndexFromObjStruct(interp, objPtr, ttkCompoundStrings,
41 sizeof(char *), "compound layout", 0, statePtr);
4242 }
4343
4444 /*
5353 Tcl_Interp *interp, Tcl_Obj *objPtr, int *resultPtr)
5454 {
5555 *resultPtr = TTK_ORIENT_HORIZONTAL;
56 return Tcl_GetIndexFromObj(interp, objPtr,
57 ttkOrientStrings, "orientation", 0, resultPtr);
56 return Tcl_GetIndexFromObjStruct(interp, objPtr, ttkOrientStrings,
57 sizeof(char *), "orientation", 0, resultPtr);
5858 }
5959
6060 /*
6464 static const char *ttkStateStrings[] = {
6565 "normal", "readonly", "disabled", "active", NULL
6666 };
67 enum {
67 enum {
6868 TTK_COMPAT_STATE_NORMAL,
6969 TTK_COMPAT_STATE_READONLY,
7070 TTK_COMPAT_STATE_DISABLED,
7171 TTK_COMPAT_STATE_ACTIVE
7272 };
7373
74 /* TtkCheckStateOption --
74 /* TtkCheckStateOption --
7575 * Handle -state compatibility option.
7676 *
77 * NOTE: setting -state disabled / -state enabled affects the
78 * widget state, but the internal widget state does *not* affect
77 * NOTE: setting -state disabled / -state enabled affects the
78 * widget state, but the internal widget state does *not* affect
7979 * the value of the -state option.
8080 * This option is present for compatibility only.
8181 */
8585 unsigned all = TTK_STATE_DISABLED|TTK_STATE_READONLY|TTK_STATE_ACTIVE;
8686 # define SETFLAGS(f) TtkWidgetChangeState(corePtr, f, all^f)
8787
88 (void)Tcl_GetIndexFromObj(NULL,objPtr,ttkStateStrings,"",0,&stateOption);
88 (void)Tcl_GetIndexFromObjStruct(NULL, objPtr, ttkStateStrings,
89 sizeof(char *), "", 0, &stateOption);
8990 switch (stateOption) {
9091 case TTK_COMPAT_STATE_NORMAL:
9192 default:
173174 * type name dbName dbClass default objOffset intOffset flags clientData mask
174175 */
175176
176 /* public */
177 /* public */
177178 Tk_OptionSpec ttkCoreOptionSpecs[] =
178179 {
179180 {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", NULL,
635635 if (optName[0] != '-')
636636 break;
637637
638 if (Tcl_GetIndexFromObj(
639 interp, objv[i], optStrings, "option", 0, &option)
638 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optStrings,
639 sizeof(char *), "option", 0, &option)
640640 != TCL_OK)
641641 {
642642 goto error;
652652
653653 switch (option) {
654654 case OP_SIDE: /* <<NOTE-PACKSIDE>> */
655 if (Tcl_GetIndexFromObj(interp, objv[i], packSideStrings,
656 "side", 0, &value) != TCL_OK)
655 if (Tcl_GetIndexFromObjStruct(interp, objv[i], packSideStrings,
656 sizeof(char *), "side", 0, &value) != TCL_OK)
657657 {
658658 goto error;
659659 }
236236 ckfree(mgr->slaves);
237237 }
238238
239 Tk_CancelIdleCall(ManagerIdleProc, mgr);
239 Tcl_CancelIdleCall(ManagerIdleProc, mgr);
240240
241241 ckfree(mgr);
242242 }
10571057
10581058 if ( Tcl_GetIntFromObj(interp, objv[objc-2], &x) != TCL_OK
10591059 || Tcl_GetIntFromObj(interp, objv[objc-1], &y) != TCL_OK
1060 || (objc == 5 &&
1061 Tcl_GetIndexFromObj(interp, objv[2], whatTable, "option", 0, &what)
1062 != TCL_OK)
1060 || (objc == 5 && Tcl_GetIndexFromObjStruct(interp, objv[2], whatTable,
1061 sizeof(char *), "option", 0, &what) != TCL_OK)
10631062 ) {
10641063 return TCL_ERROR;
10651064 }
730730
731731 if ( Tcl_GetIntFromObj(interp, objv[objc-2], &x) != TCL_OK
732732 || Tcl_GetIntFromObj(interp, objv[objc-1], &y) != TCL_OK
733 || (objc == 5 &&
734 Tcl_GetIndexFromObj(interp, objv[2], whatTable, "option", 0, &what)
735 != TCL_OK)
733 || (objc == 5 && Tcl_GetIndexFromObjStruct(interp, objv[2], whatTable,
734 sizeof(char *), "option", 0, &what) != TCL_OK)
736735 ) {
737736 return TCL_ERROR;
738737 }
66 *
77 * Scrollable interface:
88 *
9 * + 'first' is controlled by [xy]view widget command
9 * + 'first' is controlled by [xy]view widget command
1010 * and other scrolling commands like 'see';
1111 * + 'total' depends on widget contents;
1212 * + 'last' depends on first, total, and widget size.
1515 *
1616 * 1. User adjusts scrollbar, scrollbar widget calls its -command
1717 * 2. Scrollbar -command invokes the scrollee [xy]view widget method
18 * 3. TtkScrollviewCommand calls TtkScrollTo(), which updates
18 * 3. TtkScrollviewCommand calls TtkScrollTo(), which updates
1919 * 'first' and schedules a redisplay.
20 * 4. Once the scrollee knows 'total' and 'last' (typically in
21 * the LayoutProc), call TtkScrolled(h,first,last,total) to
20 * 4. Once the scrollee knows 'total' and 'last' (typically in
21 * the LayoutProc), call TtkScrolled(h,first,last,total) to
2222 * synchronize the scrollbar.
2323 * 5. The scrollee -[xy]scrollcommand is called (in an idle callback)
2424 * 6. Which calls the scrollbar 'set' method and redisplays the scrollbar.
2525 *
26 * If the scrollee has internal scrolling (e.g., a 'see' method),
26 * If the scrollee has internal scrolling (e.g., a 'see' method),
2727 * it should TtkScrollTo() directly (step 2).
2828 *
2929 * If the widget value changes, it should call TtkScrolled() (step 4).
3333 * TtkScrollbarUpdateRequired, which will invoke step (5) (@@@ Fix this)
3434 */
3535
36 #include <tk.h>
36 #include <tkInt.h>
3737 #include "ttkTheme.h"
3838 #include "ttkWidget.h"
3939
7777 char arg1[TCL_DOUBLE_SPACE + 2];
7878 char arg2[TCL_DOUBLE_SPACE + 2];
7979 int code;
80 Tcl_DString buf;
8081
8182 h->flags &= ~SCROLL_UPDATE_REQUIRED;
8283
8788 arg1[0] = arg2[0] = ' ';
8889 Tcl_PrintDouble(interp, (double)s->first / s->total, arg1+1);
8990 Tcl_PrintDouble(interp, (double)s->last / s->total, arg2+1);
91 Tcl_DStringInit(&buf);
92 Tcl_DStringAppend(&buf, s->scrollCmd, -1);
93 Tcl_DStringAppend(&buf, arg1, -1);
94 Tcl_DStringAppend(&buf, arg2, -1);
9095
9196 Tcl_Preserve(corePtr);
92 code = Tcl_VarEval(interp, s->scrollCmd, arg1, arg2, NULL);
97 code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, TCL_EVAL_GLOBAL);
98 Tcl_DStringFree(&buf);
9399 if (WidgetDestroyed(corePtr)) {
94100 Tcl_Release(corePtr);
95101 return TCL_ERROR;
123129 Tcl_Preserve((ClientData) interp);
124130 code = UpdateScrollbar(interp, h);
125131 if (code == TCL_ERROR && !Tcl_InterpDeleted(interp)) {
126 Tcl_BackgroundError(interp);
132 Tcl_BackgroundException(interp, code);
127133 }
128134 Tcl_Release((ClientData) interp);
129135 }
134140 void TtkScrolled(ScrollHandle h, int first, int last, int total)
135141 {
136142 Scrollable *s = h->scrollPtr;
137
143
138144 /* Sanity-check inputs:
139145 */
140146 if (total <= 0) {
507507 static char ThemeChangedScript[] = "ttk::ThemeChanged";
508508 StylePackageData *pkgPtr = clientData;
509509
510 if (Tcl_GlobalEval(pkgPtr->interp, ThemeChangedScript) != TCL_OK) {
511 Tcl_BackgroundError(pkgPtr->interp);
510 int code = Tcl_EvalEx(pkgPtr->interp, ThemeChangedScript, -1, TCL_EVAL_GLOBAL);
511 if (code != TCL_OK) {
512 Tcl_BackgroundException(pkgPtr->interp, code);
512513 }
513514 pkgPtr->themeChangePending = 0;
514515 }
13921393
13931394 for (i=4; i < objc; i +=2) {
13941395 int option;
1395 if (Tcl_GetIndexFromObj(
1396 interp, objv[i], optStrings, "option", 0, &option) != TCL_OK)
1396 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optStrings,
1397 sizeof(char *), "option", 0, &option) != TCL_OK)
13971398 {
13981399 return TCL_ERROR;
13991400 }
16721673 return Ttk_InvokeEnsemble(StyleEnsemble, 1, clientData,interp,objc,objv);
16731674 }
16741675
1675 MODULE_SCOPE
1676 MODULE_SCOPE
16761677 int Ttk_InvokeEnsemble( /* Run an ensemble command */
16771678 const Ttk_Ensemble *ensemble, int cmdIndex,
16781679 void *clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
5353 ckfree((ClientData)tracePtr);
5454 return NULL;
5555 }
56 Tcl_TraceVar(interp, name,
56 Tcl_TraceVar2(interp, name, NULL,
5757 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
5858 VarTraceProc, clientData);
5959 tracePtr->callback(tracePtr->clientData, NULL);
9393 h->clientData = clientData;
9494 h->callback = callback;
9595
96 status = Tcl_TraceVar(interp, Tcl_GetString(varnameObj),
97 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
96 status = Tcl_TraceVar2(interp, Tcl_GetString(varnameObj),
97 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
9898 VarTraceProc, (ClientData)h);
9999
100100 if (status != TCL_OK) {
149149 h->interp = NULL;
150150 return;
151151 }
152 Tcl_UntraceVar(h->interp, Tcl_GetString(h->varnameObj),
153 TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
152 Tcl_UntraceVar2(h->interp, Tcl_GetString(h->varnameObj),
153 NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
154154 VarTraceProc, (ClientData)h);
155155 Tcl_DecrRefCount(h->varnameObj);
156156 ckfree(h);
339339
340340 for (i = 0; i < objc; ++i) {
341341 int index;
342 if (TCL_OK != Tcl_GetIndexFromObj(
343 interp, objv[i], table, "value", TCL_EXACT, &index))
342 if (TCL_OK != Tcl_GetIndexFromObjStruct(interp, objv[i], table,
343 sizeof(char *), "value", TCL_EXACT, &index))
344344 {
345345 return TCL_ERROR;
346346 }
22862286 return TCL_ERROR;
22872287 }
22882288
2289 if ( Tcl_GetIndexFromObj(interp, objv[2],
2290 submethodStrings, "command", TCL_EXACT, &submethod) != TCL_OK
2289 if (Tcl_GetIndexFromObjStruct(interp, objv[2], submethodStrings,
2290 sizeof(char *), "command", TCL_EXACT, &submethod) != TCL_OK
22912291 || Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK
22922292 || Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK
22932293 ) {
29542954 return TCL_ERROR;
29552955 }
29562956
2957 if (Tcl_GetIndexFromObj(interp, objv[2], selopStrings,
2958 "selection operation", 0, &selop) != TCL_OK) {
2957 if (Tcl_GetIndexFromObjStruct(interp, objv[2], selopStrings,
2958 sizeof(char *), "selection operation", 0, &selop) != TCL_OK) {
29592959 return TCL_ERROR;
29602960 }
29612961
31693169 AddTag(items[i], tag);
31703170 }
31713171
3172 TtkRedisplayWidget(&tv->core);
3173
31723174 return TCL_OK;
31733175 }
31743176
32133215 item=NextPreorder(item);
32143216 }
32153217 }
3218
3219 TtkRedisplayWidget(&tv->core);
3220
32163221 return TCL_OK;
32173222 }
32183223
197197 * Final cleanup for widget; called via Tcl_EventuallyFree().
198198 */
199199 static void
200 FreeWidget(char *memPtr)
200 FreeWidget(void *memPtr)
201201 {
202202 ckfree(memPtr);
203203 }
230230 /* NB: this can reenter the interpreter via a command traces */
231231 Tcl_DeleteCommandFromToken(corePtr->interp, cmd);
232232 }
233 Tcl_EventuallyFree(corePtr, FreeWidget);
233 Tcl_EventuallyFree(corePtr, (Tcl_FreeProc *) FreeWidget);
234234 }
235235
236236 /*
765765 }
766766 if (objc == 5) {
767767 /* $w identify element $x $y */
768 if (Tcl_GetIndexFromObj(interp,objv[2],whatTable,"option",0,&what)
769 != TCL_OK)
768 if (Tcl_GetIndexFromObjStruct(interp, objv[2], whatTable,
769 sizeof(char *), "option", 0, &what) != TCL_OK)
770770 {
771771 return TCL_ERROR;
772772 }
106106 tk::CheckRadioInvoke %W
107107 }
108108 bind Radiobutton <space> {
109 tk::CheckRadioInvoke %W
110 }
111 bind Button <<Invoke>> {
112 tk::ButtonInvoke %W
113 }
114 bind Checkbutton <<Invoke>> {
115 tk::CheckRadioInvoke %W
116 }
117 bind Radiobutton <<Invoke>> {
109118 tk::CheckRadioInvoke %W
110119 }
111120
139139 }
140140 }
141141 bind Listbox <space> {
142 tk::ListboxBeginSelect %W [%W index active]
143 }
144 bind Listbox <<Invoke>> {
142145 tk::ListboxBeginSelect %W [%W index active]
143146 }
144147 bind Listbox <Select> {
105105 tk::MbPost %W
106106 tk::MenuFirstEntry [%W cget -menu]
107107 }
108 bind Menubutton <<Invoke>> {
109 tk::MbPost %W
110 tk::MenuFirstEntry [%W cget -menu]
111 }
108112
109113 # Must set focus when mouse enters a menu, in order to allow
110114 # mixed-mode processing using both the mouse and the keyboard.
140144 tk::MenuInvoke %W 1
141145 }
142146 bind Menu <space> {
147 tk::MenuInvoke %W 0
148 }
149 bind Menu <<Invoke>> {
143150 tk::MenuInvoke %W 0
144151 }
145152 bind Menu <Return> {
359359 # Macintosh only bindings:
360360
361361 if {[tk windowingsystem] eq "aqua"} {
362 bind Text <<Paste>> {
362 bind Text <Control-v> {
363363 tk::TextScrollPages %W 1
364364 }
365365
1212 # Insist on running with compatible version of Tcl
1313 package require Tcl 8.6
1414 # Verify that we have Tk binary and script components from the same release
15 package require -exact Tk 8.6.0
15 package require -exact Tk 8.6.1
1616
1717 # Create a ::tk namespace
1818 namespace eval ::tk {
308308 set op add
309309 }
310310
311 event $op <<Cut>> <Control-Key-w> <Shift-Key-Delete>
312 event $op <<Copy>> <Meta-Key-w> <Control-Key-Insert>
313 event $op <<Paste>> <Control-Key-y> <Shift-Key-Insert>
311 event $op <<Cut>> <Control-Key-w> <Control-Lock-Key-W> <Shift-Key-Delete>
312 event $op <<Copy>> <Meta-Key-w> <Meta-Lock-Key-W> <Control-Key-Insert>
313 event $op <<Paste>> <Control-Key-y> <Control-Lock-Key-Y> <Shift-Key-Insert>
314314 event $op <<Undo>> <Control-underscore>
315 event $op <<PrevChar>> <Control-Key-b> <Control-Lock-Key-B>
316 event $op <<NextChar>> <Control-Key-f> <Control-Lock-Key-F>
317 event $op <<PrevLine>> <Control-Key-p> <Control-Lock-Key-P>
318 event $op <<NextLine>> <Control-Key-n> <Control-Lock-Key-N>
319 event $op <<LineStart>> <Control-Key-a> <Control-Lock-Key-A>
320 event $op <<LineEnd>> <Control-Key-e> <Control-Lock-Key-E>
321 event $op <<SelectPrevChar>> <Control-Key-B> <Control-Lock-Key-b>
322 event $op <<SelectNextChar>> <Control-Key-F> <Control-Lock-Key-f>
323 event $op <<SelectPrevLine>> <Control-Key-P> <Control-Lock-Key-p>
324 event $op <<SelectNextLine>> <Control-Key-N> <Control-Lock-Key-n>
325 event $op <<SelectLineStart>> <Control-Key-A> <Control-Lock-Key-a>
326 event $op <<SelectLineEnd>> <Control-Key-E> <Control-Lock-Key-e>
315327 }
316328
317329 #----------------------------------------------------------------------
366378 event add <<Undo>> <Control-Key-z> <Control-Lock-Key-Z>
367379 event add <<Redo>> <Control-Key-Z> <Control-Lock-Key-z>
368380 event add <<ContextMenu>> <Button-3>
369 if {[info exists tcl_platform(os)] && $tcl_platform(os) eq "Darwin"} {
370 event add <<ContextMenu>> <Button-2>
371 }
381 # On Darwin/Aqua, buttons from left to right are 1,3,2. On Darwin/X11 with recent
382 # XQuartz as the X server, they are 1,2,3; other X servers may differ.
372383
373384 event add <<SelectAll>> <Control-Key-slash>
374385 event add <<SelectNone>> <Control-Key-backslash>
375 event add <<NextChar>> <Right> <Control-Key-f> <Control-Lock-Key-F>
376 event add <<SelectNextChar>> <Shift-Right> <Control-Key-F> <Control-Lock-Key-f>
377 event add <<PrevChar>> <Left> <Control-Key-b> <Control-Lock-Key-B>
378 event add <<SelectPrevChar>> <Shift-Left> <Control-Key-B> <Control-Lock-Key-b>
386 event add <<NextChar>> <Right>
387 event add <<SelectNextChar>> <Shift-Right>
388 event add <<PrevChar>> <Left>
389 event add <<SelectPrevChar>> <Shift-Left>
379390 event add <<NextWord>> <Control-Right>
380391 event add <<SelectNextWord>> <Control-Shift-Right>
381392 event add <<PrevWord>> <Control-Left>
382393 event add <<SelectPrevWord>> <Control-Shift-Left>
383 event add <<LineStart>> <Home> <Control-Key-a> <Control-Lock-Key-A>
384 event add <<SelectLineStart>> <Shift-Home> <Control-Key-A> <Control-Lock-Key-a>
385 event add <<LineEnd>> <End> <Control-Key-e> <Control-Lock-Key-E>
386 event add <<SelectLineEnd>> <Shift-End> <Control-Key-E> <Control-Lock-Key-e>
387 event add <<PrevLine>> <Up> <Control-Key-p> <Control-Lock-Key-P>
388 event add <<NextLine>> <Down> <Control-Key-n> <Control-Lock-Key-N>
389 event add <<SelectPrevLine>> <Shift-Up> <Control-Key-P> <Control-Lock-Key-p>
390 event add <<SelectNextLine>> <Shift-Down> <Control-Key-N> <Control-Lock-Key-n>
394 event add <<LineStart>> <Home>
395 event add <<SelectLineStart>> <Shift-Home>
396 event add <<LineEnd>> <End>
397 event add <<SelectLineEnd>> <Shift-End>
398 event add <<PrevLine>> <Up>
399 event add <<NextLine>> <Down>
400 event add <<SelectPrevLine>> <Shift-Up>
401 event add <<SelectNextLine>> <Shift-Down>
391402 event add <<PrevPara>> <Control-Up>
392403 event add <<NextPara>> <Control-Down>
393404 event add <<SelectPrevPara>> <Control-Shift-Up>
394 event add <<SelectPrevPara>> <Control-Shift-Down>
405 event add <<SelectNextPara>> <Control-Shift-Down>
395406 event add <<ToggleSelection>> <Control-ButtonPress-1>
396407
397408 # Some OS's define a goofy (as in, not <Shift-Tab>) keysym that is
440451 event add <<PrevPara>> <Control-Up>
441452 event add <<NextPara>> <Control-Down>
442453 event add <<SelectPrevPara>> <Control-Shift-Up>
443 event add <<SelectPrevPara>> <Control-Shift-Down>
454 event add <<SelectNextPara>> <Control-Shift-Down>
444455 event add <<ToggleSelection>> <Control-ButtonPress-1>
445456 }
446457 "aqua" {
447 event add <<Cut>> <Command-Key-x> <Key-F2> <Control-Lock-Key-X>
448 event add <<Copy>> <Command-Key-c> <Key-F3> <Control-Lock-Key-C>
449 event add <<Paste>> <Command-Key-v> <Key-F4> <Control-Lock-Key-V>
450 event add <<PasteSelection>> <ButtonRelease-2>
458 event add <<Cut>> <Command-Key-x> <Key-F2> <Command-Lock-Key-X>
459 event add <<Copy>> <Command-Key-c> <Key-F3> <Command-Lock-Key-C>
460 event add <<Paste>> <Command-Key-v> <Key-F4> <Command-Lock-Key-V>
461 event add <<PasteSelection>> <ButtonRelease-3>
451462 event add <<Clear>> <Clear>
452463 event add <<ContextMenu>> <Button-2>
453464
455466 # See http://support.apple.com/kb/HT1343
456467 event add <<SelectAll>> <Command-Key-a>
457468 event add <<SelectNone>> <Option-Command-Key-a>
458 event add <<Undo>> <Command-Key-z> <Control-Lock-Key-Z>
459 event add <<Redo>> <Command-Key-Z> <Control-Lock-Key-z>
469 event add <<Undo>> <Command-Key-z> <Command-Lock-Key-Z>
470 event add <<Redo>> <Shift-Command-Key-z> <Shift-Command-Lock-Key-z>
460471 event add <<NextChar>> <Right> <Control-Key-f> <Control-Lock-Key-F>
461 event add <<SelectNextChar>> <Shift-Right> <Control-Key-F> <Control-Lock-Key-f>
472 event add <<SelectNextChar>> <Shift-Right> <Shift-Control-Key-F> <Shift-Control-Lock-Key-F>
462473 event add <<PrevChar>> <Left> <Control-Key-b> <Control-Lock-Key-B>
463 event add <<SelectPrevChar>> <Shift-Left> <Control-Key-B> <Control-Lock-Key-b>
474 event add <<SelectPrevChar>> <Shift-Left> <Shift-Control-Key-B> <Shift-Control-Lock-Key-B>
464475 event add <<NextWord>> <Option-Right>
465476 event add <<SelectNextWord>> <Shift-Option-Right>
466477 event add <<PrevWord>> <Option-Left>
467478 event add <<SelectPrevWord>> <Shift-Option-Left>
468479 event add <<LineStart>> <Home> <Command-Left> <Control-Key-a> <Control-Lock-Key-A>
469 event add <<SelectLineStart>> <Shift-Home> <Shift-Command-Left> <Control-Key-A> <Control-Lock-Key-a>
480 event add <<SelectLineStart>> <Shift-Home> <Shift-Command-Left> <Shift-Control-Key-A> <Shift-Control-Lock-Key-A>
470481 event add <<LineEnd>> <End> <Command-Right> <Control-Key-e> <Control-Lock-Key-E>
471 event add <<SelectLineEnd>> <Shift-End> <Shift-Command-Right> <Control-Key-E> <Control-Lock-Key-e>
482 event add <<SelectLineEnd>> <Shift-End> <Shift-Command-Right> <Shift-Control-Key-E> <Shift-Control-Lock-Key-E>
472483 event add <<PrevLine>> <Up> <Control-Key-p> <Control-Lock-Key-P>
473 event add <<SelectPrevLine>> <Shift-Up> <Control-Key-P> <Control-Lock-Key-p>
484 event add <<SelectPrevLine>> <Shift-Up> <Shift-Control-Key-P> <Shift-Control-Lock-Key-P>
474485 event add <<NextLine>> <Down> <Control-Key-n> <Control-Lock-Key-N>
475 event add <<SelectNextLine>> <Shift-Down> <Control-Key-N> <Control-Lock-Key-n>
486 event add <<SelectNextLine>> <Shift-Down> <Shift-Control-Key-N> <Shift-Control-Lock-Key-N>
476487 # Not official, but logical extensions of above. Also derived from
477488 # bindings present in MS Word on OSX.
478489 event add <<PrevPara>> <Option-Up>
479490 event add <<NextPara>> <Option-Down>
480491 event add <<SelectPrevPara>> <Shift-Option-Up>
481 event add <<SelectPrevPara>> <Shift-Option-Down>
492 event add <<SelectNextPara>> <Shift-Option-Down>
482493 event add <<ToggleSelection>> <Command-ButtonPress-1>
483494 }
484495 }
140140
141141 ## Additional emacs-like bindings:
142142 #
143 bind TEntry <Control-Key-b> { ttk::entry::Move %W prevchar }
144 bind TEntry <Control-Key-d> { ttk::entry::Delete %W }
145 bind TEntry <Control-Key-f> { ttk::entry::Move %W nextchar }
143 bind TEntry <Control-Key-d> { ttk::entry::Delete %W }
146144 bind TEntry <Control-Key-h> { ttk::entry::Backspace %W }
147145 bind TEntry <Control-Key-k> { %W delete insert end }
148146
1717 return
1818 }
1919
20 $pb step $stepsize
21
2220 set Timers($pb) [after $steptime \
2321 [list ttk::progressbar::Autoincrement $pb $steptime $stepsize] ]
22
23 $pb step $stepsize
2424 }
2525
2626 # ttk::progressbar::start --
4141 switch -glob -- [$w identify $x $y] {
4242 *track -
4343 *trough {
44 set inc [expr {([$w get $x $y] <= [$w get]) ? -1 : 1}]
44 set inc [expr {([$w get $x $y] <= [$w get]) ^ ([$w cget -from] > [$w cget -to]) ? -1 : 1}]
4545 ttk::Repeatedly Increment $w $inc
4646 }
4747 *slider {
8686
8787 proc ttk::scale::Increment {w delta} {
8888 if {![winfo exists $w]} return
89 if {([$w cget -from] > [$w cget -to])} {
90 set delta [expr {-$delta}]
91 }
8992 $w set [expr {[$w get] + $delta}]
9093 }
1818 http://wiki.tcl.tk/_/ref?N=3753
1919 http://wiki.tcl.tk/_/ref?N=8361
2020
21 - Please report bugs with Tcl or Tk on Mac OS X to the sourceforge bug trackers:
22 http://tcl.sourceforge.net/
21 - Please report bugs with Tk on Mac OS X to the tracker:
22 http://core.tcl.tk/tk/reportlist
2323
2424 2. Using Tcl/Tk on Mac OS X
2525 ---------------------------
307307 # include <unistd.h>
308308 #endif"
309309
310 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TCL_VERSION TCL_PATCH_LEVEL TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCLSH_PROG BUILD_TCLSH MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR ac_ct_AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS LDAIX_SRC CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB DLL_INSTALL_DIR INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT XFT_CFLAGS XFT_LIBS UNIX_FONT_OBJS TK_VERSION TK_MAJOR_VERSION TK_MINOR_VERSION TK_PATCH_LEVEL TK_YEAR TK_LIB_FILE TK_LIB_FLAG TK_LIB_SPEC TK_STUB_LIB_FILE TK_STUB_LIB_FLAG TK_STUB_LIB_SPEC TK_STUB_LIB_PATH TK_INCLUDE_SPEC TK_BUILD_STUB_LIB_SPEC TK_BUILD_STUB_LIB_PATH TK_SRC_DIR TK_SHARED_BUILD LD_LIBRARY_PATH_VAR TK_BUILD_LIB_SPEC WISH_BUILD_LIB_SPEC TCL_STUB_FLAGS XINCLUDES XLIBSW LOCALES TK_WINDOWINGSYSTEM TK_PKG_DIR TK_LIBRARY LIB_RUNTIME_DIR PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_WISH_LIBS EXTRA_AQUA_OBJS EXTRA_AQUA_SRCS CFBUNDLELOCALIZATIONS MACOSX_SRC_DIR TK_RSRC_FILE WISH_RSRC_FILE LIB_RSRC_FILE APP_RSRC_FILE REZ REZ_FLAGS LTLIBOBJS'
310 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TCL_VERSION TCL_PATCH_LEVEL TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCLSH_PROG BUILD_TCLSH MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR ac_ct_AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS LDAIX_SRC CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB DLL_INSTALL_DIR INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT XFT_CFLAGS XFT_LIBS UNIX_FONT_OBJS TK_VERSION TK_MAJOR_VERSION TK_MINOR_VERSION TK_PATCH_LEVEL TK_YEAR TK_LIB_FILE TK_LIB_FLAG TK_LIB_SPEC TK_STUB_LIB_FILE TK_STUB_LIB_FLAG TK_STUB_LIB_SPEC TK_STUB_LIB_PATH TK_INCLUDE_SPEC TK_BUILD_STUB_LIB_SPEC TK_BUILD_STUB_LIB_PATH TK_SRC_DIR TK_SHARED_BUILD LD_LIBRARY_PATH_VAR TK_BUILD_LIB_SPEC TCL_STUB_FLAGS XINCLUDES XLIBSW LOCALES TK_WINDOWINGSYSTEM TK_PKG_DIR TK_LIBRARY LIB_RUNTIME_DIR PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_WISH_LIBS CFBUNDLELOCALIZATIONS TK_RSRC_FILE WISH_RSRC_FILE LIB_RSRC_FILE APP_RSRC_FILE REZ REZ_FLAGS LTLIBOBJS'
311311 ac_subst_files=''
312312
313313 # Initialize some variables set by options.
860860 --enable-load allow dynamic loading and "load" command (default:
861861 on)
862862 --enable-symbols build with debugging symbols (default: off)
863 --enable-aqua=yes|carbon|no
864 use Aqua windowingsystem on Mac OS X (default: no)
863 --enable-aqua=yes|no use Aqua windowingsystem on Mac OS X (default: no)
864 --enable-xft use freetype/fontconfig/xft (default: on)
865865 --enable-xss use XScreenSaver for activity timer (default: on)
866 --enable-xft use freetype/fontconfig/xft (default: on)
867866 --enable-framework package shared libraries in MacOSX frameworks
868867 (default: off)
869868
13461345 TK_VERSION=8.6
13471346 TK_MAJOR_VERSION=8
13481347 TK_MINOR_VERSION=6
1349 TK_PATCH_LEVEL=".0"
1348 TK_PATCH_LEVEL=".1"
13501349 VERSION=${TK_VERSION}
13511350 LOCALES="cs da de el en en_gb eo es fr hu it nl pl pt ru sv"
13521351
40434042 # Does the pthread-implementation provide
40444043 # 'pthread_attr_setstacksize' ?
40454044
4046 for ac_func in pthread_attr_setstacksize
4045 ac_saved_libs=$LIBS
4046 LIBS="$LIBS $THREADS_LIBS"
4047
4048
4049 for ac_func in pthread_attr_setstacksize pthread_atfork
40474050 do
40484051 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
40494052 echo "$as_me:$LINENO: checking for $ac_func" >&5
41444147 fi
41454148 done
41464149
4150 LIBS=$ac_saved_libs
41474151 else
41484152 TCL_THREADS=0
41494153 fi
44674471
44684472 cat >>confdefs.h <<\_ACEOF
44694473 #define MODULE_SCOPE extern __attribute__((__visibility__("hidden")))
4474 _ACEOF
4475
4476
4477 cat >>confdefs.h <<\_ACEOF
4478 #define HAVE_HIDDEN 1
44704479 _ACEOF
44714480
44724481
49164925 SHLIB_CFLAGS=""
49174926 SHLIB_LD='${CC} -shared'
49184927 SHLIB_SUFFIX=".dll"
4919 DL_OBJS="tclLoadDl.o tclWinError.o"
4928 DL_OBJS="tclLoadDl.o"
4929 PLAT_OBJS='${CYGWIN_OBJS}'
4930 PLAT_SRCS='${CYGWIN_SRCS}'
49204931 DL_LIBS="-ldl"
49214932 CC_SEARCH_FLAGS=""
49224933 LD_SEARCH_FLAGS=""
54305441 fi
54315442
54325443 ;;
5433 Linux*)
5444 Linux*|GNU*|NetBSD-Debian)
54345445 SHLIB_CFLAGS="-fPIC"
54355446 SHLIB_SUFFIX=".so"
54365447
55335544
55345545 if test x"${USE_COMPAT}" != x; then
55355546 CFLAGS="$CFLAGS -fno-inline"
5536 fi
5537
5538 ;;
5539 GNU*)
5540 SHLIB_CFLAGS="-fPIC"
5541 SHLIB_SUFFIX=".so"
5542
5543 SHLIB_LD='${CC} -shared'
5544 DL_OBJS=""
5545 DL_LIBS="-ldl"
5546 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
5547 CC_SEARCH_FLAGS=""
5548 LD_SEARCH_FLAGS=""
5549 if test "`uname -m`" = "alpha"; then
5550 CFLAGS="$CFLAGS -mieee"
55515547 fi
55525548
55535549 ;;
55875583 CC_SEARCH_FLAGS=""
55885584 LD_SEARCH_FLAGS=""
55895585 ;;
5590 NetBSD-1.*|FreeBSD-[1-2].*)
5591 SHLIB_CFLAGS="-fPIC"
5592 SHLIB_LD="ld -Bshareable -x"
5593 SHLIB_SUFFIX=".so"
5594 DL_OBJS="tclLoadDl.o"
5595 DL_LIBS=""
5596 if test $doRpath = yes; then
5597
5598 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
5599 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
5600 fi
5601
5602 echo "$as_me:$LINENO: checking for ELF" >&5
5603 echo $ECHO_N "checking for ELF... $ECHO_C" >&6
5604 if test "${tcl_cv_ld_elf+set}" = set; then
5605 echo $ECHO_N "(cached) $ECHO_C" >&6
5606 else
5607
5608 cat >conftest.$ac_ext <<_ACEOF
5609 /* confdefs.h. */
5610 _ACEOF
5611 cat confdefs.h >>conftest.$ac_ext
5612 cat >>conftest.$ac_ext <<_ACEOF
5613 /* end confdefs.h. */
5614
5615 #ifdef __ELF__
5616 yes
5617 #endif
5618
5619 _ACEOF
5620 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5621 $EGREP "yes" >/dev/null 2>&1; then
5622 tcl_cv_ld_elf=yes
5623 else
5624 tcl_cv_ld_elf=no
5625 fi
5626 rm -f conftest*
5627
5628 fi
5629 echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
5630 echo "${ECHO_T}$tcl_cv_ld_elf" >&6
5631 if test $tcl_cv_ld_elf = yes; then
5632
5633 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
5634
5635 else
5636
5637 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
5638
5639 fi
5640
5641
5642 # Ancient FreeBSD doesn't handle version numbers with dots.
5643
5644 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
5645 TCL_LIB_VERSIONS_OK=nodots
5646 ;;
56475586 OpenBSD-*)
56485587 arch=`arch -s`
56495588 case "$arch" in
5650 m88k|vax)
5589 vax)
56515590 # Equivalent using configure option --disable-load
56525591 # Step 4 will set the necessary variables
56535592 DL_OBJS=""
56545593 SHLIB_LD_LIBS=""
5594 LDFLAGS=""
56555595 ;;
56565596 *)
56575597 SHLIB_CFLAGS="-fPIC"
56665606
56675607 LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
56685608 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
5609 LDFLAGS="-Wl,-export-dynamic"
56695610 ;;
56705611 esac
56715612 case "$arch" in
5672 m88k|vax)
5613 vax)
56735614 CFLAGS_OPTIMIZE="-O1"
56745615 ;;
56755616 sh)
56795620 CFLAGS_OPTIMIZE="-O2"
56805621 ;;
56815622 esac
5682 echo "$as_me:$LINENO: checking for ELF" >&5
5683 echo $ECHO_N "checking for ELF... $ECHO_C" >&6
5684 if test "${tcl_cv_ld_elf+set}" = set; then
5685 echo $ECHO_N "(cached) $ECHO_C" >&6
5686 else
5687
5688 cat >conftest.$ac_ext <<_ACEOF
5689 /* confdefs.h. */
5690 _ACEOF
5691 cat confdefs.h >>conftest.$ac_ext
5692 cat >>conftest.$ac_ext <<_ACEOF
5693 /* end confdefs.h. */
5694
5695 #ifdef __ELF__
5696 yes
5697 #endif
5698
5699 _ACEOF
5700 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5701 $EGREP "yes" >/dev/null 2>&1; then
5702 tcl_cv_ld_elf=yes
5703 else
5704 tcl_cv_ld_elf=no
5705 fi
5706 rm -f conftest*
5707
5708 fi
5709 echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
5710 echo "${ECHO_T}$tcl_cv_ld_elf" >&6
5711 if test $tcl_cv_ld_elf = yes; then
5712
5713 LDFLAGS=-Wl,-export-dynamic
5714
5715 else
5716 LDFLAGS=""
5717 fi
5718
57195623 if test "${TCL_THREADS}" = "1"; then
57205624
57215625 # On OpenBSD: Compile with -pthread
57295633 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
57305634 TCL_LIB_VERSIONS_OK=nodots
57315635 ;;
5732 NetBSD-*|FreeBSD-[3-4].*)
5733 # FreeBSD 3.* and greater have ELF.
5734 # NetBSD 2.* has ELF and can use 'cc -shared' to build shared libs
5636 NetBSD-*)
5637 # NetBSD has ELF and can use 'cc -shared' to build shared libs
57355638 SHLIB_CFLAGS="-fPIC"
57365639 SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
57375640 SHLIB_SUFFIX=".so"
57535656
57545657 fi
57555658
5756 case $system in
5757 FreeBSD-3.*)
5758 # FreeBSD-3 doesn't handle version numbers with dots.
5759 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
5760 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
5761 TCL_LIB_VERSIONS_OK=nodots
5762 ;;
5763 esac
57645659 ;;
57655660 FreeBSD-*)
57665661 # This configuration from FreeBSD Ports.
57675662 SHLIB_CFLAGS="-fPIC"
57685663 SHLIB_LD="${CC} -shared"
5769 TCL_SHLIB_LD_EXTRAS="-soname \$@"
5664 TCL_SHLIB_LD_EXTRAS="-Wl,-soname=\$@"
57705665 SHLIB_SUFFIX=".so"
57715666 DL_OBJS="tclLoadDl.o"
57725667 DL_LIBS=""
57745669 if test $doRpath = yes; then
57755670
57765671 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
5777 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
5672 LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
57785673 fi
57795674
57805675 if test "${TCL_THREADS}" = "1"; then
69836878 _ACEOF
69846879
69856880
6986 cat >>confdefs.h <<\_ACEOF
6987 #define NO_VIZ
6988 _ACEOF
6989
6990
69916881 fi
69926882
69936883
77007590 cat >>conftest.$ac_ext <<_ACEOF
77017591 /* end confdefs.h. */
77027592 #include <sys/types.h>
7703 #include <sys/dirent.h>
7593 #include <dirent.h>
77047594 int
77057595 main ()
77067596 {
93409230 # On Mac OS X, we can build either with X11 or with Aqua
93419231 #--------------------------------------------------------------------
93429232
9343 MACOSX_SRC_DIR=macosx
93449233 if test "`uname -s`" = "Darwin" ; then
93459234 echo "$as_me:$LINENO: checking whether to use Aqua" >&5
93469235 echo $ECHO_N "checking whether to use Aqua... $ECHO_C" >&6
93539242 fi;
93549243 if test $tk_aqua = yes -o $tk_aqua = cocoa; then
93559244 tk_aqua=yes
9245 if test $tcl_corefoundation = no; then
9246 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when CoreFoundation is available" >&5
9247 echo "$as_me: WARNING: Aqua can only be used when CoreFoundation is available" >&2;}
9248 tk_aqua=no
9249 fi
93569250 if test ! -d /System/Library/Frameworks/Cocoa.framework; then
93579251 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when Cocoa is available" >&5
93589252 echo "$as_me: WARNING: Aqua can only be used when Cocoa is available" >&2;}
93639257 echo "$as_me: WARNING: Aqua requires Mac OS X 10.5 or later" >&2;}
93649258 tk_aqua=no
93659259 fi
9366 elif test $tk_aqua = carbon; then
9367 if test ! -d /System/Library/Frameworks/Carbon.framework; then
9368 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when Carbon is available" >&5
9369 echo "$as_me: WARNING: Aqua can only be used when Carbon is available" >&2;}
9370 tk_aqua=no
9371 fi
9372 if test "`uname -r | awk -F. '{print $1}'`" -lt 6; then
9373 { echo "$as_me:$LINENO: WARNING: Aqua requires Mac OS X 10.2 or later" >&5
9374 echo "$as_me: WARNING: Aqua requires Mac OS X 10.2 or later" >&2;}
9375 tk_aqua=no
9376 fi
9377 else
9378 tk_aqua=no
93799260 fi
9380 if test $tk_aqua != no -a $tcl_corefoundation = no; then
9381 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when CoreFoundation is available" >&5
9382 echo "$as_me: WARNING: Aqua can only be used when CoreFoundation is available" >&2;}
9383 tk_aqua=no
9384 fi
9385 if test $tk_aqua = carbon; then
9386 MACOSX_SRC_DIR=carbon
9387 echo "$as_me:$LINENO: result: yes (deprecated legacy Carbon implementation)" >&5
9388 echo "${ECHO_T}yes (deprecated legacy Carbon implementation)" >&6
9389 else
9390 echo "$as_me:$LINENO: result: $tk_aqua" >&5
9261 echo "$as_me:$LINENO: result: $tk_aqua" >&5
93919262 echo "${ECHO_T}$tk_aqua" >&6
9392 fi
93939263 if test "$fat_32_64" = yes; then
93949264 if test $tk_aqua = no; then
93959265 echo "$as_me:$LINENO: checking for 64-bit X11" >&5
94589328 fi
94599329 # remove 64-bit arch flags from CFLAGS et al. for combined 32 & 64 bit
94609330 # fat builds if configuration does not support 64-bit.
9461 if test $tk_aqua = carbon -o "$tcl_cv_lib_x11_64" = no; then
9331 if test "$tcl_cv_lib_x11_64" = no; then
94629332 { echo "$as_me:$LINENO: Removing 64-bit architectures from compiler & linker flags" >&5
94639333 echo "$as_me: Removing 64-bit architectures from compiler & linker flags" >&6;}
94649334 for v in CFLAGS CPPFLAGS LDFLAGS; do
98299699 tk_aqua=no
98309700 fi
98319701
9832 if test $tk_aqua != no; then
9833 if test $tk_aqua = yes; then
9834 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
9835 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
9836 else
9837 LIBS="$LIBS -framework Carbon -framework IOKit"
9838 CFLAGS="$CFLAGS -fpascal-strings"
9839 fi
9702 if test $tk_aqua = yes; then
98409703
98419704 cat >>confdefs.h <<\_ACEOF
98429705 #define MAC_OSX_TK 1
98439706 _ACEOF
98449707
9708 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
9709 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
98459710 TK_WINDOWINGSYSTEM=AQUA
98469711 if test -n "${enable_symbols}" -a "${enable_symbols}" != no; then
98479712
101049969 cat confdefs.h >>conftest.$ac_ext
101059970 cat >>conftest.$ac_ext <<_ACEOF
101069971 /* end confdefs.h. */
10107 #include <X11/XIntrinsic.h>
9972 #include <X11/Xlib.h>
101089973 _ACEOF
101099974 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
101109975 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
101339998 fi
101349999 rm -f conftest.err conftest.$ac_ext
1013510000 else
10136 if test ! -r $x_includes/X11/Intrinsic.h; then
10001 if test ! -r $x_includes/X11/Xlib.h; then
1013710002 not_really_there="yes"
1013810003 fi
1013910004 fi
1014810013 cat confdefs.h >>conftest.$ac_ext
1014910014 cat >>conftest.$ac_ext <<_ACEOF
1015010015 /* end confdefs.h. */
10151 #include <X11/Intrinsic.h>
10016 #include <X11/Xlib.h>
1015210017 _ACEOF
1015310018 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
1015410019 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
1017910044 if test "$found_xincludes" = "no"; then
1018010045 dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
1018110046 for i in $dirs ; do
10182 if test -r $i/X11/Intrinsic.h; then
10047 if test -r $i/X11/Xlib.h; then
1018310048 echo "$as_me:$LINENO: result: $i" >&5
1018410049 echo "${ECHO_T}$i" >&6
1018510050 XINCLUDES=" -I$i"
1047910344 fi
1048010345 rm -f conftest.err conftest.$ac_objext \
1048110346 conftest$ac_exeext conftest.$ac_ext
10482 CFLAGS=$tk_oldCFlags
10483 LIBS=$tk_oldLibs
10484 fi
10485
10486 #--------------------------------------------------------------------
10487 # Check whether the header and library for the XScreenSaver
10488 # extension are available, and set HAVE_XSS if so.
10489 # XScreenSaver is needed for Tk_GetUserInactiveTime().
10490 #--------------------------------------------------------------------
10491
10492 if test $tk_aqua = no; then
10493 tk_oldCFlags=$CFLAGS
10494 CFLAGS="$CFLAGS $XINCLUDES"
10495 tk_oldLibs=$LIBS
10496 LIBS="$tk_oldLibs $XLIBSW"
10497 xss_header_found=no
10498 xss_lib_found=no
10499 echo "$as_me:$LINENO: checking whether to try to use XScreenSaver" >&5
10500 echo $ECHO_N "checking whether to try to use XScreenSaver... $ECHO_C" >&6
10501 # Check whether --enable-xss or --disable-xss was given.
10502 if test "${enable_xss+set}" = set; then
10503 enableval="$enable_xss"
10504 enable_xss=$enableval
10505 else
10506 enable_xss=yes
10507 fi;
10508 if test "$enable_xss" = "no" ; then
10509 echo "$as_me:$LINENO: result: $enable_xss" >&5
10510 echo "${ECHO_T}$enable_xss" >&6
10511 else
10512 echo "$as_me:$LINENO: result: $enable_xss" >&5
10513 echo "${ECHO_T}$enable_xss" >&6
10514 echo "$as_me:$LINENO: checking for X11/extensions/scrnsaver.h" >&5
10515 echo $ECHO_N "checking for X11/extensions/scrnsaver.h... $ECHO_C" >&6
10516 if test "${ac_cv_header_X11_extensions_scrnsaver_h+set}" = set; then
10517 echo $ECHO_N "(cached) $ECHO_C" >&6
10518 else
10519 cat >conftest.$ac_ext <<_ACEOF
10520 /* confdefs.h. */
10521 _ACEOF
10522 cat confdefs.h >>conftest.$ac_ext
10523 cat >>conftest.$ac_ext <<_ACEOF
10524 /* end confdefs.h. */
10525 #include <X11/Xlib.h>
10526
10527 #include <X11/extensions/scrnsaver.h>
10528 _ACEOF
10529 rm -f conftest.$ac_objext
10530 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10531 (eval $ac_compile) 2>conftest.er1
10532 ac_status=$?
10533 grep -v '^ *+' conftest.er1 >conftest.err
10534 rm -f conftest.er1
10535 cat conftest.err >&5
10536 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10537 (exit $ac_status); } &&
10538 { ac_try='test -z "$ac_c_werror_flag"
10539 || test ! -s conftest.err'
10540 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10541 (eval $ac_try) 2>&5
10542 ac_status=$?
10543 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10544 (exit $ac_status); }; } &&
10545 { ac_try='test -s conftest.$ac_objext'
10546 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10547 (eval $ac_try) 2>&5
10548 ac_status=$?
10549 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10550 (exit $ac_status); }; }; then
10551 ac_cv_header_X11_extensions_scrnsaver_h=yes
10552 else
10553 echo "$as_me: failed program was:" >&5
10554 sed 's/^/| /' conftest.$ac_ext >&5
10555
10556 ac_cv_header_X11_extensions_scrnsaver_h=no
10557 fi
10558 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10559 fi
10560 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
10561 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
10562 if test $ac_cv_header_X11_extensions_scrnsaver_h = yes; then
10563
10564 xss_header_found=yes
10565
10566 fi
10567
10568
10569 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo" >&5
10570 echo $ECHO_N "checking for XScreenSaverQueryInfo... $ECHO_C" >&6
10571 if test "${ac_cv_func_XScreenSaverQueryInfo+set}" = set; then
10572 echo $ECHO_N "(cached) $ECHO_C" >&6
10573 else
10574 cat >conftest.$ac_ext <<_ACEOF
10575 /* confdefs.h. */
10576 _ACEOF
10577 cat confdefs.h >>conftest.$ac_ext
10578 cat >>conftest.$ac_ext <<_ACEOF
10579 /* end confdefs.h. */
10580 /* Define XScreenSaverQueryInfo to an innocuous variant, in case <limits.h> declares XScreenSaverQueryInfo.
10581 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10582 #define XScreenSaverQueryInfo innocuous_XScreenSaverQueryInfo
10583
10584 /* System header to define __stub macros and hopefully few prototypes,
10585 which can conflict with char XScreenSaverQueryInfo (); below.
10586 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10587 <limits.h> exists even on freestanding compilers. */
10588
10589 #ifdef __STDC__
10590 # include <limits.h>
10591 #else
10592 # include <assert.h>
10593 #endif
10594
10595 #undef XScreenSaverQueryInfo
10596
10597 /* Override any gcc2 internal prototype to avoid an error. */
10598 #ifdef __cplusplus
10599 extern "C"
10600 {
10601 #endif
10602 /* We use char because int might match the return type of a gcc2
10603 builtin and then its argument prototype would still apply. */
10604 char XScreenSaverQueryInfo ();
10605 /* The GNU C library defines this for functions which it implements
10606 to always fail with ENOSYS. Some functions are actually named
10607 something starting with __ and the normal name is an alias. */
10608 #if defined (__stub_XScreenSaverQueryInfo) || defined (__stub___XScreenSaverQueryInfo)
10609 choke me
10610 #else
10611 char (*f) () = XScreenSaverQueryInfo;
10612 #endif
10613 #ifdef __cplusplus
10614 }
10615 #endif
10616
10617 int
10618 main ()
10619 {
10620 return f != XScreenSaverQueryInfo;
10621 ;
10622 return 0;
10623 }
10624 _ACEOF
10625 rm -f conftest.$ac_objext conftest$ac_exeext
10626 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10627 (eval $ac_link) 2>conftest.er1
10628 ac_status=$?
10629 grep -v '^ *+' conftest.er1 >conftest.err
10630 rm -f conftest.er1
10631 cat conftest.err >&5
10632 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10633 (exit $ac_status); } &&
10634 { ac_try='test -z "$ac_c_werror_flag"
10635 || test ! -s conftest.err'
10636 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10637 (eval $ac_try) 2>&5
10638 ac_status=$?
10639 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10640 (exit $ac_status); }; } &&
10641 { ac_try='test -s conftest$ac_exeext'
10642 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10643 (eval $ac_try) 2>&5
10644 ac_status=$?
10645 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10646 (exit $ac_status); }; }; then
10647 ac_cv_func_XScreenSaverQueryInfo=yes
10648 else
10649 echo "$as_me: failed program was:" >&5
10650 sed 's/^/| /' conftest.$ac_ext >&5
10651
10652 ac_cv_func_XScreenSaverQueryInfo=no
10653 fi
10654 rm -f conftest.err conftest.$ac_objext \
10655 conftest$ac_exeext conftest.$ac_ext
10656 fi
10657 echo "$as_me:$LINENO: result: $ac_cv_func_XScreenSaverQueryInfo" >&5
10658 echo "${ECHO_T}$ac_cv_func_XScreenSaverQueryInfo" >&6
10659 if test $ac_cv_func_XScreenSaverQueryInfo = yes; then
10660 :
10661 else
10662
10663 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXext" >&5
10664 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXext... $ECHO_C" >&6
10665 if test "${ac_cv_lib_Xext_XScreenSaverQueryInfo+set}" = set; then
10666 echo $ECHO_N "(cached) $ECHO_C" >&6
10667 else
10668 ac_check_lib_save_LIBS=$LIBS
10669 LIBS="-lXext $LIBS"
10670 cat >conftest.$ac_ext <<_ACEOF
10671 /* confdefs.h. */
10672 _ACEOF
10673 cat confdefs.h >>conftest.$ac_ext
10674 cat >>conftest.$ac_ext <<_ACEOF
10675 /* end confdefs.h. */
10676
10677 /* Override any gcc2 internal prototype to avoid an error. */
10678 #ifdef __cplusplus
10679 extern "C"
10680 #endif
10681 /* We use char because int might match the return type of a gcc2
10682 builtin and then its argument prototype would still apply. */
10683 char XScreenSaverQueryInfo ();
10684 int
10685 main ()
10686 {
10687 XScreenSaverQueryInfo ();
10688 ;
10689 return 0;
10690 }
10691 _ACEOF
10692 rm -f conftest.$ac_objext conftest$ac_exeext
10693 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10694 (eval $ac_link) 2>conftest.er1
10695 ac_status=$?
10696 grep -v '^ *+' conftest.er1 >conftest.err
10697 rm -f conftest.er1
10698 cat conftest.err >&5
10699 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10700 (exit $ac_status); } &&
10701 { ac_try='test -z "$ac_c_werror_flag"
10702 || test ! -s conftest.err'
10703 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10704 (eval $ac_try) 2>&5
10705 ac_status=$?
10706 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10707 (exit $ac_status); }; } &&
10708 { ac_try='test -s conftest$ac_exeext'
10709 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10710 (eval $ac_try) 2>&5
10711 ac_status=$?
10712 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10713 (exit $ac_status); }; }; then
10714 ac_cv_lib_Xext_XScreenSaverQueryInfo=yes
10715 else
10716 echo "$as_me: failed program was:" >&5
10717 sed 's/^/| /' conftest.$ac_ext >&5
10718
10719 ac_cv_lib_Xext_XScreenSaverQueryInfo=no
10720 fi
10721 rm -f conftest.err conftest.$ac_objext \
10722 conftest$ac_exeext conftest.$ac_ext
10723 LIBS=$ac_check_lib_save_LIBS
10724 fi
10725 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverQueryInfo" >&5
10726 echo "${ECHO_T}$ac_cv_lib_Xext_XScreenSaverQueryInfo" >&6
10727 if test $ac_cv_lib_Xext_XScreenSaverQueryInfo = yes; then
10728
10729 XLIBSW="$XLIBSW -lXext"
10730 xss_lib_found=yes
10731
10732 else
10733
10734 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXss" >&5
10735 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXss... $ECHO_C" >&6
10736 if test "${ac_cv_lib_Xss_XScreenSaverQueryInfo+set}" = set; then
10737 echo $ECHO_N "(cached) $ECHO_C" >&6
10738 else
10739 ac_check_lib_save_LIBS=$LIBS
10740 LIBS="-lXss -lXext $LIBS"
10741 cat >conftest.$ac_ext <<_ACEOF
10742 /* confdefs.h. */
10743 _ACEOF
10744 cat confdefs.h >>conftest.$ac_ext
10745 cat >>conftest.$ac_ext <<_ACEOF
10746 /* end confdefs.h. */
10747
10748 /* Override any gcc2 internal prototype to avoid an error. */
10749 #ifdef __cplusplus
10750 extern "C"
10751 #endif
10752 /* We use char because int might match the return type of a gcc2
10753 builtin and then its argument prototype would still apply. */
10754 char XScreenSaverQueryInfo ();
10755 int
10756 main ()
10757 {
10758 XScreenSaverQueryInfo ();
10759 ;
10760 return 0;
10761 }
10762 _ACEOF
10763 rm -f conftest.$ac_objext conftest$ac_exeext
10764 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10765 (eval $ac_link) 2>conftest.er1
10766 ac_status=$?
10767 grep -v '^ *+' conftest.er1 >conftest.err
10768 rm -f conftest.er1
10769 cat conftest.err >&5
10770 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10771 (exit $ac_status); } &&
10772 { ac_try='test -z "$ac_c_werror_flag"
10773 || test ! -s conftest.err'
10774 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10775 (eval $ac_try) 2>&5
10776 ac_status=$?
10777 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10778 (exit $ac_status); }; } &&
10779 { ac_try='test -s conftest$ac_exeext'
10780 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10781 (eval $ac_try) 2>&5
10782 ac_status=$?
10783 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10784 (exit $ac_status); }; }; then
10785 ac_cv_lib_Xss_XScreenSaverQueryInfo=yes
10786 else
10787 echo "$as_me: failed program was:" >&5
10788 sed 's/^/| /' conftest.$ac_ext >&5
10789
10790 ac_cv_lib_Xss_XScreenSaverQueryInfo=no
10791 fi
10792 rm -f conftest.err conftest.$ac_objext \
10793 conftest$ac_exeext conftest.$ac_ext
10794 LIBS=$ac_check_lib_save_LIBS
10795 fi
10796 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverQueryInfo" >&5
10797 echo "${ECHO_T}$ac_cv_lib_Xss_XScreenSaverQueryInfo" >&6
10798 if test $ac_cv_lib_Xss_XScreenSaverQueryInfo = yes; then
10799
10800 if test "$tcl_cv_ld_weak_l" = yes; then
10801 # On Darwin, weak link libXss if possible,
10802 # as it is only available on Tiger or later.
10803 XLIBSW="$XLIBSW -Wl,-weak-lXss -lXext"
10804 else
10805 XLIBSW="$XLIBSW -lXss -lXext"
10806 fi
10807 xss_lib_found=yes
10808
10809 fi
10810
10811
10812 fi
10813
10814
10815 fi
10816
10817 fi
10818 if test $enable_xss = yes -a $xss_lib_found = yes -a $xss_header_found = yes; then
10819
10820 cat >>confdefs.h <<\_ACEOF
10821 #define HAVE_XSS 1
10822 _ACEOF
10823
10824 fi
1082510347 CFLAGS=$tk_oldCFlags
1082610348 LIBS=$tk_oldLibs
1082710349 fi
1103210554
1103310555
1103410556
10557 fi
10558
10559 #--------------------------------------------------------------------
10560 # Check for XkbKeycodeToKeysym.
10561 #--------------------------------------------------------------------
10562
10563 if test $tk_aqua = no; then
10564 tk_oldCFlags=$CFLAGS
10565 tk_oldLibs=$LIBS
10566 CFLAGS="$CFLAGS $XINCLUDES"
10567 LIBS="$LIBS $XLIBSW"
10568 echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5
10569 echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6
10570 if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then
10571 echo $ECHO_N "(cached) $ECHO_C" >&6
10572 else
10573 cat >conftest.$ac_ext <<_ACEOF
10574 /* confdefs.h. */
10575 _ACEOF
10576 cat confdefs.h >>conftest.$ac_ext
10577 cat >>conftest.$ac_ext <<_ACEOF
10578 /* end confdefs.h. */
10579 #include <X11/Xlib.h>
10580
10581 #include <X11/XKBlib.h>
10582 _ACEOF
10583 rm -f conftest.$ac_objext
10584 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10585 (eval $ac_compile) 2>conftest.er1
10586 ac_status=$?
10587 grep -v '^ *+' conftest.er1 >conftest.err
10588 rm -f conftest.er1
10589 cat conftest.err >&5
10590 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10591 (exit $ac_status); } &&
10592 { ac_try='test -z "$ac_c_werror_flag"
10593 || test ! -s conftest.err'
10594 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10595 (eval $ac_try) 2>&5
10596 ac_status=$?
10597 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10598 (exit $ac_status); }; } &&
10599 { ac_try='test -s conftest.$ac_objext'
10600 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10601 (eval $ac_try) 2>&5
10602 ac_status=$?
10603 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10604 (exit $ac_status); }; }; then
10605 ac_cv_header_X11_XKBlib_h=yes
10606 else
10607 echo "$as_me: failed program was:" >&5
10608 sed 's/^/| /' conftest.$ac_ext >&5
10609
10610 ac_cv_header_X11_XKBlib_h=no
10611 fi
10612 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10613 fi
10614 echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5
10615 echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6
10616 if test $ac_cv_header_X11_XKBlib_h = yes; then
10617
10618 xkblib_header_found=yes
10619
10620 else
10621
10622 xkblib_header_found=no
10623
10624 fi
10625
10626
10627 if test $xkblib_header_found = "yes" ; then
10628 echo "$as_me:$LINENO: checking for XkbKeycodeToKeysym in -lX11" >&5
10629 echo $ECHO_N "checking for XkbKeycodeToKeysym in -lX11... $ECHO_C" >&6
10630 if test "${ac_cv_lib_X11_XkbKeycodeToKeysym+set}" = set; then
10631 echo $ECHO_N "(cached) $ECHO_C" >&6
10632 else
10633 ac_check_lib_save_LIBS=$LIBS
10634 LIBS="-lX11 $LIBS"
10635 cat >conftest.$ac_ext <<_ACEOF
10636 /* confdefs.h. */
10637 _ACEOF
10638 cat confdefs.h >>conftest.$ac_ext
10639 cat >>conftest.$ac_ext <<_ACEOF
10640 /* end confdefs.h. */
10641
10642 /* Override any gcc2 internal prototype to avoid an error. */
10643 #ifdef __cplusplus
10644 extern "C"
10645 #endif
10646 /* We use char because int might match the return type of a gcc2
10647 builtin and then its argument prototype would still apply. */
10648 char XkbKeycodeToKeysym ();
10649 int
10650 main ()
10651 {
10652 XkbKeycodeToKeysym ();
10653 ;
10654 return 0;
10655 }
10656 _ACEOF
10657 rm -f conftest.$ac_objext conftest$ac_exeext
10658 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10659 (eval $ac_link) 2>conftest.er1
10660 ac_status=$?
10661 grep -v '^ *+' conftest.er1 >conftest.err
10662 rm -f conftest.er1
10663 cat conftest.err >&5
10664 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10665 (exit $ac_status); } &&
10666 { ac_try='test -z "$ac_c_werror_flag"
10667 || test ! -s conftest.err'
10668 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10669 (eval $ac_try) 2>&5
10670 ac_status=$?
10671 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10672 (exit $ac_status); }; } &&
10673 { ac_try='test -s conftest$ac_exeext'
10674 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10675 (eval $ac_try) 2>&5
10676 ac_status=$?
10677 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10678 (exit $ac_status); }; }; then
10679 ac_cv_lib_X11_XkbKeycodeToKeysym=yes
10680 else
10681 echo "$as_me: failed program was:" >&5
10682 sed 's/^/| /' conftest.$ac_ext >&5
10683
10684 ac_cv_lib_X11_XkbKeycodeToKeysym=no
10685 fi
10686 rm -f conftest.err conftest.$ac_objext \
10687 conftest$ac_exeext conftest.$ac_ext
10688 LIBS=$ac_check_lib_save_LIBS
10689 fi
10690 echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbKeycodeToKeysym" >&5
10691 echo "${ECHO_T}$ac_cv_lib_X11_XkbKeycodeToKeysym" >&6
10692 if test $ac_cv_lib_X11_XkbKeycodeToKeysym = yes; then
10693
10694 xkbkeycodetokeysym_found=yes
10695
10696 else
10697
10698 xkbkeycodetokeysym_found=no
10699
10700 fi
10701
10702 else
10703 xkbkeycodetokeysym_found=no
10704 fi
10705 if test $xkbkeycodetokeysym_found = "yes" ; then
10706
10707 cat >>confdefs.h <<\_ACEOF
10708 #define HAVE_XKBKEYCODETOKEYSYM 1
10709 _ACEOF
10710
10711 fi
10712 CFLAGS=$tk_oldCFlags
10713 LIBS=$tk_oldLibs
10714 fi
10715
10716 #--------------------------------------------------------------------
10717 # Check whether XKeycodeToKeysym is deprecated in X11 headers.
10718 #--------------------------------------------------------------------
10719
10720 if test $tk_aqua = no && test "$GCC" = yes; then
10721 echo "$as_me:$LINENO: checking whether XKeycodeToKeysym is deprecated" >&5
10722 echo $ECHO_N "checking whether XKeycodeToKeysym is deprecated... $ECHO_C" >&6
10723 tk_oldCFlags=$CFLAGS
10724 CFLAGS="$CFLAGS -Werror"
10725 cat >conftest.$ac_ext <<_ACEOF
10726 /* confdefs.h. */
10727 _ACEOF
10728 cat confdefs.h >>conftest.$ac_ext
10729 cat >>conftest.$ac_ext <<_ACEOF
10730 /* end confdefs.h. */
10731
10732 #include <X11/Xlib.h>
10733
10734 int
10735 main ()
10736 {
10737
10738 XKeycodeToKeysym(0,0,0);
10739
10740 ;
10741 return 0;
10742 }
10743 _ACEOF
10744 rm -f conftest.$ac_objext conftest$ac_exeext
10745 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10746 (eval $ac_link) 2>conftest.er1
10747 ac_status=$?
10748 grep -v '^ *+' conftest.er1 >conftest.err
10749 rm -f conftest.er1
10750 cat conftest.err >&5
10751 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10752 (exit $ac_status); } &&
10753 { ac_try='test -z "$ac_c_werror_flag"
10754 || test ! -s conftest.err'
10755 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10756 (eval $ac_try) 2>&5
10757 ac_status=$?
10758 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10759 (exit $ac_status); }; } &&
10760 { ac_try='test -s conftest$ac_exeext'
10761 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10762 (eval $ac_try) 2>&5
10763 ac_status=$?
10764 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10765 (exit $ac_status); }; }; then
10766
10767 echo "$as_me:$LINENO: result: no" >&5
10768 echo "${ECHO_T}no" >&6
10769
10770 else
10771 echo "$as_me: failed program was:" >&5
10772 sed 's/^/| /' conftest.$ac_ext >&5
10773
10774
10775 echo "$as_me:$LINENO: result: yes" >&5
10776 echo "${ECHO_T}yes" >&6
10777
10778 cat >>confdefs.h <<\_ACEOF
10779 #define XKEYCODETOKEYSYM_IS_DEPRECATED 1
10780 _ACEOF
10781
10782
10783 fi
10784 rm -f conftest.err conftest.$ac_objext \
10785 conftest$ac_exeext conftest.$ac_ext
10786 CFLAGS=$tk_oldCFlags
10787 fi
10788
10789 #--------------------------------------------------------------------
10790 # XXX Do this last.
10791 # It might modify XLIBSW which could affect other tests.
10792 #
10793 # Check whether the header and library for the XScreenSaver
10794 # extension are available, and set HAVE_XSS if so.
10795 # XScreenSaver is needed for Tk_GetUserInactiveTime().
10796 #--------------------------------------------------------------------
10797
10798 if test $tk_aqua = no; then
10799 tk_oldCFlags=$CFLAGS
10800 CFLAGS="$CFLAGS $XINCLUDES"
10801 tk_oldLibs=$LIBS
10802 LIBS="$tk_oldLibs $XLIBSW"
10803 xss_header_found=no
10804 xss_lib_found=no
10805 echo "$as_me:$LINENO: checking whether to try to use XScreenSaver" >&5
10806 echo $ECHO_N "checking whether to try to use XScreenSaver... $ECHO_C" >&6
10807 # Check whether --enable-xss or --disable-xss was given.
10808 if test "${enable_xss+set}" = set; then
10809 enableval="$enable_xss"
10810 enable_xss=$enableval
10811 else
10812 enable_xss=yes
10813 fi;
10814 if test "$enable_xss" = "no" ; then
10815 echo "$as_me:$LINENO: result: $enable_xss" >&5
10816 echo "${ECHO_T}$enable_xss" >&6
10817 else
10818 echo "$as_me:$LINENO: result: $enable_xss" >&5
10819 echo "${ECHO_T}$enable_xss" >&6
10820 echo "$as_me:$LINENO: checking for X11/extensions/scrnsaver.h" >&5
10821 echo $ECHO_N "checking for X11/extensions/scrnsaver.h... $ECHO_C" >&6
10822 if test "${ac_cv_header_X11_extensions_scrnsaver_h+set}" = set; then
10823 echo $ECHO_N "(cached) $ECHO_C" >&6
10824 else
10825 cat >conftest.$ac_ext <<_ACEOF
10826 /* confdefs.h. */
10827 _ACEOF
10828 cat confdefs.h >>conftest.$ac_ext
10829 cat >>conftest.$ac_ext <<_ACEOF
10830 /* end confdefs.h. */
10831 #include <X11/Xlib.h>
10832
10833 #include <X11/extensions/scrnsaver.h>
10834 _ACEOF
10835 rm -f conftest.$ac_objext
10836 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10837 (eval $ac_compile) 2>conftest.er1
10838 ac_status=$?
10839 grep -v '^ *+' conftest.er1 >conftest.err
10840 rm -f conftest.er1
10841 cat conftest.err >&5
10842 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10843 (exit $ac_status); } &&
10844 { ac_try='test -z "$ac_c_werror_flag"
10845 || test ! -s conftest.err'
10846 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10847 (eval $ac_try) 2>&5
10848 ac_status=$?
10849 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10850 (exit $ac_status); }; } &&
10851 { ac_try='test -s conftest.$ac_objext'
10852 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10853 (eval $ac_try) 2>&5
10854 ac_status=$?
10855 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10856 (exit $ac_status); }; }; then
10857 ac_cv_header_X11_extensions_scrnsaver_h=yes
10858 else
10859 echo "$as_me: failed program was:" >&5
10860 sed 's/^/| /' conftest.$ac_ext >&5
10861
10862 ac_cv_header_X11_extensions_scrnsaver_h=no
10863 fi
10864 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10865 fi
10866 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
10867 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
10868 if test $ac_cv_header_X11_extensions_scrnsaver_h = yes; then
10869
10870 xss_header_found=yes
10871
10872 fi
10873
10874
10875 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo" >&5
10876 echo $ECHO_N "checking for XScreenSaverQueryInfo... $ECHO_C" >&6
10877 if test "${ac_cv_func_XScreenSaverQueryInfo+set}" = set; then
10878 echo $ECHO_N "(cached) $ECHO_C" >&6
10879 else
10880 cat >conftest.$ac_ext <<_ACEOF
10881 /* confdefs.h. */
10882 _ACEOF
10883 cat confdefs.h >>conftest.$ac_ext
10884 cat >>conftest.$ac_ext <<_ACEOF
10885 /* end confdefs.h. */
10886 /* Define XScreenSaverQueryInfo to an innocuous variant, in case <limits.h> declares XScreenSaverQueryInfo.
10887 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10888 #define XScreenSaverQueryInfo innocuous_XScreenSaverQueryInfo
10889
10890 /* System header to define __stub macros and hopefully few prototypes,
10891 which can conflict with char XScreenSaverQueryInfo (); below.
10892 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10893 <limits.h> exists even on freestanding compilers. */
10894
10895 #ifdef __STDC__
10896 # include <limits.h>
10897 #else
10898 # include <assert.h>
10899 #endif
10900
10901 #undef XScreenSaverQueryInfo
10902
10903 /* Override any gcc2 internal prototype to avoid an error. */
10904 #ifdef __cplusplus
10905 extern "C"
10906 {
10907 #endif
10908 /* We use char because int might match the return type of a gcc2
10909 builtin and then its argument prototype would still apply. */
10910 char XScreenSaverQueryInfo ();
10911 /* The GNU C library defines this for functions which it implements
10912 to always fail with ENOSYS. Some functions are actually named
10913 something starting with __ and the normal name is an alias. */
10914 #if defined (__stub_XScreenSaverQueryInfo) || defined (__stub___XScreenSaverQueryInfo)
10915 choke me
10916 #else
10917 char (*f) () = XScreenSaverQueryInfo;
10918 #endif
10919 #ifdef __cplusplus
10920 }
10921 #endif
10922
10923 int
10924 main ()
10925 {
10926 return f != XScreenSaverQueryInfo;
10927 ;
10928 return 0;
10929 }
10930 _ACEOF
10931 rm -f conftest.$ac_objext conftest$ac_exeext
10932 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10933 (eval $ac_link) 2>conftest.er1
10934 ac_status=$?
10935 grep -v '^ *+' conftest.er1 >conftest.err
10936 rm -f conftest.er1
10937 cat conftest.err >&5
10938 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10939 (exit $ac_status); } &&
10940 { ac_try='test -z "$ac_c_werror_flag"
10941 || test ! -s conftest.err'
10942 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10943 (eval $ac_try) 2>&5
10944 ac_status=$?
10945 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10946 (exit $ac_status); }; } &&
10947 { ac_try='test -s conftest$ac_exeext'
10948 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10949 (eval $ac_try) 2>&5
10950 ac_status=$?
10951 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10952 (exit $ac_status); }; }; then
10953 ac_cv_func_XScreenSaverQueryInfo=yes
10954 else
10955 echo "$as_me: failed program was:" >&5
10956 sed 's/^/| /' conftest.$ac_ext >&5
10957
10958 ac_cv_func_XScreenSaverQueryInfo=no
10959 fi
10960 rm -f conftest.err conftest.$ac_objext \
10961 conftest$ac_exeext conftest.$ac_ext
10962 fi
10963 echo "$as_me:$LINENO: result: $ac_cv_func_XScreenSaverQueryInfo" >&5
10964 echo "${ECHO_T}$ac_cv_func_XScreenSaverQueryInfo" >&6
10965 if test $ac_cv_func_XScreenSaverQueryInfo = yes; then
10966 :
10967 else
10968
10969 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXext" >&5
10970 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXext... $ECHO_C" >&6
10971 if test "${ac_cv_lib_Xext_XScreenSaverQueryInfo+set}" = set; then
10972 echo $ECHO_N "(cached) $ECHO_C" >&6
10973 else
10974 ac_check_lib_save_LIBS=$LIBS
10975 LIBS="-lXext $LIBS"
10976 cat >conftest.$ac_ext <<_ACEOF
10977 /* confdefs.h. */
10978 _ACEOF
10979 cat confdefs.h >>conftest.$ac_ext
10980 cat >>conftest.$ac_ext <<_ACEOF
10981 /* end confdefs.h. */
10982
10983 /* Override any gcc2 internal prototype to avoid an error. */
10984 #ifdef __cplusplus
10985 extern "C"
10986 #endif
10987 /* We use char because int might match the return type of a gcc2
10988 builtin and then its argument prototype would still apply. */
10989 char XScreenSaverQueryInfo ();
10990 int
10991 main ()
10992 {
10993 XScreenSaverQueryInfo ();
10994 ;
10995 return 0;
10996 }
10997 _ACEOF
10998 rm -f conftest.$ac_objext conftest$ac_exeext
10999 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11000 (eval $ac_link) 2>conftest.er1
11001 ac_status=$?
11002 grep -v '^ *+' conftest.er1 >conftest.err
11003 rm -f conftest.er1
11004 cat conftest.err >&5
11005 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11006 (exit $ac_status); } &&
11007 { ac_try='test -z "$ac_c_werror_flag"
11008 || test ! -s conftest.err'
11009 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11010 (eval $ac_try) 2>&5
11011 ac_status=$?
11012 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11013 (exit $ac_status); }; } &&
11014 { ac_try='test -s conftest$ac_exeext'
11015 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11016 (eval $ac_try) 2>&5
11017 ac_status=$?
11018 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11019 (exit $ac_status); }; }; then
11020 ac_cv_lib_Xext_XScreenSaverQueryInfo=yes
11021 else
11022 echo "$as_me: failed program was:" >&5
11023 sed 's/^/| /' conftest.$ac_ext >&5
11024
11025 ac_cv_lib_Xext_XScreenSaverQueryInfo=no
11026 fi
11027 rm -f conftest.err conftest.$ac_objext \
11028 conftest$ac_exeext conftest.$ac_ext
11029 LIBS=$ac_check_lib_save_LIBS
11030 fi
11031 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverQueryInfo" >&5
11032 echo "${ECHO_T}$ac_cv_lib_Xext_XScreenSaverQueryInfo" >&6
11033 if test $ac_cv_lib_Xext_XScreenSaverQueryInfo = yes; then
11034
11035 XLIBSW="$XLIBSW -lXext"
11036 xss_lib_found=yes
11037
11038 else
11039
11040 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXss" >&5
11041 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXss... $ECHO_C" >&6
11042 if test "${ac_cv_lib_Xss_XScreenSaverQueryInfo+set}" = set; then
11043 echo $ECHO_N "(cached) $ECHO_C" >&6
11044 else
11045 ac_check_lib_save_LIBS=$LIBS
11046 LIBS="-lXss -lXext $LIBS"
11047 cat >conftest.$ac_ext <<_ACEOF
11048 /* confdefs.h. */
11049 _ACEOF
11050 cat confdefs.h >>conftest.$ac_ext
11051 cat >>conftest.$ac_ext <<_ACEOF
11052 /* end confdefs.h. */
11053
11054 /* Override any gcc2 internal prototype to avoid an error. */
11055 #ifdef __cplusplus
11056 extern "C"
11057 #endif
11058 /* We use char because int might match the return type of a gcc2
11059 builtin and then its argument prototype would still apply. */
11060 char XScreenSaverQueryInfo ();
11061 int
11062 main ()
11063 {
11064 XScreenSaverQueryInfo ();
11065 ;
11066 return 0;
11067 }
11068 _ACEOF
11069 rm -f conftest.$ac_objext conftest$ac_exeext
11070 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11071 (eval $ac_link) 2>conftest.er1
11072 ac_status=$?
11073 grep -v '^ *+' conftest.er1 >conftest.err
11074 rm -f conftest.er1
11075 cat conftest.err >&5
11076 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11077 (exit $ac_status); } &&
11078 { ac_try='test -z "$ac_c_werror_flag"
11079 || test ! -s conftest.err'
11080 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11081 (eval $ac_try) 2>&5
11082 ac_status=$?
11083 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11084 (exit $ac_status); }; } &&
11085 { ac_try='test -s conftest$ac_exeext'
11086 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11087 (eval $ac_try) 2>&5
11088 ac_status=$?
11089 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11090 (exit $ac_status); }; }; then
11091 ac_cv_lib_Xss_XScreenSaverQueryInfo=yes
11092 else
11093 echo "$as_me: failed program was:" >&5
11094 sed 's/^/| /' conftest.$ac_ext >&5
11095
11096 ac_cv_lib_Xss_XScreenSaverQueryInfo=no
11097 fi
11098 rm -f conftest.err conftest.$ac_objext \
11099 conftest$ac_exeext conftest.$ac_ext
11100 LIBS=$ac_check_lib_save_LIBS
11101 fi
11102 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverQueryInfo" >&5
11103 echo "${ECHO_T}$ac_cv_lib_Xss_XScreenSaverQueryInfo" >&6
11104 if test $ac_cv_lib_Xss_XScreenSaverQueryInfo = yes; then
11105
11106 if test "$tcl_cv_ld_weak_l" = yes; then
11107 # On Darwin, weak link libXss if possible,
11108 # as it is only available on Tiger or later.
11109 XLIBSW="$XLIBSW -Wl,-weak-lXss -lXext"
11110 else
11111 XLIBSW="$XLIBSW -lXss -lXext"
11112 fi
11113 xss_lib_found=yes
11114
11115 fi
11116
11117
11118 fi
11119
11120
11121 fi
11122
11123 fi
11124 if test $enable_xss = yes -a $xss_lib_found = yes -a $xss_header_found = yes; then
11125
11126 cat >>confdefs.h <<\_ACEOF
11127 #define HAVE_XSS 1
11128 _ACEOF
11129
11130 fi
11131 CFLAGS=$tk_oldCFlags
11132 LIBS=$tk_oldLibs
1103511133 fi
1103611134
1103711135 #--------------------------------------------------------------------
1117511273 fi
1117611274
1117711275 TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version ${TK_VERSION}`echo ${TK_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`"
11178 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}"'
11179 if test $tk_aqua = yes; then
11180 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[0-9a-f]+ . \.objc/ {print \$$3}" > $$f && echo $$f)'
11181 fi
11276 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}" -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[0-9a-f]+ . \.objc/ {print \$$3}" > $$f && nm -gjp "$(TCL_BIN_DIR)"/$(TCL_STUB_LIB_FILE) | grep ^_[^_] >> $$f && echo $$f)'
1118211277 echo "$LDFLAGS " | grep -q -- '-prebind ' && TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -seg1addr 0xb000000'
1118311278 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tk-Info.plist'
1118411279 EXTRA_WISH_LIBS='-sectcreate __TEXT __info_plist Wish-Info.plist'
1118511280 EXTRA_APP_CC_SWITCHES="${EXTRA_APP_CC_SWITCHES}"' -mdynamic-no-pic'
11186 ac_config_files="$ac_config_files Tk-Info.plist:../${MACOSX_SRC_DIR}/Tk-Info.plist.in Wish-Info.plist:../${MACOSX_SRC_DIR}/Wish-Info.plist.in"
11281 ac_config_files="$ac_config_files Tk-Info.plist:../macosx/Tk-Info.plist.in Wish-Info.plist:../macosx/Wish-Info.plist.in"
1118711282
1118811283 for l in ${LOCALES}; do CFBUNDLELOCALIZATIONS="${CFBUNDLELOCALIZATIONS}<string>$l</string>"; done
1118911284 TK_YEAR="`date +%Y`"
1120711302 TK_LIB_FILE="Tk"
1120811303 TK_LIB_FLAG="-framework Tk"
1120911304 TK_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk"
11210 WISH_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk \${WISH_LIBS}"
1121111305 TK_LIB_SPEC="-F${libdir} -framework Tk"
1121211306 libdir="${libdir}/Tk.framework/Versions/\${VERSION}"
1121311307 TK_LIBRARY="${libdir}/Resources/Scripts"
1122111315 EXTRA_BUILD_HTML='@ln -fs contents.htm "$(HTML_INSTALL_DIR)"/TkTOC.html'
1122211316 EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tk-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"'
1122311317 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"'
11224 if test $tk_aqua != no; then
11225 if test $tk_aqua = yes; then
11226 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
11227 else
11228 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing ${TK_RSRC_FILE} to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "${TK_RSRC_FILE}" "$(LIB_INSTALL_DIR)/Resources"'
11229 fi
11230 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
11231 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
11232 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/../" && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
11233 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
11234 if test $tk_aqua = yes; then
11235 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
11236 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
11237 else
11238 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.icns" "$(BIN_INSTALL_DIR)/../Resources" && echo "Installing ${WISH_RSRC_FILE} to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "${WISH_RSRC_FILE}" "$(BIN_INSTALL_DIR)/../Resources"'
11239 fi
11318 if test $tk_aqua = yes; then
11319 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
11320 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
11321 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
11322 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/.." && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
11323 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
11324 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
11325 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
1124011326 fi
1124111327 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tk.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tkConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."'
1124211328 # Don't use AC_DEFINE for the following as the framework version define
1125011336 fi
1125111337 # libdir must be a fully qualified path and not ${exec_prefix}/lib
1125211338 eval libdir="$libdir"
11253 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
11254 TK_LIB_FLAG="-ltk${TK_VERSION}"
11339 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
11340 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11341 TK_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win ${TK_LIB_FLAG}"
1125511342 else
11256 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11257 fi
11258 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
11259 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
11260 WISH_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win -ltk${TK_MAJOR_VERSION}${TK_MINOR_VERSION} \${TCL_LIB_SPEC}"
11261 else
11262 WISH_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG} \${WISH_LIBS}"
11343 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
11344 TK_LIB_FLAG="-ltk${TK_VERSION}"
11345 else
11346 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11347 fi
11348 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
1126311349 fi
1126411350 TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
11265 fi
11266
11267 # Extra bits for legacy Aqua Carbon build (carbon sources and resource files)
11268 if test $tk_aqua = carbon; then
11269 EXTRA_AQUA_OBJS='tkMacOSXCarbonEvents.o'
11270 EXTRA_AQUA_SRCS='$(TOP_DIR)/carbon/tkMacOSXCarbonEvents.c'
11271 LIB_RSRC_FILE='${TK_RSRC_FILE}'
11272 APP_RSRC_FILE='${WISH_RSRC_FILE}'
11273 REZ=/Developer/Tools/Rez
11274 REZ_FLAGS='-d "SystemSevenOrLater=1" -useDF -ro'
11275 if test "$SHARED_BUILD" = 0; then
11276 EXTRA_INSTALL_BINARIES='@echo "Installing $(TK_RSRC_FILE) to $(LIB_INSTALL_DIR)/" && $(INSTALL_DATA) $(TK_RSRC_FILE) "$(LIB_INSTALL_DIR)"'
11277 TK_BUILD_LIB_SPEC="$TK_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
11278 WISH_BUILD_LIB_SPEC="$WISH_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
11279 TK_LIB_SPEC="$TK_LIB_SPEC -sectcreate __TEXT __tk_rsrc ${libdir}/\${TK_RSRC_FILE}"
11280 else
11281 TK_SHLIB_LD_EXTRAS="$TK_SHLIB_LD_EXTRAS -sectcreate __TEXT __tk_rsrc \${TK_RSRC_FILE}"
11282 fi
1128311351 fi
1128411352
1128511353 #--------------------------------------------------------------------
1131011378 #------------------------------------------------------------------------
1131111379
1131211380 TK_SHARED_BUILD=${SHARED_BUILD}
11313
11314
11315
11316
1131711381
1131811382
1131911383
1190411968 do
1190511969 case "$ac_config_target" in
1190611970 # Handling of arguments.
11907 "Tk-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Tk-Info.plist:../${MACOSX_SRC_DIR}/Tk-Info.plist.in" ;;
11908 "Wish-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Wish-Info.plist:../${MACOSX_SRC_DIR}/Wish-Info.plist.in" ;;
11971 "Tk-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Tk-Info.plist:../macosx/Tk-Info.plist.in" ;;
11972 "Wish-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Wish-Info.plist:../macosx/Wish-Info.plist.in" ;;
1190911973 "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile:../unix/Makefile.in" ;;
1191011974 "tkConfig.sh" ) CONFIG_FILES="$CONFIG_FILES tkConfig.sh:../unix/tkConfig.sh.in" ;;
1191111975 "tk.pc" ) CONFIG_FILES="$CONFIG_FILES tk.pc:../unix/tk.pc.in" ;;
1207312137 s,@TK_SHARED_BUILD@,$TK_SHARED_BUILD,;t t
1207412138 s,@LD_LIBRARY_PATH_VAR@,$LD_LIBRARY_PATH_VAR,;t t
1207512139 s,@TK_BUILD_LIB_SPEC@,$TK_BUILD_LIB_SPEC,;t t
12076 s,@WISH_BUILD_LIB_SPEC@,$WISH_BUILD_LIB_SPEC,;t t
1207712140 s,@TCL_STUB_FLAGS@,$TCL_STUB_FLAGS,;t t
1207812141 s,@XINCLUDES@,$XINCLUDES,;t t
1207912142 s,@XLIBSW@,$XLIBSW,;t t
1209012153 s,@EXTRA_INSTALL_BINARIES@,$EXTRA_INSTALL_BINARIES,;t t
1209112154 s,@EXTRA_BUILD_HTML@,$EXTRA_BUILD_HTML,;t t
1209212155 s,@EXTRA_WISH_LIBS@,$EXTRA_WISH_LIBS,;t t
12093 s,@EXTRA_AQUA_OBJS@,$EXTRA_AQUA_OBJS,;t t
12094 s,@EXTRA_AQUA_SRCS@,$EXTRA_AQUA_SRCS,;t t
1209512156 s,@CFBUNDLELOCALIZATIONS@,$CFBUNDLELOCALIZATIONS,;t t
12096 s,@MACOSX_SRC_DIR@,$MACOSX_SRC_DIR,;t t
1209712157 s,@TK_RSRC_FILE@,$TK_RSRC_FILE,;t t
1209812158 s,@WISH_RSRC_FILE@,$WISH_RSRC_FILE,;t t
1209912159 s,@LIB_RSRC_FILE@,$LIB_RSRC_FILE,;t t
1267612736 rm -rf $f && mkdir -p $f/$v/Resources &&
1267712737 ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v &&
1267812738 ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist &&
12679 if test $tk_aqua != no; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
12739 if test $tk_aqua = yes; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
1268012740 unset n f v
1268112741 ;;
1268212742 esac
403403 if (Tcl_GetIntFromObj(interp, objv[i++], &ib.height) != TCL_OK) {
404404 goto end;
405405 }
406 if (Tcl_GetIndexFromObj(interp, objv[i++], iconBitmapOptionStrings,
407 "kind", TCL_EXACT, &ib.kind) != TCL_OK) {
406 if (Tcl_GetIndexFromObjStruct(interp, objv[i++], iconBitmapOptionStrings,
407 sizeof(char *), "kind", TCL_EXACT, &ib.kind) != TCL_OK) {
408408 goto end;
409409 }
410410 value = Tcl_GetStringFromObj(objv[i++], &len);
258258 int index;
259259 const char *value;
260260
261 if (Tcl_GetIndexFromObj(interp, objv[i], colorOptionStrings, "option",
262 TCL_EXACT, &index) != TCL_OK) {
261 if (Tcl_GetIndexFromObjStruct(interp, objv[i], colorOptionStrings,
262 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
263263 goto end;
264264 }
265265 if (i + 1 == objc) {
372372
373373 TkInitFileFilters(&fl);
374374 for (i = 1; i < objc; i += 2) {
375 if (Tcl_GetIndexFromObj(interp, objv[i], openOptionStrings, "option",
376 TCL_EXACT, &index) != TCL_OK) {
375 if (Tcl_GetIndexFromObjStruct(interp, objv[i], openOptionStrings,
376 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
377377 goto end;
378378 }
379379 if (i + 1 == objc) {
501501 * The -typevariable option is not really supported.
502502 */
503503
504 Tcl_SetVar(interp, Tcl_GetString(typeVariablePtr), "",
505 TCL_GLOBAL_ONLY);
504 Tcl_SetVar2(interp, Tcl_GetString(typeVariablePtr), NULL,
505 "", TCL_GLOBAL_ONLY);
506506 }
507507
508508 end:
551551
552552 TkInitFileFilters(&fl);
553553 for (i = 1; i < objc; i += 2) {
554 if (Tcl_GetIndexFromObj(interp, objv[i], saveOptionStrings, "option",
555 TCL_EXACT, &index) != TCL_OK) {
554 if (Tcl_GetIndexFromObjStruct(interp, objv[i], saveOptionStrings,
555 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
556556 goto end;
557557 }
558558 if (i + 1 == objc) {
721721 NSInteger returnCode = NSAlertErrorReturn;
722722
723723 for (i = 1; i < objc; i += 2) {
724 if (Tcl_GetIndexFromObj(interp, objv[i], chooseOptionStrings, "option",
725 TCL_EXACT, &index) != TCL_OK) {
724 if (Tcl_GetIndexFromObjStruct(interp, objv[i], chooseOptionStrings,
725 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
726726 goto end;
727727 }
728728 if (i + 1 == objc) {
938938 iconIndex = ICON_INFO;
939939 typeIndex = TYPE_OK;
940940 for (i = 1; i < objc; i += 2) {
941 if (Tcl_GetIndexFromObj(interp, objv[i], alertOptionStrings, "option",
942 TCL_EXACT, &index) != TCL_OK) {
941 if (Tcl_GetIndexFromObjStruct(interp, objv[i], alertOptionStrings,
942 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
943943 goto end;
944944 }
945945 if (i + 1 == objc) {
966966 break;
967967
968968 case ALERT_ICON:
969 if (Tcl_GetIndexFromObj(interp, objv[i + 1], alertIconStrings,
970 "value", TCL_EXACT, &iconIndex) != TCL_OK) {
969 if (Tcl_GetIndexFromObjStruct(interp, objv[i + 1], alertIconStrings,
970 sizeof(char *), "value", TCL_EXACT, &iconIndex) != TCL_OK) {
971971 goto end;
972972 }
973973 break;
996996 break;
997997
998998 case ALERT_TYPE:
999 if (Tcl_GetIndexFromObj(interp, objv[i + 1], alertTypeStrings,
1000 "value", TCL_EXACT, &typeIndex) != TCL_OK) {
999 if (Tcl_GetIndexFromObjStruct(interp, objv[i + 1], alertTypeStrings,
1000 sizeof(char *), "value", TCL_EXACT, &typeIndex) != TCL_OK) {
10011001 goto end;
10021002 }
10031003 break;
10121012 * why we do this here.
10131013 */
10141014
1015 if (Tcl_GetIndexFromObj(interp, objv[indexDefaultOption + 1],
1016 alertButtonStrings, "value", TCL_EXACT, &index) != TCL_OK) {
1015 if (Tcl_GetIndexFromObjStruct(interp, objv[indexDefaultOption + 1],
1016 alertButtonStrings, sizeof(char *), "value", TCL_EXACT, &index) != TCL_OK) {
10171017 goto end;
10181018 }
10191019
13561356 for (i = 1; i < objc; i += 2) {
13571357 int optionIndex, len;
13581358
1359 if (Tcl_GetIndexFromObj(interp, objv[i], fontchooserOptionStrings,
1360 "option", 0, &optionIndex) != TCL_OK) {
1359 if (Tcl_GetIndexFromObjStruct(interp, objv[i], fontchooserOptionStrings,
1360 sizeof(char *), "option", 0, &optionIndex) != TCL_OK) {
13611361 return TCL_ERROR;
13621362 }
13631363 if (objc == 2) {
221221
222222 if (interp &&
223223 Tcl_GetCommandInfo(interp, "::tk::mac::OpenApplication", &dummy)){
224 int code = Tcl_GlobalEval(interp, "::tk::mac::OpenApplication");
224 int code = Tcl_EvalEx(interp, "::tk::mac::OpenApplication", -1, TCL_EVAL_GLOBAL);
225225 if (code != TCL_OK) {
226226 Tcl_BackgroundException(interp, code);
227227 }
258258
259259 if (interp && Tcl_GetCommandInfo(interp,
260260 "::tk::mac::ReopenApplication", &dummy)) {
261 int code = Tcl_GlobalEval(interp, "::tk::mac::ReopenApplication");
261 int code = Tcl_EvalEx(interp, "::tk::mac::ReopenApplication", -1, TCL_EVAL_GLOBAL);
262262 if (code != TCL_OK){
263263 Tcl_BackgroundException(interp, code);
264264 }
294294
295295 if (interp &&
296296 Tcl_GetCommandInfo(interp, "::tk::mac::ShowPreferences", &dummy)){
297 int code = Tcl_GlobalEval(interp, "::tk::mac::ShowPreferences");
297 int code = Tcl_EvalEx(interp, "::tk::mac::ShowPreferences", -1, TCL_EVAL_GLOBAL);
298298 if (code != TCL_OK) {
299299 Tcl_BackgroundException(interp, code);
300300 }
544544
545545 theErr = FSRefToDString(&file, &scriptName);
546546 if (theErr == noErr) {
547 tclErr = Tcl_EvalFile(interp, Tcl_DStringValue(&scriptName));
547 tclErr = Tcl_FSEvalFileEx(interp, Tcl_DStringValue(&scriptName), NULL);
548548 Tcl_DStringFree(&scriptName);
549549 } else {
550550 sprintf(errString, "AEDoScriptHandler: file not found");
624624 Tcl_Interp *interp = ((KillEvent *) eventPtr)->interp;
625625 Tcl_CmdInfo dummy;
626626 int quit = Tcl_GetCommandInfo(interp, "::tk::mac::Quit", &dummy);
627 int code = Tcl_GlobalEval(interp, quit ? "::tk::mac::Quit" : "exit");
627 int code = Tcl_EvalEx(interp, quit ? "::tk::mac::Quit" : "exit", -1, TCL_EVAL_GLOBAL);
628628
629629 if (code != TCL_OK) {
630630 /*
362362 */
363363
364364 if (Tcl_GetStartupScript(NULL) == NULL) {
365 const char *intvar = Tcl_GetVar(interp,
366 "tcl_interactive", TCL_GLOBAL_ONLY);
365 const char *intvar = Tcl_GetVar2(interp,
366 "tcl_interactive", NULL, TCL_GLOBAL_ONLY);
367367
368368 if (intvar == NULL) {
369 Tcl_SetVar(interp, "tcl_interactive", "1",
369 Tcl_SetVar2(interp, "tcl_interactive", NULL, "1",
370370 TCL_GLOBAL_ONLY);
371371 }
372372 }
379379 Tk_MacOSXSetupTkNotifier();
380380
381381 if (tkLibPath[0] != '\0') {
382 Tcl_SetVar(interp, "tk_library", tkLibPath, TCL_GLOBAL_ONLY);
382 Tcl_SetVar2(interp, "tk_library", NULL, tkLibPath, TCL_GLOBAL_ONLY);
383383 }
384384
385385 if (scriptPath[0] != '\0') {
386 Tcl_SetVar(interp, "auto_path", scriptPath,
386 Tcl_SetVar2(interp, "auto_path", NULL, scriptPath,
387387 TCL_GLOBAL_ONLY|TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
388388 }
389389
420420 {
421421 const char *p, *name;
422422
423 name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
423 name = Tcl_GetVar2(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
424424 if ((name == NULL) || (*name == 0)) {
425425 name = "tk";
426426 } else {
215215 if (len) {
216216 Tcl_IncrRefCount(path);
217217
218 int code = Tcl_FSEvalFile(_eventInterp, path);
218 int code = Tcl_FSEvalFileEx(_eventInterp, path, NULL);
219219
220220 if (code != TCL_OK) {
221221 Tcl_BackgroundException(_eventInterp, code);
235235 if (path) {
236236 Tcl_IncrRefCount(path);
237237
238 int code = Tcl_FSEvalFile(_eventInterp, path);
238 int code = Tcl_FSEvalFileEx(_eventInterp, path, NULL);
239239
240240 if (code != TCL_OK) {
241241 Tcl_BackgroundException(_eventInterp, code);
153153 MacDrawable *macDraw;
154154 SInt32 initialValue, minValue, maxValue;
155155 UInt16 numTicks;
156 Tcl_DString buf;
156157
157158 #ifdef TK_MAC_DEBUG_SCALE
158159 TkMacOSXDbgMsg("TkpDisplayScale");
170171 if ((scalePtr->flags & INVOKE_COMMAND) && (scalePtr->command != NULL)) {
171172 Tcl_Preserve((ClientData) interp);
172173 sprintf(string, scalePtr->format, scalePtr->value);
173 result = Tcl_VarEval(interp, scalePtr->command, " ", string, NULL);
174 Tcl_DStringInit(&buf);
175 Tcl_DStringAppend(&buf, scalePtr->command, -1);
176 Tcl_DStringAppend(&buf, " ", -1);
177 Tcl_DStringAppend(&buf, string, -1);
178 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
179 Tcl_DStringFree(&buf);
174180 if (result != TCL_OK) {
175181 Tcl_AddErrorInfo(interp, "\n (command executed by scale)");
176182 Tcl_BackgroundException(interp, result);
253253 TkScrollbar *scrollPtr)
254254 {
255255 MacScrollbar *macScrollPtr = (MacScrollbar *) scrollPtr;
256 NSScroller *scroller = macScrollPtr->scroller;
257 [scroller setTag:(NSInteger)0];
256258
257259 TkMacOSXMakeCollectableAndRelease(macScrollPtr->scroller);
258260 }
335335 for (i = 1; i < (objc - 1); ) {
336336 stringRep = Tcl_GetString(objv[i]);
337337 if (stringRep[0] == '-') {
338 if (Tcl_GetIndexFromObj(interp, objv[i], sendOptions, "option", 0,
339 &index) != TCL_OK) {
338 if (Tcl_GetIndexFromObjStruct(interp, objv[i], sendOptions,
339 sizeof(char *), "option", 0, &index) != TCL_OK) {
340340 return TCL_ERROR;
341341 }
342342 if (index == 0) {
271271 int code = Tcl_EvalEx(_eventInterp, cmd, -1, TCL_EVAL_GLOBAL);
272272
273273 if (code != TCL_OK) {
274 Tcl_BackgroundError(_eventInterp);
274 Tcl_BackgroundException(_eventInterp, code);
275275 }
276276 Tcl_ResetResult(_eventInterp);
277277 }
700700 Tcl_Preserve(protPtr);
701701 interp = protPtr->interp;
702702 Tcl_Preserve(interp);
703 result = Tcl_GlobalEval(interp, protPtr->command);
703 result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL);
704704 if (result != TCL_OK) {
705705 Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
706706 "\n (command for \"%s\" window manager protocol)",
707707 Tk_GetAtomName((Tk_Window) winPtr, protocol)));
708 Tcl_BackgroundError(interp);
708 Tcl_BackgroundException(interp, result);
709709 }
710710 Tcl_Release(interp);
711711 Tcl_Release(protPtr);
666666
667667 wmPtr->flags |= WM_ABOUT_TO_MAP;
668668 if (wmPtr->flags & WM_UPDATE_PENDING) {
669 Tk_CancelIdleCall(UpdateGeometryInfo, winPtr);
669 Tcl_CancelIdleCall(UpdateGeometryInfo, winPtr);
670670 }
671671 UpdateGeometryInfo(winPtr);
672672 wmPtr->flags &= ~WM_ABOUT_TO_MAP;
769769 ckfree(wmPtr->clientMachine);
770770 }
771771 if (wmPtr->flags & WM_UPDATE_PENDING) {
772 Tk_CancelIdleCall(UpdateGeometryInfo, winPtr);
772 Tcl_CancelIdleCall(UpdateGeometryInfo, winPtr);
773773 }
774774
775775 /*
891891 return Tcl_GetBooleanFromObj(interp, objv[2], &wmTracing);
892892 }
893893
894 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
895 &index) != TCL_OK) {
894 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
895 sizeof(char *), "option", 0, &index) != TCL_OK) {
896896 return TCL_ERROR;
897897 }
898898
12921292 }
12931293 Tcl_SetObjResult(interp, result);
12941294 } else if (objc == 4) { /* wm attributes $win -attribute */
1295 if (Tcl_GetIndexFromObj(interp, objv[3], WmAttributeNames,
1296 "attribute", 0, &attribute) != TCL_OK) {
1295 if (Tcl_GetIndexFromObjStruct(interp, objv[3], WmAttributeNames,
1296 sizeof(char *), "attribute", 0, &attribute) != TCL_OK) {
12971297 return TCL_ERROR;
12981298 }
12991299 Tcl_SetObjResult(interp, WmGetAttribute(winPtr, macWindow, attribute));
13011301 int i;
13021302
13031303 for (i = 3; i < objc; i += 2) {
1304 if (Tcl_GetIndexFromObj(interp, objv[i], WmAttributeNames,
1305 "attribute", 0, &attribute) != TCL_OK) {
1304 if (Tcl_GetIndexFromObjStruct(interp, objv[i], WmAttributeNames,
1305 sizeof(char *), "attribute", 0, &attribute) != TCL_OK) {
13061306 return TCL_ERROR;
13071307 }
13081308 if (WmSetAttribute(winPtr, macWindow, interp, attribute, objv[i+1])
16121612 return TCL_OK;
16131613 }
16141614
1615 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
1616 &index) != TCL_OK) {
1615 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
1616 sizeof(char *), "argument", 0, &index) != TCL_OK) {
16171617 return TCL_ERROR;
16181618 }
16191619 if (index == OPT_ACTIVE) {
26712671 if (*Tcl_GetString(objv[3]) == '\0') {
26722672 wmPtr->sizeHintsFlags &= ~(USPosition|PPosition);
26732673 } else {
2674 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
2675 &index) != TCL_OK) {
2674 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
2675 sizeof(char *), "argument", 0, &index) != TCL_OK) {
26762676 return TCL_ERROR;
26772677 }
26782678 if (index == OPT_USER) {
29122912 if (*Tcl_GetString(objv[3]) == '\0') {
29132913 wmPtr->sizeHintsFlags &= ~(USSize|PSize);
29142914 } else {
2915 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
2916 &index) != TCL_OK) {
2915 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
2916 sizeof(char *), "argument", 0, &index) != TCL_OK) {
29172917 return TCL_ERROR;
29182918 }
29192919 if (index == OPT_USER) {
30413041
30423042 ckfree(windows);
30433043
3044 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3045 &index) != TCL_OK) {
3044 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3045 sizeof(char *), "argument", 0, &index) != TCL_OK) {
30463046 return TCL_ERROR;
30473047 }
30483048 if (index == OPT_ISABOVE) {
31083108 return TCL_ERROR;
31093109 }
31103110
3111 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3112 &index) != TCL_OK) {
3111 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3112 sizeof(char *), "argument", 0, &index) != TCL_OK) {
31133113 return TCL_ERROR;
31143114 }
31153115
44754475
44764476 if (!(wmPtr->flags & WM_NEVER_MAPPED)) {
44774477 if (wmPtr->flags & WM_UPDATE_PENDING) {
4478 Tk_CancelIdleCall(UpdateGeometryInfo, winPtr);
4478 Tcl_CancelIdleCall(UpdateGeometryInfo, winPtr);
44794479 }
44804480 UpdateGeometryInfo(winPtr);
44814481 }
51315131 return TCL_ERROR;
51325132 }
51335133
5134 if (Tcl_GetIndexFromObj(interp, objv[1], subcmds, "option", 0,
5135 &index) != TCL_OK) {
5134 if (Tcl_GetIndexFromObjStruct(interp, objv[1], subcmds,
5135 sizeof(char *), "option", 0, &index) != TCL_OK) {
51365136 return TCL_ERROR;
51375137 }
51385138 if (((enum SubCmds) index) == TKMWS_STYLE) {
8484 test bitmap-4.1 {FreeBitmapObjProc} -constraints {
8585 testbitmap
8686 } -body {
87 set x [format questhead]
87 set x [join questhead]
8888 button .b -bitmap $x
89 set y [format questhead]
89 set y [join questhead]
9090 .b configure -bitmap $y
91 set z [format questhead]
91 set z [join questhead]
9292 .b configure -bitmap $z
9393 set result {}
9494 lappend result [testbitmap questhead]
131131 } -setup {
132132 set result {}
133133 } -body {
134 set x [format purple]
134 set x [join purple]
135135 button .b -bg $x -text .b1
136 set y [format purple]
136 set y [join purple]
137137 .b configure -bg $y
138 set z [format purple]
138 set z [join purple]
139139 .b configure -bg $z
140140 lappend result [testborder purple]
141141 set x red
1515 # chain2 depends on chain1. If chain1 is deleted first, the
1616 # delete of chain2 will crash.
1717 deleteWindows
18 foreach t {alltypes chain2 chain1 configerror internal new notenoughparams
19 twowindows} {
18 foreach t {alltypes chain3 chain2 chain1 configerror internal
19 new notenoughparams twowindows} {
2020 while {[testobjconfig info $t] != ""} {
2121 testobjconfig delete $t
2222 }
125125 set x {}
126126 testobjconfig chain1 .a
127127 testobjconfig chain2 .b
128 testobjconfig chain2 .c
128 testobjconfig chain3 .c
129129 deleteWindows
130 testobjconfig delete chain2
130 testobjconfig delete chain3
131131 lappend x [testobjconfig info chain2] [testobjconfig info chain1]
132132 testobjconfig delete chain2
133133 lappend x [testobjconfig info chain2] [testobjconfig info chain1]
134134 } -cleanup {
135135 killTables
136 } -result {{1 4 -three 2 2 -one} {2 2 -one} {} {1 2 -one}}
136 } -result {{3 4 -three 2 2 -one} {2 2 -one} {} {2 2 -one}}
137137
138138 # No tests for DestroyOptionHashTable; couldn't figure out how to test.
139139
144144 test cursor-4.1 {FreeCursorObjProc} -constraints {
145145 testcursor
146146 } -body {
147 set x [format heart]
147 set x [join heart]
148148 button .b -cursor $x
149 set y [format heart]
149 set y [join heart]
150150 .b configure -cursor $y
151 set z [format heart]
151 set z [join heart]
152152 .b configure -cursor $z
153153 set result {}
154154 lappend result [testcursor heart]
1818 wm geom .t +0+0
1919 update idletasks
2020
21 case [tk windowingsystem] {
21 switch [tk windowingsystem] {
2222 x11 {set fixed "fixed"}
2323 win32 {set fixed "courier 12"}
24 classic -
2524 aqua {set fixed "monaco 9"}
2625 }
2726
798797 destroy .b1
799798 set result {}
800799 } -body {
801 set x [format {Courier 12}]
800 set x [join {Courier 12} { }]
802801 button .b1 -font $x
803 set y [format {Courier 12}]
802 set y [join {Courier 12} { }]
804803 .b1 configure -font $y
805 set z [format {Courier 12}]
804 set z [join {Courier 12} { }]
806805 .b1 configure -font $z
807806 lappend result [testfont counts {Courier 12}]
808807 set x red
30563056 destroy .l
30573057 } -result {1 1 2}
30583058
3059 test listbox-30.1 {Bug 3607326} -setup {
3060 destroy .l
3061 unset -nocomplain a
3062 } -body {
3063 array set a {}
3064 listbox .l -listvariable a
3065 } -cleanup {
3066 destroy .l
3067 unset -nocomplain a
3068 } -result * -match glob -returnCodes error
3069
30593070 resetGridInfo
30603071 deleteWindows
30613072 option clear
88 namespace import ::tcltest::*
99 tcltest::configure {*}$argv
1010 tcltest::loadTestedCommands
11 testConstraint unthreaded [expr {
12 (![info exist tcl_platform(threaded)] || !$tcl_platform(threaded))
13 }]
1411 namespace import ::tk::test::loadTkCommand
1512 update
1613
191188 list $error $msg
192189 } -result {0 {}}
193190
194 # window-2.9 deadlocks threaded Tk [Bug 1715716]
195191 test window-2.9 {Tk_DestroyWindow, Destroy bindings evaluated after exit} -constraints {
196 unixOrWin unthreaded
192 unixOrWin
197193 } -body {
198194 set code [loadTkCommand]
199195 append code {
398398 tkMacOSXMenubutton.o tkMacOSXMenus.o tkMacOSXMouseEvent.o \
399399 tkMacOSXNotify.o tkMacOSXRegion.o tkMacOSXScrlbr.o tkMacOSXSend.o \
400400 tkMacOSXSubwindows.o tkMacOSXWindowEvent.o \
401 tkMacOSXWm.o tkMacOSXXStubs.o @EXTRA_AQUA_OBJS@ \
401 tkMacOSXWm.o tkMacOSXXStubs.o \
402402 tkFileFilter.o tkMacWinMenu.o tkPointer.o tkUnix3d.o tkUnixScale.o \
403403 xcolors.o xdraw.o xgc.o ximage.o xutil.o \
404404 ttkMacOSXTheme.o
526526 $(MAC_OSX_DIR)/tkMacOSXSend.c $(MAC_OSX_DIR)/tkMacOSXSubwindows.c \
527527 $(MAC_OSX_DIR)/tkMacOSXTest.c $(MAC_OSX_DIR)/tkMacOSXWindowEvent.c \
528528 $(MAC_OSX_DIR)/tkMacOSXWm.c $(MAC_OSX_DIR)/tkMacOSXXStubs.c \
529 @EXTRA_AQUA_SRCS@ \
530529 $(GENERIC_DIR)/tkFileFilter.c $(GENERIC_DIR)/tkMacWinMenu.c \
531530 $(GENERIC_DIR)/tkPointer.c $(UNIX_DIR)/tkUnix3d.c \
532531 $(UNIX_DIR)/tkUnixScale.c $(XLIB_DIR)/xcolors.c $(XLIB_DIR)/xdraw.c \
547546
548547 AQUA_PRIVATE_HDRS = $(MAC_OSX_DIR)/tkMacOSXPort.h $(MAC_OSX_DIR)/tkMacOSXInt.h
549548
550 X11_PRIVATE_HDRS = $(UNIX_DIR)/tkUnixPort.h $(UNIX_DIR)/tkUnixInt.h
549 X11_PRIVATE_HDRS = $(UNIX_DIR)/tkUnixPort.h $(UNIX_DIR)/tkUnixInt.h $(GENERIC_DIR)/tkIntXlibDecls.h
551550
552551 # Currently private, eventually public
553552 TTK_HDRS = $(TTK_DIR)/ttkTheme.h $(TTK_DIR)/ttkDecls.h
615614 -f "${TOP_DIR}/win/tk${MAJOR_VERSION}${MINOR_VERSION}.dll"; then \
616615 cp "${TOP_DIR}/win/tk${MAJOR_VERSION}${MINOR_VERSION}.dll" .; \
617616 fi
618 ${CC} ${CFLAGS} ${LDFLAGS} $(WISH_OBJS) @WISH_BUILD_LIB_SPEC@ \
619 $(CC_SEARCH_FLAGS) -o ${WISH_EXE}
617 ${CC} ${CFLAGS} ${LDFLAGS} $(WISH_OBJS) @TK_BUILD_LIB_SPEC@ \
618 $(WISH_LIBS) $(CC_SEARCH_FLAGS) -o ${WISH_EXE}
620619
621620 # Resetting the LIB_RUNTIME_DIR below is required so that
622621 # the generated tktest executable gets the build directory
727726 echo "Creating package index $(PKG_INDEX)"; \
728727 rm -f "$(PKG_INDEX)"; \
729728 (\
730 echo "if {[catch {package present Tcl $(TCLVERSION)$(TCLPATCHL)}]} return";\
729 echo "if {[catch {package present Tcl 8.6.0}]} return";\
731730 relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\
732731 if test "x$(DLL_INSTALL_DIR)" != "x$(BIN_INSTALL_DIR)"; then \
733 echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file join \$$dir $${relative}$(TK_LIB_FILE)] Tk]";\
732 echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}$(TK_LIB_FILE)]] Tk]";\
734733 else \
735734 echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\
736735 echo " || ([info exists ::argv] && (\"-display\" in \$$::argv)))} {";\
737 echo " package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file join \$$dir $${relative}.. bin $(TK_LIB_FILE)] Tk]";\
736 echo " package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir $${relative}.. bin $(TK_LIB_FILE)]] Tk]";\
738737 echo "} else {";\
739 echo " package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION)$(PATCH_LEVEL) [list load [file join \$$dir $${relative}.. bin tk${MAJOR_VERSION}${MINOR_VERSION}.dll] Tk]";\
738 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]] Tk]";\
740739 echo "}";\
741740 fi \
742741 ) > "$(PKG_INDEX)"; \
747746 @if test -f "tk${MAJOR_VERSION}${MINOR_VERSION}.dll"; then \
748747 $(INSTALL_LIBRARY) "tk${MAJOR_VERSION}${MINOR_VERSION}.dll" "$(DLL_INSTALL_DIR)";\
749748 chmod 555 "$(DLL_INSTALL_DIR)/tk${MAJOR_VERSION}${MINOR_VERSION}.dll";\
749 $(INSTALL_LIBRARY) "../win/libtk${MAJOR_VERSION}${MINOR_VERSION}.a" "$(LIB_INSTALL_DIR)";\
750 chmod 555 "$(LIB_INSTALL_DIR)/libtk${MAJOR_VERSION}${MINOR_VERSION}.a";\
750751 fi
751752 @echo "Installing ${WISH_EXE} as $(BIN_INSTALL_DIR)/wish$(VERSION)${EXE_SUFFIX}"
752753 @$(INSTALL_PROGRAM) ${WISH_EXE} "$(BIN_INSTALL_DIR)/wish$(VERSION)${EXE_SUFFIX}"
15931594 $(MAC_OSX_DIR)/*.icns $(MAC_OSX_DIR)/*.tiff \
15941595 $(MAC_OSX_DIR)/*.[ch] $(MAC_OSX_DIR)/*.in \
15951596 $(MAC_OSX_DIR)/*.ac $(MAC_OSX_DIR)/*.xcconfig \
1596 $(MAC_OSX_DIR)/*.sdef $(MAC_OSX_DIR)/configure \
1597 $(MAC_OSX_DIR)/*.sdef $(MAC_OSX_DIR)/configure \
15971598 $(DISTDIR)/macosx
15981599 cp -p $(TOP_DIR)/license.terms $(DISTDIR)/macosx
15991600 mkdir $(DISTDIR)/macosx/Tk.xcode
307307 # include <unistd.h>
308308 #endif"
309309
310 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TCL_VERSION TCL_PATCH_LEVEL TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCLSH_PROG BUILD_TCLSH MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR ac_ct_AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS LDAIX_SRC CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB DLL_INSTALL_DIR INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT XFT_CFLAGS XFT_LIBS UNIX_FONT_OBJS TK_VERSION TK_MAJOR_VERSION TK_MINOR_VERSION TK_PATCH_LEVEL TK_YEAR TK_LIB_FILE TK_LIB_FLAG TK_LIB_SPEC TK_STUB_LIB_FILE TK_STUB_LIB_FLAG TK_STUB_LIB_SPEC TK_STUB_LIB_PATH TK_INCLUDE_SPEC TK_BUILD_STUB_LIB_SPEC TK_BUILD_STUB_LIB_PATH TK_SRC_DIR TK_SHARED_BUILD LD_LIBRARY_PATH_VAR TK_BUILD_LIB_SPEC WISH_BUILD_LIB_SPEC TCL_STUB_FLAGS XINCLUDES XLIBSW LOCALES TK_WINDOWINGSYSTEM TK_PKG_DIR TK_LIBRARY LIB_RUNTIME_DIR PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_WISH_LIBS EXTRA_AQUA_OBJS EXTRA_AQUA_SRCS CFBUNDLELOCALIZATIONS MACOSX_SRC_DIR TK_RSRC_FILE WISH_RSRC_FILE LIB_RSRC_FILE APP_RSRC_FILE REZ REZ_FLAGS LTLIBOBJS'
310 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TCL_VERSION TCL_PATCH_LEVEL TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCLSH_PROG BUILD_TCLSH MAN_FLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP TCL_THREADS RANLIB ac_ct_RANLIB AR ac_ct_AR LIBOBJS TCL_LIBS DL_LIBS DL_OBJS PLAT_OBJS PLAT_SRCS LDAIX_SRC CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING LDFLAGS_DEBUG LDFLAGS_OPTIMIZE CC_SEARCH_FLAGS LD_SEARCH_FLAGS STLIB_LD SHLIB_LD TCL_SHLIB_LD_EXTRAS TK_SHLIB_LD_EXTRAS SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX MAKE_LIB MAKE_STUB_LIB INSTALL_LIB DLL_INSTALL_DIR INSTALL_STUB_LIB CFLAGS_DEFAULT LDFLAGS_DEFAULT XFT_CFLAGS XFT_LIBS UNIX_FONT_OBJS TK_VERSION TK_MAJOR_VERSION TK_MINOR_VERSION TK_PATCH_LEVEL TK_YEAR TK_LIB_FILE TK_LIB_FLAG TK_LIB_SPEC TK_STUB_LIB_FILE TK_STUB_LIB_FLAG TK_STUB_LIB_SPEC TK_STUB_LIB_PATH TK_INCLUDE_SPEC TK_BUILD_STUB_LIB_SPEC TK_BUILD_STUB_LIB_PATH TK_SRC_DIR TK_SHARED_BUILD LD_LIBRARY_PATH_VAR TK_BUILD_LIB_SPEC TCL_STUB_FLAGS XINCLUDES XLIBSW LOCALES TK_WINDOWINGSYSTEM TK_PKG_DIR TK_LIBRARY LIB_RUNTIME_DIR PRIVATE_INCLUDE_DIR HTML_DIR EXTRA_CC_SWITCHES EXTRA_APP_CC_SWITCHES EXTRA_INSTALL EXTRA_INSTALL_BINARIES EXTRA_BUILD_HTML EXTRA_WISH_LIBS CFBUNDLELOCALIZATIONS TK_RSRC_FILE WISH_RSRC_FILE LIB_RSRC_FILE APP_RSRC_FILE REZ REZ_FLAGS LTLIBOBJS'
311311 ac_subst_files=''
312312
313313 # Initialize some variables set by options.
860860 --enable-load allow dynamic loading and "load" command (default:
861861 on)
862862 --enable-symbols build with debugging symbols (default: off)
863 --enable-aqua=yes|carbon|no
864 use Aqua windowingsystem on Mac OS X (default: no)
863 --enable-aqua=yes|no use Aqua windowingsystem on Mac OS X (default: no)
864 --enable-xft use freetype/fontconfig/xft (default: on)
865865 --enable-xss use XScreenSaver for activity timer (default: on)
866 --enable-xft use freetype/fontconfig/xft (default: on)
867866 --enable-framework package shared libraries in MacOSX frameworks
868867 (default: off)
869868
13381337 TK_VERSION=8.6
13391338 TK_MAJOR_VERSION=8
13401339 TK_MINOR_VERSION=6
1341 TK_PATCH_LEVEL=".0"
1340 TK_PATCH_LEVEL=".1"
13421341 VERSION=${TK_VERSION}
13431342 LOCALES="cs da de el en en_gb eo es fr hu it nl pl pt ru sv"
13441343
40354034 # Does the pthread-implementation provide
40364035 # 'pthread_attr_setstacksize' ?
40374036
4038 for ac_func in pthread_attr_setstacksize
4037 ac_saved_libs=$LIBS
4038 LIBS="$LIBS $THREADS_LIBS"
4039
4040
4041 for ac_func in pthread_attr_setstacksize pthread_atfork
40394042 do
40404043 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
40414044 echo "$as_me:$LINENO: checking for $ac_func" >&5
41364139 fi
41374140 done
41384141
4142 LIBS=$ac_saved_libs
41394143 else
41404144 TCL_THREADS=0
41414145 fi
44594463
44604464 cat >>confdefs.h <<\_ACEOF
44614465 #define MODULE_SCOPE extern __attribute__((__visibility__("hidden")))
4466 _ACEOF
4467
4468
4469 cat >>confdefs.h <<\_ACEOF
4470 #define HAVE_HIDDEN 1
44624471 _ACEOF
44634472
44644473
49084917 SHLIB_CFLAGS=""
49094918 SHLIB_LD='${CC} -shared'
49104919 SHLIB_SUFFIX=".dll"
4911 DL_OBJS="tclLoadDl.o tclWinError.o"
4920 DL_OBJS="tclLoadDl.o"
4921 PLAT_OBJS='${CYGWIN_OBJS}'
4922 PLAT_SRCS='${CYGWIN_SRCS}'
49124923 DL_LIBS="-ldl"
49134924 CC_SEARCH_FLAGS=""
49144925 LD_SEARCH_FLAGS=""
54225433 fi
54235434
54245435 ;;
5425 Linux*)
5436 Linux*|GNU*|NetBSD-Debian)
54265437 SHLIB_CFLAGS="-fPIC"
54275438 SHLIB_SUFFIX=".so"
54285439
55255536
55265537 if test x"${USE_COMPAT}" != x; then
55275538 CFLAGS="$CFLAGS -fno-inline"
5528 fi
5529
5530 ;;
5531 GNU*)
5532 SHLIB_CFLAGS="-fPIC"
5533 SHLIB_SUFFIX=".so"
5534
5535 SHLIB_LD='${CC} -shared'
5536 DL_OBJS=""
5537 DL_LIBS="-ldl"
5538 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
5539 CC_SEARCH_FLAGS=""
5540 LD_SEARCH_FLAGS=""
5541 if test "`uname -m`" = "alpha"; then
5542 CFLAGS="$CFLAGS -mieee"
55435539 fi
55445540
55455541 ;;
55795575 CC_SEARCH_FLAGS=""
55805576 LD_SEARCH_FLAGS=""
55815577 ;;
5582 NetBSD-1.*|FreeBSD-[1-2].*)
5583 SHLIB_CFLAGS="-fPIC"
5584 SHLIB_LD="ld -Bshareable -x"
5585 SHLIB_SUFFIX=".so"
5586 DL_OBJS="tclLoadDl.o"
5587 DL_LIBS=""
5588 if test $doRpath = yes; then
5589
5590 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
5591 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
5592 fi
5593
5594 echo "$as_me:$LINENO: checking for ELF" >&5
5595 echo $ECHO_N "checking for ELF... $ECHO_C" >&6
5596 if test "${tcl_cv_ld_elf+set}" = set; then
5597 echo $ECHO_N "(cached) $ECHO_C" >&6
5598 else
5599
5600 cat >conftest.$ac_ext <<_ACEOF
5601 /* confdefs.h. */
5602 _ACEOF
5603 cat confdefs.h >>conftest.$ac_ext
5604 cat >>conftest.$ac_ext <<_ACEOF
5605 /* end confdefs.h. */
5606
5607 #ifdef __ELF__
5608 yes
5609 #endif
5610
5611 _ACEOF
5612 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5613 $EGREP "yes" >/dev/null 2>&1; then
5614 tcl_cv_ld_elf=yes
5615 else
5616 tcl_cv_ld_elf=no
5617 fi
5618 rm -f conftest*
5619
5620 fi
5621 echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
5622 echo "${ECHO_T}$tcl_cv_ld_elf" >&6
5623 if test $tcl_cv_ld_elf = yes; then
5624
5625 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
5626
5627 else
5628
5629 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
5630
5631 fi
5632
5633
5634 # Ancient FreeBSD doesn't handle version numbers with dots.
5635
5636 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
5637 TCL_LIB_VERSIONS_OK=nodots
5638 ;;
56395578 OpenBSD-*)
56405579 arch=`arch -s`
56415580 case "$arch" in
5642 m88k|vax)
5581 vax)
56435582 # Equivalent using configure option --disable-load
56445583 # Step 4 will set the necessary variables
56455584 DL_OBJS=""
56465585 SHLIB_LD_LIBS=""
5586 LDFLAGS=""
56475587 ;;
56485588 *)
56495589 SHLIB_CFLAGS="-fPIC"
56585598
56595599 LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
56605600 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
5601 LDFLAGS="-Wl,-export-dynamic"
56615602 ;;
56625603 esac
56635604 case "$arch" in
5664 m88k|vax)
5605 vax)
56655606 CFLAGS_OPTIMIZE="-O1"
56665607 ;;
56675608 sh)
56715612 CFLAGS_OPTIMIZE="-O2"
56725613 ;;
56735614 esac
5674 echo "$as_me:$LINENO: checking for ELF" >&5
5675 echo $ECHO_N "checking for ELF... $ECHO_C" >&6
5676 if test "${tcl_cv_ld_elf+set}" = set; then
5677 echo $ECHO_N "(cached) $ECHO_C" >&6
5678 else
5679
5680 cat >conftest.$ac_ext <<_ACEOF
5681 /* confdefs.h. */
5682 _ACEOF
5683 cat confdefs.h >>conftest.$ac_ext
5684 cat >>conftest.$ac_ext <<_ACEOF
5685 /* end confdefs.h. */
5686
5687 #ifdef __ELF__
5688 yes
5689 #endif
5690
5691 _ACEOF
5692 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5693 $EGREP "yes" >/dev/null 2>&1; then
5694 tcl_cv_ld_elf=yes
5695 else
5696 tcl_cv_ld_elf=no
5697 fi
5698 rm -f conftest*
5699
5700 fi
5701 echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
5702 echo "${ECHO_T}$tcl_cv_ld_elf" >&6
5703 if test $tcl_cv_ld_elf = yes; then
5704
5705 LDFLAGS=-Wl,-export-dynamic
5706
5707 else
5708 LDFLAGS=""
5709 fi
5710
57115615 if test "${TCL_THREADS}" = "1"; then
57125616
57135617 # On OpenBSD: Compile with -pthread
57215625 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
57225626 TCL_LIB_VERSIONS_OK=nodots
57235627 ;;
5724 NetBSD-*|FreeBSD-[3-4].*)
5725 # FreeBSD 3.* and greater have ELF.
5726 # NetBSD 2.* has ELF and can use 'cc -shared' to build shared libs
5628 NetBSD-*)
5629 # NetBSD has ELF and can use 'cc -shared' to build shared libs
57275630 SHLIB_CFLAGS="-fPIC"
57285631 SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
57295632 SHLIB_SUFFIX=".so"
57455648
57465649 fi
57475650
5748 case $system in
5749 FreeBSD-3.*)
5750 # FreeBSD-3 doesn't handle version numbers with dots.
5751 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
5752 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
5753 TCL_LIB_VERSIONS_OK=nodots
5754 ;;
5755 esac
57565651 ;;
57575652 FreeBSD-*)
57585653 # This configuration from FreeBSD Ports.
57595654 SHLIB_CFLAGS="-fPIC"
57605655 SHLIB_LD="${CC} -shared"
5761 TCL_SHLIB_LD_EXTRAS="-soname \$@"
5656 TCL_SHLIB_LD_EXTRAS="-Wl,-soname=\$@"
57625657 SHLIB_SUFFIX=".so"
57635658 DL_OBJS="tclLoadDl.o"
57645659 DL_LIBS=""
57665661 if test $doRpath = yes; then
57675662
57685663 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
5769 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
5664 LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
57705665 fi
57715666
57725667 if test "${TCL_THREADS}" = "1"; then
69756870 _ACEOF
69766871
69776872
6978 cat >>confdefs.h <<\_ACEOF
6979 #define NO_VIZ
6980 _ACEOF
6981
6982
69836873 fi
69846874
69856875
76927582 cat >>conftest.$ac_ext <<_ACEOF
76937583 /* end confdefs.h. */
76947584 #include <sys/types.h>
7695 #include <sys/dirent.h>
7585 #include <dirent.h>
76967586 int
76977587 main ()
76987588 {
93329222 # On Mac OS X, we can build either with X11 or with Aqua
93339223 #--------------------------------------------------------------------
93349224
9335 MACOSX_SRC_DIR=macosx
93369225 if test "`uname -s`" = "Darwin" ; then
93379226 echo "$as_me:$LINENO: checking whether to use Aqua" >&5
93389227 echo $ECHO_N "checking whether to use Aqua... $ECHO_C" >&6
93459234 fi;
93469235 if test $tk_aqua = yes -o $tk_aqua = cocoa; then
93479236 tk_aqua=yes
9237 if test $tcl_corefoundation = no; then
9238 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when CoreFoundation is available" >&5
9239 echo "$as_me: WARNING: Aqua can only be used when CoreFoundation is available" >&2;}
9240 tk_aqua=no
9241 fi
93489242 if test ! -d /System/Library/Frameworks/Cocoa.framework; then
93499243 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when Cocoa is available" >&5
93509244 echo "$as_me: WARNING: Aqua can only be used when Cocoa is available" >&2;}
93559249 echo "$as_me: WARNING: Aqua requires Mac OS X 10.5 or later" >&2;}
93569250 tk_aqua=no
93579251 fi
9358 elif test $tk_aqua = carbon; then
9359 if test ! -d /System/Library/Frameworks/Carbon.framework; then
9360 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when Carbon is available" >&5
9361 echo "$as_me: WARNING: Aqua can only be used when Carbon is available" >&2;}
9362 tk_aqua=no
9363 fi
9364 if test "`uname -r | awk -F. '{print $1}'`" -lt 6; then
9365 { echo "$as_me:$LINENO: WARNING: Aqua requires Mac OS X 10.2 or later" >&5
9366 echo "$as_me: WARNING: Aqua requires Mac OS X 10.2 or later" >&2;}
9367 tk_aqua=no
9368 fi
9369 else
9370 tk_aqua=no
93719252 fi
9372 if test $tk_aqua != no -a $tcl_corefoundation = no; then
9373 { echo "$as_me:$LINENO: WARNING: Aqua can only be used when CoreFoundation is available" >&5
9374 echo "$as_me: WARNING: Aqua can only be used when CoreFoundation is available" >&2;}
9375 tk_aqua=no
9376 fi
9377 if test $tk_aqua = carbon; then
9378 MACOSX_SRC_DIR=carbon
9379 echo "$as_me:$LINENO: result: yes (deprecated legacy Carbon implementation)" >&5
9380 echo "${ECHO_T}yes (deprecated legacy Carbon implementation)" >&6
9381 else
9382 echo "$as_me:$LINENO: result: $tk_aqua" >&5
9253 echo "$as_me:$LINENO: result: $tk_aqua" >&5
93839254 echo "${ECHO_T}$tk_aqua" >&6
9384 fi
93859255 if test "$fat_32_64" = yes; then
93869256 if test $tk_aqua = no; then
93879257 echo "$as_me:$LINENO: checking for 64-bit X11" >&5
94509320 fi
94519321 # remove 64-bit arch flags from CFLAGS et al. for combined 32 & 64 bit
94529322 # fat builds if configuration does not support 64-bit.
9453 if test $tk_aqua = carbon -o "$tcl_cv_lib_x11_64" = no; then
9323 if test "$tcl_cv_lib_x11_64" = no; then
94549324 { echo "$as_me:$LINENO: Removing 64-bit architectures from compiler & linker flags" >&5
94559325 echo "$as_me: Removing 64-bit architectures from compiler & linker flags" >&6;}
94569326 for v in CFLAGS CPPFLAGS LDFLAGS; do
98219691 tk_aqua=no
98229692 fi
98239693
9824 if test $tk_aqua != no; then
9825 if test $tk_aqua = yes; then
9826 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
9827 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
9828 else
9829 LIBS="$LIBS -framework Carbon -framework IOKit"
9830 CFLAGS="$CFLAGS -fpascal-strings"
9831 fi
9694 if test $tk_aqua = yes; then
98329695
98339696 cat >>confdefs.h <<\_ACEOF
98349697 #define MAC_OSX_TK 1
98359698 _ACEOF
98369699
9700 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
9701 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
98379702 TK_WINDOWINGSYSTEM=AQUA
98389703 if test -n "${enable_symbols}" -a "${enable_symbols}" != no; then
98399704
100969961 cat confdefs.h >>conftest.$ac_ext
100979962 cat >>conftest.$ac_ext <<_ACEOF
100989963 /* end confdefs.h. */
10099 #include <X11/XIntrinsic.h>
9964 #include <X11/Xlib.h>
101009965 _ACEOF
101019966 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
101029967 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
101259990 fi
101269991 rm -f conftest.err conftest.$ac_ext
101279992 else
10128 if test ! -r $x_includes/X11/Intrinsic.h; then
9993 if test ! -r $x_includes/X11/Xlib.h; then
101299994 not_really_there="yes"
101309995 fi
101319996 fi
1014010005 cat confdefs.h >>conftest.$ac_ext
1014110006 cat >>conftest.$ac_ext <<_ACEOF
1014210007 /* end confdefs.h. */
10143 #include <X11/Intrinsic.h>
10008 #include <X11/Xlib.h>
1014410009 _ACEOF
1014510010 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
1014610011 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
1017110036 if test "$found_xincludes" = "no"; then
1017210037 dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
1017310038 for i in $dirs ; do
10174 if test -r $i/X11/Intrinsic.h; then
10039 if test -r $i/X11/Xlib.h; then
1017510040 echo "$as_me:$LINENO: result: $i" >&5
1017610041 echo "${ECHO_T}$i" >&6
1017710042 XINCLUDES=" -I$i"
1047110336 fi
1047210337 rm -f conftest.err conftest.$ac_objext \
1047310338 conftest$ac_exeext conftest.$ac_ext
10474 CFLAGS=$tk_oldCFlags
10475 LIBS=$tk_oldLibs
10476 fi
10477
10478 #--------------------------------------------------------------------
10479 # Check whether the header and library for the XScreenSaver
10480 # extension are available, and set HAVE_XSS if so.
10481 # XScreenSaver is needed for Tk_GetUserInactiveTime().
10482 #--------------------------------------------------------------------
10483
10484 if test $tk_aqua = no; then
10485 tk_oldCFlags=$CFLAGS
10486 CFLAGS="$CFLAGS $XINCLUDES"
10487 tk_oldLibs=$LIBS
10488 LIBS="$tk_oldLibs $XLIBSW"
10489 xss_header_found=no
10490 xss_lib_found=no
10491 echo "$as_me:$LINENO: checking whether to try to use XScreenSaver" >&5
10492 echo $ECHO_N "checking whether to try to use XScreenSaver... $ECHO_C" >&6
10493 # Check whether --enable-xss or --disable-xss was given.
10494 if test "${enable_xss+set}" = set; then
10495 enableval="$enable_xss"
10496 enable_xss=$enableval
10497 else
10498 enable_xss=yes
10499 fi;
10500 if test "$enable_xss" = "no" ; then
10501 echo "$as_me:$LINENO: result: $enable_xss" >&5
10502 echo "${ECHO_T}$enable_xss" >&6
10503 else
10504 echo "$as_me:$LINENO: result: $enable_xss" >&5
10505 echo "${ECHO_T}$enable_xss" >&6
10506 echo "$as_me:$LINENO: checking for X11/extensions/scrnsaver.h" >&5
10507 echo $ECHO_N "checking for X11/extensions/scrnsaver.h... $ECHO_C" >&6
10508 if test "${ac_cv_header_X11_extensions_scrnsaver_h+set}" = set; then
10509 echo $ECHO_N "(cached) $ECHO_C" >&6
10510 else
10511 cat >conftest.$ac_ext <<_ACEOF
10512 /* confdefs.h. */
10513 _ACEOF
10514 cat confdefs.h >>conftest.$ac_ext
10515 cat >>conftest.$ac_ext <<_ACEOF
10516 /* end confdefs.h. */
10517 #include <X11/Xlib.h>
10518
10519 #include <X11/extensions/scrnsaver.h>
10520 _ACEOF
10521 rm -f conftest.$ac_objext
10522 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10523 (eval $ac_compile) 2>conftest.er1
10524 ac_status=$?
10525 grep -v '^ *+' conftest.er1 >conftest.err
10526 rm -f conftest.er1
10527 cat conftest.err >&5
10528 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10529 (exit $ac_status); } &&
10530 { ac_try='test -z "$ac_c_werror_flag"
10531 || test ! -s conftest.err'
10532 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10533 (eval $ac_try) 2>&5
10534 ac_status=$?
10535 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10536 (exit $ac_status); }; } &&
10537 { ac_try='test -s conftest.$ac_objext'
10538 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10539 (eval $ac_try) 2>&5
10540 ac_status=$?
10541 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10542 (exit $ac_status); }; }; then
10543 ac_cv_header_X11_extensions_scrnsaver_h=yes
10544 else
10545 echo "$as_me: failed program was:" >&5
10546 sed 's/^/| /' conftest.$ac_ext >&5
10547
10548 ac_cv_header_X11_extensions_scrnsaver_h=no
10549 fi
10550 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10551 fi
10552 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
10553 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
10554 if test $ac_cv_header_X11_extensions_scrnsaver_h = yes; then
10555
10556 xss_header_found=yes
10557
10558 fi
10559
10560
10561 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo" >&5
10562 echo $ECHO_N "checking for XScreenSaverQueryInfo... $ECHO_C" >&6
10563 if test "${ac_cv_func_XScreenSaverQueryInfo+set}" = set; then
10564 echo $ECHO_N "(cached) $ECHO_C" >&6
10565 else
10566 cat >conftest.$ac_ext <<_ACEOF
10567 /* confdefs.h. */
10568 _ACEOF
10569 cat confdefs.h >>conftest.$ac_ext
10570 cat >>conftest.$ac_ext <<_ACEOF
10571 /* end confdefs.h. */
10572 /* Define XScreenSaverQueryInfo to an innocuous variant, in case <limits.h> declares XScreenSaverQueryInfo.
10573 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10574 #define XScreenSaverQueryInfo innocuous_XScreenSaverQueryInfo
10575
10576 /* System header to define __stub macros and hopefully few prototypes,
10577 which can conflict with char XScreenSaverQueryInfo (); below.
10578 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10579 <limits.h> exists even on freestanding compilers. */
10580
10581 #ifdef __STDC__
10582 # include <limits.h>
10583 #else
10584 # include <assert.h>
10585 #endif
10586
10587 #undef XScreenSaverQueryInfo
10588
10589 /* Override any gcc2 internal prototype to avoid an error. */
10590 #ifdef __cplusplus
10591 extern "C"
10592 {
10593 #endif
10594 /* We use char because int might match the return type of a gcc2
10595 builtin and then its argument prototype would still apply. */
10596 char XScreenSaverQueryInfo ();
10597 /* The GNU C library defines this for functions which it implements
10598 to always fail with ENOSYS. Some functions are actually named
10599 something starting with __ and the normal name is an alias. */
10600 #if defined (__stub_XScreenSaverQueryInfo) || defined (__stub___XScreenSaverQueryInfo)
10601 choke me
10602 #else
10603 char (*f) () = XScreenSaverQueryInfo;
10604 #endif
10605 #ifdef __cplusplus
10606 }
10607 #endif
10608
10609 int
10610 main ()
10611 {
10612 return f != XScreenSaverQueryInfo;
10613 ;
10614 return 0;
10615 }
10616 _ACEOF
10617 rm -f conftest.$ac_objext conftest$ac_exeext
10618 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10619 (eval $ac_link) 2>conftest.er1
10620 ac_status=$?
10621 grep -v '^ *+' conftest.er1 >conftest.err
10622 rm -f conftest.er1
10623 cat conftest.err >&5
10624 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10625 (exit $ac_status); } &&
10626 { ac_try='test -z "$ac_c_werror_flag"
10627 || test ! -s conftest.err'
10628 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10629 (eval $ac_try) 2>&5
10630 ac_status=$?
10631 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10632 (exit $ac_status); }; } &&
10633 { ac_try='test -s conftest$ac_exeext'
10634 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10635 (eval $ac_try) 2>&5
10636 ac_status=$?
10637 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10638 (exit $ac_status); }; }; then
10639 ac_cv_func_XScreenSaverQueryInfo=yes
10640 else
10641 echo "$as_me: failed program was:" >&5
10642 sed 's/^/| /' conftest.$ac_ext >&5
10643
10644 ac_cv_func_XScreenSaverQueryInfo=no
10645 fi
10646 rm -f conftest.err conftest.$ac_objext \
10647 conftest$ac_exeext conftest.$ac_ext
10648 fi
10649 echo "$as_me:$LINENO: result: $ac_cv_func_XScreenSaverQueryInfo" >&5
10650 echo "${ECHO_T}$ac_cv_func_XScreenSaverQueryInfo" >&6
10651 if test $ac_cv_func_XScreenSaverQueryInfo = yes; then
10652 :
10653 else
10654
10655 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXext" >&5
10656 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXext... $ECHO_C" >&6
10657 if test "${ac_cv_lib_Xext_XScreenSaverQueryInfo+set}" = set; then
10658 echo $ECHO_N "(cached) $ECHO_C" >&6
10659 else
10660 ac_check_lib_save_LIBS=$LIBS
10661 LIBS="-lXext $LIBS"
10662 cat >conftest.$ac_ext <<_ACEOF
10663 /* confdefs.h. */
10664 _ACEOF
10665 cat confdefs.h >>conftest.$ac_ext
10666 cat >>conftest.$ac_ext <<_ACEOF
10667 /* end confdefs.h. */
10668
10669 /* Override any gcc2 internal prototype to avoid an error. */
10670 #ifdef __cplusplus
10671 extern "C"
10672 #endif
10673 /* We use char because int might match the return type of a gcc2
10674 builtin and then its argument prototype would still apply. */
10675 char XScreenSaverQueryInfo ();
10676 int
10677 main ()
10678 {
10679 XScreenSaverQueryInfo ();
10680 ;
10681 return 0;
10682 }
10683 _ACEOF
10684 rm -f conftest.$ac_objext conftest$ac_exeext
10685 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10686 (eval $ac_link) 2>conftest.er1
10687 ac_status=$?
10688 grep -v '^ *+' conftest.er1 >conftest.err
10689 rm -f conftest.er1
10690 cat conftest.err >&5
10691 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10692 (exit $ac_status); } &&
10693 { ac_try='test -z "$ac_c_werror_flag"
10694 || test ! -s conftest.err'
10695 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10696 (eval $ac_try) 2>&5
10697 ac_status=$?
10698 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10699 (exit $ac_status); }; } &&
10700 { ac_try='test -s conftest$ac_exeext'
10701 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10702 (eval $ac_try) 2>&5
10703 ac_status=$?
10704 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10705 (exit $ac_status); }; }; then
10706 ac_cv_lib_Xext_XScreenSaverQueryInfo=yes
10707 else
10708 echo "$as_me: failed program was:" >&5
10709 sed 's/^/| /' conftest.$ac_ext >&5
10710
10711 ac_cv_lib_Xext_XScreenSaverQueryInfo=no
10712 fi
10713 rm -f conftest.err conftest.$ac_objext \
10714 conftest$ac_exeext conftest.$ac_ext
10715 LIBS=$ac_check_lib_save_LIBS
10716 fi
10717 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverQueryInfo" >&5
10718 echo "${ECHO_T}$ac_cv_lib_Xext_XScreenSaverQueryInfo" >&6
10719 if test $ac_cv_lib_Xext_XScreenSaverQueryInfo = yes; then
10720
10721 XLIBSW="$XLIBSW -lXext"
10722 xss_lib_found=yes
10723
10724 else
10725
10726 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXss" >&5
10727 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXss... $ECHO_C" >&6
10728 if test "${ac_cv_lib_Xss_XScreenSaverQueryInfo+set}" = set; then
10729 echo $ECHO_N "(cached) $ECHO_C" >&6
10730 else
10731 ac_check_lib_save_LIBS=$LIBS
10732 LIBS="-lXss -lXext $LIBS"
10733 cat >conftest.$ac_ext <<_ACEOF
10734 /* confdefs.h. */
10735 _ACEOF
10736 cat confdefs.h >>conftest.$ac_ext
10737 cat >>conftest.$ac_ext <<_ACEOF
10738 /* end confdefs.h. */
10739
10740 /* Override any gcc2 internal prototype to avoid an error. */
10741 #ifdef __cplusplus
10742 extern "C"
10743 #endif
10744 /* We use char because int might match the return type of a gcc2
10745 builtin and then its argument prototype would still apply. */
10746 char XScreenSaverQueryInfo ();
10747 int
10748 main ()
10749 {
10750 XScreenSaverQueryInfo ();
10751 ;
10752 return 0;
10753 }
10754 _ACEOF
10755 rm -f conftest.$ac_objext conftest$ac_exeext
10756 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10757 (eval $ac_link) 2>conftest.er1
10758 ac_status=$?
10759 grep -v '^ *+' conftest.er1 >conftest.err
10760 rm -f conftest.er1
10761 cat conftest.err >&5
10762 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10763 (exit $ac_status); } &&
10764 { ac_try='test -z "$ac_c_werror_flag"
10765 || test ! -s conftest.err'
10766 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10767 (eval $ac_try) 2>&5
10768 ac_status=$?
10769 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10770 (exit $ac_status); }; } &&
10771 { ac_try='test -s conftest$ac_exeext'
10772 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10773 (eval $ac_try) 2>&5
10774 ac_status=$?
10775 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10776 (exit $ac_status); }; }; then
10777 ac_cv_lib_Xss_XScreenSaverQueryInfo=yes
10778 else
10779 echo "$as_me: failed program was:" >&5
10780 sed 's/^/| /' conftest.$ac_ext >&5
10781
10782 ac_cv_lib_Xss_XScreenSaverQueryInfo=no
10783 fi
10784 rm -f conftest.err conftest.$ac_objext \
10785 conftest$ac_exeext conftest.$ac_ext
10786 LIBS=$ac_check_lib_save_LIBS
10787 fi
10788 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverQueryInfo" >&5
10789 echo "${ECHO_T}$ac_cv_lib_Xss_XScreenSaverQueryInfo" >&6
10790 if test $ac_cv_lib_Xss_XScreenSaverQueryInfo = yes; then
10791
10792 if test "$tcl_cv_ld_weak_l" = yes; then
10793 # On Darwin, weak link libXss if possible,
10794 # as it is only available on Tiger or later.
10795 XLIBSW="$XLIBSW -Wl,-weak-lXss -lXext"
10796 else
10797 XLIBSW="$XLIBSW -lXss -lXext"
10798 fi
10799 xss_lib_found=yes
10800
10801 fi
10802
10803
10804 fi
10805
10806
10807 fi
10808
10809 fi
10810 if test $enable_xss = yes -a $xss_lib_found = yes -a $xss_header_found = yes; then
10811
10812 cat >>confdefs.h <<\_ACEOF
10813 #define HAVE_XSS 1
10814 _ACEOF
10815
10816 fi
1081710339 CFLAGS=$tk_oldCFlags
1081810340 LIBS=$tk_oldLibs
1081910341 fi
1102410546
1102510547
1102610548
10549 fi
10550
10551 #--------------------------------------------------------------------
10552 # Check for XkbKeycodeToKeysym.
10553 #--------------------------------------------------------------------
10554
10555 if test $tk_aqua = no; then
10556 tk_oldCFlags=$CFLAGS
10557 tk_oldLibs=$LIBS
10558 CFLAGS="$CFLAGS $XINCLUDES"
10559 LIBS="$LIBS $XLIBSW"
10560 echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5
10561 echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6
10562 if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then
10563 echo $ECHO_N "(cached) $ECHO_C" >&6
10564 else
10565 cat >conftest.$ac_ext <<_ACEOF
10566 /* confdefs.h. */
10567 _ACEOF
10568 cat confdefs.h >>conftest.$ac_ext
10569 cat >>conftest.$ac_ext <<_ACEOF
10570 /* end confdefs.h. */
10571 #include <X11/Xlib.h>
10572
10573 #include <X11/XKBlib.h>
10574 _ACEOF
10575 rm -f conftest.$ac_objext
10576 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10577 (eval $ac_compile) 2>conftest.er1
10578 ac_status=$?
10579 grep -v '^ *+' conftest.er1 >conftest.err
10580 rm -f conftest.er1
10581 cat conftest.err >&5
10582 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10583 (exit $ac_status); } &&
10584 { ac_try='test -z "$ac_c_werror_flag"
10585 || test ! -s conftest.err'
10586 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10587 (eval $ac_try) 2>&5
10588 ac_status=$?
10589 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10590 (exit $ac_status); }; } &&
10591 { ac_try='test -s conftest.$ac_objext'
10592 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10593 (eval $ac_try) 2>&5
10594 ac_status=$?
10595 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10596 (exit $ac_status); }; }; then
10597 ac_cv_header_X11_XKBlib_h=yes
10598 else
10599 echo "$as_me: failed program was:" >&5
10600 sed 's/^/| /' conftest.$ac_ext >&5
10601
10602 ac_cv_header_X11_XKBlib_h=no
10603 fi
10604 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10605 fi
10606 echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5
10607 echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6
10608 if test $ac_cv_header_X11_XKBlib_h = yes; then
10609
10610 xkblib_header_found=yes
10611
10612 else
10613
10614 xkblib_header_found=no
10615
10616 fi
10617
10618
10619 if test $xkblib_header_found = "yes" ; then
10620 echo "$as_me:$LINENO: checking for XkbKeycodeToKeysym in -lX11" >&5
10621 echo $ECHO_N "checking for XkbKeycodeToKeysym in -lX11... $ECHO_C" >&6
10622 if test "${ac_cv_lib_X11_XkbKeycodeToKeysym+set}" = set; then
10623 echo $ECHO_N "(cached) $ECHO_C" >&6
10624 else
10625 ac_check_lib_save_LIBS=$LIBS
10626 LIBS="-lX11 $LIBS"
10627 cat >conftest.$ac_ext <<_ACEOF
10628 /* confdefs.h. */
10629 _ACEOF
10630 cat confdefs.h >>conftest.$ac_ext
10631 cat >>conftest.$ac_ext <<_ACEOF
10632 /* end confdefs.h. */
10633
10634 /* Override any gcc2 internal prototype to avoid an error. */
10635 #ifdef __cplusplus
10636 extern "C"
10637 #endif
10638 /* We use char because int might match the return type of a gcc2
10639 builtin and then its argument prototype would still apply. */
10640 char XkbKeycodeToKeysym ();
10641 int
10642 main ()
10643 {
10644 XkbKeycodeToKeysym ();
10645 ;
10646 return 0;
10647 }
10648 _ACEOF
10649 rm -f conftest.$ac_objext conftest$ac_exeext
10650 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10651 (eval $ac_link) 2>conftest.er1
10652 ac_status=$?
10653 grep -v '^ *+' conftest.er1 >conftest.err
10654 rm -f conftest.er1
10655 cat conftest.err >&5
10656 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10657 (exit $ac_status); } &&
10658 { ac_try='test -z "$ac_c_werror_flag"
10659 || test ! -s conftest.err'
10660 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10661 (eval $ac_try) 2>&5
10662 ac_status=$?
10663 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10664 (exit $ac_status); }; } &&
10665 { ac_try='test -s conftest$ac_exeext'
10666 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10667 (eval $ac_try) 2>&5
10668 ac_status=$?
10669 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10670 (exit $ac_status); }; }; then
10671 ac_cv_lib_X11_XkbKeycodeToKeysym=yes
10672 else
10673 echo "$as_me: failed program was:" >&5
10674 sed 's/^/| /' conftest.$ac_ext >&5
10675
10676 ac_cv_lib_X11_XkbKeycodeToKeysym=no
10677 fi
10678 rm -f conftest.err conftest.$ac_objext \
10679 conftest$ac_exeext conftest.$ac_ext
10680 LIBS=$ac_check_lib_save_LIBS
10681 fi
10682 echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbKeycodeToKeysym" >&5
10683 echo "${ECHO_T}$ac_cv_lib_X11_XkbKeycodeToKeysym" >&6
10684 if test $ac_cv_lib_X11_XkbKeycodeToKeysym = yes; then
10685
10686 xkbkeycodetokeysym_found=yes
10687
10688 else
10689
10690 xkbkeycodetokeysym_found=no
10691
10692 fi
10693
10694 else
10695 xkbkeycodetokeysym_found=no
10696 fi
10697 if test $xkbkeycodetokeysym_found = "yes" ; then
10698
10699 cat >>confdefs.h <<\_ACEOF
10700 #define HAVE_XKBKEYCODETOKEYSYM 1
10701 _ACEOF
10702
10703 fi
10704 CFLAGS=$tk_oldCFlags
10705 LIBS=$tk_oldLibs
10706 fi
10707
10708 #--------------------------------------------------------------------
10709 # Check whether XKeycodeToKeysym is deprecated in X11 headers.
10710 #--------------------------------------------------------------------
10711
10712 if test $tk_aqua = no && test "$GCC" = yes; then
10713 echo "$as_me:$LINENO: checking whether XKeycodeToKeysym is deprecated" >&5
10714 echo $ECHO_N "checking whether XKeycodeToKeysym is deprecated... $ECHO_C" >&6
10715 tk_oldCFlags=$CFLAGS
10716 CFLAGS="$CFLAGS -Werror"
10717 cat >conftest.$ac_ext <<_ACEOF
10718 /* confdefs.h. */
10719 _ACEOF
10720 cat confdefs.h >>conftest.$ac_ext
10721 cat >>conftest.$ac_ext <<_ACEOF
10722 /* end confdefs.h. */
10723
10724 #include <X11/Xlib.h>
10725
10726 int
10727 main ()
10728 {
10729
10730 XKeycodeToKeysym(0,0,0);
10731
10732 ;
10733 return 0;
10734 }
10735 _ACEOF
10736 rm -f conftest.$ac_objext conftest$ac_exeext
10737 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10738 (eval $ac_link) 2>conftest.er1
10739 ac_status=$?
10740 grep -v '^ *+' conftest.er1 >conftest.err
10741 rm -f conftest.er1
10742 cat conftest.err >&5
10743 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10744 (exit $ac_status); } &&
10745 { ac_try='test -z "$ac_c_werror_flag"
10746 || test ! -s conftest.err'
10747 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10748 (eval $ac_try) 2>&5
10749 ac_status=$?
10750 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10751 (exit $ac_status); }; } &&
10752 { ac_try='test -s conftest$ac_exeext'
10753 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10754 (eval $ac_try) 2>&5
10755 ac_status=$?
10756 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10757 (exit $ac_status); }; }; then
10758
10759 echo "$as_me:$LINENO: result: no" >&5
10760 echo "${ECHO_T}no" >&6
10761
10762 else
10763 echo "$as_me: failed program was:" >&5
10764 sed 's/^/| /' conftest.$ac_ext >&5
10765
10766
10767 echo "$as_me:$LINENO: result: yes" >&5
10768 echo "${ECHO_T}yes" >&6
10769
10770 cat >>confdefs.h <<\_ACEOF
10771 #define XKEYCODETOKEYSYM_IS_DEPRECATED 1
10772 _ACEOF
10773
10774
10775 fi
10776 rm -f conftest.err conftest.$ac_objext \
10777 conftest$ac_exeext conftest.$ac_ext
10778 CFLAGS=$tk_oldCFlags
10779 fi
10780
10781 #--------------------------------------------------------------------
10782 # XXX Do this last.
10783 # It might modify XLIBSW which could affect other tests.
10784 #
10785 # Check whether the header and library for the XScreenSaver
10786 # extension are available, and set HAVE_XSS if so.
10787 # XScreenSaver is needed for Tk_GetUserInactiveTime().
10788 #--------------------------------------------------------------------
10789
10790 if test $tk_aqua = no; then
10791 tk_oldCFlags=$CFLAGS
10792 CFLAGS="$CFLAGS $XINCLUDES"
10793 tk_oldLibs=$LIBS
10794 LIBS="$tk_oldLibs $XLIBSW"
10795 xss_header_found=no
10796 xss_lib_found=no
10797 echo "$as_me:$LINENO: checking whether to try to use XScreenSaver" >&5
10798 echo $ECHO_N "checking whether to try to use XScreenSaver... $ECHO_C" >&6
10799 # Check whether --enable-xss or --disable-xss was given.
10800 if test "${enable_xss+set}" = set; then
10801 enableval="$enable_xss"
10802 enable_xss=$enableval
10803 else
10804 enable_xss=yes
10805 fi;
10806 if test "$enable_xss" = "no" ; then
10807 echo "$as_me:$LINENO: result: $enable_xss" >&5
10808 echo "${ECHO_T}$enable_xss" >&6
10809 else
10810 echo "$as_me:$LINENO: result: $enable_xss" >&5
10811 echo "${ECHO_T}$enable_xss" >&6
10812 echo "$as_me:$LINENO: checking for X11/extensions/scrnsaver.h" >&5
10813 echo $ECHO_N "checking for X11/extensions/scrnsaver.h... $ECHO_C" >&6
10814 if test "${ac_cv_header_X11_extensions_scrnsaver_h+set}" = set; then
10815 echo $ECHO_N "(cached) $ECHO_C" >&6
10816 else
10817 cat >conftest.$ac_ext <<_ACEOF
10818 /* confdefs.h. */
10819 _ACEOF
10820 cat confdefs.h >>conftest.$ac_ext
10821 cat >>conftest.$ac_ext <<_ACEOF
10822 /* end confdefs.h. */
10823 #include <X11/Xlib.h>
10824
10825 #include <X11/extensions/scrnsaver.h>
10826 _ACEOF
10827 rm -f conftest.$ac_objext
10828 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10829 (eval $ac_compile) 2>conftest.er1
10830 ac_status=$?
10831 grep -v '^ *+' conftest.er1 >conftest.err
10832 rm -f conftest.er1
10833 cat conftest.err >&5
10834 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10835 (exit $ac_status); } &&
10836 { ac_try='test -z "$ac_c_werror_flag"
10837 || test ! -s conftest.err'
10838 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10839 (eval $ac_try) 2>&5
10840 ac_status=$?
10841 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10842 (exit $ac_status); }; } &&
10843 { ac_try='test -s conftest.$ac_objext'
10844 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10845 (eval $ac_try) 2>&5
10846 ac_status=$?
10847 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10848 (exit $ac_status); }; }; then
10849 ac_cv_header_X11_extensions_scrnsaver_h=yes
10850 else
10851 echo "$as_me: failed program was:" >&5
10852 sed 's/^/| /' conftest.$ac_ext >&5
10853
10854 ac_cv_header_X11_extensions_scrnsaver_h=no
10855 fi
10856 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
10857 fi
10858 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
10859 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
10860 if test $ac_cv_header_X11_extensions_scrnsaver_h = yes; then
10861
10862 xss_header_found=yes
10863
10864 fi
10865
10866
10867 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo" >&5
10868 echo $ECHO_N "checking for XScreenSaverQueryInfo... $ECHO_C" >&6
10869 if test "${ac_cv_func_XScreenSaverQueryInfo+set}" = set; then
10870 echo $ECHO_N "(cached) $ECHO_C" >&6
10871 else
10872 cat >conftest.$ac_ext <<_ACEOF
10873 /* confdefs.h. */
10874 _ACEOF
10875 cat confdefs.h >>conftest.$ac_ext
10876 cat >>conftest.$ac_ext <<_ACEOF
10877 /* end confdefs.h. */
10878 /* Define XScreenSaverQueryInfo to an innocuous variant, in case <limits.h> declares XScreenSaverQueryInfo.
10879 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10880 #define XScreenSaverQueryInfo innocuous_XScreenSaverQueryInfo
10881
10882 /* System header to define __stub macros and hopefully few prototypes,
10883 which can conflict with char XScreenSaverQueryInfo (); below.
10884 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10885 <limits.h> exists even on freestanding compilers. */
10886
10887 #ifdef __STDC__
10888 # include <limits.h>
10889 #else
10890 # include <assert.h>
10891 #endif
10892
10893 #undef XScreenSaverQueryInfo
10894
10895 /* Override any gcc2 internal prototype to avoid an error. */
10896 #ifdef __cplusplus
10897 extern "C"
10898 {
10899 #endif
10900 /* We use char because int might match the return type of a gcc2
10901 builtin and then its argument prototype would still apply. */
10902 char XScreenSaverQueryInfo ();
10903 /* The GNU C library defines this for functions which it implements
10904 to always fail with ENOSYS. Some functions are actually named
10905 something starting with __ and the normal name is an alias. */
10906 #if defined (__stub_XScreenSaverQueryInfo) || defined (__stub___XScreenSaverQueryInfo)
10907 choke me
10908 #else
10909 char (*f) () = XScreenSaverQueryInfo;
10910 #endif
10911 #ifdef __cplusplus
10912 }
10913 #endif
10914
10915 int
10916 main ()
10917 {
10918 return f != XScreenSaverQueryInfo;
10919 ;
10920 return 0;
10921 }
10922 _ACEOF
10923 rm -f conftest.$ac_objext conftest$ac_exeext
10924 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10925 (eval $ac_link) 2>conftest.er1
10926 ac_status=$?
10927 grep -v '^ *+' conftest.er1 >conftest.err
10928 rm -f conftest.er1
10929 cat conftest.err >&5
10930 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10931 (exit $ac_status); } &&
10932 { ac_try='test -z "$ac_c_werror_flag"
10933 || test ! -s conftest.err'
10934 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10935 (eval $ac_try) 2>&5
10936 ac_status=$?
10937 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10938 (exit $ac_status); }; } &&
10939 { ac_try='test -s conftest$ac_exeext'
10940 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10941 (eval $ac_try) 2>&5
10942 ac_status=$?
10943 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10944 (exit $ac_status); }; }; then
10945 ac_cv_func_XScreenSaverQueryInfo=yes
10946 else
10947 echo "$as_me: failed program was:" >&5
10948 sed 's/^/| /' conftest.$ac_ext >&5
10949
10950 ac_cv_func_XScreenSaverQueryInfo=no
10951 fi
10952 rm -f conftest.err conftest.$ac_objext \
10953 conftest$ac_exeext conftest.$ac_ext
10954 fi
10955 echo "$as_me:$LINENO: result: $ac_cv_func_XScreenSaverQueryInfo" >&5
10956 echo "${ECHO_T}$ac_cv_func_XScreenSaverQueryInfo" >&6
10957 if test $ac_cv_func_XScreenSaverQueryInfo = yes; then
10958 :
10959 else
10960
10961 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXext" >&5
10962 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXext... $ECHO_C" >&6
10963 if test "${ac_cv_lib_Xext_XScreenSaverQueryInfo+set}" = set; then
10964 echo $ECHO_N "(cached) $ECHO_C" >&6
10965 else
10966 ac_check_lib_save_LIBS=$LIBS
10967 LIBS="-lXext $LIBS"
10968 cat >conftest.$ac_ext <<_ACEOF
10969 /* confdefs.h. */
10970 _ACEOF
10971 cat confdefs.h >>conftest.$ac_ext
10972 cat >>conftest.$ac_ext <<_ACEOF
10973 /* end confdefs.h. */
10974
10975 /* Override any gcc2 internal prototype to avoid an error. */
10976 #ifdef __cplusplus
10977 extern "C"
10978 #endif
10979 /* We use char because int might match the return type of a gcc2
10980 builtin and then its argument prototype would still apply. */
10981 char XScreenSaverQueryInfo ();
10982 int
10983 main ()
10984 {
10985 XScreenSaverQueryInfo ();
10986 ;
10987 return 0;
10988 }
10989 _ACEOF
10990 rm -f conftest.$ac_objext conftest$ac_exeext
10991 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10992 (eval $ac_link) 2>conftest.er1
10993 ac_status=$?
10994 grep -v '^ *+' conftest.er1 >conftest.err
10995 rm -f conftest.er1
10996 cat conftest.err >&5
10997 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10998 (exit $ac_status); } &&
10999 { ac_try='test -z "$ac_c_werror_flag"
11000 || test ! -s conftest.err'
11001 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11002 (eval $ac_try) 2>&5
11003 ac_status=$?
11004 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11005 (exit $ac_status); }; } &&
11006 { ac_try='test -s conftest$ac_exeext'
11007 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11008 (eval $ac_try) 2>&5
11009 ac_status=$?
11010 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11011 (exit $ac_status); }; }; then
11012 ac_cv_lib_Xext_XScreenSaverQueryInfo=yes
11013 else
11014 echo "$as_me: failed program was:" >&5
11015 sed 's/^/| /' conftest.$ac_ext >&5
11016
11017 ac_cv_lib_Xext_XScreenSaverQueryInfo=no
11018 fi
11019 rm -f conftest.err conftest.$ac_objext \
11020 conftest$ac_exeext conftest.$ac_ext
11021 LIBS=$ac_check_lib_save_LIBS
11022 fi
11023 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverQueryInfo" >&5
11024 echo "${ECHO_T}$ac_cv_lib_Xext_XScreenSaverQueryInfo" >&6
11025 if test $ac_cv_lib_Xext_XScreenSaverQueryInfo = yes; then
11026
11027 XLIBSW="$XLIBSW -lXext"
11028 xss_lib_found=yes
11029
11030 else
11031
11032 echo "$as_me:$LINENO: checking for XScreenSaverQueryInfo in -lXss" >&5
11033 echo $ECHO_N "checking for XScreenSaverQueryInfo in -lXss... $ECHO_C" >&6
11034 if test "${ac_cv_lib_Xss_XScreenSaverQueryInfo+set}" = set; then
11035 echo $ECHO_N "(cached) $ECHO_C" >&6
11036 else
11037 ac_check_lib_save_LIBS=$LIBS
11038 LIBS="-lXss -lXext $LIBS"
11039 cat >conftest.$ac_ext <<_ACEOF
11040 /* confdefs.h. */
11041 _ACEOF
11042 cat confdefs.h >>conftest.$ac_ext
11043 cat >>conftest.$ac_ext <<_ACEOF
11044 /* end confdefs.h. */
11045
11046 /* Override any gcc2 internal prototype to avoid an error. */
11047 #ifdef __cplusplus
11048 extern "C"
11049 #endif
11050 /* We use char because int might match the return type of a gcc2
11051 builtin and then its argument prototype would still apply. */
11052 char XScreenSaverQueryInfo ();
11053 int
11054 main ()
11055 {
11056 XScreenSaverQueryInfo ();
11057 ;
11058 return 0;
11059 }
11060 _ACEOF
11061 rm -f conftest.$ac_objext conftest$ac_exeext
11062 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11063 (eval $ac_link) 2>conftest.er1
11064 ac_status=$?
11065 grep -v '^ *+' conftest.er1 >conftest.err
11066 rm -f conftest.er1
11067 cat conftest.err >&5
11068 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11069 (exit $ac_status); } &&
11070 { ac_try='test -z "$ac_c_werror_flag"
11071 || test ! -s conftest.err'
11072 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11073 (eval $ac_try) 2>&5
11074 ac_status=$?
11075 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11076 (exit $ac_status); }; } &&
11077 { ac_try='test -s conftest$ac_exeext'
11078 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11079 (eval $ac_try) 2>&5
11080 ac_status=$?
11081 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11082 (exit $ac_status); }; }; then
11083 ac_cv_lib_Xss_XScreenSaverQueryInfo=yes
11084 else
11085 echo "$as_me: failed program was:" >&5
11086 sed 's/^/| /' conftest.$ac_ext >&5
11087
11088 ac_cv_lib_Xss_XScreenSaverQueryInfo=no
11089 fi
11090 rm -f conftest.err conftest.$ac_objext \
11091 conftest$ac_exeext conftest.$ac_ext
11092 LIBS=$ac_check_lib_save_LIBS
11093 fi
11094 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverQueryInfo" >&5
11095 echo "${ECHO_T}$ac_cv_lib_Xss_XScreenSaverQueryInfo" >&6
11096 if test $ac_cv_lib_Xss_XScreenSaverQueryInfo = yes; then
11097
11098 if test "$tcl_cv_ld_weak_l" = yes; then
11099 # On Darwin, weak link libXss if possible,
11100 # as it is only available on Tiger or later.
11101 XLIBSW="$XLIBSW -Wl,-weak-lXss -lXext"
11102 else
11103 XLIBSW="$XLIBSW -lXss -lXext"
11104 fi
11105 xss_lib_found=yes
11106
11107 fi
11108
11109
11110 fi
11111
11112
11113 fi
11114
11115 fi
11116 if test $enable_xss = yes -a $xss_lib_found = yes -a $xss_header_found = yes; then
11117
11118 cat >>confdefs.h <<\_ACEOF
11119 #define HAVE_XSS 1
11120 _ACEOF
11121
11122 fi
11123 CFLAGS=$tk_oldCFlags
11124 LIBS=$tk_oldLibs
1102711125 fi
1102811126
1102911127 #--------------------------------------------------------------------
1116711265 fi
1116811266
1116911267 TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version ${TK_VERSION}`echo ${TK_PATCH_LEVEL} | awk '{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}'`"
11170 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}"'
11171 if test $tk_aqua = yes; then
11172 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[0-9a-f]+ . \.objc/ {print \$$3}" > $$f && echo $$f)'
11173 fi
11268 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}" -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[0-9a-f]+ . \.objc/ {print \$$3}" > $$f && nm -gjp "$(TCL_BIN_DIR)"/$(TCL_STUB_LIB_FILE) | grep ^_[^_] >> $$f && echo $$f)'
1117411269 echo "$LDFLAGS " | grep -q -- '-prebind ' && TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -seg1addr 0xb000000'
1117511270 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tk-Info.plist'
1117611271 EXTRA_WISH_LIBS='-sectcreate __TEXT __info_plist Wish-Info.plist'
1117711272 EXTRA_APP_CC_SWITCHES="${EXTRA_APP_CC_SWITCHES}"' -mdynamic-no-pic'
11178 ac_config_files="$ac_config_files Tk-Info.plist:../${MACOSX_SRC_DIR}/Tk-Info.plist.in Wish-Info.plist:../${MACOSX_SRC_DIR}/Wish-Info.plist.in"
11273 ac_config_files="$ac_config_files Tk-Info.plist:../macosx/Tk-Info.plist.in Wish-Info.plist:../macosx/Wish-Info.plist.in"
1117911274
1118011275 for l in ${LOCALES}; do CFBUNDLELOCALIZATIONS="${CFBUNDLELOCALIZATIONS}<string>$l</string>"; done
1118111276 TK_YEAR="`date +%Y`"
1119911294 TK_LIB_FILE="Tk"
1120011295 TK_LIB_FLAG="-framework Tk"
1120111296 TK_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk"
11202 WISH_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk \${WISH_LIBS}"
1120311297 TK_LIB_SPEC="-F${libdir} -framework Tk"
1120411298 libdir="${libdir}/Tk.framework/Versions/\${VERSION}"
1120511299 TK_LIBRARY="${libdir}/Resources/Scripts"
1121311307 EXTRA_BUILD_HTML='@ln -fs contents.htm "$(HTML_INSTALL_DIR)"/TkTOC.html'
1121411308 EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tk-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"'
1121511309 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"'
11216 if test $tk_aqua != no; then
11217 if test $tk_aqua = yes; then
11218 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
11219 else
11220 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing ${TK_RSRC_FILE} to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "${TK_RSRC_FILE}" "$(LIB_INSTALL_DIR)/Resources"'
11221 fi
11222 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
11223 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
11224 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/../" && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
11225 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
11226 if test $tk_aqua = yes; then
11227 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
11228 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
11229 else
11230 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.icns" "$(BIN_INSTALL_DIR)/../Resources" && echo "Installing ${WISH_RSRC_FILE} to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "${WISH_RSRC_FILE}" "$(BIN_INSTALL_DIR)/../Resources"'
11231 fi
11310 if test $tk_aqua = yes; then
11311 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
11312 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
11313 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
11314 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/.." && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
11315 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
11316 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
11317 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
1123211318 fi
1123311319 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tk.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tkConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."'
1123411320 # Don't use AC_DEFINE for the following as the framework version define
1124211328 fi
1124311329 # libdir must be a fully qualified path and not ${exec_prefix}/lib
1124411330 eval libdir="$libdir"
11245 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
11246 TK_LIB_FLAG="-ltk${TK_VERSION}"
11331 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
11332 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11333 TK_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win ${TK_LIB_FLAG}"
1124711334 else
11248 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11249 fi
11250 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
11251 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
11252 WISH_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win -ltk${TK_MAJOR_VERSION}${TK_MINOR_VERSION} \${TCL_LIB_SPEC}"
11253 else
11254 WISH_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG} \${WISH_LIBS}"
11335 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
11336 TK_LIB_FLAG="-ltk${TK_VERSION}"
11337 else
11338 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
11339 fi
11340 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
1125511341 fi
1125611342 TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
11257 fi
11258
11259 # Extra bits for legacy Aqua Carbon build (carbon sources and resource files)
11260 if test $tk_aqua = carbon; then
11261 EXTRA_AQUA_OBJS='tkMacOSXCarbonEvents.o'
11262 EXTRA_AQUA_SRCS='$(TOP_DIR)/carbon/tkMacOSXCarbonEvents.c'
11263 LIB_RSRC_FILE='${TK_RSRC_FILE}'
11264 APP_RSRC_FILE='${WISH_RSRC_FILE}'
11265 REZ=/Developer/Tools/Rez
11266 REZ_FLAGS='-d "SystemSevenOrLater=1" -useDF -ro'
11267 if test "$SHARED_BUILD" = 0; then
11268 EXTRA_INSTALL_BINARIES='@echo "Installing $(TK_RSRC_FILE) to $(LIB_INSTALL_DIR)/" && $(INSTALL_DATA) $(TK_RSRC_FILE) "$(LIB_INSTALL_DIR)"'
11269 TK_BUILD_LIB_SPEC="$TK_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
11270 WISH_BUILD_LIB_SPEC="$WISH_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
11271 TK_LIB_SPEC="$TK_LIB_SPEC -sectcreate __TEXT __tk_rsrc ${libdir}/\${TK_RSRC_FILE}"
11272 else
11273 TK_SHLIB_LD_EXTRAS="$TK_SHLIB_LD_EXTRAS -sectcreate __TEXT __tk_rsrc \${TK_RSRC_FILE}"
11274 fi
1127511343 fi
1127611344
1127711345 #--------------------------------------------------------------------
1130211370 #------------------------------------------------------------------------
1130311371
1130411372 TK_SHARED_BUILD=${SHARED_BUILD}
11305
11306
11307
11308
1130911373
1131011374
1131111375
1192111985 do
1192211986 case "$ac_config_target" in
1192311987 # Handling of arguments.
11924 "Tk-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Tk-Info.plist:../${MACOSX_SRC_DIR}/Tk-Info.plist.in" ;;
11925 "Wish-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Wish-Info.plist:../${MACOSX_SRC_DIR}/Wish-Info.plist.in" ;;
11988 "Tk-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Tk-Info.plist:../macosx/Tk-Info.plist.in" ;;
11989 "Wish-Info.plist" ) CONFIG_FILES="$CONFIG_FILES Wish-Info.plist:../macosx/Wish-Info.plist.in" ;;
1192611990 "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile:../unix/Makefile.in" ;;
1192711991 "tkConfig.sh" ) CONFIG_FILES="$CONFIG_FILES tkConfig.sh:../unix/tkConfig.sh.in" ;;
1192811992 "tk.pc" ) CONFIG_FILES="$CONFIG_FILES tk.pc:../unix/tk.pc.in" ;;
1208812152 s,@TK_SHARED_BUILD@,$TK_SHARED_BUILD,;t t
1208912153 s,@LD_LIBRARY_PATH_VAR@,$LD_LIBRARY_PATH_VAR,;t t
1209012154 s,@TK_BUILD_LIB_SPEC@,$TK_BUILD_LIB_SPEC,;t t
12091 s,@WISH_BUILD_LIB_SPEC@,$WISH_BUILD_LIB_SPEC,;t t
1209212155 s,@TCL_STUB_FLAGS@,$TCL_STUB_FLAGS,;t t
1209312156 s,@XINCLUDES@,$XINCLUDES,;t t
1209412157 s,@XLIBSW@,$XLIBSW,;t t
1210512168 s,@EXTRA_INSTALL_BINARIES@,$EXTRA_INSTALL_BINARIES,;t t
1210612169 s,@EXTRA_BUILD_HTML@,$EXTRA_BUILD_HTML,;t t
1210712170 s,@EXTRA_WISH_LIBS@,$EXTRA_WISH_LIBS,;t t
12108 s,@EXTRA_AQUA_OBJS@,$EXTRA_AQUA_OBJS,;t t
12109 s,@EXTRA_AQUA_SRCS@,$EXTRA_AQUA_SRCS,;t t
1211012171 s,@CFBUNDLELOCALIZATIONS@,$CFBUNDLELOCALIZATIONS,;t t
12111 s,@MACOSX_SRC_DIR@,$MACOSX_SRC_DIR,;t t
1211212172 s,@TK_RSRC_FILE@,$TK_RSRC_FILE,;t t
1211312173 s,@WISH_RSRC_FILE@,$WISH_RSRC_FILE,;t t
1211412174 s,@LIB_RSRC_FILE@,$LIB_RSRC_FILE,;t t
1246812528 rm -rf $f && mkdir -p $f/$v/Resources &&
1246912529 ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v &&
1247012530 ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist &&
12471 if test $tk_aqua != no; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
12531 if test $tk_aqua = yes; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
1247212532 unset n f v
1247312533 ;;
1247412534 esac
2424 TK_VERSION=8.6
2525 TK_MAJOR_VERSION=8
2626 TK_MINOR_VERSION=6
27 TK_PATCH_LEVEL=".0"
27 TK_PATCH_LEVEL=".1"
2828 VERSION=${TK_VERSION}
2929 LOCALES="cs da de el en en_gb eo es fr hu it nl pl pt ru sv"
3030
268268 # On Mac OS X, we can build either with X11 or with Aqua
269269 #--------------------------------------------------------------------
270270
271 MACOSX_SRC_DIR=macosx
272271 if test "`uname -s`" = "Darwin" ; then
273272 AC_MSG_CHECKING([whether to use Aqua])
274273 AC_ARG_ENABLE(aqua,
275 AC_HELP_STRING([--enable-aqua=yes|carbon|no],
274 AC_HELP_STRING([--enable-aqua=yes|no],
276275 [use Aqua windowingsystem on Mac OS X (default: no)]),
277276 [tk_aqua=$enableval], [tk_aqua=no])
278277 if test $tk_aqua = yes -o $tk_aqua = cocoa; then
279278 tk_aqua=yes
279 if test $tcl_corefoundation = no; then
280 AC_MSG_WARN([Aqua can only be used when CoreFoundation is available])
281 tk_aqua=no
282 fi
280283 if test ! -d /System/Library/Frameworks/Cocoa.framework; then
281284 AC_MSG_WARN([Aqua can only be used when Cocoa is available])
282285 tk_aqua=no
285288 AC_MSG_WARN([Aqua requires Mac OS X 10.5 or later])
286289 tk_aqua=no
287290 fi
288 elif test $tk_aqua = carbon; then
289 if test ! -d /System/Library/Frameworks/Carbon.framework; then
290 AC_MSG_WARN([Aqua can only be used when Carbon is available])
291 tk_aqua=no
292 fi
293 if test "`uname -r | awk -F. '{print [$]1}'`" -lt 6; then
294 AC_MSG_WARN([Aqua requires Mac OS X 10.2 or later])
295 tk_aqua=no
296 fi
297 else
298 tk_aqua=no
299 fi
300 if test $tk_aqua != no -a $tcl_corefoundation = no; then
301 AC_MSG_WARN([Aqua can only be used when CoreFoundation is available])
302 tk_aqua=no
303 fi
304 if test $tk_aqua = carbon; then
305 MACOSX_SRC_DIR=carbon
306 AC_MSG_RESULT([yes (deprecated legacy Carbon implementation)])
307 else
308 AC_MSG_RESULT([$tk_aqua])
309 fi
291 fi
292 AC_MSG_RESULT([$tk_aqua])
310293 if test "$fat_32_64" = yes; then
311294 if test $tk_aqua = no; then
312295 AC_CACHE_CHECK([for 64-bit X11], tcl_cv_lib_x11_64, [
323306 fi
324307 # remove 64-bit arch flags from CFLAGS et al. for combined 32 & 64 bit
325308 # fat builds if configuration does not support 64-bit.
326 if test $tk_aqua = carbon -o "$tcl_cv_lib_x11_64" = no; then
309 if test "$tcl_cv_lib_x11_64" = no; then
327310 AC_MSG_NOTICE([Removing 64-bit architectures from compiler & linker flags])
328311 for v in CFLAGS CPPFLAGS LDFLAGS; do
329312 eval $v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
382365 tk_aqua=no
383366 fi
384367
385 if test $tk_aqua != no; then
386 if test $tk_aqua = yes; then
387 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
388 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
389 else
390 LIBS="$LIBS -framework Carbon -framework IOKit"
391 CFLAGS="$CFLAGS -fpascal-strings"
392 fi
368 if test $tk_aqua = yes; then
393369 AC_DEFINE(MAC_OSX_TK, 1, [Are we building TkAqua?])
370 LIBS="$LIBS -framework Cocoa -framework Carbon -framework IOKit"
371 EXTRA_CC_SWITCHES='-std=gnu99 -x objective-c -fobjc-gc'
394372 TK_WINDOWINGSYSTEM=AQUA
395373 if test -n "${enable_symbols}" -a "${enable_symbols}" != no; then
396374 AC_DEFINE(TK_MAC_DEBUG, 1, [Are TkAqua debug messages enabled?])
485463 fi
486464
487465 #--------------------------------------------------------------------
466 # Check for freetype / fontconfig / Xft support.
467 #--------------------------------------------------------------------
468
469 if test $tk_aqua = no; then
470 AC_MSG_CHECKING([whether to use xft])
471 AC_ARG_ENABLE(xft,
472 AC_HELP_STRING([--enable-xft],
473 [use freetype/fontconfig/xft (default: on)]),
474 [enable_xft=$enableval], [enable_xft="default"])
475 XFT_CFLAGS=""
476 XFT_LIBS=""
477 if test "$enable_xft" = "no" ; then
478 AC_MSG_RESULT([$enable_xft])
479 else
480 found_xft="yes"
481 dnl make sure package configurator (xft-config or pkg-config
482 dnl says that xft is present.
483 XFT_CFLAGS=`xft-config --cflags 2>/dev/null` || found_xft="no"
484 XFT_LIBS=`xft-config --libs 2>/dev/null` || found_xft="no"
485 if test "$found_xft" = "no" ; then
486 found_xft=yes
487 XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
488 XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
489 fi
490 AC_MSG_RESULT([$found_xft])
491 dnl make sure that compiling against Xft header file doesn't bomb
492 if test "$found_xft" = "yes" ; then
493 tk_oldCFlags=$CFLAGS
494 CFLAGS="$CFLAGS $XINCLUDES $XFT_CFLAGS"
495 tk_oldLibs=$LIBS
496 LIBS="$tk_oldLIBS $XFT_LIBS $XLIBSW"
497 AC_CHECK_HEADER(X11/Xft/Xft.h, [], [
498 found_xft=no
499 ],[#include <X11/Xlib.h>])
500 CFLAGS=$tk_oldCFlags
501 LIBS=$tk_oldLibs
502 fi
503 dnl make sure that linking against Xft libraries finds freetype
504 if test "$found_xft" = "yes" ; then
505 tk_oldCFlags=$CFLAGS
506 CFLAGS="$CFLAGS $XINCLUDES $XFT_CFLAGS"
507 tk_oldLibs=$LIBS
508 LIBS="$tk_oldLIBS $XFT_LIBS $XLIBSW"
509 AC_CHECK_LIB(Xft, XftFontOpen, [], [
510 found_xft=no
511 ])
512 CFLAGS=$tk_oldCFlags
513 LIBS=$tk_oldLibs
514 fi
515 dnl print a warning if xft is unusable and was specifically requested
516 if test "$found_xft" = "no" ; then
517 if test "$enable_xft" = "yes" ; then
518 AC_MSG_WARN([Can't find xft configuration, or xft is unusable])
519 fi
520 enable_xft=no
521 XFT_CFLAGS=""
522 XFT_LIBS=""
523 else
524 enable_xft=yes
525 fi
526 fi
527 if test $enable_xft = "yes" ; then
528 UNIX_FONT_OBJS=tkUnixRFont.o
529 AC_DEFINE(HAVE_XFT, 1, [Have we turned on XFT (antialiased fonts)?])
530 else
531 UNIX_FONT_OBJS=tkUnixFont.o
532 fi
533 AC_SUBST(XFT_CFLAGS)
534 AC_SUBST(XFT_LIBS)
535 AC_SUBST(UNIX_FONT_OBJS)
536 fi
537
538 #--------------------------------------------------------------------
539 # Check for XkbKeycodeToKeysym.
540 #--------------------------------------------------------------------
541
542 if test $tk_aqua = no; then
543 tk_oldCFlags=$CFLAGS
544 tk_oldLibs=$LIBS
545 CFLAGS="$CFLAGS $XINCLUDES"
546 LIBS="$LIBS $XLIBSW"
547 AC_CHECK_HEADER(X11/XKBlib.h, [
548 xkblib_header_found=yes
549 ], [
550 xkblib_header_found=no
551 ], [#include <X11/Xlib.h>])
552 if test $xkblib_header_found = "yes" ; then
553 AC_CHECK_LIB(X11, XkbKeycodeToKeysym, [
554 xkbkeycodetokeysym_found=yes
555 ], [
556 xkbkeycodetokeysym_found=no
557 ])
558 else
559 xkbkeycodetokeysym_found=no
560 fi
561 if test $xkbkeycodetokeysym_found = "yes" ; then
562 AC_DEFINE(HAVE_XKBKEYCODETOKEYSYM, 1, [Do we have XkbKeycodeToKeysym?])
563 fi
564 CFLAGS=$tk_oldCFlags
565 LIBS=$tk_oldLibs
566 fi
567
568 #--------------------------------------------------------------------
569 # Check whether XKeycodeToKeysym is deprecated in X11 headers.
570 #--------------------------------------------------------------------
571
572 if test $tk_aqua = no && test "$GCC" = yes; then
573 AC_MSG_CHECKING([whether XKeycodeToKeysym is deprecated])
574 tk_oldCFlags=$CFLAGS
575 CFLAGS="$CFLAGS -Werror"
576 AC_TRY_LINK([
577 #include <X11/Xlib.h>
578 ], [
579 XKeycodeToKeysym(0,0,0);
580 ], [
581 AC_MSG_RESULT([no])
582 ], [
583 AC_MSG_RESULT([yes])
584 AC_DEFINE(XKEYCODETOKEYSYM_IS_DEPRECATED, 1, [Is XKeycodeToKeysym deprecated?])
585 ])
586 CFLAGS=$tk_oldCFlags
587 fi
588
589 #--------------------------------------------------------------------
590 # XXX Do this last.
591 # It might modify XLIBSW which could affect other tests.
592 #
488593 # Check whether the header and library for the XScreenSaver
489594 # extension are available, and set HAVE_XSS if so.
490595 # XScreenSaver is needed for Tk_GetUserInactiveTime().
535640 fi
536641
537642 #--------------------------------------------------------------------
538 # Check for freetype / fontconfig / Xft support.
539 #--------------------------------------------------------------------
540
541 if test $tk_aqua = no; then
542 AC_MSG_CHECKING([whether to use xft])
543 AC_ARG_ENABLE(xft,
544 AC_HELP_STRING([--enable-xft],
545 [use freetype/fontconfig/xft (default: on)]),
546 [enable_xft=$enableval], [enable_xft="default"])
547 XFT_CFLAGS=""
548 XFT_LIBS=""
549 if test "$enable_xft" = "no" ; then
550 AC_MSG_RESULT([$enable_xft])
551 else
552 found_xft="yes"
553 dnl make sure package configurator (xft-config or pkg-config
554 dnl says that xft is present.
555 XFT_CFLAGS=`xft-config --cflags 2>/dev/null` || found_xft="no"
556 XFT_LIBS=`xft-config --libs 2>/dev/null` || found_xft="no"
557 if test "$found_xft" = "no" ; then
558 found_xft=yes
559 XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
560 XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
561 fi
562 AC_MSG_RESULT([$found_xft])
563 dnl make sure that compiling against Xft header file doesn't bomb
564 if test "$found_xft" = "yes" ; then
565 tk_oldCFlags=$CFLAGS
566 CFLAGS="$CFLAGS $XINCLUDES $XFT_CFLAGS"
567 tk_oldLibs=$LIBS
568 LIBS="$tk_oldLIBS $XFT_LIBS $XLIBSW"
569 AC_CHECK_HEADER(X11/Xft/Xft.h, [], [
570 found_xft=no
571 ],[#include <X11/Xlib.h>])
572 CFLAGS=$tk_oldCFlags
573 LIBS=$tk_oldLibs
574 fi
575 dnl make sure that linking against Xft libraries finds freetype
576 if test "$found_xft" = "yes" ; then
577 tk_oldCFlags=$CFLAGS
578 CFLAGS="$CFLAGS $XINCLUDES $XFT_CFLAGS"
579 tk_oldLibs=$LIBS
580 LIBS="$tk_oldLIBS $XFT_LIBS $XLIBSW"
581 AC_CHECK_LIB(Xft, XftFontOpen, [], [
582 found_xft=no
583 ])
584 CFLAGS=$tk_oldCFlags
585 LIBS=$tk_oldLibs
586 fi
587 dnl print a warning if xft is unusable and was specifically requested
588 if test "$found_xft" = "no" ; then
589 if test "$enable_xft" = "yes" ; then
590 AC_MSG_WARN([Can't find xft configuration, or xft is unusable])
591 fi
592 enable_xft=no
593 XFT_CFLAGS=""
594 XFT_LIBS=""
595 else
596 enable_xft=yes
597 fi
598 fi
599 if test $enable_xft = "yes" ; then
600 UNIX_FONT_OBJS=tkUnixRFont.o
601 AC_DEFINE(HAVE_XFT, 1, [Have we turned on XFT (antialiased fonts)?])
602 else
603 UNIX_FONT_OBJS=tkUnixFont.o
604 fi
605 AC_SUBST(XFT_CFLAGS)
606 AC_SUBST(XFT_LIBS)
607 AC_SUBST(UNIX_FONT_OBJS)
608 fi
609
610 #--------------------------------------------------------------------
611643 # Figure out whether "char" is unsigned. If so, set a
612644 # #define for __CHAR_UNSIGNED__.
613645 #--------------------------------------------------------------------
648680 if test "`uname -s`" = "Darwin" ; then
649681 SC_ENABLE_FRAMEWORK
650682 TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version ${TK_VERSION}`echo ${TK_PATCH_LEVEL} | awk ['{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`"
651 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}"'
652 if test $tk_aqua = yes; then
653 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[[0-9a-f]]+ . \.objc/ {print \$$3}" > $$f && echo $$f)'
654 fi
683 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}/${TK_LIB_FILE}" -unexported_symbols_list $$(f=$(TK_LIB_FILE).E && nm -gp tkMacOSX*.o 2>/dev/null | awk "/^[[0-9a-f]]+ . \.objc/ {print \$$3}" > $$f && nm -gjp "$(TCL_BIN_DIR)"/$(TCL_STUB_LIB_FILE) | grep ^_[[^_]] >> $$f && echo $$f)'
655684 echo "$LDFLAGS " | grep -q -- '-prebind ' && TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -seg1addr 0xb000000'
656685 TK_SHLIB_LD_EXTRAS="${TK_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tk-Info.plist'
657686 EXTRA_WISH_LIBS='-sectcreate __TEXT __info_plist Wish-Info.plist'
658687 EXTRA_APP_CC_SWITCHES="${EXTRA_APP_CC_SWITCHES}"' -mdynamic-no-pic'
659 AC_CONFIG_FILES([Tk-Info.plist:../${MACOSX_SRC_DIR}/Tk-Info.plist.in Wish-Info.plist:../${MACOSX_SRC_DIR}/Wish-Info.plist.in])
688 AC_CONFIG_FILES([Tk-Info.plist:../macosx/Tk-Info.plist.in Wish-Info.plist:../macosx/Wish-Info.plist.in])
660689 for l in ${LOCALES}; do CFBUNDLELOCALIZATIONS="${CFBUNDLELOCALIZATIONS}<string>$l</string>"; done
661690 TK_YEAR="`date +%Y`"
662691 fi
670699 rm -rf $f && mkdir -p $f/$v/Resources &&
671700 ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v &&
672701 ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist &&
673 if test $tk_aqua != no; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
702 if test $tk_aqua = yes; then ln -s ../../../../$n.rsrc $f/$v/Resources; fi &&
674703 unset n f v
675704 ], VERSION=${TK_VERSION} && tk_aqua=${tk_aqua})
676705 LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH"
681710 TK_LIB_FILE="Tk"
682711 TK_LIB_FLAG="-framework Tk"
683712 TK_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk"
684 WISH_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tk \${WISH_LIBS}"
685713 TK_LIB_SPEC="-F${libdir} -framework Tk"
686714 libdir="${libdir}/Tk.framework/Versions/\${VERSION}"
687715 TK_LIBRARY="${libdir}/Resources/Scripts"
695723 EXTRA_BUILD_HTML='@ln -fs contents.htm "$(HTML_INSTALL_DIR)"/TkTOC.html'
696724 EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tk-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"'
697725 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"'
698 if test $tk_aqua != no; then
699 if test $tk_aqua = yes; then
700 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
701 else
702 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing ${TK_RSRC_FILE} to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "${TK_RSRC_FILE}" "$(LIB_INSTALL_DIR)/Resources"'
703 fi
704 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
705 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
706 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/../" && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
707 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
708 if test $tk_aqua = yes; then
709 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
710 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
711 else
712 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.icns" "$(BIN_INSTALL_DIR)/../Resources" && echo "Installing ${WISH_RSRC_FILE} to $(BIN_INSTALL_DIR)/../Resources/" && $(INSTALL_DATA) "${WISH_RSRC_FILE}" "$(BIN_INSTALL_DIR)/../Resources"'
713 fi
726 if test $tk_aqua = yes; then
727 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Images to $(LIB_INSTALL_DIR)/Resources/" && $(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/Resources" && for i in Tk.tiff Tk.icns; do $(INSTALL_DATA) "$(MAC_OSX_DIR)/$$i" "$(LIB_INSTALL_DIR)/Resources"; done'
728 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing wish$(VERSION) script to $(INSTALL_ROOT)/'"${bindir}"'/" && $(INSTALL_DATA_DIR) "$(INSTALL_ROOT)/'"${bindir}"'" && printf > "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)" "#!/bin/sh\n\"\$$(dirname \$$0)'"`eval d="${bindir}"; echo "$d" | sed -e 's#/[^/][^/]*#/..#g'`"'$(bindir)/Wish\" \"\$$@\"" && chmod +x "$(INSTALL_ROOT)/'"${bindir}"'/wish$(VERSION)"'
729 bindir="${libdir}/Resources/Wish.app/Contents/MacOS"
730 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Info.plist to $(BIN_INSTALL_DIR)/.." && $(INSTALL_DATA) Wish-Info.plist "$(BIN_INSTALL_DIR)/../Info.plist" && mv -f "$(BIN_INSTALL_DIR)/wish$(VERSION)" "$(BIN_INSTALL_DIR)/Wish"'
731 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.icns to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA_DIR) "$(BIN_INSTALL_DIR)/../Resources"'
732 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Tk.icns" "$(BIN_INSTALL_DIR)/../Resources/Wish.icns"'
733 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing Wish.sdef to $(BIN_INSTALL_DIR)/../Resources" && $(INSTALL_DATA) "$(MAC_OSX_DIR)/Wish.sdef" "$(BIN_INSTALL_DIR)/../Resources"'
714734 fi
715735 EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tk.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tkConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."'
716736 # Don't use AC_DEFINE for the following as the framework version define
724744 fi
725745 # libdir must be a fully qualified path and not ${exec_prefix}/lib
726746 eval libdir="$libdir"
727 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
728 TK_LIB_FLAG="-ltk${TK_VERSION}"
747 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
748 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
749 TK_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win ${TK_LIB_FLAG}"
729750 else
730 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
731 fi
732 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
733 if test "${ac_cv_cygwin}" = "yes" -a "$SHARED_BUILD" = "1"; then
734 WISH_BUILD_LIB_SPEC="-L\$(TOP_DIR)/win -ltk${TK_MAJOR_VERSION}${TK_MINOR_VERSION} \${TCL_LIB_SPEC}"
735 else
736 WISH_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG} \${WISH_LIBS}"
751 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
752 TK_LIB_FLAG="-ltk${TK_VERSION}"
753 else
754 TK_LIB_FLAG="-ltk`echo ${TK_VERSION} | tr -d .`"
755 fi
756 TK_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TK_LIB_FLAG}"
737757 fi
738758 TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
739 fi
740
741 # Extra bits for legacy Aqua Carbon build (carbon sources and resource files)
742 if test $tk_aqua = carbon; then
743 EXTRA_AQUA_OBJS='tkMacOSXCarbonEvents.o'
744 EXTRA_AQUA_SRCS='$(TOP_DIR)/carbon/tkMacOSXCarbonEvents.c'
745 LIB_RSRC_FILE='${TK_RSRC_FILE}'
746 APP_RSRC_FILE='${WISH_RSRC_FILE}'
747 REZ=/Developer/Tools/Rez
748 REZ_FLAGS='-d "SystemSevenOrLater=1" -useDF -ro'
749 if test "$SHARED_BUILD" = 0; then
750 EXTRA_INSTALL_BINARIES='@echo "Installing $(TK_RSRC_FILE) to $(LIB_INSTALL_DIR)/" && $(INSTALL_DATA) $(TK_RSRC_FILE) "$(LIB_INSTALL_DIR)"'
751 TK_BUILD_LIB_SPEC="$TK_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
752 WISH_BUILD_LIB_SPEC="$WISH_BUILD_LIB_SPEC -sectcreate __TEXT __tk_rsrc `pwd | sed -e 's/ /\\\\ /g'`/\${TK_RSRC_FILE}"
753 TK_LIB_SPEC="$TK_LIB_SPEC -sectcreate __TEXT __tk_rsrc ${libdir}/\${TK_RSRC_FILE}"
754 else
755 TK_SHLIB_LD_EXTRAS="$TK_SHLIB_LD_EXTRAS -sectcreate __TEXT __tk_rsrc \${TK_RSRC_FILE}"
756 fi
757759 fi
758760
759761 #--------------------------------------------------------------------
808810 AC_SUBST(LD_LIBRARY_PATH_VAR)
809811
810812 AC_SUBST(TK_BUILD_LIB_SPEC)
811 AC_SUBST(WISH_BUILD_LIB_SPEC)
812813
813814 AC_SUBST(TCL_STUB_FLAGS)
814815 AC_SUBST(XINCLUDES)
828829 AC_SUBST(EXTRA_INSTALL_BINARIES)
829830 AC_SUBST(EXTRA_BUILD_HTML)
830831 AC_SUBST(EXTRA_WISH_LIBS)
831 AC_SUBST(EXTRA_AQUA_OBJS)
832 AC_SUBST(EXTRA_AQUA_SRCS)
833832 AC_SUBST(CFBUNDLELOCALIZATIONS)
834833
835 AC_SUBST(MACOSX_SRC_DIR)
836834 AC_SUBST(TK_RSRC_FILE)
837835 AC_SUBST(WISH_RSRC_FILE)
838836 AC_SUBST(LIB_RSRC_FILE)
675675
676676 # Does the pthread-implementation provide
677677 # 'pthread_attr_setstacksize' ?
678 AC_CHECK_FUNCS(pthread_attr_setstacksize)
678
679 ac_saved_libs=$LIBS
680 LIBS="$LIBS $THREADS_LIBS"
681 AC_CHECK_FUNCS(pthread_attr_setstacksize pthread_atfork)
682 LIBS=$ac_saved_libs
679683 else
680684 TCL_THREADS=0
681685 fi
10661070 AC_DEFINE(MODULE_SCOPE,
10671071 [extern __attribute__((__visibility__("hidden")))],
10681072 [Compiler support for module scope symbols])
1073 AC_DEFINE(HAVE_HIDDEN, [1], [Compiler support for module scope symbols])
10691074 ])
10701075 ])
10711076
12221227 SHLIB_CFLAGS=""
12231228 SHLIB_LD='${CC} -shared'
12241229 SHLIB_SUFFIX=".dll"
1225 DL_OBJS="tclLoadDl.o tclWinError.o"
1230 DL_OBJS="tclLoadDl.o"
1231 PLAT_OBJS='${CYGWIN_OBJS}'
1232 PLAT_SRCS='${CYGWIN_SRCS}'
12261233 DL_LIBS="-ldl"
12271234 CC_SEARCH_FLAGS=""
12281235 LD_SEARCH_FLAGS=""
13971404 ])
13981405 ])
13991406 ;;
1400 Linux*)
1407 Linux*|GNU*|NetBSD-Debian)
14011408 SHLIB_CFLAGS="-fPIC"
14021409 SHLIB_SUFFIX=".so"
14031410
14351442
14361443 AS_IF([test x"${USE_COMPAT}" != x],[CFLAGS="$CFLAGS -fno-inline"])
14371444 ;;
1438 GNU*)
1439 SHLIB_CFLAGS="-fPIC"
1440 SHLIB_SUFFIX=".so"
1441
1442 SHLIB_LD='${CC} -shared'
1443 DL_OBJS=""
1444 DL_LIBS="-ldl"
1445 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
1446 CC_SEARCH_FLAGS=""
1447 LD_SEARCH_FLAGS=""
1448 AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"])
1449 ;;
14501445 Lynx*)
14511446 SHLIB_CFLAGS="-fPIC"
14521447 SHLIB_SUFFIX=".so"
14801475 CC_SEARCH_FLAGS=""
14811476 LD_SEARCH_FLAGS=""
14821477 ;;
1483 NetBSD-1.*|FreeBSD-[[1-2]].*)
1484 SHLIB_CFLAGS="-fPIC"
1485 SHLIB_LD="ld -Bshareable -x"
1486 SHLIB_SUFFIX=".so"
1487 DL_OBJS="tclLoadDl.o"
1488 DL_LIBS=""
1489 AS_IF([test $doRpath = yes], [
1490 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1491 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
1492 AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
1493 AC_EGREP_CPP(yes, [
1494 #ifdef __ELF__
1495 yes
1496 #endif
1497 ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
1498 AS_IF([test $tcl_cv_ld_elf = yes], [
1499 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
1500 ], [
1501 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
1502 ])
1503
1504 # Ancient FreeBSD doesn't handle version numbers with dots.
1505
1506 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
1507 TCL_LIB_VERSIONS_OK=nodots
1508 ;;
15091478 OpenBSD-*)
15101479 arch=`arch -s`
15111480 case "$arch" in
1512 m88k|vax)
1481 vax)
15131482 # Equivalent using configure option --disable-load
15141483 # Step 4 will set the necessary variables
15151484 DL_OBJS=""
15161485 SHLIB_LD_LIBS=""
1486 LDFLAGS=""
15171487 ;;
15181488 *)
15191489 SHLIB_CFLAGS="-fPIC"
15251495 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
15261496 LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
15271497 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
1498 LDFLAGS="-Wl,-export-dynamic"
15281499 ;;
15291500 esac
15301501 case "$arch" in
1531 m88k|vax)
1502 vax)
15321503 CFLAGS_OPTIMIZE="-O1"
15331504 ;;
15341505 sh)
15381509 CFLAGS_OPTIMIZE="-O2"
15391510 ;;
15401511 esac
1541 AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
1542 AC_EGREP_CPP(yes, [
1543 #ifdef __ELF__
1544 yes
1545 #endif
1546 ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
1547 AS_IF([test $tcl_cv_ld_elf = yes], [
1548 LDFLAGS=-Wl,-export-dynamic
1549 ], [LDFLAGS=""])
15501512 AS_IF([test "${TCL_THREADS}" = "1"], [
15511513 # On OpenBSD: Compile with -pthread
15521514 # Don't link with -lpthread
15571519 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
15581520 TCL_LIB_VERSIONS_OK=nodots
15591521 ;;
1560 NetBSD-*|FreeBSD-[[3-4]].*)
1561 # FreeBSD 3.* and greater have ELF.
1562 # NetBSD 2.* has ELF and can use 'cc -shared' to build shared libs
1522 NetBSD-*)
1523 # NetBSD has ELF and can use 'cc -shared' to build shared libs
15631524 SHLIB_CFLAGS="-fPIC"
15641525 SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
15651526 SHLIB_SUFFIX=".so"
15751536 CFLAGS="$CFLAGS -pthread"
15761537 LDFLAGS="$LDFLAGS -pthread"
15771538 ])
1578 case $system in
1579 FreeBSD-3.*)
1580 # FreeBSD-3 doesn't handle version numbers with dots.
1581 UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
1582 SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
1583 TCL_LIB_VERSIONS_OK=nodots
1584 ;;
1585 esac
15861539 ;;
15871540 FreeBSD-*)
15881541 # This configuration from FreeBSD Ports.
15891542 SHLIB_CFLAGS="-fPIC"
15901543 SHLIB_LD="${CC} -shared"
1591 TCL_SHLIB_LD_EXTRAS="-soname \$[@]"
1544 TCL_SHLIB_LD_EXTRAS="-Wl,-soname=\$[@]"
15921545 SHLIB_SUFFIX=".so"
15931546 DL_OBJS="tclLoadDl.o"
15941547 DL_LIBS=""
15951548 LDFLAGS=""
15961549 AS_IF([test $doRpath = yes], [
15971550 CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1598 LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
1551 LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
15991552 AS_IF([test "${TCL_THREADS}" = "1"], [
16001553 # The -pthread needs to go in the LDFLAGS, not LIBS
16011554 LIBS=`echo $LIBS | sed s/-pthread//`
20862039 AS_IF([test "$tcl_cv_cc_visibility_hidden" != yes], [
20872040 AC_DEFINE(MODULE_SCOPE, [extern],
20882041 [No Compiler support for module scope symbols])
2089 AC_DEFINE(NO_VIZ, [], [No visibility attribute])
20902042 ])
20912043
20922044 AS_IF([test "$SHARED_LIB_SUFFIX" = ""], [
21902142 ])
21912143
21922144 #--------------------------------------------------------------------
2193 # SC_SERIAL_PORT
2194 #
2195 # Determine which interface to use to talk to the serial port.
2196 # Note that #include lines must begin in leftmost column for
2197 # some compilers to recognize them as preprocessor directives,
2198 # and some build environments have stdin not pointing at a
2199 # pseudo-terminal (usually /dev/null instead.)
2200 #
2201 # Arguments:
2202 # none
2203 #
2204 # Results:
2205 #
2206 # Defines only one of the following vars:
2207 # HAVE_SYS_MODEM_H
2208 # USE_TERMIOS
2209 # USE_TERMIO
2210 # USE_SGTTY
2211 #
2212 #--------------------------------------------------------------------
2213
2214 AC_DEFUN([SC_SERIAL_PORT], [
2215 AC_CHECK_HEADERS(sys/modem.h)
2216 AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
2217 AC_TRY_RUN([
2218 #include <termios.h>
2219
2220 int main() {
2221 struct termios t;
2222 if (tcgetattr(0, &t) == 0) {
2223 cfsetospeed(&t, 0);
2224 t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2225 return 0;
2226 }
2227 return 1;
2228 }], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2229 if test $tcl_cv_api_serial = no ; then
2230 AC_TRY_RUN([
2231 #include <termio.h>
2232
2233 int main() {
2234 struct termio t;
2235 if (ioctl(0, TCGETA, &t) == 0) {
2236 t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2237 return 0;
2238 }
2239 return 1;
2240 }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2241 fi
2242 if test $tcl_cv_api_serial = no ; then
2243 AC_TRY_RUN([
2244 #include <sgtty.h>
2245
2246 int main() {
2247 struct sgttyb t;
2248 if (ioctl(0, TIOCGETP, &t) == 0) {
2249 t.sg_ospeed = 0;
2250 t.sg_flags |= ODDP | EVENP | RAW;
2251 return 0;
2252 }
2253 return 1;
2254 }], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2255 fi
2256 if test $tcl_cv_api_serial = no ; then
2257 AC_TRY_RUN([
2258 #include <termios.h>
2259 #include <errno.h>
2260
2261 int main() {
2262 struct termios t;
2263 if (tcgetattr(0, &t) == 0
2264 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2265 cfsetospeed(&t, 0);
2266 t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2267 return 0;
2268 }
2269 return 1;
2270 }], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2271 fi
2272 if test $tcl_cv_api_serial = no; then
2273 AC_TRY_RUN([
2274 #include <termio.h>
2275 #include <errno.h>
2276
2277 int main() {
2278 struct termio t;
2279 if (ioctl(0, TCGETA, &t) == 0
2280 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2281 t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2282 return 0;
2283 }
2284 return 1;
2285 }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2286 fi
2287 if test $tcl_cv_api_serial = no; then
2288 AC_TRY_RUN([
2289 #include <sgtty.h>
2290 #include <errno.h>
2291
2292 int main() {
2293 struct sgttyb t;
2294 if (ioctl(0, TIOCGETP, &t) == 0
2295 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2296 t.sg_ospeed = 0;
2297 t.sg_flags |= ODDP | EVENP | RAW;
2298 return 0;
2299 }
2300 return 1;
2301 }], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
2302 fi])
2303 case $tcl_cv_api_serial in
2304 termios) AC_DEFINE(USE_TERMIOS, 1, [Use the termios API for serial lines]);;
2305 termio) AC_DEFINE(USE_TERMIO, 1, [Use the termio API for serial lines]);;
2306 sgtty) AC_DEFINE(USE_SGTTY, 1, [Use the sgtty API for serial lines]);;
2307 esac
2308 ])
2309
2310 #--------------------------------------------------------------------
23112145 # SC_MISSING_POSIX_HEADERS
23122146 #
23132147 # Supply substitutes for missing POSIX header files. Special
24192253 not_really_there=""
24202254 if test "$no_x" = ""; then
24212255 if test "$x_includes" = ""; then
2422 AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
2256 AC_TRY_CPP([#include <X11/Xlib.h>], , not_really_there="yes")
24232257 else
2424 if test ! -r $x_includes/X11/Intrinsic.h; then
2258 if test ! -r $x_includes/X11/Xlib.h; then
24252259 not_really_there="yes"
24262260 fi
24272261 fi
24292263 if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
24302264 AC_MSG_CHECKING([for X11 header files])
24312265 found_xincludes="no"
2432 AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
2266 AC_TRY_CPP([#include <X11/Xlib.h>], found_xincludes="yes", found_xincludes="no")
24332267 if test "$found_xincludes" = "no"; then
24342268 dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
24352269 for i in $dirs ; do
2436 if test -r $i/X11/Intrinsic.h; then
2270 if test -r $i/X11/Xlib.h; then
24372271 AC_MSG_RESULT([$i])
24382272 XINCLUDES=" -I$i"
24392273 found_xincludes="yes"
28042638 # Now check for auxiliary declarations
28052639 AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
28062640 AC_TRY_COMPILE([#include <sys/types.h>
2807 #include <sys/dirent.h>],[struct dirent64 p;],
2641 #include <dirent.h>],[struct dirent64 p;],
28082642 tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
28092643 if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
28102644 AC_DEFINE(HAVE_STRUCT_DIRENT64, 1, [Is 'struct dirent64' in <sys/types.h>?])
33
44 Name: tk
55 Summary: Tk graphical toolkit for the Tcl scripting language.
6 Version: 8.6.0
6 Version: 8.6.1
77 Release: 2
88 License: BSD
99 Group: Development/Languages
4141 */
4242
4343 #ifdef TK_LOCAL_MAIN_HOOK
44 extern int TK_LOCAL_MAIN_HOOK(int *argc, char ***argv);
44 MODULE_SCOPE int TK_LOCAL_MAIN_HOOK(int *argc, char ***argv);
4545 #endif
46
47 /* Make sure the stubbed variants of those are never used. */
48 #undef Tcl_ObjSetVar2
49 #undef Tcl_NewStringObj
4650
4751 /*
4852 *----------------------------------------------------------------------
137141 * specific startup file will be run under any conditions.
138142 */
139143
140 (Tcl_SetVar)(interp, "tcl_rcFileName", "~/.wishrc", TCL_GLOBAL_ONLY);
144 Tcl_ObjSetVar2(interp, Tcl_NewStringObj("tcl_rcFileName", -1), NULL,
145 Tcl_NewStringObj("~/.wishrc", -1), TCL_GLOBAL_ONLY);
141146 return TCL_OK;
142147 }
143148
1515 /* Do we have access to Darwin CoreFoundation.framework? */
1616 #undef HAVE_COREFOUNDATION
1717
18 /* Compiler support for module scope symbols */
19 #undef HAVE_HIDDEN
20
1821 /* Do we have the intptr_t type? */
1922 #undef HAVE_INTPTR_T
2023
3639 /* Define to 1 if you have the `open64' function. */
3740 #undef HAVE_OPEN64
3841
42 /* Define to 1 if you have the `pthread_atfork' function. */
43 #undef HAVE_PTHREAD_ATFORK
44
3945 /* Define to 1 if you have the `pthread_attr_setstacksize' function. */
4046 #undef HAVE_PTHREAD_ATTR_SETSTACKSIZE
4147
8793 /* Have we turned on XFT (antialiased fonts)? */
8894 #undef HAVE_XFT
8995
96 /* Do we have XkbKeycodeToKeysym? */
97 #undef HAVE_XKBKEYCODETOKEYSYM
98
9099 /* Is XScreenSaver available? */
91100 #undef HAVE_XSS
92101
113122
114123 /* Do we have <stdlib.h>? */
115124 #undef NO_STDLIB_H
116
117 /* No visibility attribute */
118 #undef NO_VIZ
119125
120126 /* Define to the address where bug reports for this package should be sent. */
121127 #undef PACKAGE_BUGREPORT
192198 # endif
193199 #endif
194200
201 /* Is XKeycodeToKeysym deprecated? */
202 #undef XKEYCODETOKEYSYM_IS_DEPRECATED
203
195204 /* Are Darwin SUSv3 extensions available? */
196205 #undef _DARWIN_C_SOURCE
197206
1111
1212 #include "tkUnixInt.h"
1313 #include <signal.h>
14 #ifdef HAVE_XKBKEYCODETOKEYSYM
15 # include <X11/XKBlib.h>
16 #else
17 # define XkbOpenDisplay(D,V,E,M,m,R) (V),(E),(M),(m),(R),(NULL)
18 #endif
1419
1520 /*
1621 * The following static indicates whether this module has been initialized in
115120 const char *displayNameStr)
116121 {
117122 TkDisplay *dispPtr;
118 Display *display = XOpenDisplay(displayNameStr);
123 Display *display;
124 int event = 0;
125 int error = 0;
126 int major = 1;
127 int minor = 0;
128 int reason = 0;
129 unsigned int use_xkb = 0;
130 /* Disabled, until we have a better test. See [Bug 3613668] */
131 #if 0 && defined(XKEYCODETOKEYSYM_IS_DEPRECATED) && defined(TCL_THREADS)
132 static int xinited = 0;
133 static Tcl_Mutex xinitMutex = NULL;
134
135 if (!xinited) {
136 Tcl_MutexLock(&xinitMutex);
137 if (!xinited) {
138 /* Necessary for threaded apps, of no consequence otherwise */
139 /* need only be called once, but must be called before *any* */
140 /* Xlib call is made. If xinitMutex is still NULL after the */
141 /* Tcl_MutexLock call, Tcl was compiled without threads so */
142 /* we cannot use XInitThreads() either. */
143 if (xinitMutex != NULL){
144 XInitThreads();
145 }
146 xinited = 1;
147 }
148 Tcl_MutexUnlock(&xinitMutex);
149 }
150 #endif
151
152 /*
153 ** Bug [3607830]: Before using Xkb, it must be initialized and confirmed
154 ** that the serve supports it. The XkbOpenDisplay call
155 ** will perform this check and return NULL if the extension
156 ** is not supported.
157 **
158 ** Work around un-const-ified Xkb headers using (char *) cast.
159 */
160 display = XkbOpenDisplay((char *)displayNameStr, &event, &error, &major,
161 &minor, &reason);
162
163 if (display == NULL) {
164 /*fprintf(stderr,"event=%d error=%d major=%d minor=%d reason=%d\nDisabling xkb\n",
165 event, error, major, minor, reason);*/
166 display = XOpenDisplay(displayNameStr);
167 } else {
168 use_xkb = TK_DISPLAY_USE_XKB;
169 /*fprintf(stderr, "Using xkb %d.%d\n", major, minor);*/
170 }
119171
120172 if (display == NULL) {
121173 return NULL;
123175 dispPtr = ckalloc(sizeof(TkDisplay));
124176 memset(dispPtr, 0, sizeof(TkDisplay));
125177 dispPtr->display = display;
178 dispPtr->flags |= use_xkb;
126179 #ifdef TK_USE_INPUT_METHODS
127180 OpenIM(dispPtr);
128181 #endif
6868 {
6969 const char *p, *name;
7070
71 name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
71 name = Tcl_GetVar2(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
7272 if ((name == NULL) || (*name == 0)) {
7373 name = "tk";
7474 } else {
143143 "com.tcltk.tklibrary", TK_FRAMEWORK_VERSION, 0, PATH_MAX,
144144 tkLibPath);
145145 if (tkLibPath[0] != '\0') {
146 Tcl_SetVar(interp, "tk_library", tkLibPath, TCL_GLOBAL_ONLY);
146 Tcl_SetVar2(interp, "tk_library", NULL, tkLibPath, TCL_GLOBAL_ONLY);
147147 }
148148 return foundInFramework;
149149 #else
1010 */
1111
1212 #include "tkInt.h"
13 #include <X11/XKBlib.h>
13
14 /*
15 ** Bug [3607830]: Before using Xkb, it must be initialized. TkpOpenDisplay
16 ** does this and sets the USE_XKB flag if xkb is supported.
17 ** (should this be function ptr?)
18 */
19 #ifdef HAVE_XKBKEYCODETOKEYSYM
20 # include <X11/XKBlib.h>
21 #else
22 # define XkbKeycodeToKeysym(D,K,G,L) XKeycodeToKeysym(D,K,L)
23 #endif
24 #define TkKeycodeToKeysym(D,K,G,L) \
25 ((D)->flags & TK_DISPLAY_USE_XKB) ? \
26 XkbKeycodeToKeysym((D)->display,K,G,L) : \
27 XKeycodeToKeysym((D)->display,K,L)
1428
1529 /*
1630 * Prototypes for local functions defined in this file:
210224
211225 /*
212226 * When mapping from a keysym to a keycode, need information about the
213 * modifier state to be used so that when they call XkbKeycodeToKeysym taking
227 * modifier state to be used so that when they call TkKeycodeToKeysym taking
214228 * into account the xkey.state, they will get back the original keysym.
215229 */
216230
220234 KeySym keySym,
221235 XEvent *eventPtr)
222236 {
223 Display *display = Tk_Display(tkwin);
237 TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;
224238 int state;
225239 KeyCode keycode;
226240
227241 if (keySym == NoSymbol) {
228242 keycode = 0;
229243 } else {
230 keycode = XKeysymToKeycode(display, keySym);
231 if (keycode != 0) {
232 for (state = 0; state < 4; state++) {
233 if (XkbKeycodeToKeysym(display, keycode, 0, state) == keySym){
234 if (state & 1) {
235 eventPtr->xkey.state |= ShiftMask;
236 }
237 if (state & 2) {
238 TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;
239
240 eventPtr->xkey.state |= dispPtr->modeModMask;
241 }
242 break;
244 keycode = XKeysymToKeycode(dispPtr->display, keySym);
245 }
246 eventPtr->xkey.keycode = keycode;
247 if (keycode != 0) {
248 for (state = 0; state < 4; state++) {
249 if (XLookupKeysym(&eventPtr->xkey, state) == keySym) {
250 if (state & 1) {
251 eventPtr->xkey.state |= ShiftMask;
243252 }
253 if (state & 2) {
254 eventPtr->xkey.state |= dispPtr->modeModMask;
255 }
256 break;
244257 }
245258 }
246259 }
275288 int index;
276289 TkKeyEvent* kePtr = (TkKeyEvent*) eventPtr;
277290
291 /*
292 * Refresh the mapping information if it's stale. This must happen before
293 * we do any input method processing. [Bug 3599312]
294 */
295
296 if (dispPtr->bindInfoStale) {
297 TkpInitKeymapInfo(dispPtr);
298 }
299
278300 #ifdef TK_USE_INPUT_METHODS
279301 /*
280302 * If input methods are active, we may already have determined a keysym.
287309 Tcl_DString ds;
288310 TkWindow *winPtr = (TkWindow *)
289311 Tk_IdToWindow(eventPtr->xany.display, eventPtr->xany.window);
312
290313 Tcl_DStringInit(&ds);
291314 (void) TkpGetString(winPtr, eventPtr, &ds);
292315 Tcl_DStringFree(&ds);
296319 }
297320 }
298321 #endif
299
300 /*
301 * Refresh the mapping information if it's stale
302 */
303
304 if (dispPtr->bindInfoStale) {
305 TkpInitKeymapInfo(dispPtr);
306 }
307322
308323 /*
309324 * Figure out which of the four slots in the keymap vector to use for this
320335 && (eventPtr->xkey.state & LockMask))) {
321336 index += 1;
322337 }
323 sym = XkbKeycodeToKeysym(dispPtr->display, eventPtr->xkey.keycode, 0,
338 sym = TkKeycodeToKeysym(dispPtr, eventPtr->xkey.keycode, 0,
324339 index);
325340
326341 /*
335350 || ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
336351 || ((sym >= XK_Ooblique) && (sym <= XK_Thorn)))) {
337352 index &= ~1;
338 sym = XkbKeycodeToKeysym(dispPtr->display, eventPtr->xkey.keycode,
353 sym = TkKeycodeToKeysym(dispPtr, eventPtr->xkey.keycode,
339354 0, index);
340355 }
341356 }
346361 */
347362
348363 if ((index & 1) && (sym == NoSymbol)) {
349 sym = XkbKeycodeToKeysym(dispPtr->display, eventPtr->xkey.keycode,
364 sym = TkKeycodeToKeysym(dispPtr, eventPtr->xkey.keycode,
350365 0, index & ~1);
351366 }
352367 return sym;
396411 if (*codePtr == 0) {
397412 continue;
398413 }
399 keysym = XkbKeycodeToKeysym(dispPtr->display, *codePtr, 0, 0);
414 keysym = TkKeycodeToKeysym(dispPtr, *codePtr, 0, 0);
400415 if (keysym == XK_Shift_Lock) {
401416 dispPtr->lockUsage = LU_SHIFT;
402417 break;
422437 if (*codePtr == 0) {
423438 continue;
424439 }
425 keysym = XkbKeycodeToKeysym(dispPtr->display, *codePtr, 0, 0);
440 keysym = TkKeycodeToKeysym(dispPtr, *codePtr, 0, 0);
426441 if (keysym == XK_Mode_switch) {
427442 dispPtr->modeModMask |= ShiftMask << (i/modMapPtr->max_keypermod);
428443 }
113113 #endif
114114
115115 #ifdef __CYGWIN__
116 # include "tkIntXlibDecls.h"
116117 # define UINT unsigned int
117118 # define HWND void *
118119 # define HDC void *
125126 # define WPARAM void *
126127 # define LPARAM void *
127128 # define LRESULT void *
128
129 EXTERN int TkPutImage (unsigned long *, int, Display *, Drawable, GC,
130 XImage *, int, int, int, int, unsigned int, unsigned int);
131129
132130 #else /* !__CYGWIN__ */
133131 /*
536536 int result;
537537 char string[PRINT_CHARS];
538538 XRectangle drawnArea;
539 Tcl_DString buf;
539540
540541 scalePtr->flags &= ~REDRAW_PENDING;
541542 if ((scalePtr->tkwin == NULL) || !Tk_IsMapped(scalePtr->tkwin)) {
550551 if ((scalePtr->flags & INVOKE_COMMAND) && (scalePtr->command != NULL)) {
551552 Tcl_Preserve(interp);
552553 sprintf(string, scalePtr->format, scalePtr->value);
553 result = Tcl_VarEval(interp, scalePtr->command, " ", string,
554 (char *) NULL);
554 Tcl_DStringInit(&buf);
555 Tcl_DStringAppend(&buf, scalePtr->command, -1);
556 Tcl_DStringAppend(&buf, " ", -1);
557 Tcl_DStringAppend(&buf, string, -1);
558 result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
559 Tcl_DStringFree(&buf);
555560 if (result != TCL_OK) {
556561 Tcl_AddErrorInfo(interp, "\n (command executed by scale)");
557562 Tcl_BackgroundException(interp, result);
10231023 localInterp = riPtr->interp;
10241024 Tcl_Preserve(localInterp);
10251025 if (firstArg == (argc-1)) {
1026 result = Tcl_GlobalEval(localInterp, argv[firstArg]);
1026 result = Tcl_EvalEx(localInterp, argv[firstArg], -1, TCL_EVAL_GLOBAL);
10271027 } else {
10281028 Tcl_DStringInit(&request);
10291029 Tcl_DStringAppend(&request, argv[firstArg], -1);
10311031 Tcl_DStringAppend(&request, " ", 1);
10321032 Tcl_DStringAppend(&request, argv[i], -1);
10331033 }
1034 result = Tcl_GlobalEval(localInterp, Tcl_DStringValue(&request));
1034 result = Tcl_EvalEx(localInterp, Tcl_DStringValue(&request), -1, TCL_EVAL_GLOBAL);
10351035 Tcl_DStringFree(&request);
10361036 }
10371037 if (interp != localInterp) {
15641564 remoteInterp = riPtr->interp;
15651565 Tcl_Preserve(remoteInterp);
15661566
1567 result = Tcl_GlobalEval(remoteInterp, script);
1567 result = Tcl_EvalEx(remoteInterp, script, -1, TCL_EVAL_GLOBAL);
15681568
15691569 /*
15701570 * The call to Tcl_Release may have released the interpreter which
15741574 */
15751575
15761576 if (commWindow != None) {
1577 Tcl_DStringAppend(&reply, Tcl_GetStringResult(remoteInterp),
1577 Tcl_DStringAppend(&reply, Tcl_GetString(Tcl_GetObjResult(remoteInterp)),
15781578 -1);
15791579 if (result == TCL_ERROR) {
15801580 const char *varValue;
10691069 return TCL_OK;
10701070 }
10711071
1072 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
1073 &index) != TCL_OK) {
1072 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
1073 sizeof(char *), "option", 0, &index) != TCL_OK) {
10741074 return TCL_ERROR;
10751075 }
10761076
14041404 Tcl_SetObjResult(interp, result);
14051405 return TCL_OK;
14061406 } else if (objc == 4) { /* wm attributes $win -attribute */
1407 if (Tcl_GetIndexFromObj(interp, objv[3], WmAttributeNames,
1408 "attribute", 0, &attribute) != TCL_OK) {
1407 if (Tcl_GetIndexFromObjStruct(interp, objv[3], WmAttributeNames,
1408 sizeof(char *), "attribute", 0, &attribute) != TCL_OK) {
14091409 return TCL_ERROR;
14101410 }
14111411 Tcl_SetObjResult(interp, WmGetAttribute(winPtr, attribute));
14141414 int i;
14151415
14161416 for (i = 3; i < objc; i += 2) {
1417 if (Tcl_GetIndexFromObj(interp, objv[i], WmAttributeNames,
1418 "attribute", 0, &attribute) != TCL_OK) {
1417 if (Tcl_GetIndexFromObjStruct(interp, objv[i], WmAttributeNames,
1418 sizeof(char *), "attribute", 0, &attribute) != TCL_OK) {
14191419 return TCL_ERROR;
14201420 }
14211421 if (WmSetAttribute(winPtr,interp,attribute,objv[i+1]) != TCL_OK) {
17771777 return TCL_OK;
17781778 }
17791779
1780 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
1781 &index) != TCL_OK) {
1780 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
1781 sizeof(char *), "argument", 0, &index) != TCL_OK) {
17821782 return TCL_ERROR;
17831783 }
17841784 if (index == OPT_ACTIVE) {
29562956 if (*Tcl_GetString(objv[3]) == '\0') {
29572957 wmPtr->sizeHintsFlags &= ~(USPosition|PPosition);
29582958 } else {
2959 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
2960 &index) != TCL_OK) {
2959 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
2960 sizeof(char *), "argument", 0, &index) != TCL_OK) {
29612961 return TCL_ERROR;
29622962 }
29632963 if (index == OPT_USER) {
31933193 if (*Tcl_GetString(objv[3]) == '\0') {
31943194 wmPtr->sizeHintsFlags &= ~(USSize|PSize);
31953195 } else {
3196 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3197 &index) != TCL_OK) {
3196 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3197 sizeof(char *), "argument", 0, &index) != TCL_OK) {
31983198 return TCL_ERROR;
31993199 }
32003200 if (index == OPT_USER) {
33173317 /* ASSERT: index1 != -1 && index2 != -2 [Bug 1789819] */
33183318 ckfree(windows);
33193319
3320 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3321 &index) != TCL_OK) {
3320 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3321 sizeof(char *), "argument", 0, &index) != TCL_OK) {
33223322 return TCL_ERROR;
33233323 }
33243324 if (index == OPT_ISABOVE) {
33773377 return TCL_ERROR;
33783378 }
33793379
3380 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3381 &index) != TCL_OK) {
3380 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3381 sizeof(char *), "argument", 0, &index) != TCL_OK) {
33823382 return TCL_ERROR;
33833383 }
33843384
62746274 Tcl_Preserve(protPtr);
62756275 interp = protPtr->interp;
62766276 Tcl_Preserve(interp);
6277 result = Tcl_GlobalEval(interp, protPtr->command);
6277 result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL);
62786278 if (result != TCL_OK) {
62796279 Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
62806280 "\n (command for \"%s\" window manager protocol)",
485485 @echo "Creating package index $(PKG_INDEX)";
486486 @$(RM) $(PKG_INDEX);
487487 @(\
488 echo "if {[catch {package present Tcl $(TCLVERSION)$(TCLPATCHL)}]} return";\
488 echo "if {[catch {package present Tcl 8.6.0}]} return";\
489489 echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\
490490 echo " || ([info exists ::argv] && (\"-display\" in \$$::argv)))} {";\
491 echo " package ifneeded Tk $(VERSION)$(PATCH_LEVEL) [list load [file join \$$dir .. .. bin libtk$(VERSION).dll] Tk]";\
491 echo " package ifneeded Tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin libtk$(VERSION).dll]] Tk]";\
492492 echo "} else {";\
493 echo " package ifneeded Tk $(VERSION)$(PATCH_LEVEL) [list load [file join \$$dir .. .. bin $(TK_DLL_FILE)] Tk]";\
493 echo " package ifneeded Tk $(VERSION)$(PATCH_LEVEL) [list load [file normalize [file join \$$dir .. .. bin $(TK_DLL_FILE)]] Tk]";\
494494 echo "}";\
495495 ) > $(PKG_INDEX);
496496 @for i in tkConfig.sh $(TK_LIB_FILE) $(TK_STUB_LIB_FILE); \
850850 Optional Packages:
851851 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
852852 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
853 --with-tcl=DIR use Tcl 8.6 binaries from DIR
853 --with-tcl directory containing tcl configuration
854 (tclConfig.sh)
854855 --with-celib=DIR use Windows/CE support library from DIR
855856
856857 Some influential environment variables:
13101311 TK_VERSION=8.6
13111312 TK_MAJOR_VERSION=8
13121313 TK_MINOR_VERSION=6
1313 TK_PATCH_LEVEL=".0"
1314 TK_PATCH_LEVEL=".1"
13141315 VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION
13151316
13161317 #------------------------------------------------------------------------
31023103 echo "$as_me:$LINENO: result: static" >&5
31033104 echo "${ECHO_T}static" >&6
31043105 SHARED_BUILD=0
3105 cat >>confdefs.h <<\_ACEOF
3106
3107 cat >>confdefs.h <<\_ACEOF
31063108 #define STATIC_BUILD 1
31073109 _ACEOF
31083110
31143116 #--------------------------------------------------------------------
31153117
31163118
3117 echo "$as_me:$LINENO: checking the location of tclConfig.sh" >&5
3118 echo $ECHO_N "checking the location of tclConfig.sh... $ECHO_C" >&6
3119
3120 if test -d ../../tcl8.6$TK_PATCH_LEVEL/win; then
3121 TCL_BIN_DIR_DEFAULT=../../tcl8.6$TK_PATCH_LEVEL/win
3122 elif test -d ../../tcl8.6/win; then
3123 TCL_BIN_DIR_DEFAULT=../../tcl8.6/win
3124 else
3125 TCL_BIN_DIR_DEFAULT=../../tcl/win
3126 fi
3127
3119 #
3120 # Ok, lets find the tcl configuration
3121 # First, look for one uninstalled.
3122 # the alternative search directory is invoked by --with-tcl
3123 #
3124
3125 if test x"${no_tcl}" = x ; then
3126 # we reset no_tcl in case something fails here
3127 no_tcl=true
31283128
31293129 # Check whether --with-tcl or --without-tcl was given.
31303130 if test "${with_tcl+set}" = set; then
31313131 withval="$with_tcl"
3132 TCL_BIN_DIR=$withval
3133 else
3134 TCL_BIN_DIR=`cd $TCL_BIN_DIR_DEFAULT; pwd`
3132 with_tclconfig="${withval}"
31353133 fi;
3136 if test ! -d $TCL_BIN_DIR; then
3137 { { echo "$as_me:$LINENO: error: Tcl directory $TCL_BIN_DIR does not exist" >&5
3138 echo "$as_me: error: Tcl directory $TCL_BIN_DIR does not exist" >&2;}
3134 echo "$as_me:$LINENO: checking for Tcl configuration" >&5
3135 echo $ECHO_N "checking for Tcl configuration... $ECHO_C" >&6
3136 if test "${ac_cv_c_tclconfig+set}" = set; then
3137 echo $ECHO_N "(cached) $ECHO_C" >&6
3138 else
3139
3140
3141 # First check to see if --with-tcl was specified.
3142 if test x"${with_tclconfig}" != x ; then
3143 case "${with_tclconfig}" in
3144 */tclConfig.sh )
3145 if test -f "${with_tclconfig}"; then
3146 { echo "$as_me:$LINENO: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5
3147 echo "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;}
3148 with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`"
3149 fi ;;
3150 esac
3151 if test -f "${with_tclconfig}/tclConfig.sh" ; then
3152 ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`"
3153 else
3154 { { echo "$as_me:$LINENO: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&5
3155 echo "$as_me: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&2;}
31393156 { (exit 1); exit 1; }; }
3157 fi
3158 fi
3159
3160 # then check for a private Tcl installation
3161 if test x"${ac_cv_c_tclconfig}" = x ; then
3162 for i in \
3163 ../tcl \
3164 `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
3165 `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \
3166 `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \
3167 ../../tcl \
3168 `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
3169 `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \
3170 `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \
3171 ../../../tcl \
3172 `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
3173 `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \
3174 `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do
3175 if test -f "$i/win/tclConfig.sh" ; then
3176 ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
3177 break
3178 fi
3179 done
3180 fi
3181
3182 # check in a few common install locations
3183 if test x"${ac_cv_c_tclconfig}" = x ; then
3184 for i in `ls -d ${libdir} 2>/dev/null` \
3185 `ls -d ${exec_prefix}/lib 2>/dev/null` \
3186 `ls -d ${prefix}/lib 2>/dev/null` \
3187 `ls -d /cygdrive/c/Tcl/lib 2>/dev/null` \
3188 `ls -d /cygdrive/c/Progra~1/Tcl/lib 2>/dev/null` \
3189 `ls -d /c/Tcl/lib 2>/dev/null` \
3190 `ls -d /c/Progra~1/Tcl/lib 2>/dev/null` \
3191 `ls -d C:/Tcl/lib 2>/dev/null` \
3192 `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
3193 ; do
3194 if test -f "$i/tclConfig.sh" ; then
3195 ac_cv_c_tclconfig="`(cd $i; pwd)`"
3196 break
3197 fi
3198 done
3199 fi
3200
3201 # check in a few other private locations
3202 if test x"${ac_cv_c_tclconfig}" = x ; then
3203 for i in \
3204 ${srcdir}/../tcl \
3205 `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
3206 `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \
3207 `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do
3208 if test -f "$i/win/tclConfig.sh" ; then
3209 ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
3210 break
3211 fi
3212 done
3213 fi
3214
3215 fi
3216
3217
3218 if test x"${ac_cv_c_tclconfig}" = x ; then
3219 TCL_BIN_DIR="# no Tcl configs found"
3220 { { echo "$as_me:$LINENO: error: Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh" >&5
3221 echo "$as_me: error: Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh" >&2;}
3222 { (exit 1); exit 1; }; }
3223 else
3224 no_tcl=
3225 TCL_BIN_DIR="${ac_cv_c_tclconfig}"
3226 echo "$as_me:$LINENO: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5
3227 echo "${ECHO_T}found ${TCL_BIN_DIR}/tclConfig.sh" >&6
3228 fi
31403229 fi
3141 if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
3142 if test ! -f $TCL_BIN_DIR/../unix/tclConfig.sh; then
3143 { { echo "$as_me:$LINENO: error: There is no tclConfig.sh in $TCL_BIN_DIR: perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" >&5
3144 echo "$as_me: error: There is no tclConfig.sh in $TCL_BIN_DIR: perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" >&2;}
3145 { (exit 1); exit 1; }; }
3146 fi
3147 TCL_BIN_DIR=`cd ${TCL_BIN_DIR}/../unix; pwd`
3148 fi
3149 echo "$as_me:$LINENO: result: $TCL_BIN_DIR/tclConfig.sh" >&5
3150 echo "${ECHO_T}$TCL_BIN_DIR/tclConfig.sh" >&6
3151
3152
3153 echo "$as_me:$LINENO: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
3154 echo $ECHO_N "checking for existence of $TCL_BIN_DIR/tclConfig.sh... $ECHO_C" >&6
3155
3156 if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
3230
3231
3232 echo "$as_me:$LINENO: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5
3233 echo $ECHO_N "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... $ECHO_C" >&6
3234
3235 if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
31573236 echo "$as_me:$LINENO: result: loading" >&5
31583237 echo "${ECHO_T}loading" >&6
3159 . $TCL_BIN_DIR/tclConfig.sh
3238 . "${TCL_BIN_DIR}/tclConfig.sh"
31603239 else
3161 echo "$as_me:$LINENO: result: file not found" >&5
3162 echo "${ECHO_T}file not found" >&6
3240 echo "$as_me:$LINENO: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5
3241 echo "${ECHO_T}could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6
31633242 fi
31643243
31653244 #
32033282
32043283
32053284
3285
3286 if test "${TCL_MAJOR_VERSION}" != "${TK_MAJOR_VERSION}"; then
3287 { { echo "$as_me:$LINENO: error: ${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
3288 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
3289 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}." >&5
3290 echo "$as_me: error: ${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
3291 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
3292 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}." >&2;}
3293 { (exit 1); exit 1; }; }
3294 fi
3295 if test "${TCL_MINOR_VERSION}" -lt "${TK_MINOR_VERSION}"; then
3296 { { echo "$as_me:$LINENO: error: ${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
3297 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
3298 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}." >&5
3299 echo "$as_me: error: ${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
3300 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
3301 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}." >&2;}
3302 { (exit 1); exit 1; }; }
3303 fi
32063304
32073305 #--------------------------------------------------------------------
32083306 # The statements below define a collection of compile flags. This
1313 TK_VERSION=8.6
1414 TK_MAJOR_VERSION=8
1515 TK_MINOR_VERSION=6
16 TK_PATCH_LEVEL=".0"
16 TK_PATCH_LEVEL=".1"
1717 VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION
1818
1919 #------------------------------------------------------------------------
7979
8080 SC_PATH_TCLCONFIG($TK_PATCH_LEVEL)
8181 SC_LOAD_TCLCONFIG
82
83 if test "${TCL_MAJOR_VERSION}" != "${TK_MAJOR_VERSION}"; then
84 AC_MSG_ERROR([${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
85 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
86 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}.])
87 fi
88 if test "${TCL_MINOR_VERSION}" -lt "${TK_MINOR_VERSION}"; then
89 AC_MSG_ERROR([${TCL_BIN_DIR}/tclConfig.sh is for Tcl ${TCL_VERSION}.
90 Tk ${TK_VERSION}${TK_PATCH_LEVEL} needs Tcl ${TK_VERSION}.
91 Use --with-tcl= option to indicate location of tclConfig.sh file for Tcl ${TK_VERSION}.])
92 fi
8293
8394 #--------------------------------------------------------------------
8495 # The statements below define a collection of compile flags. This
696696 htmlhelp: chmsetup $(CHMFILE)
697697
698698 $(CHMFILE): $(DOCDIR)\*
699 @$(TCLSH) $(TOOLSDIR)\tcltk-man2html.tcl
699 @$(TCLSH) $(TCLTOOLSDIR)\tcltk-man2html.tcl
700700 @echo Compiling HTML help project
701701 @$(HHC) <<$(HHPFILE) >NUL
702702 [OPTIONS]
22 #
33 # Locate the tclConfig.sh file and perform a sanity check on
44 # the Tcl compile flags
5 # Currently a no-op for Windows
65 #
76 # Arguments:
8 # PATCH_LEVEL The patch level for Tcl if any.
7 # none
98 #
109 # Results:
1110 #
1211 # Adds the following arguments to configure:
1312 # --with-tcl=...
1413 #
15 # Sets the following vars:
16 # TCL_BIN_DIR Full path to the tclConfig.sh file
14 # Defines the following vars:
15 # TCL_BIN_DIR Full path to the directory containing
16 # the tclConfig.sh file
1717 #------------------------------------------------------------------------
1818
1919 AC_DEFUN([SC_PATH_TCLCONFIG], [
20 AC_MSG_CHECKING([the location of tclConfig.sh])
21
22 if test -d ../../tcl8.6$1/win; then
23 TCL_BIN_DIR_DEFAULT=../../tcl8.6$1/win
24 elif test -d ../../tcl8.6/win; then
25 TCL_BIN_DIR_DEFAULT=../../tcl8.6/win
26 else
27 TCL_BIN_DIR_DEFAULT=../../tcl/win
28 fi
29
30 AC_ARG_WITH(tcl, [ --with-tcl=DIR use Tcl 8.6 binaries from DIR],
31 TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DIR_DEFAULT; pwd`)
32 if test ! -d $TCL_BIN_DIR; then
33 AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
34 fi
35 if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
36 if test ! -f $TCL_BIN_DIR/../unix/tclConfig.sh; then
37 AC_MSG_ERROR(There is no tclConfig.sh in $TCL_BIN_DIR: perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
38 fi
39 TCL_BIN_DIR=`cd ${TCL_BIN_DIR}/../unix; pwd`
40 fi
41 AC_MSG_RESULT($TCL_BIN_DIR/tclConfig.sh)
20 #
21 # Ok, lets find the tcl configuration
22 # First, look for one uninstalled.
23 # the alternative search directory is invoked by --with-tcl
24 #
25
26 if test x"${no_tcl}" = x ; then
27 # we reset no_tcl in case something fails here
28 no_tcl=true
29 AC_ARG_WITH(tcl,
30 AC_HELP_STRING([--with-tcl],
31 [directory containing tcl configuration (tclConfig.sh)]),
32 with_tclconfig="${withval}")
33 AC_MSG_CHECKING([for Tcl configuration])
34 AC_CACHE_VAL(ac_cv_c_tclconfig,[
35
36 # First check to see if --with-tcl was specified.
37 if test x"${with_tclconfig}" != x ; then
38 case "${with_tclconfig}" in
39 */tclConfig.sh )
40 if test -f "${with_tclconfig}"; then
41 AC_MSG_WARN([--with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself])
42 with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`"
43 fi ;;
44 esac
45 if test -f "${with_tclconfig}/tclConfig.sh" ; then
46 ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`"
47 else
48 AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
49 fi
50 fi
51
52 # then check for a private Tcl installation
53 if test x"${ac_cv_c_tclconfig}" = x ; then
54 for i in \
55 ../tcl \
56 `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
57 `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
58 `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
59 ../../tcl \
60 `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
61 `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
62 `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
63 ../../../tcl \
64 `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
65 `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
66 `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
67 if test -f "$i/win/tclConfig.sh" ; then
68 ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
69 break
70 fi
71 done
72 fi
73
74 # check in a few common install locations
75 if test x"${ac_cv_c_tclconfig}" = x ; then
76 for i in `ls -d ${libdir} 2>/dev/null` \
77 `ls -d ${exec_prefix}/lib 2>/dev/null` \
78 `ls -d ${prefix}/lib 2>/dev/null` \
79 `ls -d /cygdrive/c/Tcl/lib 2>/dev/null` \
80 `ls -d /cygdrive/c/Progra~1/Tcl/lib 2>/dev/null` \
81 `ls -d /c/Tcl/lib 2>/dev/null` \
82 `ls -d /c/Progra~1/Tcl/lib 2>/dev/null` \
83 `ls -d C:/Tcl/lib 2>/dev/null` \
84 `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
85 ; do
86 if test -f "$i/tclConfig.sh" ; then
87 ac_cv_c_tclconfig="`(cd $i; pwd)`"
88 break
89 fi
90 done
91 fi
92
93 # check in a few other private locations
94 if test x"${ac_cv_c_tclconfig}" = x ; then
95 for i in \
96 ${srcdir}/../tcl \
97 `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
98 `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
99 `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
100 if test -f "$i/win/tclConfig.sh" ; then
101 ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
102 break
103 fi
104 done
105 fi
106 ])
107
108 if test x"${ac_cv_c_tclconfig}" = x ; then
109 TCL_BIN_DIR="# no Tcl configs found"
110 AC_MSG_ERROR([Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh])
111 else
112 no_tcl=
113 TCL_BIN_DIR="${ac_cv_c_tclconfig}"
114 AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
115 fi
116 fi
42117 ])
43118
44119 #------------------------------------------------------------------------
45120 # SC_PATH_TKCONFIG --
46121 #
47122 # Locate the tkConfig.sh file
48 # Currently a no-op for Windows
49123 #
50124 # Arguments:
51125 # none
55129 # Adds the following arguments to configure:
56130 # --with-tk=...
57131 #
58 # Sets the following vars:
59 # TK_BIN_DIR Full path to the tkConfig.sh file
132 # Defines the following vars:
133 # TK_BIN_DIR Full path to the directory containing
134 # the tkConfig.sh file
60135 #------------------------------------------------------------------------
61136
62137 AC_DEFUN([SC_PATH_TKCONFIG], [
63 AC_MSG_CHECKING([the location of tkConfig.sh])
64
65 if test -d ../../tk8.6$1/win; then
66 TK_BIN_DIR_DEFAULT=../../tk8.6$1/win
67 elif test -d ../../tk8.6/win; then
68 TK_BIN_DIR_DEFAULT=../../tk8.6/win
69 else
70 TK_BIN_DIR_DEFAULT=../../tk/win
71 fi
72
73 AC_ARG_WITH(tk, [ --with-tk=DIR use Tk 8.6 binaries from DIR],
74 TK_BIN_DIR=$withval, TK_BIN_DIR=`cd $TK_BIN_DIR_DEFAULT; pwd`)
75 if test ! -d $TK_BIN_DIR; then
76 AC_MSG_ERROR(Tk directory $TK_BIN_DIR does not exist)
77 fi
78 if test ! -f $TK_BIN_DIR/tkConfig.sh; then
79 AC_MSG_ERROR(There is no tkConfig.sh in $TK_BIN_DIR: perhaps you did not specify the Tk *build* directory (not the toplevel Tk directory) or you forgot to configure Tk?)
80 fi
81
82 AC_MSG_RESULT([$TK_BIN_DIR/tkConfig.sh])
138 #
139 # Ok, lets find the tk configuration
140 # First, look for one uninstalled.
141 # the alternative search directory is invoked by --with-tk
142 #
143
144 if test x"${no_tk}" = x ; then
145 # we reset no_tk in case something fails here
146 no_tk=true
147 AC_ARG_WITH(tk,
148 AC_HELP_STRING([--with-tk],
149 [directory containing tk configuration (tkConfig.sh)]),
150 with_tkconfig="${withval}")
151 AC_MSG_CHECKING([for Tk configuration])
152 AC_CACHE_VAL(ac_cv_c_tkconfig,[
153
154 # First check to see if --with-tkconfig was specified.
155 if test x"${with_tkconfig}" != x ; then
156 case "${with_tkconfig}" in
157 */tkConfig.sh )
158 if test -f "${with_tkconfig}"; then
159 AC_MSG_WARN([--with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself])
160 with_tkconfig="`echo "${with_tkconfig}" | sed 's!/tkConfig\.sh$!!'`"
161 fi ;;
162 esac
163 if test -f "${with_tkconfig}/tkConfig.sh" ; then
164 ac_cv_c_tkconfig="`(cd "${with_tkconfig}"; pwd)`"
165 else
166 AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
167 fi
168 fi
169
170 # then check for a private Tk library
171 if test x"${ac_cv_c_tkconfig}" = x ; then
172 for i in \
173 ../tk \
174 `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
175 `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
176 `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
177 ../../tk \
178 `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
179 `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
180 `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
181 ../../../tk \
182 `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
183 `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
184 `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
185 if test -f "$i/win/tkConfig.sh" ; then
186 ac_cv_c_tkconfig="`(cd $i/win; pwd)`"
187 break
188 fi
189 done
190 fi
191
192 # check in a few common install locations
193 if test x"${ac_cv_c_tkconfig}" = x ; then
194 for i in `ls -d ${libdir} 2>/dev/null` \
195 `ls -d ${exec_prefix}/lib 2>/dev/null` \
196 `ls -d ${prefix}/lib 2>/dev/null` \
197 `ls -d /cygdrive/c/Tcl/lib 2>/dev/null` \
198 `ls -d /cygdrive/c/Progra~1/Tcl/lib 2>/dev/null` \
199 `ls -d /c/Tcl/lib 2>/dev/null` \
200 `ls -d /c/Progra~1/Tcl/lib 2>/dev/null` \
201 `ls -d C:/Tcl/lib 2>/dev/null` \
202 `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
203 ; do
204 if test -f "$i/tkConfig.sh" ; then
205 ac_cv_c_tkconfig="`(cd $i; pwd)`"
206 break
207 fi
208 done
209 fi
210
211 # check in a few other private locations
212 if test x"${ac_cv_c_tkconfig}" = x ; then
213 for i in \
214 ${srcdir}/../tk \
215 `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
216 `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
217 `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
218 if test -f "$i/win/tkConfig.sh" ; then
219 ac_cv_c_tkconfig="`(cd $i/win; pwd)`"
220 break
221 fi
222 done
223 fi
224 ])
225
226 if test x"${ac_cv_c_tkconfig}" = x ; then
227 TK_BIN_DIR="# no Tk configs found"
228 AC_MSG_ERROR([Can't find Tk configuration definitions. Use --with-tk to specify a directory containing tkConfig.sh])
229 else
230 no_tk=
231 TK_BIN_DIR="${ac_cv_c_tkconfig}"
232 AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
233 fi
234 fi
83235 ])
84236
85237 #------------------------------------------------------------------------
102254 #------------------------------------------------------------------------
103255
104256 AC_DEFUN([SC_LOAD_TCLCONFIG], [
105 AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh])
106
107 if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
257 AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
258
259 if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
108260 AC_MSG_RESULT([loading])
109 . $TCL_BIN_DIR/tclConfig.sh
261 . "${TCL_BIN_DIR}/tclConfig.sh"
110262 else
111 AC_MSG_RESULT([file not found])
263 AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
112264 fi
113265
114266 #
157309 # SC_LOAD_TKCONFIG --
158310 #
159311 # Load the tkConfig.sh file
160 # Currently a no-op for Windows
161312 #
162313 # Arguments:
163314 #
171322 #------------------------------------------------------------------------
172323
173324 AC_DEFUN([SC_LOAD_TKCONFIG], [
174 AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh])
175
176 if test -f "$TK_BIN_DIR/tkConfig.sh" ; then
325 AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
326
327 if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
177328 AC_MSG_RESULT([loading])
178 . $TK_BIN_DIR/tkConfig.sh
329 . "${TK_BIN_DIR}/tkConfig.sh"
179330 else
180 AC_MSG_RESULT([could not find $TK_BIN_DIR/tkConfig.sh])
331 AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
181332 fi
182333
183334
211362 AC_MSG_CHECKING([how to build libraries])
212363 AC_ARG_ENABLE(shared,
213364 [ --enable-shared build and link with shared libraries (default: on)],
214 [tcl_ok=$enableval], [tcl_ok=yes])
365 [tcl_ok=$enableval], [tcl_ok=yes])
215366
216367 if test "${enable_shared+set}" = set; then
217368 enableval="$enable_shared"
226377 else
227378 AC_MSG_RESULT([static])
228379 SHARED_BUILD=0
229 AC_DEFINE(STATIC_BUILD)
380 AC_DEFINE(STATIC_BUILD, 1, [Is this a static build?])
230381 fi
231382 ])
232383
269420 #------------------------------------------------------------------------
270421 # SC_ENABLE_SYMBOLS --
271422 #
272 # Specify if debugging symbols should be used
423 # Specify if debugging symbols should be used.
273424 # Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
274425 # can also be enabled.
275426 #
4848 #ifndef OPENFILENAME_SIZE_VERSION_400
4949 #define OPENFILENAME_SIZE_VERSION_400 76
5050 #endif
51
52 /*
53 * The following structure is used by the new Tk_ChooseDirectoryObjCmd to pass
54 * data between it and its callback. Unique to Windows platform.
55 */
56
57 typedef struct ChooseDirData {
58 TCHAR initDir[MAX_PATH]; /* Initial folder to use */
59 TCHAR retDir[MAX_PATH]; /* Returned folder to use */
60 Tcl_Interp *interp;
61 int mustExist; /* True if file must exist to return from
62 * callback */
63 } CHOOSEDIRDATA;
6451
6552 typedef struct ThreadSpecificData {
6653 int debugFlag; /* Flags whether we should output debugging
152139 * chooser function, Tk_ChooseDirectoryObjCmd(), and its dialog hook proc.
153140 */
154141
155 typedef struct ChooseDir {
156 Tcl_Interp *interp; /* Interp, used only if debug is turned on,
157 * for setting the "tk_dialog" variable. */
158 int lastCtrl; /* Used by hook proc to keep track of last
159 * control that had input focus, so when OK is
160 * pressed we know whether to browse a new
161 * directory or return. */
162 int lastIdx; /* Last item that was selected in directory
163 * browser listbox. */
164 char path[MAX_PATH]; /* On return from choose directory dialog,
165 * holds the selected path. Cannot return
166 * selected path in ofnPtr->lpstrFile because
167 * the default dialog proc stores a '\0' in
168 * it, since, of course, no _file_ was
169 * selected. */
170 OPENFILENAME *ofnPtr; /* pointer to the OFN structure */
142 typedef struct {
143 TCHAR initDir[MAX_PATH]; /* Initial folder to use */
144 TCHAR retDir[MAX_PATH]; /* Returned folder to use */
145 Tcl_Interp *interp;
146 int mustExist; /* True if file must exist to return from
147 * callback */
171148 } ChooseDir;
172149
173150 /*
355332 optionPtr = objv[i];
356333 valuePtr = objv[i + 1];
357334
358 if (Tcl_GetIndexFromObj(interp, optionPtr, optionStrings, "option",
359 TCL_EXACT, &index) != TCL_OK) {
335 if (Tcl_GetIndexFromObjStruct(interp, optionPtr, optionStrings,
336 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
360337 return TCL_ERROR;
361338 }
362339 if (i + 1 == objc) {
11331110 FileFilter *filterPtr;
11341111
11351112 if (initialPtr) {
1136 initial = Tcl_GetStringFromObj(initialPtr, NULL);
1113 initial = Tcl_GetString(initialPtr);
11371114 }
11381115 TkInitFileFilters(&flist);
11391116 if (TkGetFileFilters(interp, &flist, valuePtr, 1) != TCL_OK) {
11601137 *p = '\0';
11611138
11621139 } else {
1163 int len;
1140 size_t len;
11641141
11651142 if (valuePtr == NULL) {
11661143 len = 0;
11671144 } else {
1168 (void) Tcl_GetStringFromObj(valuePtr, &len);
1145 (void) Tcl_GetString(valuePtr);
1146 len = valuePtr->length;
11691147 }
11701148
11711149 /*
13241302 * - Not sure how to implement localization of message prompts.
13251303 *
13261304 * - -title is really -message.
1327 * ToDo:
1328 * - Fix bugs.
1329 * - test to see what platforms this really works on. May require v4.71 of
1330 * shell32.dll everywhere (what is standard?).
13311305 *
13321306 *----------------------------------------------------------------------
13331307 */
13431317 int oldMode, result = TCL_ERROR, i;
13441318 LPCITEMIDLIST pidl; /* Returned by browser */
13451319 BROWSEINFO bInfo; /* Used by browser */
1346 CHOOSEDIRDATA cdCBData; /* Structure to pass back and forth */
1320 ChooseDir cdCBData; /* Structure to pass back and forth */
13471321 LPMALLOC pMalloc; /* Used by shell */
13481322 Tk_Window tkwin = clientData;
13491323 HWND hWnd;
13651339 */
13661340
13671341 path[0] = '\0';
1368 ZeroMemory(&cdCBData, sizeof(CHOOSEDIRDATA));
1342 ZeroMemory(&cdCBData, sizeof(ChooseDir));
13691343 cdCBData.interp = interp;
13701344
13711345 /*
13811355 optionPtr = objv[i];
13821356 valuePtr = objv[i + 1];
13831357
1384 if (Tcl_GetIndexFromObj(interp, optionPtr, optionStrings, "option", 0,
1385 &index) != TCL_OK) {
1358 if (Tcl_GetIndexFromObjStruct(interp, optionPtr, optionStrings,
1359 sizeof(char *), "option", 0, &index) != TCL_OK) {
13861360 goto cleanup;
13871361 }
13881362 if (i + 1 == objc) {
15731547 LPARAM lpData)
15741548 {
15751549 TCHAR selDir[MAX_PATH];
1576 CHOOSEDIRDATA *chooseDirSharedData = (CHOOSEDIRDATA *) lpData;
1550 ChooseDir *chooseDirSharedData = (ChooseDir *) lpData;
15771551 Tcl_DString tempString;
15781552 Tcl_DString initDirString;
15791553 TCHAR string[MAX_PATH];
15911565 * First save and check to see if it is a valid path name, if so then
15921566 * make that path the one shown in the window. Otherwise, it failed
15931567 * the check and should be treated as such. Use
1594 * Set/GetCurrentDirectoryA which allows relative path names and names
1568 * Set/GetCurrentDirectory which allows relative path names and names
15951569 * with forward slashes. Use Tcl_TranslateFileName to make sure names
15961570 * like ~ are converted correctly.
15971571 */
17721746 optionPtr = objv[i];
17731747 valuePtr = objv[i + 1];
17741748
1775 if (Tcl_GetIndexFromObj(interp, optionPtr, optionStrings, "option",
1776 TCL_EXACT, &index) != TCL_OK) {
1749 if (Tcl_GetIndexFromObjStruct(interp, optionPtr, optionStrings,
1750 sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
17771751 return TCL_ERROR;
17781752 }
17791753 if (i + 1 == objc) {
19621936 char buf[32];
19631937
19641938 sprintf(buf, "0x%p", (HWND) clientData);
1965 Tcl_SetVar(tsdPtr->debugInterp, "tk_dialog", buf, TCL_GLOBAL_ONLY);
1939 Tcl_SetVar2(tsdPtr->debugInterp, "tk_dialog", NULL, buf, TCL_GLOBAL_ONLY);
19661940 }
19671941
19681942 /*
22572231 }
22582232
22592233 for (i = 1; i < objc; i += 2) {
2260 int optionIndex, len;
2261
2262 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings,
2263 "option", 0, &optionIndex) != TCL_OK) {
2234 int optionIndex;
2235
2236 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
2237 sizeof(char *), "option", 0, &optionIndex) != TCL_OK) {
22642238 return TCL_ERROR;
22652239 }
22662240 if (objc == 2) {
23172291 if (hdPtr->fontObj) {
23182292 Tcl_DecrRefCount(hdPtr->fontObj);
23192293 }
2320 Tcl_GetStringFromObj(objv[i+1], &len);
2321 if (len) {
2294 (void)Tcl_GetString(objv[i+1]);
2295 if (objv[i+1]->length) {
23222296 hdPtr->fontObj = objv[i+1];
23232297 if (Tcl_IsShared(hdPtr->fontObj)) {
23242298 hdPtr->fontObj = Tcl_DuplicateObj(hdPtr->fontObj);
23322306 if (hdPtr->cmdObj) {
23332307 Tcl_DecrRefCount(hdPtr->cmdObj);
23342308 }
2335 Tcl_GetStringFromObj(objv[i+1], &len);
2336 if (len) {
2309 (void)Tcl_GetString(objv[i+1]);
2310 if (objv[i+1]->length) {
23372311 hdPtr->cmdObj = objv[i+1];
23382312 if (Tcl_IsShared(hdPtr->cmdObj)) {
23392313 hdPtr->cmdObj = Tcl_DuplicateObj(hdPtr->cmdObj);
6969 int argc, namelength;
7070 const char **argv = NULL, *name, *p;
7171
72 name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
72 name = Tcl_GetVar2(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
7373 namelength = -1;
7474 if (name != NULL) {
7575 Tcl_SplitPath(name, &argc, &argv);
120120 WCHAR *msgString; /* points to titleString, just after title, leaving space for ": " */
121121 int len; /* size of title, including terminating NULL */
122122
123 /* If running on Cygwin and we have a stderr channel, use it. */
124 #if !defined(STATIC_BUILD)
125 if (tclStubsPtr->reserved9) {
126 Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
127 if (errChannel) {
128 Tcl_WriteChars(errChannel, title, -1);
129 Tcl_WriteChars(errChannel, ": ", 2);
130 Tcl_WriteChars(errChannel, msg, -1);
131 Tcl_WriteChars(errChannel, "\n", 1);
132 return;
133 }
134 }
135 #endif /* !STATIC_BUILD */
136
123137 len = MultiByteToWideChar(CP_UTF8, 0, title, -1, titleString, TK_MAX_WARN_LEN);
124138 msgString = &titleString[len + 1];
125139 titleString[TK_MAX_WARN_LEN - 1] = L'\0';
19471947 if (mePtr->underline < len) {
19481948 const char *label, *start, *end;
19491949
1950 label = Tcl_GetStringFromObj(mePtr->labelPtr, NULL);
1950 label = Tcl_GetString(mePtr->labelPtr);
19511951 start = Tcl_UtfAtIndex(label, mePtr->underline);
19521952 end = Tcl_UtfNext(start);
19531953 Tk_UnderlineChars(menuPtr->display, d,
6969 #include <X11/Xutil.h>
7070
7171 #ifndef __GNUC__
72 # define strncasecmp strnicmp
73 # define strcasecmp stricmp
72 # define strncasecmp _strnicmp
73 # define strcasecmp _stricmp
7474 #endif
7575
7676 #define NBBY 8
551551 }
552552
553553 interp = scrollPtr->info.interp;
554 code = Tcl_GlobalEval(interp, cmdString.string);
554 code = Tcl_EvalEx(interp, cmdString.string, -1, TCL_EVAL_GLOBAL);
555555 if (code != TCL_OK && code != TCL_CONTINUE && code != TCL_BREAK) {
556556 Tcl_AddErrorInfo(interp, "\n (scrollbar command)");
557557 Tcl_BackgroundException(interp, code);
332332 */
333333
334334 for (i = 1; i < objc; i++) {
335 if (Tcl_GetIndexFromObj(interp, objv[i], sendOptions,
336 "option", 0, &optind) != TCL_OK) {
335 if (Tcl_GetIndexFromObjStruct(interp, objv[i], sendOptions,
336 sizeof(char *), "option", 0, &optind) != TCL_OK) {
337337 break;
338338 }
339339 if (optind == SEND_ASYNC) {
285285 if (rest == argv[1]) {
286286 hwnd = FindWindowA(NULL, argv[1]);
287287 if (hwnd == NULL) {
288 Tcl_SetResult(interp, "no such window", TCL_STATIC);
288 Tcl_SetObjResult(interp, Tcl_NewStringObj("no such window", -1));
289289 return TCL_ERROR;
290290 }
291291 }
340340 result = SetDlgItemTextA(hwnd, id, Tcl_DStringValue(&ds));
341341 Tcl_DStringFree(&ds);
342342 if (result == 0) {
343 Tcl_SetResult(interp, "failed to send text to dialog: ", TCL_STATIC);
343 Tcl_SetObjResult(interp, Tcl_NewStringObj("failed to send text to dialog: ", -1));
344344 AppendSystemError(interp, GetLastError());
345345 return TCL_ERROR;
346346 }
353353 lParam = (LPARAM)child;
354354 }
355355 sprintf(buf, "%d", (int) SendMessageA(hwnd, message, wParam, lParam));
356 Tcl_SetResult(interp, buf, TCL_VOLATILE);
356 Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, -1));
357357 break;
358358 }
359359 default: {
361361
362362 sprintf(buf, "%d",
363363 (int) SendDlgItemMessageA(hwnd, id, message, wParam, lParam));
364 Tcl_SetResult(interp, buf, TCL_VOLATILE);
364 Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, -1));
365365 break;
366366 }
367367 }
454454
455455 cch = GetClassName(INT2PTR(hwnd), buf, cchBuf);
456456 if (cch == 0) {
457 Tcl_SetResult(interp, "failed to get class name: ", TCL_STATIC);
457 Tcl_SetObjResult(interp, Tcl_NewStringObj("failed to get class name: ", -1));
458458 AppendSystemError(interp, GetLastError());
459459 return TCL_ERROR;
460460 } else {
28012801 WMOPT_STACKORDER, WMOPT_STATE, WMOPT_TITLE, WMOPT_TRANSIENT,
28022802 WMOPT_WITHDRAW
28032803 };
2804 int index, length;
2804 int index;
2805 size_t length;
28052806 const char *argv1;
28062807 TkWindow *winPtr, **winPtrPtr = &winPtr;
28072808 TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;
28122813 return TCL_ERROR;
28132814 }
28142815
2815 argv1 = Tcl_GetStringFromObj(objv[1], &length);
2816 if ((argv1[0] == 't') && !strncmp(argv1, "tracing", (unsigned) length)
2816 argv1 = Tcl_GetString(objv[1]);
2817 length = objv[1]->length;
2818 if ((argv1[0] == 't') && !strncmp(argv1, "tracing", length)
28172819 && (length >= 3)) {
28182820 int wmTracing;
28192821
28372839 return TCL_OK;
28382840 }
28392841
2840 if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
2841 &index) != TCL_OK) {
2842 if (Tcl_GetIndexFromObjStruct(interp, objv[1], optionStrings,
2843 sizeof(char *), "option", 0, &index) != TCL_OK) {
28422844 return TCL_ERROR;
28432845 }
28442846
30283030 register WmInfo *wmPtr = winPtr->wmInfoPtr;
30293031 LONG style, exStyle, styleBit, *stylePtr = NULL;
30303032 const char *string;
3031 int i, boolean, length;
3033 int i, boolean;
3034 size_t length;
30323035 int config_fullscreen = 0, updatewrapper = 0;
30333036 int fullscreen_attr_changed = 0, fullscreen_attr = 0;
30343037
30753078 return TCL_OK;
30763079 }
30773080 for (i = 3; i < objc; i += 2) {
3078 string = Tcl_GetStringFromObj(objv[i], &length);
3081 string = Tcl_GetString(objv[i]);
3082 length = objv[i]->length;
30793083 if ((length < 2) || (string[0] != '-')) {
30803084 goto configArgs;
30813085 }
3082 if (strncmp(string, "-disabled", (unsigned) length) == 0) {
3086 if (strncmp(string, "-disabled", length) == 0) {
30833087 stylePtr = &style;
30843088 styleBit = WS_DISABLED;
3085 } else if ((strncmp(string, "-alpha", (unsigned) length) == 0)
3089 } else if ((strncmp(string, "-alpha", length) == 0)
30863090 || ((length > 2) && (strncmp(string, "-transparentcolor",
3087 (unsigned) length) == 0))) {
3091 length) == 0))) {
30883092 stylePtr = &exStyle;
30893093 styleBit = WS_EX_LAYERED;
3090 } else if (strncmp(string, "-fullscreen", (unsigned) length) == 0) {
3094 } else if (strncmp(string, "-fullscreen", length) == 0) {
30913095 config_fullscreen = 1;
30923096 styleBit = 0;
30933097 } else if ((length > 3)
3094 && (strncmp(string, "-toolwindow", (unsigned) length) == 0)) {
3098 && (strncmp(string, "-toolwindow", length) == 0)) {
30953099 stylePtr = &exStyle;
30963100 styleBit = WS_EX_TOOLWINDOW;
30973101 if (objc != 4) {
31013105 updatewrapper = 1;
31023106 }
31033107 } else if ((length > 3)
3104 && (strncmp(string, "-topmost", (unsigned) length) == 0)) {
3108 && (strncmp(string, "-topmost", length) == 0)) {
31053109 stylePtr = &exStyle;
31063110 styleBit = WS_EX_TOPMOST;
31073111 if ((i < objc-1) && (winPtr->flags & TK_EMBEDDED)) {
31433147 }
31443148 wmPtr->alpha = dval;
31453149 } else { /* -transparentcolor */
3146 const char *crefstr = Tcl_GetStringFromObj(objv[i+1], &length);
3147
3150 const char *crefstr = Tcl_GetString(objv[i+1]);
3151
3152 length = objv[i+1]->length;
31483153 if (length == 0) {
31493154 /* reset to no transparent color */
31503155 if (wmPtr->crefObj) {
33223327 {
33233328 register WmInfo *wmPtr = winPtr->wmInfoPtr;
33243329 const char *argv3;
3325 int length;
3330 size_t length;
33263331
33273332 if ((objc != 3) && (objc != 4)) {
33283333 Tcl_WrongNumArgs(interp, 2, objv, "window ?name?");
33353340 }
33363341 return TCL_OK;
33373342 }
3338 argv3 = Tcl_GetStringFromObj(objv[3], &length);
3343 argv3 = Tcl_GetString(objv[3]);
3344 length = objv[3]->length;
33393345 if (argv3[0] == 0) {
33403346 if (wmPtr->clientMachine != NULL) {
33413347 ckfree(wmPtr->clientMachine);
33513357 ckfree(wmPtr->clientMachine);
33523358 }
33533359 wmPtr->clientMachine = ckalloc(length + 1);
3354 memcpy(wmPtr->clientMachine, argv3, (unsigned) length + 1);
3360 memcpy(wmPtr->clientMachine, argv3, length + 1);
33553361 if (!(wmPtr->flags & WM_NEVER_MAPPED)) {
33563362 XTextProperty textProp;
33573363
36243630 return TCL_OK;
36253631 }
36263632
3627 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
3628 &index) != TCL_OK) {
3633 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
3634 sizeof(char *), "argument", 0,&index) != TCL_OK) {
36293635 return TCL_ERROR;
36303636 }
36313637 if (index == OPT_ACTIVE) {
39153921 register WmInfo *wmPtr = winPtr->wmInfoPtr;
39163922 Tk_Window tkwin2;
39173923 const char *argv3;
3918 int length;
3924 size_t length;
39193925
39203926 if ((objc != 3) && (objc != 4)) {
39213927 Tcl_WrongNumArgs(interp, 2, objv, "window ?pathName?");
39273933 }
39283934 return TCL_OK;
39293935 }
3930 argv3 = Tcl_GetStringFromObj(objv[3], &length);
3936 argv3 = Tcl_GetString(objv[3]);
3937 length = objv[3]->length;
39313938 if (*argv3 == '\0') {
39323939 wmPtr->hints.flags &= ~WindowGroupHint;
39333940 if (wmPtr->leaderName != NULL) {
39453952 wmPtr->hints.window_group = Tk_WindowId(tkwin2);
39463953 wmPtr->hints.flags |= WindowGroupHint;
39473954 wmPtr->leaderName = ckalloc(length + 1);
3948 memcpy(wmPtr->leaderName, argv3, (unsigned) length + 1);
3955 memcpy(wmPtr->leaderName, argv3, length + 1);
39493956 }
39503957 return TCL_OK;
39513958 }
42364243 {
42374244 register WmInfo *wmPtr = winPtr->wmInfoPtr;
42384245 const char *argv3;
4239 int length;
4246 size_t length;
42404247
42414248 if (objc > 4) {
42424249 Tcl_WrongNumArgs(interp, 2, objv, "window ?newName?");
42504257 if (wmPtr->iconName != NULL) {
42514258 ckfree(wmPtr->iconName);
42524259 }
4253 argv3 = Tcl_GetStringFromObj(objv[3], &length);
4260 argv3 = Tcl_GetString(objv[3]);
4261 length = objv[3]->length;
42544262 wmPtr->iconName = ckalloc(length + 1);
4255 memcpy(wmPtr->iconName, argv3, (unsigned) length + 1);
4263 memcpy(wmPtr->iconName, argv3, length + 1);
42564264 if (!(wmPtr->flags & WM_NEVER_MAPPED)) {
42574265 XSetIconName(winPtr->display, winPtr->window, wmPtr->iconName);
42584266 }
48994907 if (*Tcl_GetString(objv[3]) == '\0') {
49004908 wmPtr->sizeHintsFlags &= ~(USPosition|PPosition);
49014909 } else {
4902 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
4903 &index) != TCL_OK) {
4910 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
4911 sizeof(char *), "argument", 0, &index) != TCL_OK) {
49044912 return TCL_ERROR;
49054913 }
49064914 if (index == OPT_USER) {
49444952 register ProtocolHandler *protPtr, *prevPtr;
49454953 Atom protocol;
49464954 const char *cmd;
4947 int cmdLength;
4955 size_t cmdLength;
49484956 Tcl_Obj *resultObj;
49494957
49504958 if ((objc < 3) || (objc > 5)) {
49995007 break;
50005008 }
50015009 }
5002 cmd = Tcl_GetStringFromObj(objv[4], &cmdLength);
5010 cmd = Tcl_GetString(objv[4]);
5011 cmdLength = objv[4]->length;
50035012 if (cmdLength > 0) {
50045013 protPtr = ckalloc(HANDLER_SIZE(cmdLength));
50055014 protPtr->protocol = protocol;
51265135 if (*Tcl_GetString(objv[3]) == '\0') {
51275136 wmPtr->sizeHintsFlags &= ~(USSize|PSize);
51285137 } else {
5129 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
5130 &index) != TCL_OK) {
5138 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
5139 sizeof(char *), "argument", 0, &index) != TCL_OK) {
51315140 return TCL_ERROR;
51325141 }
51335142 if (index == OPT_USER) {
52565265
52575266 ckfree(windows);
52585267
5259 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
5260 &index) != TCL_OK) {
5268 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
5269 sizeof(char *), "argument", 0, &index) != TCL_OK) {
52615270 return TCL_ERROR;
52625271 }
52635272 if (index == OPT_ISABOVE) {
53165325 Tcl_SetErrorCode(interp, "TK", "WM", "STATE", "ICON", NULL);
53175326 return TCL_ERROR;
53185327 }
5319 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
5320 &index) != TCL_OK) {
5321 return TCL_ERROR;
5322 }
5323
5324 if (Tcl_GetIndexFromObj(interp, objv[3], optionStrings, "argument", 0,
5325 &index) != TCL_OK) {
5328 if (Tcl_GetIndexFromObjStruct(interp, objv[3], optionStrings,
5329 sizeof(char *), "argument", 0, &index) != TCL_OK) {
53265330 return TCL_ERROR;
53275331 }
53285332
54425446 {
54435447 register WmInfo *wmPtr = winPtr->wmInfoPtr;
54445448 const char *argv3;
5445 int length;
5449 size_t length;
54465450 HWND wrapper;
54475451
54485452 if (objc > 4) {
54755479 if (wmPtr->title != NULL) {
54765480 ckfree(wmPtr->title);
54775481 }
5478 argv3 = Tcl_GetStringFromObj(objv[3], &length);
5482 argv3 = Tcl_GetString(objv[3]);
5483 length = objv[3]->length;
54795484 wmPtr->title = ckalloc(length + 1);
5480 memcpy(wmPtr->title, argv3, (unsigned) length + 1);
5485 memcpy(wmPtr->title, argv3, length + 1);
54815486
54825487 if (!(wmPtr->flags & WM_NEVER_MAPPED) && wmPtr->wrapper != NULL) {
54835488 Tcl_DString titleString;
66146619 Tcl_Preserve(protPtr);
66156620 interp = protPtr->interp;
66166621 Tcl_Preserve(interp);
6617 result = Tcl_GlobalEval(interp, protPtr->command);
6622 result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL);
66186623 if (result != TCL_OK) {
66196624 Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf(
66206625 "\n (command for \"%s\" window manager protocol)",
7373 HWND hwnd = NULL;
7474 TCHAR title[32] = TEXT("TtkMonitorWindow");
7575 TCHAR name[32] = TEXT("TtkMonitorClass");
76
76
7777 wc.cbSize = sizeof(WNDCLASSEX);
7878 wc.style = CS_HREDRAW | CS_VREDRAW;
7979 wc.lpfnWndProc = (WNDPROC)WndProc;
9898 return hwnd;
9999 }
100100
101 static void
101 static void
102102 DestroyThemeMonitorWindow(void *clientData)
103103 {
104104 HWND hwnd = (HWND)clientData;
10671067 }
10681068 for (i = 0; i < objc; ++i) {
10691069 int option;
1070 if (Tcl_GetIndexFromObj(interp, objv[i], names, "system constant", 0, &option)
1071 != TCL_OK)
1070 if (Tcl_GetIndexFromObjStruct(interp, objv[i], names,
1071 sizeof(char *), "system constant", 0, &option) != TCL_OK)
10721072 return TCL_ERROR;
10731073 *resultPtr |= (flags[option] << (8 * (1 - i)));
10741074 }
11391139 Tcl_SetErrorCode(interp, "TTK", "VSAPI", "MISSING", NULL);
11401140 return TCL_ERROR;
11411141 }
1142 if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings,
1143 "option", 0, &option) != TCL_OK)
1142 if (Tcl_GetIndexFromObjStruct(interp, objv[i], optionStrings,
1143 sizeof(char *), "option", 0, &option) != TCL_OK)
11441144 return TCL_ERROR;
11451145 switch (option) {
11461146 case O_PADDING:
4848 #ifndef TK_LOCAL_APPINIT
4949 #define TK_LOCAL_APPINIT Tcl_AppInit
5050 #endif
51 extern int TK_LOCAL_APPINIT(Tcl_Interp *interp);
51 #ifndef MODULE_SCOPE
52 # define MODULE_SCOPE extern
53 #endif
54 MODULE_SCOPE int TK_LOCAL_APPINIT(Tcl_Interp *interp);
5255
5356 /*
5457 * The following #if block allows you to change how Tcl finds the startup
5760 */
5861
5962 #ifdef TK_LOCAL_MAIN_HOOK
60 extern int TK_LOCAL_MAIN_HOOK(int *argc, TCHAR ***argv);
61 #endif
63 MODULE_SCOPE int TK_LOCAL_MAIN_HOOK(int *argc, TCHAR ***argv);
64 #endif
65
66 /* Make sure the stubbed variants of those are never used. */
67 #undef Tcl_ObjSetVar2
68 #undef Tcl_NewStringObj
6269
6370 /*
6471 *----------------------------------------------------------------------
125132 * Forward slashes substituted for backslashes.
126133 */
127134
128 for (p = argv[0]; *p != TEXT('\0'); p++) {
129 if (*p == TEXT('\\')) {
130 *p = TEXT('/');
135 for (p = argv[0]; *p != '\0'; p++) {
136 if (*p == '\\') {
137 *p = '/';
131138 }
132139 }
133140
223230 * specific startup file will be run under any conditions.
224231 */
225232
226 (Tcl_SetVar)(interp, "tcl_rcFileName", "~/wishrc.tcl", TCL_GLOBAL_ONLY);
233 Tcl_ObjSetVar2(interp, Tcl_NewStringObj("tcl_rcFileName", -1), NULL,
234 Tcl_NewStringObj("~/wishrc.tcl", -1), TCL_GLOBAL_ONLY);
227235 return TCL_OK;
228236 }
229237
335343 */
336344
337345 size = 2;
338 for (p = cmdLine; *p != TEXT('\0'); p++) {
339 if ((*p == TEXT(' ')) || (*p == TEXT('\t'))) { /* INTL: ISO space. */
346 for (p = cmdLine; *p != '\0'; p++) {
347 if ((*p == ' ') || (*p == '\t')) { /* INTL: ISO space. */
340348 size++;
341 while ((*p == TEXT(' ')) || (*p == TEXT('\t'))) { /* INTL: ISO space. */
349 while ((*p == ' ') || (*p == '\t')) { /* INTL: ISO space. */
342350 p++;
343351 }
344 if (*p == TEXT('\0')) {
352 if (*p == '\0') {
345353 break;
346354 }
347355 }
351359 #undef Tcl_Alloc
352360 #undef Tcl_DbCkalloc
353361
354 argSpace = ckalloc(size*sizeof(char *)
355 + (_tcslen(cmdLine)+1) * sizeof(TCHAR));
362 argSpace = ckalloc(size * sizeof(char *)
363 + (_tcslen(cmdLine) * sizeof(TCHAR)) + sizeof(TCHAR));
356364 argv = (TCHAR **) argSpace;
357365 argSpace += size * (sizeof(char *)/sizeof(TCHAR));
358366 size--;
360368 p = cmdLine;
361369 for (argc = 0; argc < size; argc++) {
362370 argv[argc] = arg = argSpace;
363 while ((*p == TEXT(' ')) || (*p == TEXT('\t'))) { /* INTL: ISO space. */
371 while ((*p == ' ') || (*p == '\t')) { /* INTL: ISO space. */
364372 p++;
365373 }
366 if (*p == TEXT('\0')) {
374 if (*p == '\0') {
367375 break;
368376 }
369377
371379 slashes = 0;
372380 while (1) {
373381 copy = 1;
374 while (*p == TEXT('\\')) {
382 while (*p == '\\') {
375383 slashes++;
376384 p++;
377385 }
378 if (*p == TEXT('"')) {
386 if (*p == '"') {
379387 if ((slashes & 1) == 0) {
380388 copy = 0;
381 if ((inquote) && (p[1] == TEXT('"'))) {
389 if ((inquote) && (p[1] == '"')) {
382390 p++;
383391 copy = 1;
384392 } else {
389397 }
390398
391399 while (slashes) {
392 *arg = TEXT('\\');
400 *arg = '\\';
393401 arg++;
394402 slashes--;
395403 }
396404
397 if ((*p == TEXT('\0')) || (!inquote &&
398 ((*p == TEXT(' ')) || (*p == TEXT('\t'))))) { /* INTL: ISO space. */
405 if ((*p == '\0') || (!inquote &&
406 ((*p == ' ') || (*p == '\t')))) { /* INTL: ISO space. */
399407 break;
400408 }
401409 if (copy != 0) {
407415 *arg = '\0';
408416 argSpace = arg + 1;
409417 }
410 argv[argc] = 0;
418 argv[argc] = NULL;
411419
412420 *argcPtr = argc;
413421 *argvPtr = argv;