Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Merge 9.1 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | revised_text | tip-466 |
Files: | files | file ages | folders |
SHA3-256: |
8f92e5f9653d74ab9d46772cf45f3cb8 |
User & Date: | jan.nijtmans 2025-03-16 22:54:10.409 |
Context
2025-03-18
| ||
13:42 | Merge 9.1 check-in: c4207ac4 user: jan.nijtmans tags: revised_text, tip-466 | |
2025-03-16
| ||
22:54 | Merge 9.1 check-in: 8f92e5f9 user: jan.nijtmans tags: revised_text, tip-466 | |
22:30 | Use Tcl_CreateObjCommand2() in test-cases check-in: a6239e70 user: jan.nijtmans tags: trunk, main | |
2025-03-15
| ||
08:59 | Remove comment that became useless after previous commit. check-in: 19aa2006 user: fvogel tags: revised_text, tip-466 | |
Changes
Changes to .github/workflows/linux-build.yml.
︙ | ︙ | |||
13 14 15 16 17 18 19 | run: shell: bash working-directory: tk/unix env: ERROR_ON_FAILURES: 1 jobs: build: | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | run: shell: bash working-directory: tk/unix env: ERROR_ON_FAILURES: 1 jobs: build: runs-on: ubuntu-24.04 strategy: matrix: compiler: - "gcc" - "clang" config: - "" |
︙ | ︙ | |||
121 122 123 124 125 126 127 | - name: Upload Documentation Distribution if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} uses: actions/upload-artifact@v4 with: name: Tk ${{ env.VERSION }} HTML documentation (snapshot) path: /tmp/dist/tk*/html test: | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | - name: Upload Documentation Distribution if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} uses: actions/upload-artifact@v4 with: name: Tk ${{ env.VERSION }} HTML documentation (snapshot) path: /tmp/dist/tk*/html test: runs-on: ubuntu-24.04 strategy: matrix: compiler: - "gcc" config: - "" - "--disable-xft" |
︙ | ︙ |
Added .github/workflows/linux-with-tcl9-build.yml.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | name: Linux (with Tcl 9.0) on: push: branches: - "main" - "core-9-0-branch" tags: - "core-**" permissions: contents: read defaults: run: shell: bash working-directory: tk/unix env: ERROR_ON_FAILURES: 1 jobs: build: runs-on: ubuntu-24.04 strategy: matrix: compiler: - "gcc" - "clang" config: - "" - "CFLAGS=-DTK_NO_DEPRECATED=1" - "--disable-shared" - "--disable-xft" - "--disable-xss" - "--enable-symbols" steps: - name: Checkout uses: actions/checkout@v4 with: path: tk - name: Checkout Tcl 9.0 uses: actions/checkout@v4 with: repository: tcltk/tcl ref: core-9-0-branch path: tcl - name: Setup Environment (compiler=${{ matrix.compiler }}) run: | sudo apt-get install libxss-dev libxft-dev mkdir "$HOME/install dir" touch tk/doc/man.macros tk/generic/tkStubInit.c echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV echo "CC=$COMPILER" >> $GITHUB_ENV echo "TOOL_DIR=$(cd tcl/tools;pwd)" >> $GITHUB_ENV echo "BUILD_CONFIG_ID=$OPTS" >> $GITHUB_ENV working-directory: "." env: CFGOPT: ${{ matrix.config }} COMPILER: ${{ matrix.compiler }} OPTS: ${{ matrix.compiler }}${{ matrix.config }} - name: Configure and Build Tcl run: | ./configure $CFGOPT "--prefix=$HOME/install dir" || { cat config.log echo "::warning::Failure during Tcl Configure" exit 1 } make all install || { echo "::warning::Failure during Tcl Build" exit 1 } echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV working-directory: tcl/unix - name: Configure (opts=${{ matrix.config }}) run: | ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { cat config.log echo "::error::Failure during Configure" exit 1 } - name: Build run: | make binaries libraries || { echo "::error::Failure during Build" exit 1 } - name: Build Test Harness run: | make tktest || { echo "::error::Failure during Build" exit 1 } - name: Test-Drive Installation run: | make install || { echo "::error::Failure during Install" exit 1 } - name: Create Distribution Package run: | make dist || { echo "::error::Failure during Distribute" exit 1 } - name: Convert Documentation to HTML run: | make html-tk TOOL_DIR=$TOOL_DIR || { echo "::error::Failure during Distribute" exit 1 } test: runs-on: ubuntu-24.04 strategy: matrix: compiler: - "gcc" config: - "" - "--disable-xft" - "--enable-symbols" steps: - name: Checkout uses: actions/checkout@v4 with: path: tk - name: Checkout Tcl 9.0 uses: actions/checkout@v4 with: repository: tcltk/tcl ref: core-9-0-branch path: tcl - name: Setup Environment (compiler=${{ matrix.compiler }}) run: | sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev xfonts-75dpi xfonts-100dpi xfonts-scalable libxfont2 unifont mkdir "$HOME/install dir" touch tk/doc/man.macros tk/generic/tkStubInit.c echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV echo "CC=$COMPILER" >> $GITHUB_ENV working-directory: "." env: CFGOPT: ${{ matrix.config }} COMPILER: ${{ matrix.compiler }} - name: Configure and Build Tcl run: | ./configure $CFGOPT "--prefix=$HOME/install dir" || { cat config.log echo "::warning::Failure during Tcl Configure" exit 1 } make all install || { echo "::warning::Failure during Tcl Build" exit 1 } echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV working-directory: tcl/unix - name: Configure ${{ matrix.config }} run: | ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { cat config.log echo "::error::Failure during Configure" exit 1 } - name: Build run: | make binaries libraries tktest || { echo "::error::Failure during Build" exit 1 } - name: Run Tests run: | xvfb-run --auto-servernum make test-classic | tee out-classic.txt xvfb-run --auto-servernum make test-ttk | tee out-ttk.txt grep -q "Failed 0" out-classic.txt || { echo "::error::Failure during Test" exit 1 } grep -q "Failed 0" out-ttk.txt || { echo "::error::Failure during Test" exit 1 } timeout-minutes: 15 |
Changes to .github/workflows/onefiledist.yml.
1 2 3 4 5 6 7 8 9 10 11 12 13 | name: Build Binaries on: push: branches: - "main" - "core-9-0-branch" tags: - "core-**" permissions: contents: read jobs: linux: name: Linux | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | name: Build Binaries on: push: branches: - "main" - "core-9-0-branch" tags: - "core-**" permissions: contents: read jobs: linux: name: Linux runs-on: ubuntu-24.04 defaults: run: shell: bash env: CC: gcc CFGOPT: --disable-symbols --disable-shared steps: |
︙ | ︙ |
Changes to .github/workflows/win-build.yml.
︙ | ︙ | |||
9 10 11 12 13 14 15 | - "core-**" permissions: contents: read env: ERROR_ON_FAILURES: 1 jobs: msvc: | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | - "core-**" permissions: contents: read env: ERROR_ON_FAILURES: 1 jobs: msvc: runs-on: windows-2025 defaults: run: shell: powershell working-directory: tk/win # Using powershell means we need to explicitly stop on failure strategy: matrix: |
︙ | ︙ | |||
96 97 98 99 100 101 102 | - name: Install (${{ matrix.config }}) run: | &nmake -f makefile.vc install ${{ matrix.config }} if ($lastexitcode -ne 0) { throw "nmake exit code: $lastexitcode" } gcc: | | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | - name: Install (${{ matrix.config }}) run: | &nmake -f makefile.vc install ${{ matrix.config }} if ($lastexitcode -ne 0) { throw "nmake exit code: $lastexitcode" } gcc: runs-on: windows-2025 defaults: run: shell: msys2 {0} working-directory: win strategy: matrix: config: |
︙ | ︙ |
Changes to generic/tkInt.h.
︙ | ︙ | |||
1300 1301 1302 1303 1304 1305 1306 | */ MODULE_SCOPE Tcl_ObjCmdProc TkUnsupported1ObjCmd; /* * For Tktest. */ | | | 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 | */ MODULE_SCOPE Tcl_ObjCmdProc TkUnsupported1ObjCmd; /* * For Tktest. */ MODULE_SCOPE Tcl_ObjCmdProc2 SquareObjCmd; #if !(defined(_WIN32) || defined(MAC_OSX_TK)) #define TkplatformtestInit(x) TCL_OK #else MODULE_SCOPE int TkplatformtestInit(Tcl_Interp *interp); #endif #ifdef __cplusplus |
︙ | ︙ |
Changes to generic/tkSquare.c.
︙ | ︙ | |||
99 100 101 102 103 104 105 | static void SquareDeletedProc(void *clientData); static int SquareConfigure(Tcl_Interp *interp, Square *squarePtr); static void SquareDisplay(void *clientData); static void KeepInWindow(Square *squarePtr); static void SquareObjEventProc(void *clientData, XEvent *eventPtr); | | | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | static void SquareDeletedProc(void *clientData); static int SquareConfigure(Tcl_Interp *interp, Square *squarePtr); static void SquareDisplay(void *clientData); static void KeepInWindow(Square *squarePtr); static void SquareObjEventProc(void *clientData, XEvent *eventPtr); static Tcl_ObjCmdProc2 SquareWidgetObjCmd; /* *-------------------------------------------------------------- * * SquareCmd -- * * This procedure is invoked to process the "square" Tcl command. It |
︙ | ︙ | |||
122 123 124 125 126 127 128 | *-------------------------------------------------------------- */ int SquareObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | *-------------------------------------------------------------- */ int SquareObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Square *squarePtr; Tk_Window tkwin; Tk_OptionTable optionTable; if (objc < 2) { |
︙ | ︙ | |||
161 162 163 164 165 166 167 | squarePtr = (Square *)ckalloc(sizeof(Square)); memset(squarePtr, 0, sizeof(Square)); squarePtr->tkwin = tkwin; squarePtr->display = Tk_Display(tkwin); squarePtr->interp = interp; | | | 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | squarePtr = (Square *)ckalloc(sizeof(Square)); memset(squarePtr, 0, sizeof(Square)); squarePtr->tkwin = tkwin; squarePtr->display = Tk_Display(tkwin); squarePtr->interp = interp; squarePtr->widgetCmd = Tcl_CreateObjCommand2(interp, Tk_PathName(squarePtr->tkwin), SquareWidgetObjCmd, squarePtr, SquareDeletedProc); squarePtr->gc = NULL; squarePtr->optionTable = optionTable; if (Tk_InitOptions(interp, squarePtr, optionTable, tkwin) != TCL_OK) { |
︙ | ︙ | |||
215 216 217 218 219 220 221 | *-------------------------------------------------------------- */ static int SquareWidgetObjCmd( void *clientData, /* Information about square widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | *-------------------------------------------------------------- */ static int SquareWidgetObjCmd( void *clientData, /* Information about square widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj * const objv[]) /* Argument objects. */ { Square *squarePtr = (Square *)clientData; int result = TCL_OK; static const char *const squareOptions[] = {"cget", "configure", NULL}; enum { SQUARE_CGET, SQUARE_CONFIGURE |
︙ | ︙ |
Changes to generic/tkTest.c.
︙ | ︙ | |||
147 148 149 150 151 152 153 | * this widget. */ } TrivialCommandHeader; /* * Forward declarations for functions defined later in this file: */ | | | | | | | | | | | | | | | | | | 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | * this widget. */ } TrivialCommandHeader; /* * Forward declarations for functions defined later in this file: */ static Tcl_ObjCmdProc2 ImageObjCmd; static Tcl_ObjCmdProc2 TestbitmapObjCmd; static Tcl_ObjCmdProc2 TestborderObjCmd; static Tcl_ObjCmdProc2 TestcolorObjCmd; static Tcl_ObjCmdProc2 TestcursorObjCmd; static Tcl_ObjCmdProc2 TestdeleteappsObjCmd; static Tcl_ObjCmdProc2 TestfontObjCmd; static Tcl_ObjCmdProc2 TestmakeexistObjCmd; #if !(defined(_WIN32) || defined(MAC_OSX_TK) || defined(__CYGWIN__)) static Tcl_ObjCmdProc2 TestmenubarObjCmd; #endif #if defined(_WIN32) static Tcl_ObjCmdProc2 TestmetricsObjCmd; #endif static Tcl_ObjCmdProc2 TestobjconfigObjCmd; static Tk_CustomOptionSetProc CustomOptionSet; static Tk_CustomOptionGetProc CustomOptionGet; static Tk_CustomOptionRestoreProc CustomOptionRestore; static Tk_CustomOptionFreeProc CustomOptionFree; static Tcl_ObjCmdProc2 TestpropObjCmd; static Tcl_ObjCmdProc2 TestprintfObjCmd; #if !(defined(_WIN32) || defined(MAC_OSX_TK) || defined(__CYGWIN__)) static Tcl_ObjCmdProc2 TestwrapperObjCmd; #endif static void TrivialCmdDeletedProc(void *clientData); static Tcl_ObjCmdProc2 TrivialConfigObjCmd; static void TrivialEventProc(void *clientData, XEvent *eventPtr); static Tcl_ObjCmdProc2 TestPhotoStringMatchCmd; /* *---------------------------------------------------------------------- * * Tktest_Init -- * * This function performs initialization for the Tk test suite extensions. |
︙ | ︙ | |||
215 216 217 218 219 220 221 | * Create additional commands for testing Tk. */ if (Tcl_PkgProvideEx(interp, "tk::test", TK_PATCH_LEVEL, NULL) == TCL_ERROR) { return TCL_ERROR; } | | | | | | | | | | | | | | | | | 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | * Create additional commands for testing Tk. */ if (Tcl_PkgProvideEx(interp, "tk::test", TK_PATCH_LEVEL, NULL) == TCL_ERROR) { return TCL_ERROR; } Tcl_CreateObjCommand2(interp, "square", SquareObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "testbitmap", TestbitmapObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testborder", TestborderObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testcolor", TestcolorObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testcursor", TestcursorObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testdeleteapps", TestdeleteappsObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testembed", TkpTestembedCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testobjconfig", TestobjconfigObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testfont", TestfontObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testmakeexist", TestmakeexistObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testprop", TestpropObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testprintf", TestprintfObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "testtext", TkpTesttextCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testphotostringmatch", TestPhotoStringMatchCmd, Tk_MainWindow(interp), NULL); #if defined(_WIN32) Tcl_CreateObjCommand2(interp, "testmetrics", TestmetricsObjCmd, Tk_MainWindow(interp), NULL); #elif !defined(__CYGWIN__) && !defined(MAC_OSX_TK) Tcl_CreateObjCommand2(interp, "testmenubar", TestmenubarObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testsend", TkpTestsendCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testwrapper", TestwrapperObjCmd, Tk_MainWindow(interp), NULL); #endif /* _WIN32 */ /* * Create test image type. */ |
︙ | ︙ | |||
292 293 294 295 296 297 298 | *---------------------------------------------------------------------- */ static int TestbitmapObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | *---------------------------------------------------------------------- */ static int TestbitmapObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "bitmap"); return TCL_ERROR; } Tcl_SetObjResult(interp, TkDebugBitmap(Tk_MainWindow(interp), |
︙ | ︙ | |||
325 326 327 328 329 330 331 | *---------------------------------------------------------------------- */ static int TestborderObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | *---------------------------------------------------------------------- */ static int TestborderObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "border"); return TCL_ERROR; } Tcl_SetObjResult(interp, TkDebugBorder(Tk_MainWindow(interp), |
︙ | ︙ | |||
358 359 360 361 362 363 364 | *---------------------------------------------------------------------- */ static int TestcolorObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | *---------------------------------------------------------------------- */ static int TestcolorObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "color"); return TCL_ERROR; } Tcl_SetObjResult(interp, TkDebugColor(Tk_MainWindow(interp), |
︙ | ︙ | |||
391 392 393 394 395 396 397 | *---------------------------------------------------------------------- */ static int TestcursorObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 | *---------------------------------------------------------------------- */ static int TestcursorObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "cursor"); return TCL_ERROR; } Tcl_SetObjResult(interp, TkDebugCursor(Tk_MainWindow(interp), |
︙ | ︙ | |||
425 426 427 428 429 430 431 | *---------------------------------------------------------------------- */ static int TestdeleteappsObjCmd( TCL_UNUSED(void *), /* Main window for application. */ TCL_UNUSED(Tcl_Interp *), /* Current interpreter. */ | | | 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 | *---------------------------------------------------------------------- */ static int TestdeleteappsObjCmd( TCL_UNUSED(void *), /* Main window for application. */ TCL_UNUSED(Tcl_Interp *), /* Current interpreter. */ TCL_UNUSED(Tcl_Size), /* Number of arguments. */ TCL_UNUSED(Tcl_Obj *const *)) /* Argument strings. */ { NewApp *nextPtr; while (newAppPtr != NULL) { nextPtr = newAppPtr->nextPtr; Tcl_DeleteInterp(newAppPtr->interp); |
︙ | ︙ | |||
461 462 463 464 465 466 467 | *---------------------------------------------------------------------- */ static int TestobjconfigObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 | *---------------------------------------------------------------------- */ static int TestobjconfigObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { static const char *const options[] = { "alltypes", "chain1", "chain2", "chain3", "configerror", "delete", "info", "internal", "new", "notenoughparams", "twowindows", NULL }; enum { |
︙ | ︙ | |||
637 638 639 640 641 642 643 | recordPtr->mmPtr = NULL; recordPtr->stringTablePtr = NULL; recordPtr->stringTablePtr2 = NULL; recordPtr->customPtr = NULL; result = Tk_InitOptions(interp, recordPtr, optionTable, tkwin); if (result == TCL_OK) { | | | 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 | recordPtr->mmPtr = NULL; recordPtr->stringTablePtr = NULL; recordPtr->stringTablePtr2 = NULL; recordPtr->customPtr = NULL; result = Tk_InitOptions(interp, recordPtr, optionTable, tkwin); if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); Tk_CreateEventHandler(tkwin, StructureNotifyMask, TrivialEventProc, recordPtr); result = Tk_SetOptions(interp, recordPtr, optionTable, objc-3, objv+3, tkwin, NULL, NULL); if (result != TCL_OK) { |
︙ | ︙ | |||
685 686 687 688 689 690 691 | result = Tk_SetOptions(interp, recordPtr, optionTable, objc-3, objv+3, tkwin, NULL, NULL); if (result != TCL_OK) { Tk_FreeConfigOptions(recordPtr, optionTable, tkwin); } } if (result == TCL_OK) { | | | 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 | result = Tk_SetOptions(interp, recordPtr, optionTable, objc-3, objv+3, tkwin, NULL, NULL); if (result != TCL_OK) { Tk_FreeConfigOptions(recordPtr, optionTable, tkwin); } } if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); Tk_CreateEventHandler(tkwin, StructureNotifyMask, TrivialEventProc, recordPtr); Tcl_SetObjResult(interp, objv[2]); } break; |
︙ | ︙ | |||
738 739 740 741 742 743 744 | result = Tk_SetOptions(interp, recordPtr, optionTable, objc-3, objv+3, tkwin, NULL, NULL); if (result != TCL_OK) { Tk_FreeConfigOptions(recordPtr, optionTable, tkwin); } } if (result == TCL_OK) { | | | 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 | result = Tk_SetOptions(interp, recordPtr, optionTable, objc-3, objv+3, tkwin, NULL, NULL); if (result != TCL_OK) { Tk_FreeConfigOptions(recordPtr, optionTable, tkwin); } } if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); Tk_CreateEventHandler(tkwin, StructureNotifyMask, TrivialEventProc, recordPtr); Tcl_SetObjResult(interp, objv[2]); } break; |
︙ | ︙ | |||
913 914 915 916 917 918 919 | recordPtr->pixels = 0; recordPtr->mm = 0.0; recordPtr->tkwin = NULL; recordPtr->custom = NULL; result = Tk_InitOptions(interp, recordPtr, optionTable, tkwin); if (result == TCL_OK) { | | | 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 | recordPtr->pixels = 0; recordPtr->mm = 0.0; recordPtr->tkwin = NULL; recordPtr->custom = NULL; result = Tk_InitOptions(interp, recordPtr, optionTable, tkwin); if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); Tk_CreateEventHandler(tkwin, StructureNotifyMask, TrivialEventProc, recordPtr); result = Tk_SetOptions(interp, recordPtr, optionTable, objc - 3, objv + 3, tkwin, NULL, NULL); if (result != TCL_OK) { |
︙ | ︙ | |||
978 979 980 981 982 983 984 | result = Tk_InitOptions(interp, recordPtr, recordPtr->header.optionTable, (Tk_Window) NULL); if (result == TCL_OK) { result = Tk_SetOptions(interp, recordPtr, recordPtr->header.optionTable, objc - 3, objv + 3, (Tk_Window) NULL, NULL, NULL); if (result == TCL_OK) { | | | 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 | result = Tk_InitOptions(interp, recordPtr, recordPtr->header.optionTable, (Tk_Window) NULL); if (result == TCL_OK) { result = Tk_SetOptions(interp, recordPtr, recordPtr->header.optionTable, objc - 3, objv + 3, (Tk_Window) NULL, NULL, NULL); if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); } else { Tk_FreeConfigOptions(recordPtr, recordPtr->header.optionTable, (Tk_Window) NULL); } } |
︙ | ︙ | |||
1056 1057 1058 1059 1060 1061 1062 | result = Tk_InitOptions(interp, recordPtr, recordPtr->header.optionTable, tkwin); if (result == TCL_OK) { result = Tk_SetOptions(interp, recordPtr, recordPtr->header.optionTable, objc - 3, objv + 3, tkwin, NULL, NULL); if (result == TCL_OK) { | | | 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 | result = Tk_InitOptions(interp, recordPtr, recordPtr->header.optionTable, tkwin); if (result == TCL_OK) { result = Tk_SetOptions(interp, recordPtr, recordPtr->header.optionTable, objc - 3, objv + 3, tkwin, NULL, NULL); if (result == TCL_OK) { recordPtr->header.widgetCmd = Tcl_CreateObjCommand2(interp, Tcl_GetString(objv[2]), TrivialConfigObjCmd, recordPtr, TrivialCmdDeletedProc); Tk_CreateEventHandler(tkwin, StructureNotifyMask, TrivialEventProc, recordPtr); Tcl_SetObjResult(interp, objv[2]); } else { Tk_FreeConfigOptions(recordPtr, |
︙ | ︙ | |||
1098 1099 1100 1101 1102 1103 1104 | *---------------------------------------------------------------------- */ static int TrivialConfigObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 | *---------------------------------------------------------------------- */ static int TrivialConfigObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int result = TCL_OK; static const char *const options[] = { "cget", "configure", "csave", NULL }; enum { |
︙ | ︙ | |||
1280 1281 1282 1283 1284 1285 1286 | *---------------------------------------------------------------------- */ static int TestfontObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 | *---------------------------------------------------------------------- */ static int TestfontObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { static const char *const options[] = {"counts", "subfonts", NULL}; enum option {COUNTS, SUBFONTS}; int index; Tk_Window tkwin; Tk_Font tkfont; |
︙ | ︙ | |||
1377 1378 1379 1380 1381 1382 1383 | timPtr->interp = interp; timPtr->width = 30; timPtr->height = 15; timPtr->imageName = (char *)ckalloc(strlen(name) + 1); strcpy(timPtr->imageName, name); timPtr->varName = (char *)ckalloc(strlen(varName) + 1); strcpy(timPtr->varName, varName); | | | 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 | timPtr->interp = interp; timPtr->width = 30; timPtr->height = 15; timPtr->imageName = (char *)ckalloc(strlen(name) + 1); strcpy(timPtr->imageName, name); timPtr->varName = (char *)ckalloc(strlen(varName) + 1); strcpy(timPtr->varName, varName); Tcl_CreateObjCommand2(interp, name, ImageObjCmd, timPtr, NULL); *clientDataPtr = timPtr; Tk_ImageChanged(model, 0, 0, 30, 15, 30, 15); return TCL_OK; } /* *---------------------------------------------------------------------- |
︙ | ︙ | |||
1404 1405 1406 1407 1408 1409 1410 | *---------------------------------------------------------------------- */ static int ImageObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 | *---------------------------------------------------------------------- */ static int ImageObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { TImageModel *timPtr = (TImageModel *)clientData; int x, y, width, height; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?"); |
︙ | ︙ | |||
1663 1664 1665 1666 1667 1668 1669 | *---------------------------------------------------------------------- */ static int TestmakeexistObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | | 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 | *---------------------------------------------------------------------- */ static int TestmakeexistObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { Tk_Window mainWin = (Tk_Window)clientData; Tcl_Size i; Tk_Window tkwin; for (i = 1; i < objc; i++) { tkwin = Tk_NameToWindow(interp, Tcl_GetString(objv[i]), mainWin); if (tkwin == NULL) { return TCL_ERROR; } |
︙ | ︙ | |||
1704 1705 1706 1707 1708 1709 1710 | */ #if !(defined(_WIN32) || defined(MAC_OSX_TK) || defined(__CYGWIN__)) static int TestmenubarObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 | */ #if !(defined(_WIN32) || defined(MAC_OSX_TK) || defined(__CYGWIN__)) static int TestmenubarObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { #ifdef __UNIX__ Tk_Window mainWin = (Tk_Window)clientData; Tk_Window tkwin, menubar; if (objc < 2) { |
︙ | ︙ | |||
1770 1771 1772 1773 1774 1775 1776 | */ #if defined(_WIN32) static int TestmetricsObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 | */ #if defined(_WIN32) static int TestmetricsObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { char buf[TCL_INTEGER_SPACE]; int val; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?"); |
︙ | ︙ | |||
1817 1818 1819 1820 1821 1822 1823 | *---------------------------------------------------------------------- */ static int TestpropObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 | *---------------------------------------------------------------------- */ static int TestpropObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { Tk_Window mainWin = (Tk_Window)clientData; int result, actualFormat; unsigned long bytesAfter, length, value; Atom actualType, propName; unsigned char *property, *p; |
︙ | ︙ | |||
1893 1894 1895 1896 1897 1898 1899 | *---------------------------------------------------------------------- */ static int TestprintfObjCmd( TCL_UNUSED(void *), /* Not used */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 | *---------------------------------------------------------------------- */ static int TestprintfObjCmd( TCL_UNUSED(void *), /* Not used */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { char buffer[256]; Tcl_WideInt wideInt; long long longLongInt; if (objc != 2) { |
︙ | ︙ | |||
1944 1945 1946 1947 1948 1949 1950 | *---------------------------------------------------------------------- */ static int TestwrapperObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 | *---------------------------------------------------------------------- */ static int TestwrapperObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { TkWindow *winPtr, *wrapperPtr; Tk_Window tkwin; if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "window"); |
︙ | ︙ | |||
2114 2115 2116 2117 2118 2119 2120 | *---------------------------------------------------------------------- */ static int TestPhotoStringMatchCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 | *---------------------------------------------------------------------- */ static int TestPhotoStringMatchCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { Tcl_Obj *dummy = NULL; Tcl_Obj *resultObj[2]; int width, height; if (objc != 2) { |
︙ | ︙ |
Changes to generic/tkText.c.
︙ | ︙ | |||
450 451 452 453 454 455 456 | static void FreeEmbeddedWindows(TkText *textPtr); static void InsertChars(TkText *textPtr, TkTextIndex *index1Ptr, TkTextIndex *index2Ptr, char const *string, unsigned length, int viewUpdate, TkTextTagSet *tagInfoPtr, TkTextTag *hyphenTagPtr, int parseHyphens); static void TextBlinkProc(void *clientData); static void TextCmdDeletedProc(void *clientData); static int CreateWidget(TkSharedText *sharedTextPtr, Tk_Window tkwin, Tcl_Interp *interp, | | | | | | | < | | | | | | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 | static void FreeEmbeddedWindows(TkText *textPtr); static void InsertChars(TkText *textPtr, TkTextIndex *index1Ptr, TkTextIndex *index2Ptr, char const *string, unsigned length, int viewUpdate, TkTextTagSet *tagInfoPtr, TkTextTag *hyphenTagPtr, int parseHyphens); static void TextBlinkProc(void *clientData); static void TextCmdDeletedProc(void *clientData); static int CreateWidget(TkSharedText *sharedTextPtr, Tk_Window tkwin, Tcl_Interp *interp, const TkText *parent, Tcl_Size objc, Tcl_Obj *const objv[]); static void TextEventProc(void *clientData, XEvent *eventPtr); static void ProcessConfigureNotify(TkText *textPtr, int updateLineGeometry); static Tcl_Size TextFetchSelection(void *clientData, Tcl_Size offset, char *buffer, Tcl_Size maxBytes); static int TextIndexSortProc(const void *first, const void *second); static int TextInsertCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[], const TkTextIndex *indexPtr, int viewUpdate, int triggerWatchDelete, int triggerWatchInsert, int userFlag, int parseHyphens); static int TextReplaceCmd(TkText *textPtr, Tcl_Interp *interp, const TkTextIndex *indexFromPtr, const TkTextIndex *indexToPtr, Tcl_Size objc, Tcl_Obj *const objv[], int viewUpdate, int triggerWatch, int userFlag, int parseHyphens); static int TextSearchCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int TextEditCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static Tcl_ObjCmdProc2 TextWidgetObjCmd; static void TextWorldChangedCallback(void *instanceData); static void TextWorldChanged(TkText *textPtr, int mask); static void UpdateLineMetrics(TkText *textPtr, unsigned lineNum, unsigned endLine); static int TextChecksumCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int TextDumpCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int TextInspectCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int DumpLine(Tcl_Interp *interp, TkText *textPtr, int what, TkTextLine *linePtr, int start, int end, int lineno, Tcl_Obj *command, TkTextTag **prevTagPtr); static int DumpSegment(TkText *textPtr, Tcl_Interp *interp, const char *key, const char *value, Tcl_Obj *command, const TkTextIndex *index, int what); static void InspectUndoStack(const TkSharedText *sharedTextPtr, InspectUndoStackProc firstAtomProc, InspectUndoStackProc nextAtomProc, Tcl_Obj *objPtr); static void InspectRetainedUndoItems(const TkSharedText *sharedTextPtr, Tcl_Obj *objPtr); static Tcl_Obj * TextGetText(TkText *textPtr, const TkTextIndex *index1, const TkTextIndex *index2, TkTextIndex *lastIndexPtr, Tcl_Obj *resultPtr, Tcl_Size maxBytes, int visibleOnly, int includeHyphens); static void GenerateEvent(TkSharedText *sharedTextPtr, const char *type); static void RunAfterSyncCmd(void *clientData); static void UpdateModifiedFlag(TkSharedText *sharedTextPtr, int flag); static Tcl_Obj * MakeEditInfo(Tcl_Interp *interp, TkText *textPtr, Tcl_Obj *arrayPtr); static Tcl_Obj * GetEditInfo(Tcl_Interp *interp, TkText *textPtr, Tcl_Obj *option); static unsigned TextSearchIndexInLine(const SearchSpec *searchSpecPtr, TkTextLine *linePtr, int byteIndex); static int TextPeerCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int TextWatchCmd(TkText *textPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); static int TriggerWatchEdit(TkText *textPtr, int userFlag, const char *operation, const TkTextIndex *indexPtr1, const TkTextIndex *indexPtr2, const char *info, int final); static void TriggerUndoStackEvent(TkSharedText *sharedTextPtr); static void PushRetainedUndoTokens(TkSharedText *sharedTextPtr); static void PushUndoSeparatorIfNeeded(TkSharedText *sharedTextPtr, int autoSeparators, TkTextEditMode currentEditMode); |
︙ | ︙ | |||
921 922 923 924 925 926 927 | static int CreateWidget( TkSharedText *sharedTextPtr,/* Shared widget info, or NULL. */ Tk_Window tkwin, /* Main window associated with interpreter. */ Tcl_Interp *interp, /* Current interpreter. */ const TkText *parent, /* If non-NULL then take default start, end * from this parent. */ | | | 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 | static int CreateWidget( TkSharedText *sharedTextPtr,/* Shared widget info, or NULL. */ Tk_Window tkwin, /* Main window associated with interpreter. */ Tcl_Interp *interp, /* Current interpreter. */ const TkText *parent, /* If non-NULL then take default start, end * from this parent. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { TkText *textPtr; Tk_OptionTable optionTable; TkTextIndex startIndex; Tk_Window newWin; |
︙ | ︙ | |||
1012 1013 1014 1015 1016 1017 1018 | */ textPtr = (TkText *)ckalloc(sizeof(TkText)); memset(textPtr, 0, sizeof(TkText)); textPtr->tkwin = newWin; textPtr->display = Tk_Display(newWin); textPtr->interp = interp; | | | 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 | */ textPtr = (TkText *)ckalloc(sizeof(TkText)); memset(textPtr, 0, sizeof(TkText)); textPtr->tkwin = newWin; textPtr->display = Tk_Display(newWin); textPtr->interp = interp; textPtr->widgetCmd = Tcl_CreateObjCommand2(interp, Tk_PathName(textPtr->tkwin), TextWidgetObjCmd, textPtr, TextCmdDeletedProc); DEBUG_ALLOC(textPtr->widgetNumber = ++widgetNumber); /* * Add the new widget to the shared list. */ |
︙ | ︙ | |||
1390 1391 1392 1393 1394 1395 1396 | } #endif /* SUPPORT_DEPRECATED_STARTLINE_ENDLINE */ static int TextWidgetObjCmd( void *clientData, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 | } #endif /* SUPPORT_DEPRECATED_STARTLINE_ENDLINE */ static int TextWidgetObjCmd( void *clientData, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { TkText *textPtr = (TkText *)clientData; TkSharedText *sharedTextPtr; int result = TCL_OK; int commandIndex = -1; int oldUndoStackEvent; |
︙ | ︙ | |||
2856 2857 2858 2859 2860 2861 2862 | *-------------------------------------------------------------- */ static int TextWatchCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 | *-------------------------------------------------------------- */ static int TextWatchCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { TkSharedText *sharedTextPtr; if (objc > 4) { /* NOTE: avoid trigraph "??-" in string. */ Tcl_WrongNumArgs(interp, 4, objv, "\?\?-always? commandPrefix?"); |
︙ | ︙ | |||
2957 2958 2959 2960 2961 2962 2963 | *-------------------------------------------------------------- */ static int TextPeerCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 | *-------------------------------------------------------------- */ static int TextPeerCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Tk_Window tkwin = textPtr->tkwin; int index; static const char *const peerOptionStrings[] = { "create", "names", NULL }; enum peerOptions { PEER_CREATE, PEER_NAMES }; |
︙ | ︙ | |||
3066 3067 3068 3069 3070 3071 3072 | TextReplaceCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ const TkTextIndex *indexFromPtr, /* Index from which to replace. */ const TkTextIndex *indexToPtr, /* Index to which to replace. */ | | | 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 | TextReplaceCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ const TkTextIndex *indexFromPtr, /* Index from which to replace. */ const TkTextIndex *indexToPtr, /* Index to which to replace. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[], /* Argument objects. */ int viewUpdate, /* Update vertical view if set. */ int triggerWatch, /* Should we trigger the watch command? */ int userFlag, /* Trigger due to user modification? */ int parseHyphens) /* Should we parse hyphens (tk_textReplace)? */ { TkSharedText *sharedTextPtr = textPtr->sharedTextPtr; |
︙ | ︙ | |||
3788 3789 3790 3791 3792 3793 3794 | #endif /* SUPPORT_DEPRECATED_STARTLINE_ENDLINE */ int TkConfigureText( Tcl_Interp *interp, /* Used for error reporting. */ TkText *textPtr, /* Information about widget; may or may not * already have values for some fields. */ | | | 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 | #endif /* SUPPORT_DEPRECATED_STARTLINE_ENDLINE */ int TkConfigureText( Tcl_Interp *interp, /* Used for error reporting. */ TkText *textPtr, /* Information about widget; may or may not * already have values for some fields. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Tk_SavedOptions savedOptions; TkTextIndex start, end, current; Tcl_Size currentEpoch; TkSharedText *sharedTextPtr = textPtr->sharedTextPtr; TkTextBTree tree = sharedTextPtr->tree; |
︙ | ︙ | |||
6191 6192 6193 6194 6195 6196 6197 | *---------------------------------------------------------------------- */ static int TextInsertCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 | *---------------------------------------------------------------------- */ static int TextInsertCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[], /* Argument objects. */ const TkTextIndex *indexPtr,/* Index at which to insert. */ int viewUpdate, /* Update the view if set. */ int triggerWatchDelete, /* Should we trigger the watch command for deletion? */ int triggerWatchInsert, /* Should we trigger the watch command for insertion? */ int userFlag, /* Trigger user modification? */ int parseHyphens) /* Should we parse hyphens? (tk_textInsert) */ |
︙ | ︙ | |||
6339 6340 6341 6342 6343 6344 6345 | *---------------------------------------------------------------------- */ static int TextSearchCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 | *---------------------------------------------------------------------- */ static int TextSearchCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int i, argsLeft, code; SearchSpec searchSpec; static const char *const switchStrings[] = { "-hidden", |
︙ | ︙ | |||
7210 7211 7212 7213 7214 7215 7216 | strcpy(result + len, str); } static int GetDumpFlags( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 | strcpy(result + len, str); } static int GetDumpFlags( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[], /* Argument objects. */ unsigned allowed, /* Which options are allowed? */ unsigned dflt, /* Default options (-all) */ unsigned complete, /* Complete options (-complete) */ unsigned *what, /* Store flags here. */ int *lastArg, /* Store index of last used argument, can be NULL. */ TkTextIndex *index1, /* Store first index here. */ |
︙ | ︙ | |||
7391 7392 7393 7394 7395 7396 7397 | return TCL_ERROR; } static int TextDumpCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 | return TCL_ERROR; } static int TextDumpCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. Someone else has already parsed this command * enough to know that objv[1] is "dump". */ { TkTextIndex index1, index2; TkTextBTree tree; TkTextTag *tagPtr, *tPtr; int lineno; /* Current line number. */ |
︙ | ︙ | |||
7863 7864 7865 7866 7867 7868 7869 | return crc ^ 0xffffffff; } static int TextChecksumCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 | return crc ^ 0xffffffff; } static int TextChecksumCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. Someone else has already parsed this command * enough to know that objv[1] is "checksum". */ { const TkSharedText *sharedTextPtr; const TkTextSegment *segPtr; const TkTextSegment *endPtr; const TkTextLine *linePtr; |
︙ | ︙ | |||
8385 8386 8387 8388 8389 8390 8391 | Tcl_ResetResult(interp); } static int TextInspectCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 | Tcl_ResetResult(interp); } static int TextInspectCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { TkSharedText *sharedTextPtr; TkTextTag *prevTagPtr; TkTextSegment *nextPtr; TkTextSegment *prevPtr; Tcl_DString buf[2]; |
︙ | ︙ | |||
8806 8807 8808 8809 8810 8811 8812 | return token->undoType->commandProc(sharedTextPtr, token); } static int TextEditCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 | return token->undoType->commandProc(sharedTextPtr, token); } static int TextEditCmd( TkText *textPtr, /* Information about text widget. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int index; int setModified; int oldModified; TkSharedText *sharedTextPtr; static const char *const editOptionStrings[] = { |
︙ | ︙ | |||
11618 11619 11620 11621 11622 11623 11624 | if (objc + 1 < 4) { return TCL_ERROR; } if (Tcl_GetCommandInfo(interp, Tcl_GetString(objv[1]), &info) == 0) { return TCL_ERROR; } | | | 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 | if (objc + 1 < 4) { return TCL_ERROR; } if (Tcl_GetCommandInfo(interp, Tcl_GetString(objv[1]), &info) == 0) { return TCL_ERROR; } textPtr = (TkText *)info.objClientData2; len = strlen(Tcl_GetString(objv[2])); if (strncmp(Tcl_GetString(objv[2]), "byteindex", len) == 0) { if (objc != 5) { return TCL_ERROR; } lineIndex = atoi(Tcl_GetString(objv[3])) - 1; byteIndex = atoi(Tcl_GetString(objv[4])); |
︙ | ︙ |
Changes to generic/tkText.h.
︙ | ︙ | |||
1978 1979 1980 1981 1982 1983 1984 | MODULE_SCOPE void TkBTreeFreeSegment(TkTextSegment *segPtr); MODULE_SCOPE unsigned TkBTreeChildNumber(const TkTextBTree tree, const TkTextLine *linePtr, unsigned *depth); MODULE_SCOPE unsigned TkBTreeLinesPerNode(const TkTextBTree tree); MODULE_SCOPE const union TkTextTagSet * TkBTreeRootTagInfo(const TkTextBTree tree); MODULE_SCOPE void TkTextBindProc(void *clientData, XEvent *eventPtr); MODULE_SCOPE void TkTextSelectionEvent(TkText *textPtr); | | | 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 | MODULE_SCOPE void TkBTreeFreeSegment(TkTextSegment *segPtr); MODULE_SCOPE unsigned TkBTreeChildNumber(const TkTextBTree tree, const TkTextLine *linePtr, unsigned *depth); MODULE_SCOPE unsigned TkBTreeLinesPerNode(const TkTextBTree tree); MODULE_SCOPE const union TkTextTagSet * TkBTreeRootTagInfo(const TkTextBTree tree); MODULE_SCOPE void TkTextBindProc(void *clientData, XEvent *eventPtr); MODULE_SCOPE void TkTextSelectionEvent(TkText *textPtr); MODULE_SCOPE int TkConfigureText(Tcl_Interp *interp, TkText *textPtr, Tcl_Size objc, Tcl_Obj *const objv[]); MODULE_SCOPE const TkTextSegment * TkTextGetUndeletableNewline(const TkTextLine *lastLinePtr); MODULE_SCOPE void TkTextPerformWatchCmd(TkSharedText *sharedTextPtr, TkText *textPtr, const char *operation, TkTextWatchGetIndexProc index1Proc, void *index1ProcData, TkTextWatchGetIndexProc index2Proc, void *index2ProcData, const char *arg1, const char *arg2, const char *arg3, int userFlag); |
︙ | ︙ |
Changes to macosx/tkMacOSXDialog.c.
︙ | ︙ | |||
1377 1378 1379 1380 1381 1382 1383 | * *---------------------------------------------------------------------- */ void TkAboutDlg(void) { | | | 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 | * *---------------------------------------------------------------------- */ void TkAboutDlg(void) { [NSApp orderFrontStandardAboutPanel:NSApp]; } /* *---------------------------------------------------------------------- * * TkMacOSXStandardAboutPanelObjCmd -- * |
︙ | ︙ | |||
1407 1408 1409 1410 1411 1412 1413 | int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc > 1) { Tcl_WrongNumArgs(interp, 1, objv, NULL); return TCL_ERROR; } | | | 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 | int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { if (objc > 1) { Tcl_WrongNumArgs(interp, 1, objv, NULL); return TCL_ERROR; } [NSApp orderFrontStandardAboutPanel:NSApp]; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_MessageBoxObjCmd -- |
︙ | ︙ |
Changes to macosx/tkMacOSXMenu.c.
︙ | ︙ | |||
1156 1157 1158 1159 1160 1161 1162 | void Tk_SetMainMenubar( Tcl_Interp *interp, /* The interpreter of the application */ Tk_Window tkwin, /* The frame we are setting up */ const char *menuName) /* The name of the menu to put in front. */ { | < | 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 | void Tk_SetMainMenubar( Tcl_Interp *interp, /* The interpreter of the application */ Tk_Window tkwin, /* The frame we are setting up */ const char *menuName) /* The name of the menu to put in front. */ { TKMenu *menu = nil; TkWindow *winPtr = (TkWindow *) tkwin; /* * We will be called when an embedded window receives an ActivationNotify * event, but we should not change the menubar in that case. */ |
︙ | ︙ | |||
1201 1202 1203 1204 1205 1206 1207 | } /* * If we couldn't find a menu this will install the default menubar. */ [NSApp tkSetMainMenu:menu]; | < | 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 | } /* * If we couldn't find a menu this will install the default menubar. */ [NSApp tkSetMainMenu:menu]; } /* *---------------------------------------------------------------------- * * CheckForSpecialMenu -- * |
︙ | ︙ |
Changes to macosx/tkMacOSXMenus.c.
︙ | ︙ | |||
199 200 201 202 203 204 205 | - (void) orderFrontStandardAboutPanel: (id) sender { (void)sender; if (!_eventInterp || !Tcl_FindCommand(_eventInterp, "tkAboutDialog", NULL, 0) || (GetCurrentEventKeyModifiers() & optionKey)) { | | | 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | - (void) orderFrontStandardAboutPanel: (id) sender { (void)sender; if (!_eventInterp || !Tcl_FindCommand(_eventInterp, "tkAboutDialog", NULL, 0) || (GetCurrentEventKeyModifiers() & optionKey)) { [super orderFrontStandardAboutPanel:NSApp]; } else { int code = Tcl_EvalEx(_eventInterp, "tkAboutDialog", TCL_INDEX_NONE, TCL_EVAL_GLOBAL); if (code != TCL_OK) { Tcl_BackgroundException(_eventInterp, code); } |
︙ | ︙ |
Changes to macosx/tkMacOSXPrivate.h.
︙ | ︙ | |||
290 291 292 293 294 295 296 297 298 299 300 301 302 303 | MODULE_SCOPE NSColor* controlAccentColor(void); MODULE_SCOPE void Ttk_MacOSXInit(void); MODULE_SCOPE unsigned long TkMacOSXClearPixel(void); MODULE_SCOPE int MacSystrayInit(Tcl_Interp *); MODULE_SCOPE int MacPrint_Init(Tcl_Interp *); MODULE_SCOPE NSString* TkMacOSXOSTypeToUTI(OSType ostype); MODULE_SCOPE NSImage* TkMacOSXIconForFileType(NSString *filetype); #pragma mark Private Objective-C Classes #define VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) enum { tkMainMenu = 1, tkApplicationMenu, tkWindowsMenu, tkHelpMenu}; | > > | 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 | MODULE_SCOPE NSColor* controlAccentColor(void); MODULE_SCOPE void Ttk_MacOSXInit(void); MODULE_SCOPE unsigned long TkMacOSXClearPixel(void); MODULE_SCOPE int MacSystrayInit(Tcl_Interp *); MODULE_SCOPE int MacPrint_Init(Tcl_Interp *); MODULE_SCOPE NSString* TkMacOSXOSTypeToUTI(OSType ostype); MODULE_SCOPE NSImage* TkMacOSXIconForFileType(NSString *filetype); MODULE_SCOPE void TkMacOSXAssignNewKeyWindow(Tcl_Interp *interp, NSWindow *ignore); #pragma mark Private Objective-C Classes #define VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) enum { tkMainMenu = 1, tkApplicationMenu, tkWindowsMenu, tkHelpMenu}; |
︙ | ︙ |
Changes to macosx/tkMacOSXSubwindows.c.
︙ | ︙ | |||
186 187 188 189 190 191 192 193 194 195 196 197 198 199 | TkMacOSXApplyWindowAttributes(winPtr, win); [win setExcludedFromWindowsMenu:NO]; [NSApp activateIgnoringOtherApps:initialized]; if (initialized) { if ([win canBecomeKeyWindow]) { [win makeKeyAndOrderFront:NSApp]; } else { [win orderFrontRegardless]; } /* * Delay for up to 20 milliseconds until the toplevel has * actually become the highest toplevel. This is to ensure | > | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | TkMacOSXApplyWindowAttributes(winPtr, win); [win setExcludedFromWindowsMenu:NO]; [NSApp activateIgnoringOtherApps:initialized]; if (initialized) { if ([win canBecomeKeyWindow]) { [win makeKeyAndOrderFront:NSApp]; [NSApp setTkEventTarget:TkMacOSXGetTkWindow(win)]; } else { [win orderFrontRegardless]; } /* * Delay for up to 20 milliseconds until the toplevel has * actually become the highest toplevel. This is to ensure |
︙ | ︙ | |||
356 357 358 359 360 361 362 363 364 365 366 367 368 369 | continue; } wmInfoPtr = winPtr2->wmInfoPtr; isOnScreen = (wmInfoPtr->hints.initial_state != IconicState && wmInfoPtr->hints.initial_state != WithdrawnState); if (w != win && isOnScreen && [w canBecomeKeyWindow]) { [w makeKeyAndOrderFront:NSApp]; break; } } } } TkMacOSXInvalClipRgns((Tk_Window)winPtr); } else { | > | 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | continue; } wmInfoPtr = winPtr2->wmInfoPtr; isOnScreen = (wmInfoPtr->hints.initial_state != IconicState && wmInfoPtr->hints.initial_state != WithdrawnState); if (w != win && isOnScreen && [w canBecomeKeyWindow]) { [w makeKeyAndOrderFront:NSApp]; [NSApp setTkEventTarget:TkMacOSXGetTkWindow(win)]; break; } } } } TkMacOSXInvalClipRgns((Tk_Window)winPtr); } else { |
︙ | ︙ |
Changes to macosx/tkMacOSXTest.c.
︙ | ︙ | |||
16 17 18 19 20 21 22 | #include "tkMacOSXConstants.h" #include "tkMacOSXWm.h" /* * Forward declarations of procedures defined later in this file: */ | | | | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include "tkMacOSXConstants.h" #include "tkMacOSXWm.h" /* * Forward declarations of procedures defined later in this file: */ static Tcl_ObjCmdProc2 TestpressbuttonObjCmd; static Tcl_ObjCmdProc2 TestmovemouseObjCmd; static Tcl_ObjCmdProc2 TestinjectkeyeventObjCmd; static Tcl_ObjCmdProc2 TestmenubarheightObjCmd; /* *---------------------------------------------------------------------- * * TkplatformtestInit -- * |
︙ | ︙ | |||
53 54 55 56 57 58 59 | testsAreRunning = 1; /* * Add commands for platform specific tests on MacOS here. */ | | | | | | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | testsAreRunning = 1; /* * Add commands for platform specific tests on MacOS here. */ Tcl_CreateObjCommand2(interp, "testpressbutton", TestpressbuttonObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "testmovemouse", TestmovemouseObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "testinjectkeyevent", TestinjectkeyeventObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "testmenubarheight", TestmenubarheightObjCmd, NULL, NULL); return TCL_OK; } /* *---------------------------------------------------------------------- * * TestmenubarheightObjCmd -- |
︙ | ︙ | |||
82 83 84 85 86 87 88 | *---------------------------------------------------------------------- */ static int TestmenubarheightObjCmd( TCL_UNUSED(void *), /* Not used. */ Tcl_Interp *interp, /* Not used. */ | | | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | *---------------------------------------------------------------------- */ static int TestmenubarheightObjCmd( TCL_UNUSED(void *), /* Not used. */ Tcl_Interp *interp, /* Not used. */ TCL_UNUSED(Tcl_Size), /* Not used. */ TCL_UNUSED(Tcl_Obj *const *)) /* Not used. */ { static int height = 0; if (height == 0) { height = (int) [[NSApp mainMenu] menuBarHeight]; } Tcl_SetObjResult(interp, Tcl_NewWideIntObj(height)); |
︙ | ︙ | |||
147 148 149 150 151 152 153 | *---------------------------------------------------------------------- */ static int TestpressbuttonObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, | | | > | 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | *---------------------------------------------------------------------- */ static int TestpressbuttonObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) { int x = 0, y = 0, value; Tcl_Size i; CGPoint pt; NSPoint loc; NSEvent *motion, *press, *release; NSArray *screens = [NSScreen screens]; CGFloat ScreenHeight = 0; enum {X=1, Y}; |
︙ | ︙ | |||
246 247 248 249 250 251 252 | *---------------------------------------------------------------------- */ static int TestmovemouseObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, | | | > | 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | *---------------------------------------------------------------------- */ static int TestmovemouseObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) { int x = 0, y = 0, value; Tcl_Size i; CGPoint pt; NSPoint loc; NSEvent *motion; NSArray *screens = [NSScreen screens]; CGFloat ScreenHeight = 0; enum {X=1, Y}; |
︙ | ︙ | |||
306 307 308 309 310 311 312 | return TCL_OK; } static int TestinjectkeyeventObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, | | > | | 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 | return TCL_OK; } static int TestinjectkeyeventObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) { static const char *const optionStrings[] = { "flagschanged", "press", "release", NULL}; NSUInteger types[3] = {NSFlagsChanged, NSKeyDown, NSKeyUp}; static const char *const argStrings[] = { "-command", "-control", "-function", "-option", "-shift", "-x", "-y", NULL}; enum args {KEYEVENT_COMMAND, KEYEVENT_CONTROL, KEYEVENT_FUNCTION, KEYEVENT_OPTION, KEYEVENT_SHIFT, KEYEVENT_X, KEYEVENT_Y}; Tcl_Size i; int index, keysym, mods = 0, x = 0, y = 0; NSString *chars = nil, *unmod = nil, *upper, *lower; NSEvent *keyEvent; NSUInteger type; MacKeycode macKC; if (objc < 3) { wrongArgs: |
︙ | ︙ |
Changes to macosx/tkMacOSXWindowEvent.c.
︙ | ︙ | |||
35 36 37 38 39 40 41 42 43 44 45 | static int GenerateActivateEvents(TkWindow *winPtr, int activeFlag); #pragma mark TKApplication(TKWindowEvent) extern NSString *NSWindowDidOrderOnScreenNotification; extern NSString *NSWindowWillOrderOnScreenNotification; #ifdef TK_MAC_DEBUG_NOTIFICATIONS extern NSString *NSWindowDidOrderOffScreenNotification; #endif | > < > > > > | | > > > > > > > > > > > > > > > > > > > > > > > > > > > | | | | | | | | | | | | | | | | > | > | > > | | | > | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | static int GenerateActivateEvents(TkWindow *winPtr, int activeFlag); #pragma mark TKApplication(TKWindowEvent) extern NSString *NSWindowDidOrderOnScreenNotification; extern NSString *NSWindowWillOrderOnScreenNotification; extern NSString *NSWindowWillCloseNotification; #ifdef TK_MAC_DEBUG_NOTIFICATIONS extern NSString *NSWindowDidOrderOffScreenNotification; #endif @implementation TKApplication(TKWindowEvent) - (void) windowActivation: (NSNotification *) notification { #ifdef TK_MAC_DEBUG_NOTIFICATIONS TKLog(@"-[%@(%p) %s] %@", [self class], self, sel_getName(_cmd), notification); #endif if ([NSApp tkWillExit]) { return; } static NSWindow *systemDialog = NULL; NSWindow *win = [notification object]; TkWindow *winPtr = TkMacOSXGetTkWindow(win); NSString *name = [notification name]; if ([name isEqualToString:NSWindowDidResignKeyNotification]) { if (![NSApp keyWindow] && [NSApp isActive]) { if (winPtr) { /* * A Tk window lost focus and no window has focus anymore. */ TkMacOSXAssignNewKeyWindow(Tk_Interp((Tk_Window) winPtr), NULL); } else { /* * A system dialog, such as a standard About dialog, lost focus. */ TkMacOSXAssignNewKeyWindow(NULL, NULL); } } } /* * On older systems the system dialogs do not send DidResignKey * but the do send WillClose. */ if ([name isEqualToString:NSWindowWillCloseNotification]) { if (win == systemDialog) { TkMacOSXAssignNewKeyWindow(NULL, NULL); } } if ([name isEqualToString:NSWindowDidBecomeKeyNotification]) { if (winPtr) { NSPoint location = [NSEvent mouseLocation]; int x = location.x; int y = floor(TkMacOSXZeroScreenHeight() - location.y); /* * The Tk event target persists when there is no key window but * gets reset when a new window becomes the key window. */ [NSApp setTkEventTarget: winPtr]; /* * Call Tk_UpdatePointer if the pointer is in the window. */ NSView *view = [win contentView]; NSPoint viewLocation = [view convertPoint:location fromView:nil]; if (NSPointInRect(viewLocation, NSInsetRect([view bounds], 2, 2))) { Tk_UpdatePointer((Tk_Window) winPtr, x, y, [NSApp tkButtonState]); } } else { systemDialog = win; } if (winPtr && Tk_IsMapped(winPtr)) { GenerateActivateEvents(winPtr, true); } } } - (void) windowBoundsChanged: (NSNotification *) notification { #ifdef TK_MAC_DEBUG_NOTIFICATIONS TKLog(@"-[%@(%p) %s] %@", [self class], self, sel_getName(_cmd), notification); |
︙ | ︙ | |||
299 300 301 302 303 304 305 306 307 308 309 310 311 312 | NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; #define observe(n, s) \ [nc addObserver:self selector:@selector(s) name:(n) object:nil] observe(NSWindowDidBecomeKeyNotification, windowActivation:); observe(NSWindowDidResignKeyNotification, windowActivation:); observe(NSWindowDidMoveNotification, windowBoundsChanged:); observe(NSWindowDidResizeNotification, windowBoundsChanged:); observe(NSWindowDidDeminiaturizeNotification, windowExpanded:); observe(NSWindowDidMiniaturizeNotification, windowCollapsed:); observe(NSWindowWillOrderOnScreenNotification, windowMapped:); observe(NSWindowDidOrderOnScreenNotification, windowBecameVisible:); observe(NSWindowWillStartLiveResizeNotification, windowLiveResize:); | > | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; #define observe(n, s) \ [nc addObserver:self selector:@selector(s) name:(n) object:nil] observe(NSWindowDidBecomeKeyNotification, windowActivation:); observe(NSWindowDidResignKeyNotification, windowActivation:); observe(NSWindowWillCloseNotification, windowActivation:); observe(NSWindowDidMoveNotification, windowBoundsChanged:); observe(NSWindowDidResizeNotification, windowBoundsChanged:); observe(NSWindowDidDeminiaturizeNotification, windowExpanded:); observe(NSWindowDidMiniaturizeNotification, windowCollapsed:); observe(NSWindowWillOrderOnScreenNotification, windowMapped:); observe(NSWindowDidOrderOnScreenNotification, windowBecameVisible:); observe(NSWindowWillStartLiveResizeNotification, windowLiveResize:); |
︙ | ︙ |
Changes to macosx/tkMacOSXWm.c.
︙ | ︙ | |||
833 834 835 836 837 838 839 840 841 842 843 844 845 846 | return NULL; } } } return NULL; } /* *---------------------------------------------------------------------- * * TkWmNewWindow -- * * This procedure is invoked whenever a new top-level window is created. * Its job is to initialize the WmInfo structure for the window. | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 | return NULL; } } } return NULL; } void TkMacOSXAssignNewKeyWindow( Tcl_Interp *interp, NSWindow *ignore) { TkWindow *winPtr; /* * Avoid bug 5692042764: set tkEventTarget to NULL if there is no window to * send Tk events to. */ [NSApp setTkEventTarget: NULL]; for (NSWindow *w in [NSApp orderedWindows]) { WmInfo *wmPtr; BOOL isOnScreen; winPtr = TkMacOSXGetTkWindow(w); if (!winPtr || !winPtr->wmInfoPtr || (winPtr->flags & TK_ALREADY_DEAD)) { continue; } if (interp && interp != Tk_Interp((Tk_Window) winPtr)) { continue; } wmPtr = winPtr->wmInfoPtr; isOnScreen = (wmPtr->hints.initial_state != IconicState && wmPtr->hints.initial_state != WithdrawnState); if (w != ignore && isOnScreen && [w canBecomeKeyWindow]) { TKMenu *menu; [w makeKeyAndOrderFront:NSApp]; /* Set the menubar for the new front window. */ if (winPtr->wmInfoPtr && winPtr->wmInfoPtr->menuPtr && winPtr->wmInfoPtr->menuPtr->mainMenuPtr) { menu = (TKMenu *) winPtr->wmInfoPtr->menuPtr->platformData; [NSApp tkSetMainMenu:menu]; [NSApp setTkEventTarget: winPtr]; } break; } } } /* *---------------------------------------------------------------------- * * TkWmNewWindow -- * * This procedure is invoked whenever a new top-level window is created. * Its job is to initialize the WmInfo structure for the window. |
︙ | ︙ | |||
1264 1265 1266 1267 1268 1269 1270 | * there is no choice for a new key window. Moreover, if the host * computer has a TouchBar then the TouchBar holds a reference to the * key window which prevents it from being deallocated until it stops * being the key window. On these systems the only option for * preventing zombies is to set the key window to nil. */ | | < < < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 | * there is no choice for a new key window. Moreover, if the host * computer has a TouchBar then the TouchBar holds a reference to the * key window which prevents it from being deallocated until it stops * being the key window. On these systems the only option for * preventing zombies is to set the key window to nil. */ TkMacOSXAssignNewKeyWindow(Tk_Interp((Tk_Window) winPtr), deadNSWindow); /* * Prevent zombies on systems with a TouchBar. */ if (deadNSWindow == [NSApp keyWindow]) { [NSApp _setKeyWindow:nil]; |
︙ | ︙ | |||
7238 7239 7240 7241 7242 7243 7244 | { if (!winPtr || (winPtr->flags & TK_ALREADY_DEAD) || !Tk_IsMapped(winPtr) || winPtr->atts.override_redirect) { return 0; } | < | 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 | { if (!winPtr || (winPtr->flags & TK_ALREADY_DEAD) || !Tk_IsMapped(winPtr) || winPtr->atts.override_redirect) { return 0; } if (Tk_IsTopLevel(winPtr) && !Tk_IsEmbedded(winPtr)) { NSWindow *win = TkMacOSXGetNSWindowForDrawable(winPtr->window); TkWmRestackToplevel(winPtr, Above, NULL); if (force) { [NSApp activateIgnoringOtherApps:YES]; } |
︙ | ︙ |
Changes to tests/focus.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # This file is a Tcl script to test out the "focus" command and the # other procedures in the file tkFocus.c. It is organized in the # standard fashion for Tcl tests. # # Copyright © 1994-1996 Sun Microsystems, Inc. # Copyright © 1998-1999 Scriptics Corporation. # All rights reserved. package require tcltest 2.2 eval tcltest::configure $argv tcltest::loadTestedCommands namespace import -force tcltest::test testConstraint failsOnUbuntu [expr {![info exists ::env(CI)] || ![string match Linux $::tcl_platform(os)]}] testConstraint failsOnXQuarz [expr {$tcl_platform(os) ne "Darwin" || [tk windowingsystem] ne "x11" }] proc focusSetup {} { destroy .t toplevel .t | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # This file is a Tcl script to test out the "focus" command and the # other procedures in the file tkFocus.c. It is organized in the # standard fashion for Tcl tests. # # Copyright © 1994-1996 Sun Microsystems, Inc. # Copyright © 1998-1999 Scriptics Corporation. # All rights reserved. package require tcltest 2.2 eval tcltest::configure $argv tcltest::loadTestedCommands namespace import -force tcltest::test if {[tk windowingsystem] eq "aqua"} { interp create childInterp load {} Tk childInterp } testConstraint failsOnUbuntu [expr {![info exists ::env(CI)] || ![string match Linux $::tcl_platform(os)]}] testConstraint failsOnXQuarz [expr {$tcl_platform(os) ne "Darwin" || [tk windowingsystem] ne "x11" }] proc focusSetup {} { destroy .t toplevel .t |
︙ | ︙ | |||
38 39 40 41 42 43 44 | # The following procedure ensures that there is no input focus # in this application. It does it by arranging for another # application to grab the focus. The "after" and "update" stuff # is needed to wait long enough for pending actions to get through # the X server and possibly also the window manager. | > | > | | < < | | | > > | | | > > > > > | > | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | # The following procedure ensures that there is no input focus # in this application. It does it by arranging for another # application to grab the focus. The "after" and "update" stuff # is needed to wait long enough for pending actions to get through # the X server and possibly also the window manager. if {[tk windowingsystem] eq "aqua"} { proc focusClear {} { childInterp eval { focus -force . set i 0 while {[focus] != "."} { after 100 incr i if {i > 10} { break } } } } } else { proc focusClear {} { dobg {after 200; focus -force .; update} after 400 update } } # Button used in some tests in the whole test file button .b -text .b -relief raised -bd 2 pack .b |
︙ | ︙ | |||
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | unix } -body { focus -displayof .lousy } -returnCodes error -result {bad window path name ".lousy"} test focus-1.12 {Tk_FocusCmd procedure, -displayof option} -constraints { unix } -body { focusClear focus .t focus -displayof .t.b3 } -result {} test focus-1.13 {Tk_FocusCmd procedure, -displayof option} -constraints { unix } -body { focusClear | > > | 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | unix } -body { focus -displayof .lousy } -returnCodes error -result {bad window path name ".lousy"} test focus-1.12 {Tk_FocusCmd procedure, -displayof option} -constraints { unix } -body { # Move focus to the root window in the child or bg interpreter. focusClear # The main application does not have focus, so this has no effect now. focus .t focus -displayof .t.b3 } -result {} test focus-1.13 {Tk_FocusCmd procedure, -displayof option} -constraints { unix } -body { focusClear |
︙ | ︙ | |||
785 786 787 788 789 790 791 792 | crashit } -result {Reached} deleteWindows # cleanup cleanupTests return | > > > | 799 800 801 802 803 804 805 806 807 808 809 | crashit } -result {Reached} deleteWindows # cleanup cleanupTests if {[tk windowingsystem] eq "aqua"} { interp delete childInterp } return |
Changes to tests/place.test.
︙ | ︙ | |||
292 293 294 295 296 297 298 299 300 301 302 303 304 305 | place forget .t.f } -body { place .t.f -x 0 -y 0 -width 200 -height 100 place .t.f2 -in .t.f -relx 1.0 -rely 1.0 -anchor sw -width 50 -height 20 update set result [winfo ismapped .t.f2] wm iconify .t lappend result [winfo ismapped .t.f2] place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw update lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2] wm deiconify .t update lappend result [winfo ismapped .t.f2] | > | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | place forget .t.f } -body { place .t.f -x 0 -y 0 -width 200 -height 100 place .t.f2 -in .t.f -relx 1.0 -rely 1.0 -anchor sw -width 50 -height 20 update set result [winfo ismapped .t.f2] wm iconify .t update idletasks lappend result [winfo ismapped .t.f2] place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw update lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2] wm deiconify .t update lappend result [winfo ismapped .t.f2] |
︙ | ︙ |
Changes to tests/textTag.test.
︙ | ︙ | |||
1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 | test textTag-18.1 {TkTextPickCurrent tag bindings} -setup { destroy .t wm geometry . +200+200 ; update event generate {} <Motion> -warp 1 -x 5 -y 5 controlPointerWarpTiming } -body { text .t -width 30 -height 4 -relief sunken -borderwidth 10 \ -highlightthickness 10 -pady 2 pack .t update ; # map the window, otherwise -warp can't be done .t insert end " Tag here " TAG " no tag here" .t tag configure TAG -borderwidth 4 -relief raised | > > > | 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 | test textTag-18.1 {TkTextPickCurrent tag bindings} -setup { destroy .t wm geometry . +200+200 ; update event generate {} <Motion> -warp 1 -x 5 -y 5 controlPointerWarpTiming } -body { # Move the cursor out of the way. event generate . <Motion> -warp 1 -x 800 -y 500 controlPointerWarpTiming text .t -width 30 -height 4 -relief sunken -borderwidth 10 \ -highlightthickness 10 -pady 2 pack .t update ; # map the window, otherwise -warp can't be done .t insert end " Tag here " TAG " no tag here" .t tag configure TAG -borderwidth 4 -relief raised |
︙ | ︙ |
Changes to unix/configure.ac.
1 2 3 4 5 6 | ! /bin/bash -norc dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tk installation dnl to configure the system for the local environment. AC_INIT([tk],[9.1]) | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ! /bin/bash -norc dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tk installation dnl to configure the system for the local environment. AC_INIT([tk],[9.1]) AC_PREREQ([2.71]) dnl This is only used when included from macosx/configure.ac m4_ifdef([SC_USE_CONFIG_HEADERS], [ AC_CONFIG_HEADERS([tkConfig.h:../unix/tkConfig.h.in]) AC_CONFIG_COMMANDS_PRE([DEFS="-DHAVE_TK_CONFIG_H -imacros tkConfig.h"]) AH_TOP([ #ifndef _TKCONFIG |
︙ | ︙ |
Changes to win/configure.ac.
1 2 3 4 5 6 7 | #! /bin/bash -norc # This file is an input file used by the GNU "autoconf" program to # generate the file "configure", which is run during Tk installation # to configure the system for the local environment. AC_INIT([tk],[9.1]) AC_CONFIG_SRCDIR([../generic/tk.h]) | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #! /bin/bash -norc # This file is an input file used by the GNU "autoconf" program to # generate the file "configure", which is run during Tk installation # to configure the system for the local environment. AC_INIT([tk],[9.1]) AC_CONFIG_SRCDIR([../generic/tk.h]) AC_PREREQ([2.71]) # The following define is needed when building with Cygwin since newer # versions of autoconf incorrectly set SHELL to /bin/bash instead of # /bin/sh. The bash shell seems to suffer from some strange failures. SHELL=/bin/sh TK_VERSION=9.1 |
︙ | ︙ |
Changes to win/tkWinTest.c.
︙ | ︙ | |||
22 23 24 25 26 27 28 | HWND tkWinCurrentDialog; /* * Forward declarations of functions defined later in this file: */ | | | | | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | HWND tkWinCurrentDialog; /* * Forward declarations of functions defined later in this file: */ static Tcl_ObjCmdProc2 TestclipboardObjCmd; static Tcl_ObjCmdProc2 TestwineventObjCmd; static Tcl_ObjCmdProc2 TestfindwindowObjCmd; static Tcl_ObjCmdProc2 TestgetwindowinfoObjCmd; static Tcl_ObjCmdProc2 TestwinlocaleObjCmd; static Tk_GetSelProc SetSelectionResult; /* *---------------------------------------------------------------------- * * TkplatformtestInit -- * |
︙ | ︙ | |||
54 55 56 57 58 59 60 | TkplatformtestInit( Tcl_Interp *interp) /* Interpreter to add commands to. */ { /* * Add commands for platform specific tests on MacOS here. */ | | | | | | | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | TkplatformtestInit( Tcl_Interp *interp) /* Interpreter to add commands to. */ { /* * Add commands for platform specific tests on MacOS here. */ Tcl_CreateObjCommand2(interp, "testclipboard", TestclipboardObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testwinevent", TestwineventObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testfindwindow", TestfindwindowObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testgetwindowinfo", TestgetwindowinfoObjCmd, Tk_MainWindow(interp), NULL); Tcl_CreateObjCommand2(interp, "testwinlocale", TestwinlocaleObjCmd, Tk_MainWindow(interp), NULL); return TCL_OK; } struct TestFindControlState { int id; HWND control; |
︙ | ︙ | |||
227 228 229 230 231 232 233 | return TCL_OK; } static int TestclipboardObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | return TCL_OK; } static int TestclipboardObjCmd( void *clientData, /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument values. */ { Tk_Window tkwin = (Tk_Window)clientData; if (objc != 1) { Tcl_WrongNumArgs(interp, 1, objv, NULL); return TCL_ERROR; |
︙ | ︙ | |||
261 262 263 264 265 266 267 | *---------------------------------------------------------------------- */ static int TestwineventObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ | | | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 | *---------------------------------------------------------------------- */ static int TestwineventObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument strings. */ { HWND hwnd = 0; HWND child = 0; HWND control; int id; char *rest; |
︙ | ︙ | |||
426 427 428 429 430 431 432 | * Can find a messagebox window with this title. */ static int TestfindwindowObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ | | | | 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 | * Can find a messagebox window with this title. */ static int TestfindwindowObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument values. */ { LPCWSTR title = NULL, windowClass = NULL; Tcl_DString titleString, classString; HWND hwnd = NULL; int r = TCL_OK; DWORD myPid; Tcl_DStringInit(&classString); Tcl_DStringInit(&titleString); |
︙ | ︙ | |||
498 499 500 501 502 503 504 | return TRUE; } static int TestgetwindowinfoObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, | | | 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 | return TRUE; } static int TestgetwindowinfoObjCmd( TCL_UNUSED(void *), Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) { Tcl_WideInt hwnd; Tcl_Obj *dictObj = NULL, *classObj = NULL, *textObj = NULL; Tcl_Obj *childrenObj = NULL; WCHAR buf[512]; int cch, cchBuf = 256; |
︙ | ︙ | |||
555 556 557 558 559 560 561 | return TCL_OK; } static int TestwinlocaleObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ | | | 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 | return TCL_OK; } static int TestwinlocaleObjCmd( TCL_UNUSED(void *), /* Main window for application. */ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument values. */ { if (objc != 1) { Tcl_WrongNumArgs(interp, 1, objv, NULL); return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewWideIntObj(GetThreadLocale())); |
︙ | ︙ |