Index: .github/workflows/linux-build.yml ================================================================== --- .github/workflows/linux-build.yml +++ .github/workflows/linux-build.yml @@ -37,11 +37,11 @@ path: tk - name: Checkout Tcl 8.6 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Setup Environment (compiler=${{ matrix.compiler }}) run: | sudo apt-get install libxss-dev libxft-dev mkdir "$HOME/install dir" @@ -141,11 +141,11 @@ path: tk - name: Checkout Tcl uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Setup Environment (compiler=${{ matrix.compiler }}) run: | sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev mkdir "$HOME/install dir" DELETED .github/workflows/linux-with-tcl8-build.yml Index: .github/workflows/linux-with-tcl8-build.yml ================================================================== --- .github/workflows/linux-with-tcl8-build.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Linux (with Tcl 8.7) -on: - push: - branches: - - "main" - - "core-8-branch" - - "core-8-6-branch" - tags: - - "core-**" -permissions: - contents: read -defaults: - run: - shell: bash - working-directory: tk/unix -env: - ERROR_ON_FAILURES: 1 -jobs: - build: - runs-on: ubuntu-22.04 - strategy: - matrix: - compiler: - - "gcc" - - "clang" - cfgopt: - - "" - - "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 - uses: actions/checkout@v4 - with: - repository: tcltk/tcl - ref: core-8-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.cfgopt }} - COMPILER: ${{ matrix.compiler }} - OPTS: ${{ matrix.compiler }}${{ matrix.cfgopt }} - - 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.cfgopt }}) - run: | - ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { - cat config.log - echo "::error::Failure during Configure" - exit 1 - } - - name: Build - run: | - make binaries libraries || { - echo "::error::Failure during Build" - exit 1 - } - - name: Build Test Harness - run: | - make tktest || { - echo "::error::Failure during Build" - exit 1 - } - - name: Test-Drive Installation - run: | - make install || { - echo "::error::Failure during Install" - exit 1 - } - - name: Create Distribution Package - run: | - make dist || { - echo "::error::Failure during Distribute" - exit 1 - } - - name: Convert Documentation to HTML - run: | - make html-tk TOOL_DIR=$TOOL_DIR || { - echo "::error::Failure during Distribute" - exit 1 - } - test: - runs-on: ubuntu-22.04 - strategy: - matrix: - compiler: - - "gcc" - cfgopt: - - "" - - "--disable-xft" - - "--enable-symbols" - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - path: tk - - name: Checkout Tcl - uses: actions/checkout@v4 - with: - repository: tcltk/tcl - ref: core-8-branch - path: tcl - - name: Setup Environment (compiler=${{ matrix.compiler }}) - run: | - sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev - 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.cfgopt }} - 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.cfgopt }} - 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 ADDED .github/workflows/linux-with-tcl86-build.yml Index: .github/workflows/linux-with-tcl86-build.yml ================================================================== --- /dev/null +++ .github/workflows/linux-with-tcl86-build.yml @@ -0,0 +1,177 @@ +name: Linux (with Tcl 8.6) +on: + push: + branches: + - "main" + - "core-8-branch" + - "core-8-6-branch" + tags: + - "core-**" +permissions: + contents: read +defaults: + run: + shell: bash + working-directory: tk/unix +env: + ERROR_ON_FAILURES: 1 +jobs: + build: + runs-on: ubuntu-22.04 + strategy: + matrix: + compiler: + - "gcc" + - "clang" + cfgopt: + - "" + - "CFLAGS=-DTK_NO_DEPRECATED=1" + - "--disable-xft" + - "--disable-xss" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v4 + with: + repository: tcltk/tcl + ref: core-8-6-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.cfgopt }} + COMPILER: ${{ matrix.compiler }} + OPTS: ${{ matrix.compiler }}${{ matrix.cfgopt }} + - 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.cfgopt }}) + run: | + ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH --disable-zipfs "--prefix=$HOME/install dir" || { + cat config.log + echo "::error::Failure during Configure" + exit 1 + } + - name: Build + run: | + make binaries libraries || { + echo "::error::Failure during Build" + exit 1 + } + - name: Build Test Harness + run: | + make tktest || { + echo "::error::Failure during Build" + exit 1 + } + - name: Test-Drive Installation + run: | + make install || { + echo "::error::Failure during Install" + exit 1 + } + - name: Create Distribution Package + run: | + make dist || { + echo "::error::Failure during Distribute" + exit 1 + } + - name: Convert Documentation to HTML + run: | + make html-tk TOOL_DIR=$TOOL_DIR || { + echo "::error::Failure during Distribute" + exit 1 + } + test: + runs-on: ubuntu-22.04 + strategy: + matrix: + compiler: + - "gcc" + cfgopt: + - "" + - "--disable-xft" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v4 + with: + repository: tcltk/tcl + ref: core-8-6-branch + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev + 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.cfgopt }} + 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.cfgopt }} + 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 ADDED .github/workflows/linux-with-tcl9-build.yml Index: .github/workflows/linux-with-tcl9-build.yml ================================================================== --- /dev/null +++ .github/workflows/linux-with-tcl9-build.yml @@ -0,0 +1,177 @@ +name: Linux (with Tcl 9.0) +on: + push: + branches: + - "main" + - "core-8-branch" + - "core-8-6-branch" + tags: + - "core-**" +permissions: + contents: read +defaults: + run: + shell: bash + working-directory: tk/unix +env: + ERROR_ON_FAILURES: 1 +jobs: + build: + runs-on: ubuntu-22.04 + strategy: + matrix: + compiler: + - "gcc" + - "clang" + cfgopt: + - "" + - "CFLAGS=-DTK_NO_DEPRECATED=1" + - "--disable-xft" + - "--disable-xss" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v4 + with: + repository: tcltk/tcl + ref: main + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-dev libxft-dev + mkdir "$HOME/install dir" + touch tk/doc/man.macros tk/generic/tkStubInit.c + echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV + echo "CC=$COMPILER" >> $GITHUB_ENV + echo "TOOL_DIR=$(cd tcl/tools;pwd)" >> $GITHUB_ENV + echo "BUILD_CONFIG_ID=$OPTS" >> $GITHUB_ENV + working-directory: "." + env: + CFGOPT: ${{ matrix.cfgopt }} + COMPILER: ${{ matrix.compiler }} + OPTS: ${{ matrix.compiler }}${{ matrix.cfgopt }} + - 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.cfgopt }}) + run: | + ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { + cat config.log + echo "::error::Failure during Configure" + exit 1 + } + - name: Build + run: | + make binaries libraries || { + echo "::error::Failure during Build" + exit 1 + } + - name: Build Test Harness + run: | + make tktest || { + echo "::error::Failure during Build" + exit 1 + } + - name: Test-Drive Installation + run: | + make install || { + echo "::error::Failure during Install" + exit 1 + } + - name: Create Distribution Package + run: | + make dist || { + echo "::error::Failure during Distribute" + exit 1 + } + - name: Convert Documentation to HTML + run: | + make html-tk TOOL_DIR=$TOOL_DIR || { + echo "::error::Failure during Distribute" + exit 1 + } + test: + runs-on: ubuntu-22.04 + strategy: + matrix: + compiler: + - "gcc" + cfgopt: + - "" + - "--disable-xft" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v4 + with: + repository: tcltk/tcl + ref: main + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev + 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.cfgopt }} + 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.cfgopt }} + 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 DELETED .github/workflows/linux-with-tcl91-build.yml Index: .github/workflows/linux-with-tcl91-build.yml ================================================================== --- .github/workflows/linux-with-tcl91-build.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Linux (with Tcl 9.1) -on: - push: - branches: - - "main" - - "core-8-branch" - - "core-8-6-branch" - tags: - - "core-**" -permissions: - contents: read -defaults: - run: - shell: bash - working-directory: tk/unix -env: - ERROR_ON_FAILURES: 1 -jobs: - build: - runs-on: ubuntu-22.04 - strategy: - matrix: - compiler: - - "gcc" - - "clang" - cfgopt: - - "" - - "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 - uses: actions/checkout@v4 - with: - repository: tcltk/tcl - ref: tip-626 - 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.cfgopt }} - COMPILER: ${{ matrix.compiler }} - OPTS: ${{ matrix.compiler }}${{ matrix.cfgopt }} - - 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.cfgopt }}) - run: | - ./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { - cat config.log - echo "::error::Failure during Configure" - exit 1 - } - - name: Build - run: | - make binaries libraries || { - echo "::error::Failure during Build" - exit 1 - } - - name: Build Test Harness - run: | - make tktest || { - echo "::error::Failure during Build" - exit 1 - } - - name: Test-Drive Installation - run: | - make install || { - echo "::error::Failure during Install" - exit 1 - } - - name: Create Distribution Package - run: | - make dist || { - echo "::error::Failure during Distribute" - exit 1 - } - - name: Convert Documentation to HTML - run: | - make html-tk TOOL_DIR=$TOOL_DIR || { - echo "::error::Failure during Distribute" - exit 1 - } - test: - runs-on: ubuntu-22.04 - strategy: - matrix: - compiler: - - "gcc" - cfgopt: - - "" - - "--disable-xft" - - "--enable-symbols" - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - path: tk - - name: Checkout Tcl - uses: actions/checkout@v4 - with: - repository: tcltk/tcl - ref: tip-626 - path: tcl - - name: Setup Environment (compiler=${{ matrix.compiler }}) - run: | - sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev - 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.cfgopt }} - 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.cfgopt }} - 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 Index: .github/workflows/mac-build.yml ================================================================== --- .github/workflows/mac-build.yml +++ .github/workflows/mac-build.yml @@ -21,15 +21,15 @@ steps: - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Check out Tcl 9.0 + - name: Checkout Tcl uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Prepare checked out repositories run: | touch tk/generic/tkStubInit.c mkdir build @@ -73,15 +73,15 @@ steps: - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Check out Tcl 9.0 + - name: Checkout Tcl uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Prepare checked out repositories env: SET_DISPLAY: ${{ contains(matrix.options, '--disable-aqua') }} run: | Index: .github/workflows/onefiledist.yml ================================================================== --- .github/workflows/onefiledist.yml +++ .github/workflows/onefiledist.yml @@ -22,15 +22,15 @@ steps: - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Checkout Tcl 9.0 + - name: Checkout Tcl 8.7 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Setup Environment run: | sudo apt-get install libxss-dev libxft-dev touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c @@ -56,11 +56,11 @@ make binaries libraries install working-directory: tk/unix # TODO: need the Tk version separately for distro naming below - name: Package run: | - cp bin/wish9.0 ${BUILD_NAME} + cp bin/wish8.7 ${BUILD_NAME} chmod +x ${BUILD_NAME} tar -cf ${BUILD_NAME}.tar ${BUILD_NAME} working-directory: ${{ env.INST_DIR }} env: BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot @@ -74,11 +74,11 @@ run: | unzip -l wish${{ env.TCL_PATCHLEVEL }}_snapshot || true working-directory: ${{ env.INST_DIR }} macos: name: macOS - runs-on: macos-12 + runs-on: macos-13 defaults: run: shell: bash env: CC: gcc @@ -86,15 +86,15 @@ steps: - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Checkout Tcl 9.0 + - name: Checkout Tcl 8.7 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Checkout create-dmg uses: actions/checkout@v4 with: repository: create-dmg/create-dmg @@ -174,15 +174,15 @@ install: git mingw-w64-x86_64-toolchain make zip - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Checkout Tcl 9.0 + - name: Checkout Tcl 8.7 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Setup Environment run: | mkdir -p install/combined touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c Index: .github/workflows/win-build.yml ================================================================== --- .github/workflows/win-build.yml +++ .github/workflows/win-build.yml @@ -22,21 +22,22 @@ strategy: matrix: config: - "" - "OPTS=symbols" + - "OPTS=symbols STATS=compdbg,memdbg" - "OPTS=static" steps: - name: Checkout Tk uses: actions/checkout@v4 with: path: tk - - name: Checkout Tcl 9.0 + - name: Checkout Tcl 8.7 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Init MSVC uses: ilammy/msvc-dev-cmd@v1 - name: Make Install Location working-directory: tcl @@ -118,15 +119,15 @@ with: msystem: MINGW64 install: git mingw-w64-x86_64-toolchain make zip - name: Checkout Tk uses: actions/checkout@v4 - - name: Checkout Tcl 9.0 + - name: Checkout Tcl 8.7 uses: actions/checkout@v4 with: repository: tcltk/tcl - ref: main + ref: core-8-branch path: tcl - name: Prepare run: | touch tkStubInit.c touch "${HOME}/forWinDialog-5.12.7" Index: .project ================================================================== --- .project +++ .project @@ -1,8 +1,8 @@ - tk9.0 + tk8.7 Index: README.md ================================================================== --- README.md +++ README.md @@ -1,34 +1,29 @@ # README: Tk -This is the **Tk 9.0b4** source distribution. +This is the **Tk 8.7b1** source distribution. You can get any source release of Tk from [our distribution site](https://sourceforge.net/projects/tcl/files/Tcl/). -8.6 (production release, daily build) -[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Acore-8-6-branch) -[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Acore-8-6-branch) -[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Acore-8-6-branch) -
-8.7 (in development, daily build)) -[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Acore-8-branch) -[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Acore-8-branch) -[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Acore-8-branch) -
-9.0 (in development, daily build)) -[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Amain) -[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Amain) -[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Amain) +9.0 (production release, daily build) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Amain) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Amain) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Amain) +
+8.7 (in development, daily build) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-8-branch) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-8-branch) +[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Acore-8-branch) ## 1. Introduction This directory contains the sources and documentation for Tk, a cross-platform GUI toolkit implemented with the Tcl scripting language. For details on features, incompatibilities, and potential problems with -this release, see [the Tcl/Tk 9.0 Web page](https://www.tcl-lang.org/software/tcltk/9.0.html) +this release, see [the Tcl/Tk 8.7 Web page](https://www.tcl-lang.org/software/tcltk/8.7.html) or refer to the "changes" file in this directory, which contains a historical record of all changes to Tk. Tk is maintained, enhanced, and distributed freely by the Tcl community. Source code development and tracking of bug reports and feature requests Index: changes.md ================================================================== --- changes.md +++ changes.md @@ -2,20 +2,20 @@ The source code for Tk is managed by fossil. Tk developers coordinate all changes to the Tk source code at > [Tk Source Code](https://core.tcl-lang.org/tk/) -Release Tk 9.0b4 arises from the check-in with tag core-9-0-b4. +Release Tk 8.7b1 arises from the check-in with tag core-8-7-b1. -Highlighted differences between Tk 9.0 and Tk 8.6 are summarized below, +Highlighted differences between Tk 8.7 and Tk 8.6 are summarized below, with focus on changes important to programmers using the Tk library and writing Tcl scripts containing Tk commands. ## Many improvements to use of platform features and conventions. - Built-in widgets and themes are scaling-aware. - Improved support of two-finger gestures, where available - - The `tk windowingsystem` "aqua" needs macOS 10.10 or later + - The `tk windowingsystem` "aqua" needs macOS 10.9 or later ## New commands and options - `tk sysnotify`: access to the OS notifications system - `tk systray`: access to the OS tray facility - `tk print`: access to the OS printing facility Index: doc/AddOption.3 ================================================================== --- doc/AddOption.3 +++ doc/AddOption.3 @@ -14,11 +14,10 @@ void \fBTk_AddOption\fR(\fItkwin, name, value, priority\fR) .sp Tcl_Obj * \fBTk_GetSystemDefault\fR(\fItkwin, dbName, className\fR) -.fi .SH ARGUMENTS .AP Tk_Window tkwin in Token for window. .AP "const char" *name in Multi-element name of option. Index: doc/BindTable.3 ================================================================== --- doc/BindTable.3 +++ doc/BindTable.3 @@ -13,29 +13,28 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Tk_BindingTable -\fBTk_CreateBindingTable\fR(\fIinterp\fR) +\fBTk_CreateBindingTable(\fIinterp\fB)\fR .sp -\fBTk_DeleteBindingTable\fR(\fIbindingTable\fR) +\fBTk_DeleteBindingTable(\fIbindingTable\fB)\fR .sp unsigned long -\fBTk_CreateBinding\fR(\fIinterp, bindingTable, object, eventString, script, append\fR) +\fBTk_CreateBinding(\fIinterp, bindingTable, object, eventString, script, append\fB)\fR .sp int -\fBTk_DeleteBinding\fR(\fIinterp, bindingTable, object, eventString\fR) +\fBTk_DeleteBinding(\fIinterp, bindingTable, object, eventString\fB)\fR .sp const char * -\fBTk_GetBinding\fR(\fIinterp, bindingTable, object, eventString\fR) -.sp -\fBTk_GetAllBindings\fR(\fIinterp, bindingTable, object\fR) -.sp -\fBTk_DeleteAllBindings\fR(\fIbindingTable, object\fR) -.sp -\fBTk_BindEvent\fR(\fIbindingTable, eventPtr, tkwin, numObjects, objectPtr\fR) -.fi +\fBTk_GetBinding(\fIinterp, bindingTable, object, eventString\fB)\fR +.sp +\fBTk_GetAllBindings(\fIinterp, bindingTable, object\fB)\fR +.sp +\fBTk_DeleteAllBindings(\fIbindingTable, object\fB)\fR +.sp +\fBTk_BindEvent(\fIbindingTable, eventPtr, tkwin, numObjects, objectPtr\fB)\fR .SH ARGUMENTS .AS Tk_BindingTable bindingTable .AP Tcl_Interp *interp in Interpreter to use when invoking bindings in binding table. Also used for returning results and errors from binding procedures. @@ -54,11 +53,11 @@ .AP XEvent *eventPtr in X event to match against bindings in \fIbindingTable\fR. .AP Tk_Window tkwin in Identifier for any window on the display where the event occurred. Used to find display-related information such as key maps. -.AP Tcl_Size numObjects in +.AP int numObjects in Number of object identifiers pointed to by \fIobjectPtr\fR. .AP "void **" objectPtr in Points to an array of object identifiers: bindings will be considered for each of these objects in order from first to last. .BE Index: doc/CanvPsY.3 ================================================================== --- doc/CanvPsY.3 +++ doc/CanvPsY.3 @@ -27,13 +27,12 @@ .sp \fBTk_CanvasPsPath\fR(\fIinterp, canvas, coordPtr, numPoints\fR) .sp int \fBTk_CanvasPsStipple\fR(\fIinterp, canvas, bitmap\fR) -.fi .SH ARGUMENTS -.AS Tcl_Size "numPoints" +.AS int "numPoints" .AP Tk_Canvas canvas in A token that identifies a canvas widget for which Postscript is being generated. .AP double canvasY in Y-coordinate in the space of the canvas. @@ -57,11 +56,11 @@ .AP double *coordPtr in Pointer to an array of coordinates for one or more points specified in canvas coordinates. The order of values in \fIcoordPtr\fR is x1, y1, x2, y2, x3, y3, and so on. -.AP Tcl_Size numPoints in +.AP int numPoints in Number of points at \fIcoordPtr\fR. .BE .SH DESCRIPTION .PP These procedures are called by canvas type managers to carry out Index: doc/CanvTkwin.3 ================================================================== --- doc/CanvTkwin.3 +++ doc/CanvTkwin.3 @@ -28,11 +28,10 @@ \fBTk_CanvasEventuallyRedraw\fR(\fIcanvas, x1, y1, x2, y2\fR) .sp Tk_OptionParseProc *\fBTk_CanvasTagsParseProc\fR; .sp Tk_OptionPrintProc *\fBTk_CanvasTagsPrintProc\fR; -.fi .SH ARGUMENTS .AS Tk_ItemType *drawableXPtr .AP Tk_Canvas canvas in A token that identifies a canvas widget. .AP Tcl_Interp *interp in/out @@ -148,12 +147,12 @@ Tk_CanvasTagsPrintProc, NULL }; static const Tk_ConfigSpec configSpecs[] = { ... - {TK_CONFIG_CUSTOM, "-tags", NULL, NULL, + {TK_CONFIG_CUSTOM, "\-tags", NULL, NULL, NULL, 0, TK_CONFIG_NULL_OK, &tagsOption}, ... }; .CE .SH KEYWORDS canvas, focus, item type, redisplay, selection, type manager Index: doc/CanvTxtInfo.3 ================================================================== --- doc/CanvTxtInfo.3 +++ doc/CanvTxtInfo.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp Tk_CanvasTextInfo * \fBTk_CanvasGetTextInfo\fR(\fIcanvas\fR) -.fi .SH ARGUMENTS .AS Tk_Canvas canvas .AP Tk_Canvas canvas in A token that identifies a particular canvas widget. .BE @@ -30,11 +29,11 @@ The return value from \fBTk_CanvasGetTextInfo\fR is a pointer to a structure that is shared between Tk and all the items that display text. The structure has the following form: .CS -typedef struct { +typedef struct Tk_CanvasTextInfo { Tk_3DBorder \fIselBorder\fR; int \fIselBorderWidth\fR; XColor *\fIselFgColorPtr\fR; Tk_Item *\fIselItemPtr\fR; int \fIselectFirst\fR; Index: doc/Clipboard.3 ================================================================== --- doc/Clipboard.3 +++ doc/Clipboard.3 @@ -17,11 +17,10 @@ int \fBTk_ClipboardClear\fR(\fIinterp, tkwin\fR) .sp int \fBTk_ClipboardAppend\fR(\fIinterp, tkwin, target, format, buffer\fR) -.fi .SH ARGUMENTS .AS Tk_ClipboardClear tkwin .AP Tcl_Interp *interp in Interpreter to use for reporting errors. .AP Tk_Window tkwin in Index: doc/ClrSelect.3 ================================================================== --- doc/ClrSelect.3 +++ doc/ClrSelect.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_ClearSelection\fR(\fItkwin, selection\fR) -.fi .SH ARGUMENTS .AS Tk_Window tkwin .AP Tk_Window tkwin in The selection will be cleared from the display containing this window. Index: doc/ConfigWidg.3 ================================================================== --- doc/ConfigWidg.3 +++ doc/ConfigWidg.3 @@ -13,32 +13,31 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_ConfigureWidget\fR(\fIinterp, tkwin, specs, objc, objv, widgRec, flags\fR) +\fBTk_ConfigureWidget(\fIinterp, tkwin, specs, argc, argv, widgRec, flags\fB)\fR .sp int -\fBTk_ConfigureInfo\fR(\fIinterp, tkwin, specs, widgRec, argvName, flags\fR) +\fBTk_ConfigureInfo(\fIinterp, tkwin, specs, widgRec, argvName, flags\fB)\fR .sp int -\fBTk_ConfigureValue\fR(\fIinterp, tkwin, specs, widgRec, argvName, flags\fR) +\fBTk_ConfigureValue(\fIinterp, tkwin, specs, widgRec, argvName, flags\fB)\fR .sp -\fBTk_FreeOptions\fR(\fIspecs, widgRec, display, flags\fR) -.fi +\fBTk_FreeOptions(\fIspecs, widgRec, display, flags\fB)\fR .SH ARGUMENTS .AS void *widgRec in/out .AP Tcl_Interp *interp in Interpreter to use for returning error messages. .AP Tk_Window tkwin in Window used to represent widget (needed to set up X resources). .AP "const Tk_ConfigSpec" *specs in Pointer to table specifying legal configuration options for this widget. -.AP Tcl_Size objc in -Number of arguments in \fIobjv\fR. -.AP "Tcl_Obj *const *" objv in +.AP int argc in +Number of arguments in \fIargv\fR. +.AP "const char" **argv in Command-line options for configuring widget. .AP char *widgRec in/out Points to widget record structure. Fields in this structure get modified by \fBTk_ConfigureWidget\fR to hold configuration information. .AP int flags in @@ -61,12 +60,12 @@ Display containing widget whose record is being freed; needed in order to free up resources. .BE .SH DESCRIPTION .PP -Note that \fBTk_ConfigureWidget\fR should be replaced with the new -\fBTcl_Obj\fR based API, \fBTk_SetOptions\fR. The old interface is +Note: \fBTk_ConfigureWidget\fR should be replaced with the new +\fBTcl_Obj\fR based API \fBTk_SetOptions\fR. The old interface is retained for backward compatibility. .PP \fBTk_ConfigureWidget\fR is called to configure various aspects of a widget, such as colors, fonts, border width, etc. It is intended as a convenience procedure to reduce the amount @@ -74,20 +73,20 @@ handle configuration information. It is typically invoked when widgets are created, and again when the \fBconfigure\fR command is invoked for a widget. Although intended primarily for widgets, \fBTk_ConfigureWidget\fR -can be used in other situations where \fIobjc-objv\fR information +can be used in other situations where \fIargc-argv\fR information is to be used to fill in a record structure, such as configuring graphical elements for a canvas widget or entries of a menu. .PP \fBTk_ConfigureWidget\fR processes a table specifying the configuration options that are supported -(\fIspecs\fR) and a collection of command-line arguments (\fIobjc\fR and -\fIobjv\fR) to fill in fields of a record (\fIwidgRec\fR). +(\fIspecs\fR) and a collection of command-line arguments (\fIargc\fR and +\fIargv\fR) to fill in fields of a record (\fIwidgRec\fR). It uses the option database and defaults specified in \fIspecs\fR -to fill in fields of \fIwidgRec\fR that are not specified in \fIobjv\fR. +to fill in fields of \fIwidgRec\fR that are not specified in \fIargv\fR. \fBTk_ConfigureWidget\fR normally returns the value \fBTCL_OK\fR; in this case it does not modify \fIinterp\fR. If an error occurs then \fBTCL_ERROR\fR is returned and \fBTk_ConfigureWidget\fR will leave an error message in interpreter \fIinterp\fR's result in the standard Tcl @@ -119,40 +118,40 @@ value of the option (more on this below). The \fIargvName\fR field is a string such as .QW \-font or .QW \-bg , -which is compared with the values in \fIobjv\fR (if \fIargvName\fR is +which is compared with the values in \fIargv\fR (if \fIargvName\fR is NULL it means this is a grouped entry; see \fBGROUPED ENTRIES\fR below). The \fIdbName\fR and \fIdbClass\fR fields are used to look up a value for this option in the option database. The \fIdefValue\fR field specifies a default value for this configuration option if no -value is specified in either \fIobjv\fR or the option database. +value is specified in either \fIargv\fR or the option database. \fIOffset\fR indicates where in \fIwidgRec\fR to store information about this option, and \fIspecFlags\fR contains additional information to control the processing of this configuration option (see FLAGS below). The last field, \fIcustomPtr\fR, is only used if \fItype\fR is \fBTK_CONFIG_CUSTOM\fR; see CUSTOM OPTION TYPES below. .PP -\fBTk_ConfigureWidget\fR first processes \fIobjv\fR to see which +\fBTk_ConfigureWidget\fR first processes \fIargv\fR to see which (if any) configuration options are specified there. \fIArgv\fR must contain an even number of fields; the first of each pair of fields must match the \fIargvName\fR of some entry in \fIspecs\fR (unique abbreviations are acceptable), and the second field of the pair contains the value for that configuration option. If there are entries in \fIspec\fR for which -there were no matching entries in \fIobjv\fR, +there were no matching entries in \fIargv\fR, \fBTk_ConfigureWidget\fR uses the \fIdbName\fR and \fIdbClass\fR fields of the \fIspecs\fR entry to probe the option database; if a value is found, then it is used as the value for the option. Finally, if no entry is found in the option database, the \fIdefValue\fR field of the \fIspecs\fR entry is used as the value for the configuration option. If the \fIdefValue\fR is NULL, or if the \fBTK_CONFIG_DONT_SET_DEFAULT\fR bit is set in \fIflags\fR, then there is no default value and this \fIspecs\fR entry -will be ignored if no value is specified in \fIobjv\fR or the +will be ignored if no value is specified in \fIargv\fR or the option database. .PP Once a string value has been determined for a configuration option, \fBTk_ConfigureWidget\fR translates the string value into a more useful form, such as a color if \fItype\fR is \fBTK_CONFIG_COLOR\fR or an integer @@ -170,11 +169,10 @@ The \fItype\fR field of each entry in \fIspecs\fR determines what to do with the string value of that configuration option. The legal values for \fItype\fR, and the corresponding actions, are: .TP \fBTK_CONFIG_ACTIVE_CURSOR\fR -. The value must be an ASCII string identifying a cursor in a form suitable for passing to \fBTk_GetCursor\fR. The value is converted to a \fBTk_Cursor\fR by calling \fBTk_GetCursor\fR and the result is stored in the target. @@ -185,18 +183,16 @@ active cursor will be set to \fBNone\fR. If the previous value of the target was not \fBNone\fR, then it is freed by passing it to \fBTk_FreeCursor\fR. .TP \fBTK_CONFIG_ANCHOR\fR -. The value must be an ASCII string identifying an anchor point in one of the ways accepted by \fBTk_GetAnchor\fR. The string is converted to a \fBTk_Anchor\fR by calling \fBTk_GetAnchor\fR and the result is stored in the target. .TP \fBTK_CONFIG_BITMAP\fR -. The value must be an ASCII string identifying a bitmap in a form suitable for passing to \fBTk_GetBitmap\fR. The value is converted to a \fBPixmap\fR by calling \fBTk_GetBitmap\fR and the result is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR then the value @@ -203,11 +199,10 @@ may be an empty string, in which case the target is set to \fBNone\fR. If the previous value of the target was not \fBNone\fR, then it is freed by passing it to \fBTk_FreeBitmap\fR. .TP \fBTK_CONFIG_BOOLEAN\fR -. The value must be an ASCII string specifying a boolean value. Any of the values .QW true , .QW yes , .QW on , @@ -223,11 +218,10 @@ or an abbreviation of one of these values, means false. The target is expected to be an integer; for true values it will be set to 1 and for false values it will be set to 0. .TP \fBTK_CONFIG_BORDER\fR -. The value must be an ASCII string identifying a border color in a form suitable for passing to \fBTk_Get3DBorder\fR. The value is converted to a (\fBTk_3DBorder *\fR) by calling \fBTk_Get3DBorder\fR and the result is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR then the value @@ -234,20 +228,18 @@ may be an empty string, in which case the target will be set to NULL. If the previous value of the target was not NULL, then it is freed by passing it to \fBTk_Free3DBorder\fR. .TP \fBTK_CONFIG_CAP_STYLE\fR -. The value must be an ASCII string identifying a cap style in one of the ways accepted by \fBTk_GetCapStyle\fR. The string is converted to an integer value corresponding to the cap style by calling \fBTk_GetCapStyle\fR and the result is stored in the target. .TP \fBTK_CONFIG_COLOR\fR -. The value must be an ASCII string identifying a color in a form suitable for passing to \fBTk_GetColor\fR. The value is converted to an (\fBXColor *\fR) by calling \fBTk_GetColor\fR and the result is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR then the value @@ -254,36 +246,31 @@ may be an empty string, in which case the target will be set to \fBNone\fR. If the previous value of the target was not NULL, then it is freed by passing it to \fBTk_FreeColor\fR. .TP \fBTK_CONFIG_CURSOR\fR -. This option is identical to \fBTK_CONFIG_ACTIVE_CURSOR\fR except that the new cursor is not made the active one for \fItkwin\fR. .TP \fBTK_CONFIG_CUSTOM\fR -. This option allows applications to define new option types. The \fIcustomPtr\fR field of the entry points to a structure defining the new option type. See the section \fBCUSTOM OPTION TYPES\fR below for details. .TP \fBTK_CONFIG_DOUBLE\fR -. The value must be an ASCII floating-point number in the format accepted by \fBstrtol\fR. The string is converted to a \fBdouble\fR value, and the value is stored in the target. .TP \fBTK_CONFIG_END\fR -. Marks the end of the table. The last entry in \fIspecs\fR must have this type; all of its other fields are ignored and it will never match any arguments. .TP \fBTK_CONFIG_FONT\fR -. The value must be an ASCII string identifying a font in a form suitable for passing to \fBTk_GetFont\fR. The value is converted to a \fBTk_Font\fR by calling \fBTk_GetFont\fR and the result is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR then the value @@ -290,11 +277,10 @@ may be an empty string, in which case the target will be set to NULL. If the previous value of the target was not NULL, then it is freed by passing it to \fBTk_FreeFont\fR. .TP \fBTK_CONFIG_INT\fR -. The value must be an ASCII integer string in the format accepted by \fBstrtol\fR (e.g. .QW 0 and .QW 0x @@ -301,82 +287,74 @@ prefixes may be used to specify octal or hexadecimal numbers, respectively). The string is converted to an integer value and the integer is stored in the target. .TP \fBTK_CONFIG_JOIN_STYLE\fR -. The value must be an ASCII string identifying a join style in one of the ways accepted by \fBTk_GetJoinStyle\fR. The string is converted to an integer value corresponding to the join style by calling \fBTk_GetJoinStyle\fR and the result is stored in the target. .TP \fBTK_CONFIG_JUSTIFY\fR -. The value must be an ASCII string identifying a justification method in one of the ways accepted by \fBTk_GetJustify\fR. The string is converted to a \fBTk_Justify\fR by calling \fBTk_GetJustify\fR and the result is stored in the target. .TP \fBTK_CONFIG_MM\fR -. The value must specify a screen distance in one of the forms acceptable to \fBTk_GetScreenMM\fR. The string is converted to double-precision floating-point distance in millimeters and the value is stored in the target. .TP \fBTK_CONFIG_PIXELS\fR -. The value must specify screen units in one of the forms acceptable to \fBTk_GetPixels\fR. The string is converted to an integer distance in pixels and the value is stored in the target. .TP \fBTK_CONFIG_RELIEF\fR -. The value must be an ASCII string identifying a relief in a form suitable for passing to \fBTk_GetRelief\fR. The value is converted to an integer relief value by calling \fBTk_GetRelief\fR and the result is stored in the target. .TP \fBTK_CONFIG_STRING\fR -. -A copy of the value is made by allocating memory space with +A copy +of the value is made by allocating memory space with \fBTcl_Alloc\fR and copying the value into the dynamically-allocated space. A pointer to the new string is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR then the value may be an empty string, in which case the target will be set to NULL. If the previous value of the target was not NULL, then it is freed by passing it to \fBTcl_Free\fR. .TP \fBTK_CONFIG_SYNONYM\fR -. This \fItype\fR value identifies special entries in \fIspecs\fR that -are synonyms for other entries. If an \fIobjv\fR value matches the +are synonyms for other entries. If an \fIargv\fR value matches the \fIargvName\fR of a \fBTK_CONFIG_SYNONYM\fR entry, the entry is not used directly. Instead, \fBTk_ConfigureWidget\fR searches \fIspecs\fR for another entry whose \fIargvName\fR is the same as the \fIdbName\fR field in the \fBTK_CONFIG_SYNONYM\fR entry; this new entry is used just -as if its \fIargvName\fR had matched the \fIobjv\fR value. The -synonym mechanism allows multiple \fIobjv\fR values to be used for +as if its \fIargvName\fR had matched the \fIargv\fR value. The +synonym mechanism allows multiple \fIargv\fR values to be used for a single configuration option, such as .QW \-background and .QW \-bg . .TP \fBTK_CONFIG_UID\fR -. The value is translated to a \fBTk_Uid\fR (by passing it to \fBTk_GetUid\fR). The resulting value is stored in the target. If \fBTK_CONFIG_NULL_OK\fR is specified in \fIspecFlags\fR and the value is an empty string then the target will be set to NULL. .TP \fBTK_CONFIG_WINDOW\fR -. The value must be a window path name. It is translated to a \fBTk_Window\fR token and the token is stored in the target. .SH "GROUPED ENTRIES" .PP In some cases it is useful to generate multiple resources from @@ -401,15 +379,14 @@ to provide additional control over the processing of configuration options. These values are used in three different ways as described below. .PP First, if the \fIflags\fR argument to \fBTk_ConfigureWidget\fR has -the \fBTK_CONFIG_ARGV_ONLY\fR bit set -(i.e., \fIflags\fR | \fBTK_CONFIG_ARGV_ONLY\fR != 0), +the \fBTK_CONFIG_ARGV_ONLY\fR bit set (i.e., \fIflags\fR | \fBTK_CONFIG_ARGV_ONLY\fR != 0), then the option database and \fIdefValue\fR fields are not used. In this case, if an entry in -\fIspecs\fR does not match a field in \fIobjv\fR then nothing happens: +\fIspecs\fR does not match a field in \fIargv\fR then nothing happens: the corresponding target is not modified. This feature is useful when the goal is to modify certain configuration options while leaving others in their current state, such as when a \fBconfigure\fR widget command is being processed. .PP @@ -416,23 +393,20 @@ Second, the \fIspecFlags\fR field of an entry in \fIspecs\fR may be used to control the processing of that entry. Each \fIspecFlags\fR field may consists of an OR-ed combination of the following values: .TP \fBTK_CONFIG_COLOR_ONLY\fR -. If this bit is set then the entry will only be considered if the display for \fItkwin\fR has more than one bit plane. If the display is monochromatic then this \fIspecs\fR entry will be ignored. .TP \fBTK_CONFIG_MONO_ONLY\fR -. If this bit is set then the entry will only be considered if the display for \fItkwin\fR has exactly one bit plane. If the display is not monochromatic then this \fIspecs\fR entry will be ignored. .TP \fBTK_CONFIG_NULL_OK\fR -. This bit is only relevant for some types of entries (see the descriptions of the various entry types above). If this bit is set, it indicates that an empty string value for the field is acceptable and if it occurs then the target should be set to NULL or \fBNone\fR, depending @@ -442,11 +416,10 @@ \fBNone\fR so that a window simply inherits its parent's cursor. If this bit is not set then empty strings are processed as strings, which generally results in an error. .TP \fBTK_CONFIG_DONT_SET_DEFAULT\fR -. If this bit is one, it means that the \fIdefValue\fR field of the entry should only be used for returning the default value in \fBTk_ConfigureInfo\fR. In calls to \fBTk_ConfigureWidget\fR no default will be supplied for entries with this flag set; it is assumed that the @@ -453,10 +426,18 @@ caller has already supplied a default value in the target location. This flag provides a performance optimization where it is expensive to process the default string: the client can compute the default once, save the value, and provide it before calling \fBTk_ConfigureWidget\fR. +.TP +\fBTK_CONFIG_OPTION_SPECIFIED\fR +This bit is +deprecated. It used to be set and cleared by \fBTk_ConfigureWidget\fR +so that callers could detect what entries were specified in +\fIargv\fR, but it was removed because it was inherently +thread-unsafe. Code that wishes to detect what options were specified +should use \fBTk_SetOptions\fR instead. .PP The \fBTK_CONFIG_MONO_ONLY\fR and \fBTK_CONFIG_COLOR_ONLY\fR flags are typically used to specify different default values for monochrome and color displays. This is done by creating two entries in \fIspecs\fR that are identical except for their @@ -550,11 +531,11 @@ .PP Applications can extend the built-in configuration types with additional configuration types by writing procedures to parse and print options of the a type and creating a structure pointing to those procedures: .CS -typedef struct { +typedef struct Tk_CustomOption { Tk_OptionParseProc *\fIparseProc\fR; Tk_OptionPrintProc *\fIprintProc\fR; void *\fIclientData\fR; } \fBTk_CustomOption\fR; @@ -562,17 +543,17 @@ void *\fIclientData\fR, Tcl_Interp *\fIinterp\fR, Tk_Window \fItkwin\fR, char *\fIvalue\fR, char *\fIwidgRec\fR, - Tcl_Size \fIoffset\fR); + int \fIoffset\fR); typedef const char *\fBTk_OptionPrintProc\fR( void *\fIclientData\fR, Tk_Window \fItkwin\fR, char *\fIwidgRec\fR, - Tcl_Size \fIoffset\fR, + int \fIoffset\fR, Tcl_FreeProc **\fIfreeProcPtr\fR); .CE The Tk_CustomOption structure contains three fields, which are pointers to the two procedures and a \fIclientData\fR value to be passed to those procedures when they are invoked. The \fIclientData\fR value typically Index: doc/ConfigWind.3 ================================================================== --- doc/ConfigWind.3 +++ doc/ConfigWind.3 @@ -37,11 +37,10 @@ \fBTk_SetWindowColormap\fR(\fItkwin, colormap\fR) .sp \fBTk_DefineCursor\fR(\fItkwin, cursor\fR) .sp \fBTk_UndefineCursor\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS XSetWindowAttributes borderWidth .AP Tk_Window tkwin in Token for window. .AP "unsigned int" valueMask in Index: doc/CoordToWin.3 ================================================================== --- doc/CoordToWin.3 +++ doc/CoordToWin.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp Tk_Window \fBTk_CoordsToWindow\fR(\fIrootX, rootY, tkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window tkwin .AP int rootX in X-coordinate (in root window coordinates). .AP int rootY in Index: doc/CrtCmHdlr.3 ================================================================== --- doc/CrtCmHdlr.3 +++ doc/CrtCmHdlr.3 @@ -14,11 +14,10 @@ \fB#include \fR .sp \fBTk_CreateClientMessageHandler\fR(\fIproc\fR) .sp \fBTk_DeleteClientMessageHandler\fR(\fIproc\fR) -.fi .SH ARGUMENTS .AP Tk_ClientMessageProc *proc in Procedure to invoke whenever a ClientMessage X event occurs on any display. .BE .SH DESCRIPTION Index: doc/CrtConsoleChan.3 ================================================================== --- doc/CrtConsoleChan.3 +++ doc/CrtConsoleChan.3 @@ -12,11 +12,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_InitConsoleChannels\fR(\fIinterp\fR) -.fi .SH ARGUMENTS .AS Tcl_Interp *interp in .AP Tcl_Interp *interp in Interpreter in which the console channels are created. .BE Index: doc/CrtErrHdlr.3 ================================================================== --- doc/CrtErrHdlr.3 +++ doc/CrtErrHdlr.3 @@ -16,11 +16,10 @@ .sp Tk_ErrorHandler \fBTk_CreateErrorHandler\fR(\fIdisplay, error, request, minor, proc, clientData\fR) .sp \fBTk_DeleteErrorHandler\fR(\fIhandler\fR) -.fi .SH ARGUMENTS .AS "Tk_ErrorHandler" clientData .AP Display *display in Display whose errors are to be handled. .AP int error in Index: doc/CrtGenHdlr.3 ================================================================== --- doc/CrtGenHdlr.3 +++ doc/CrtGenHdlr.3 @@ -15,11 +15,10 @@ \fB#include \fR .sp \fBTk_CreateGenericHandler\fR(\fIproc, clientData\fR) .sp \fBTk_DeleteGenericHandler\fR(\fIproc, clientData\fR) -.fi .SH ARGUMENTS .AS "Tk_GenericProc" clientData .AP Tk_GenericProc *proc in Procedure to invoke whenever any X event occurs on any display. .AP void *clientData in Index: doc/CrtImgType.3 ================================================================== --- doc/CrtImgType.3 +++ doc/CrtImgType.3 @@ -7,20 +7,21 @@ '\" .TH Tk_CreateImageType 3 8.5 Tk "Tk Library Procedures" .so man.macros .BS .SH NAME -Tk_CreateImageType, Tk_GetImageModelData \- define new kind of image +Tk_CreateImageType, Tk_GetImageModelData, Tk_InitImageArgs \- define new kind of image .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_CreateImageType\fR(\fItypePtr\fR) .sp void * \fBTk_GetImageModelData\fR(\fIinterp, name, typePtrPtr\fR) -.fi +.sp +\fBTk_InitImageArgs\fR(\fIinterp, argc, argvPtr\fR) .SH ARGUMENTS .AS "const Tk_ImageType" *typePtrPtr .AP "const Tk_ImageType" *typePtr in Structure that defines the new type of image. For Tk 8.4 and earlier this must be static: a @@ -31,10 +32,12 @@ .AP "const char" *name in Name of existing image. .AP Tk_ImageType **typePtrPtr out Points to word in which to store a pointer to type information for the given image, if it exists. +.AP int argc in +Number of arguments .AP char ***argvPtr in/out Pointer to argument list .BE .SH DESCRIPTION .PP @@ -53,11 +56,11 @@ kinds of data structures. The first data structure is a Tk_ImageType structure, which contains the name of the image type and pointers to five procedures provided by the image manager to deal with images of this type: .CS -typedef struct { +typedef struct Tk_ImageType { const char *\fIname\fR; Tk_ImageCreateProc *\fIcreateProc\fR; Tk_ImageGetProc *\fIgetProc\fR; Tk_ImageDisplayProc *\fIdisplayProc\fR; Tk_ImageFreeProc *\fIfreeProc\fR; @@ -236,9 +239,45 @@ passed to \fBTk_CreateImageType\fR when the image type was registered) and the return value is the clientData value returned by the \fIcreateProc\fR when the image was created (this is typically a pointer to the image model data structure). If no such image exists then NULL is returned and NULL is stored at \fI*typePtrPtr\fR. +.SH "LEGACY INTERFACE SUPPORT" +.PP +In Tk 8.2 and earlier, the definition of \fBTk_ImageCreateProc\fR +was incompatibly different, with the following prototype: +.CS +typedef int \fBTk_ImageCreateProc\fR( + Tcl_Interp *\fIinterp\fR, + char *\fIname\fR, + int \fIargc\fR, + char **\fIargv\fR, + Tk_ImageType *\fItypePtr\fR, + Tk_ImageModel \fImodel\fR, + void **\fImodelDataPtr\fR); +.CE +Legacy programs and libraries dating from those days may still +contain code that defines extended Tk image types using the old +interface. The Tk header file will still support this legacy +interface if the code is compiled with the macro \fBUSE_OLD_IMAGE\fR +defined. +.PP +When the \fBUSE_OLD_IMAGE\fR legacy support is enabled, you may +see the routine \fBTk_InitImageArgs\fR in use. This was a migration +tool used to create stub-enabled extensions that could be loaded +into interps containing all versions of Tk 8.1 and later. Tk 8.5 no longer +provides this routine, but uses a macro to convert any attempted +calls of this routine into an empty comment. Any stub-enabled +extension providing an extended image type via the legacy interface +that is compiled against Tk 8.5 headers and linked against the +Tk 8.5 stub library will produce a file that can be loaded only +into interps with Tk 8.5 or later; that is, the normal stub-compatibility +rules. If a developer needs to generate from such code a file +that is loadable into interps with Tk 8.4 or earlier, they must +use Tk 8.4 headers and stub libraries to do so. +.PP +Any new code written today should not make use of the legacy +interfaces. Expect their support to go away in Tk 9. .SH "SEE ALSO" Tk_ImageChanged, Tk_GetImage, Tk_FreeImage, Tk_RedrawImage, Tk_SizeOfImage .SH KEYWORDS image manager, image type, instance, model Index: doc/CrtItemType.3 ================================================================== --- doc/CrtItemType.3 +++ doc/CrtItemType.3 @@ -15,16 +15,14 @@ .sp \fBTk_CreateItemType\fR(\fItypePtr\fR) .sp Tk_ItemType * \fBTk_GetItemTypes\fR() -.fi .SH ARGUMENTS .AS Tk_ItemType *typePtr .AP Tk_ItemType *typePtr in Structure that defines the new type of canvas item. -Note that this is not \fIconst\fR; Tk may write to these structures. .BE .SH INTRODUCTION .PP \fBTk_CreateItemType\fR is invoked to define a new kind of canvas item described by the \fItypePtr\fR argument. @@ -71,11 +69,11 @@ const Tk_ConfigSpec *\fIconfigSpecs\fR; Tk_ItemConfigureProc *\fIconfigProc\fR; Tk_ItemCoordProc *\fIcoordProc\fR; Tk_ItemDeleteProc *\fIdeleteProc\fR; Tk_ItemDisplayProc *\fIdisplayProc\fR; - int \fIflags\fR; + int \fIalwaysRedraw\fR; Tk_ItemPointProc *\fIpointProc\fR; Tk_ItemAreaProc *\fIareaProc\fR; Tk_ItemPostscriptProc *\fIpostscriptProc\fR; Tk_ItemScaleProc *\fIscaleProc\fR; Tk_ItemTranslateProc *\fItranslateProc\fR; @@ -82,11 +80,11 @@ Tk_ItemIndexProc *\fIindexProc\fR; Tk_ItemCursorProc *\fIicursorProc\fR; Tk_ItemSelectionProc *\fIselectionProc\fR; Tk_ItemInsertProc *\fIinsertProc\fR; Tk_ItemDCharsProc *\fIdCharsProc\fR; - struct Tk_ItemType *\fInextPtr\fR; + Tk_ItemType *\fInextPtr\fR; .VS "8.7, TIP164" Tk_ItemRotateProc *\fIrotateProc\fR; .VE "8.7, TIP164" } \fBTk_ItemType\fR; .CE @@ -113,11 +111,11 @@ A type manager must define its item records with a Tk_Item as the first field. For example, the item record for bitmap items is defined as follows: .PP .CS -typedef struct { +typedef struct BitmapItem { Tk_Item \fIheader\fR; double \fIx\fR, \fIy\fR; Tk_Anchor \fIanchor\fR; Pixmap \fIbitmap\fR; XColor *\fIfgColor\fR; @@ -169,20 +167,28 @@ type. If there already existed an item type by this name then the new item type replaces the old one. .SS "FLAGS (IN ALWAYSREDRAW)" .PP -The \fItypePtr\->flags\fR field +The \fItypePtr\->alwaysRedraw\fR field (so named for historic reasons) contains a collection of flag bits that modify how the canvas core interacts with the item. The following bits are defined: .TP \fBTK_ALWAYS_REDRAW\fR . Indicates that the item should always be redrawn when any part of the canvas is redrawn, rather than only when the bounding box of the item overlaps the area being redrawn. This is used by window items, for example, which need to unmap subwindows that are not on the screen. +.TP +\fBTK_CONFIG_OBJS\fR +. +Indicates that operations which would otherwise take a string (or array of +strings) actually take a Tcl_Obj reference (or an array of such references). +The operations to which this applies are the \fIconfigProc\fR, the +\fIcoordProc\fR, the \fIcreateProc\fR, the \fIindexProc\fR and the +\fIinsertProc\fR. .TP \fBTK_MOVABLE_POINTS\fR .VS 8.6 Indicates that the item supports the \fIdCharsProc\fR, \fIindexProc\fR and \fIinsertProc\fR with the same semantics as Tk's built-in line and polygon @@ -221,10 +227,13 @@ Tk has already initialized the item's header (the first \fBsizeof(Tk_ItemType)\fR bytes). The \fIobjc\fR and \fIobjv\fR arguments describe all of the arguments to the \fBcreate\fR command after the \fItype\fR argument. +Note that if \fBTK_CONFIG_OBJS\fR is not set in the +\fItypePtr\->alwaysRedraw\fR field, the \fIobjv\fR parameter will actually +contain a pointer to an array of constant strings. For example, in the widget command: .PP .CS \fB\&.c create rectangle 10 20 50 50 \-fill black\fR .CE @@ -250,12 +259,11 @@ and \fItypePtr\->configProc\fR, but Tk also uses it directly to retrieve option information in the \fBitemcget\fR and \fBitemconfigure\fR widget commands. \fItypePtr\->configSpecs\fR must point to the configuration table for this type. -.PP -Note that Tk provides a custom option type \fBtk_CanvasTagsOption\fR +Note: Tk provides a custom option type \fBtk_CanvasTagsOption\fR for implementing the \fB\-tags\fR option; see an existing type manager for an example of how to use it in \fIconfigSpecs\fR. .SS CONFIGPROC .PP \fItypePtr\->configProc\fR is called by Tk whenever the @@ -275,10 +283,13 @@ .PP The \fIinterp\fR argument identifies the interpreter in which the widget command was invoked, \fIcanvas\fR is a handle for the canvas widget, and \fIitemPtr\fR is a pointer to the item being configured. \fIobjc\fR and \fIobjv\fR contain the configuration options. +Note that if \fBTK_CONFIG_OBJS\fR is not set in the +\fItypePtr\->alwaysRedraw\fR field, the \fIobjv\fR parameter will actually +contain a pointer to an array of constant strings. For example, if the following command is invoked: .PP .CS \fB\&.c itemconfigure 2 \-fill red \-outline black\fR .CE @@ -311,10 +322,13 @@ .CE .PP The arguments \fIinterp\fR, \fIcanvas\fR, and \fIitemPtr\fR all have the standard meanings, and \fIobjc\fR and \fIobjv\fR describe the coordinate arguments. +Note that if \fBTK_CONFIG_OBJS\fR is not set in the +\fItypePtr\->alwaysRedraw\fR field, the \fIobjv\fR parameter will actually +contain a pointer to an array of constant strings. For example, if the following widget command is invoked: .PP .CS \fB\&.c coords 2 30 90\fR .CE @@ -385,13 +399,13 @@ to transform coordinates from those of the canvas to those of \fIdst\fR. .PP Normally an item's \fIdisplayProc\fR is only invoked if the item overlaps the area being displayed. -However, if bit zero of \fItypePtr\->flags\fR is 1, +However, if bit zero of \fItypePtr\->alwaysRedraw\fR is 1, (i.e.\| -.QW "\fItypePtr\->flags & 1 == 1\fR" ) +.QW "\fItypePtr\->alwaysRedraw & 1 == 1\fR" ) then \fIdisplayProc\fR is invoked during every redisplay operation, even if the item does not overlap the area of redisplay; this is useful for cases such as window items, where the subwindow needs to be unmapped when it is off the screen. .SS POINTPROC @@ -561,12 +575,12 @@ The item should adjust the coordinates of its control points so that where they used to have coordinates \fIx\fR and \fIy\fR, they will have new coordinates \fIx\(fm\fR and \fIy\(fm\fR, where .PP .CS -\fIrelX\fR = \fIx\fR \(mi \fIoriginX\fR -\fIrelY\fR = \fIy\fR \(mi \fIoriginY\fR +\fIrelX\fR = \fIx\fR - \fIoriginX\fR +\fIrelY\fR = \fIy\fR - \fIoriginY\fR \fIx\(fm\fR = \fIoriginX\fR + \fIrelX\fR \(mu cos(\fIangleRad\fR) + \fIrelY\fR \(mu sin(\fIangleRad\fR) \fIy\(fm\fR = \fIoriginY\fR \(mi \fIrelX\fR \(mu sin(\fIangleRad\fR) + \fIrelY\fR \(mu cos(\fIangleRad\fR) .CE .PP The control points for an item are not necessarily the coordinates provided to @@ -600,10 +614,13 @@ The \fIinterp\fR, \fIcanvas\fR, and \fIitemPtr\fR arguments all have the usual meaning. \fIindexObj\fR contains a textual description of an index, and \fIindexPtr\fR points to an integer value that should be filled in with a numerical index. +Note that if \fBTK_CONFIG_OBJS\fR is not set in the +\fItypePtr\->alwaysRedraw\fR field, the \fIindexObj\fR parameter will +actually contain a pointer to a constant string. It is up to the type manager to decide what forms of index are supported (e.g., numbers, \fBinsert\fR, \fBsel.first\fR, \fBend\fR, etc.). \fIindexProc\fR should return a Tcl completion code and set the interpreter result in the event of an error. @@ -683,10 +700,13 @@ \fIcanvas\fR and \fIitemPtr\fR have the usual meanings. \fIindex\fR is an index into the item's text, as returned by a previous call to \fItypePtr\->insertProc\fR, and \fIobj\fR contains new text to insert just before the character given by \fIindex\fR. +Note that if \fBTK_CONFIG_OBJS\fR is not set in the +\fItypePtr\->alwaysRedraw\fR field, the \fIobj\fR parameter will +actually contain a pointer to a constant string to be inserted. If the item supports modification of the coordinates list by this .PP The type manager should insert the text and recompute the bounding box in the item's header. .SS DCHARSPROC Index: doc/CrtPhImgFmt.3 ================================================================== --- doc/CrtPhImgFmt.3 +++ doc/CrtPhImgFmt.3 @@ -56,11 +56,11 @@ name of the image file format and pointers to six procedures provided by the handler to deal with files and strings in this format. The Tk_PhotoImageFormatVersion3 structure contains the following fields: .VS 8.7 .CS -typedef struct { +typedef struct Tk_PhotoImageFormatVersion3 { const char *\fIname\fR; Tk_ImageFileMatchProcVersion3 *\fIfileMatchProc\fR; Tk_ImageStringMatchProcVersion3 *\fIstringMatchProc\fR; Tk_ImageFileReadProcVersion3 *\fIfileReadProc\fR; Tk_ImageStringReadProcVersion3 *\fIstringReadProc\fR; @@ -149,11 +149,11 @@ .PP \fIformatPtr->fileReadProc\fR provides the address of a procedure for Tk to call to read data from an image file into a photo image. \fIformatPtr->fileReadProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageFileReadProcVersion3\fR( +typedef int \fBTk_ImageFileReadProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Channel \fIchan\fR, const char *\fIfileName\fR, Tcl_Obj *\fIformat\fR, Tcl_Obj *\fImetadataIn\fR, @@ -182,11 +182,11 @@ .PP \fIformatPtr->stringReadProc\fR provides the address of a procedure for Tk to call to read data from a string into a photo image. \fIformatPtr->stringReadProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageStringReadProcVersion3\fR( +typedef int \fBTk_ImageStringReadProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIdata\fR, Tcl_Obj *\fIformat\fR, Tcl_Obj *\fImetadataIn\fR, PhotoHandle \fIimageHandle\fR, @@ -214,11 +214,11 @@ .PP \fIformatPtr->fileWriteProc\fR provides the address of a procedure for Tk to call to write data from a photo image to a file. \fIformatPtr->fileWriteProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageFileWriteProcVersion3\fR( +typedef int \fBTk_ImageFileWriteProc\fR( Tcl_Interp *\fIinterp\fR, const char *\fIfileName\fR, Tcl_Obj *\fIformat\fR, Tcl_Obj *\fImetadataIn\fR, Tk_PhotoImageBlock *\fIblockPtr\fR); @@ -243,11 +243,11 @@ \fIformatPtr->stringWriteProc\fR provides the address of a procedure for Tk to call to translate image data from a photo image into a string. \fIformatPtr->stringWriteProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageStringWriteProcVersion3\fR( +typedef int \fBTk_ImageStringWriteProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIformat\fR, Tcl_Obj *\fImetadataIn\fR, Tk_PhotoImageBlock *\fIblockPtr\fR); .CE @@ -273,26 +273,30 @@ contain additional information like image resolution or comments. Image metadata may be read from image files and passed to the script level by including dictionary keys into the metadata property of the image. Image metadata may be written to image data on file write or image data output. +.PP .PP .SS "METADATA KEYS" .PP The metadata may contain any key. A driver will handle only a set of dictionary keys documented in the documentation. See the photo image manual page for currently defined keys for the system drivers. .PP The following rules may give guidance to name metadata keys: -.IP \(bu -Abbreviations are in upper case. -.IP \(bu +.RS +Abreviation are in upper case +.RE +.RS Words are in US English in small case (except proper nouns) -.IP \(bu +.RE +.RS Vertical DPI is expressed as DPI/aspect. The reason is, that some image formats may feature aspect and no resolution value. +.RE .SS "METADATA INPUT" .PP Each driver function gets a Tcl object pointer \fBmetadataIn\fR as parameter. This parameter serves to input a metadata dict to the driver function. @@ -300,24 +304,21 @@ .PP A typical driver code snipped to check for a metadata key is: .CS if (NULL != metadataIn) { Tcl_Obj *itemData; - Tcl_DictObjGet(interp, metadataIn, Tcl_NewStringObj("Comment",-1), - &itemData)); - // use value reference in itemData -} + Tcl_DictObjGet(interp, metadataIn, Tcl_NewStringObj("Comment",-1), &itemData)); .CE .PP -The \fB\-metadata\fR command option data of the following commands is passed +The \-metadata command option data of the following commands is passed to the driver: \fBimage create\fR, \fBconfigure\fR, \fBput\fR, \fBread\fR, \fBdata\fR and \fBwrite\fR. -If no \fB\-metadata\fR command option available or not given, the metadata +If no \-metadata command option available or not given, the metadata property of the image is passed to the driver using the following commands: \fBcget\fR, \fBconfigure\fR, \fBdata\fR and \fBwrite\fR. .PP -Note that setting the \fB\-metadata\fR property of an image using +Note that setting the \-metadata property of an image using \fBconfigure\fR without any other option does not invoke any driver function. .PP The metadata dictionary is not suited to pass options to the driver related to the bitmap representation, as the image bitmap is not @@ -325,28 +326,26 @@ this purpose. .PP .SS "METADATA OUTPUT" .PP The image match and read driver functions may set keys in a prepared -metadata dict to return them. -Those functions get a Tcl object pointer \fImetadataOut\fR as +matadata dict to return them. +Those functions get a Tcl object pointer \fBmetadataOut\fR as parameter. -\fImetadataOut\fR may be NULL to indicate, that no metadata return is -required (\fBput\fR, \fBread\fR subcommands). The variable pointed to -by \fImetadataOut\fR is initialized to an empty unshared dict object if +metadataOut may be NULL to indicate, that no metadata return is +attended(\fBput\fR, \fBread\fR subcommands). +\fBmetadataOut\fR is initialized to an empty unshared dict object if metadata return is attended (\fBimage create\fR command, \fBconfigure\fR subcommand). The driver may set dict keys in this object to return metadata. If a match function succeeds, the metadataOut pointer is passed to the corresponding read function. .PP A sample driver code snippet is: .CS if (NULL != metadataOut) { - Tcl_DictObjPut(NULL, metadataOut, Tcl_NewStringObj("XMP",-1), - Tcl_NewStringObj(xmpMetadata)); -} + Tcl_DictObjPut(NULL, metadataOut, Tcl_NewStringObj("XMP",-1), Tcl_NewStringObj(xmpMetadata); .CE .PP The metadata keys returned by the driver are merged into the present metadata property of the image or into the metadata dict given by the \fB\-metadata\fR command line option. @@ -375,11 +374,11 @@ .SS DESCRIPTION A driver using the version 2 interface invokes \fBTk_CreatePhotoImageFormat\fR for driver registration. The Tk_PhotoImageFormat structure contains the following fields: .CS -typedef struct { +typedef struct Tk_PhotoImageFormat { const char *\fIname\fR; Tk_ImageFileMatchProc *\fIfileMatchProc\fR; Tk_ImageStringMatchProc *\fIstringMatchProc\fR; Tk_ImageFileReadProc *\fIfileReadProc\fR; Tk_ImageStringReadProc *\fIstringReadProc\fR; @@ -456,9 +455,48 @@ typedef int \fBTk_ImageStringWriteProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIformat\fR, Tk_PhotoImageBlock *\fIblockPtr\fR); .CE +.PP +.SH "LEGACY INTERFACE SUPPORT" +.PP +In Tk 8.2 and earlier, the definition of all the function pointer +types stored in fields of a \fBTk_PhotoImageFormat\fR struct were +incompatibly different. Legacy programs and libraries dating from +those days may still contain code that defines extended Tk photo image +formats using the old interface. The Tk header file will still support +this legacy interface if the code is compiled with the +macro \fBUSE_OLD_IMAGE\fR defined. Alternatively, the legacy interfaces +are used if the first character of \fIformatPtr->name\fR is an +uppercase ASCII character (\fBA\fR-\fBZ\fR), and explicit casts +are used to forgive the type mismatch. For example, +.CS +static Tk_PhotoImageFormat myFormat = { + "MyFormat", + (Tk_ImageFileMatchProc *) FileMatch, + NULL, + (Tk_ImageFileReadProc *) FileRead, + NULL, + NULL, + NULL +}; +.CE +would define a minimal \fBTk_PhotoImageFormat\fR that operates provide +only file reading capability, where \fBFileMatch\fR and \fBFileRead\fR +are written according to the legacy interfaces of Tk 8.2 or earlier. +.PP +Any stub-enabled extension providing an extended photo image format +via the legacy interface enabled by the \fBUSE_OLD_IMAGE\fR macro +that is compiled against Tk 8.5 headers and linked against the +Tk 8.5 stub library will produce a file that can be loaded only +into interps with Tk 8.5 or later; that is, the normal stub-compatibility +rules. If a developer needs to generate from such code a file +that is loadable into interps with Tk 8.4 or earlier, they must +use Tk 8.4 headers and stub libraries to do so. +.PP +Any new code written today should not make use of the legacy +interfaces. Expect their support to go away in Tk 9. .SH "SEE ALSO" Tk_FindPhoto, Tk_PhotoPutBlock .SH KEYWORDS photo image, image file Index: doc/CrtSelHdlr.3 ================================================================== --- doc/CrtSelHdlr.3 +++ doc/CrtSelHdlr.3 @@ -15,11 +15,10 @@ \fB#include \fR .sp \fBTk_CreateSelHandler\fR(\fItkwin, selection, target, proc, clientData, format\fR) .sp \fBTk_DeleteSelHandler\fR(\fItkwin, selection, target\fR) -.fi .SH ARGUMENTS .AS Tk_SelectionProc clientData .AP Tk_Window tkwin in Window for which \fIproc\fR will provide selection information. .AP Atom selection in @@ -53,15 +52,15 @@ the selection. The most common form is STRING. .PP \fIProc\fR should have arguments and result that match the type \fBTk_SelectionProc\fR: .CS -typedef Tcl_Size \fBTk_SelectionProc\fR( +typedef int \fBTk_SelectionProc\fR( void *\fIclientData\fR, - Tcl_Size \fIoffset\fR, + int \fIoffset\fR, char *\fIbuffer\fR, - Tcl_Size \fImaxBytes\fR); + int \fImaxBytes\fR); .CE The \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fR argument given to \fBTk_CreateSelHandler\fR. Typically, \fIclientData\fR points to a data structure containing application-specific information that is Index: doc/CrtWindow.3 ================================================================== --- doc/CrtWindow.3 +++ doc/CrtWindow.3 @@ -24,11 +24,10 @@ \fBTk_CreateWindowFromPath\fR(\fIinterp, tkwin, pathName, topLevScreen\fR) .sp \fBTk_DestroyWindow\fR(\fItkwin\fR) .sp \fBTk_MakeWindowExist\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tcl_Interp *topLevScreen .AP Tcl_Interp *interp out Tcl interpreter to use for error reporting. If no error occurs, then \fI*interp\fR is not modified. Index: doc/DeleteImg.3 ================================================================== --- doc/DeleteImg.3 +++ doc/DeleteImg.3 @@ -12,11 +12,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_DeleteImage\fR(\fIinterp, name\fR) -.fi .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Interpreter for which the image was created. .AP "const char" *name in Index: doc/DrawFocHlt.3 ================================================================== --- doc/DrawFocHlt.3 +++ doc/DrawFocHlt.3 @@ -11,12 +11,11 @@ Tk_DrawFocusHighlight \- draw the traversal highlight ring for a widget .SH SYNOPSIS .nf \fB#include \fR .sp -\fBTk_DrawFocusHighlight\fR(\fItkwin, gc, width, drawable\fR) -.fi +\fBTk_DrawFocusHighlight(\fItkwin, gc, width, drawable\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *joinPtr .AP Tk_Window tkwin in Window for which the highlight is being drawn. Used to retrieve the window's dimensions, among other things. Index: doc/EventHndlr.3 ================================================================== --- doc/EventHndlr.3 +++ doc/EventHndlr.3 @@ -19,11 +19,10 @@ \fBTk_DeleteEventHandler\fR(\fItkwin, mask, proc, clientData\fR) .sp \fBTk_GetButtonMask\fR(\fIbutton\fR) .sp \fBTk_SendVirtualEvent\fR(\fItkwin, eventName, detail\fR) -.fi .SH ARGUMENTS .AS "unsigned long" clientData .AP unsigned button in Button number. .AP "const char" *eventName in Index: doc/FindPhoto.3 ================================================================== --- doc/FindPhoto.3 +++ doc/FindPhoto.3 @@ -30,20 +30,21 @@ zoomX, zoomY, subsampleX, subsampleY, compRule\fR) .sp int \fBTk_PhotoGetImage\fR(\fIhandle, blockPtr\fR) .sp +void \fBTk_PhotoBlank\fR(\fIhandle\fR) .sp int \fBTk_PhotoExpand\fR(\fIinterp, handle, width, height\fR) .sp +void \fBTk_PhotoGetSize\fR(\fIhandle, widthPtr, heightPtr\fR) .sp int \fBTk_PhotoSetSize\fR(\fIinterp. handle, width, height\fR) -.fi .SH ARGUMENTS .AS Tk_PhotoImageBlock window_path .AP Tcl_Interp *interp in Interpreter in which image was created and in which error reporting is to be done. Index: doc/FontId.3 ================================================================== --- doc/FontId.3 +++ doc/FontId.3 @@ -13,17 +13,16 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Font -\fBTk_FontId\fR(\fItkfont\fR) +\fBTk_FontId(\fItkfont\fB)\fR .sp -\fBTk_GetFontMetrics\fR(\fItkfont, fmPtr\fR) +\fBTk_GetFontMetrics(\fItkfont, fmPtr\fB)\fR .sp int -\fBTk_PostscriptFontName\fR(\fItkfont, dsPtr\fR) -.fi +\fBTk_PostscriptFontName(\fItkfont, dsPtr\fB)\fR .SH ARGUMENTS .AS Tk_FontMetrics *dsPtr .AP Tk_Font tkfont in Opaque font token being queried. Must have been returned by a previous call to \fBTk_GetFont\fR. @@ -68,11 +67,11 @@ .SH "DATA STRUCTURES" .PP The \fBTk_FontMetrics\fR data structure is used by \fBTk_GetFontMetrics\fR to return information about a font and is defined as follows: .CS -typedef struct { +typedef struct Tk_FontMetrics { int \fIascent\fR; int \fIdescent\fR; int \fIlinespace\fR; } \fBTk_FontMetrics\fR; .CE ADDED doc/FreeXId.3 Index: doc/FreeXId.3 ================================================================== --- /dev/null +++ doc/FreeXId.3 @@ -0,0 +1,30 @@ +'\" +'\" Copyright (c) 1990 The Regents of the University of California. +'\" Copyright (c) 1994-1996 Sun Microsystems, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +.TH Tk_FreeXId 3 4.0 Tk "Tk Library Procedures" +.so man.macros +.BS +.SH NAME +Tk_FreeXId \- make X resource identifier available for reuse +.SH SYNOPSIS +.nf +\fB#include \fR +.sp +\fBTk_FreeXId(\fIdisplay, id\fB)\fR +.SH ARGUMENTS +.AS Display *display out +.AP Display *display in +Display for which \fIid\fR was allocated. +.AP XID id in +Identifier of X resource (window, font, pixmap, cursor, graphics +context, or colormap) that is no longer in use. +.BE +.SH DESCRIPTION +.PP +This function is deprecated, it doesn't do anything since 2008-08-19. +.SH KEYWORDS +resource identifier Index: doc/GeomReq.3 ================================================================== --- doc/GeomReq.3 +++ doc/GeomReq.3 @@ -19,11 +19,10 @@ \fBTk_SetMinimumRequestSize\fR(\fItkwin, minWidth, minHeight\fR) .sp \fBTk_SetInternalBorder\fR(\fItkwin, width\fR) .sp \fBTk_SetInternalBorderEx\fR(\fItkwin, left, right, top, bottom\fR) -.fi .SH ARGUMENTS .AS baseHeight clientData .AP Tk_Window tkwin in Window for which geometry is being requested. .AP int reqWidth in @@ -35,21 +34,17 @@ .AP int minHeight in Desired minimum requested height for \fItkwin\fR, in pixel units. .AP int width in Space to leave for internal border for \fItkwin\fR, in pixel units. .AP int left in -Space to leave for left side of internal border for \fItkwin\fR, -in pixel units. +Space to leave for left side of internal border for \fItkwin\fR, in pixel units. .AP int right in -Space to leave for right side of internal border for \fItkwin\fR, -in pixel units. +Space to leave for right side of internal border for \fItkwin\fR, in pixel units. .AP int top in -Space to leave for top side of internal border for \fItkwin\fR, -in pixel units. +Space to leave for top side of internal border for \fItkwin\fR, in pixel units. .AP int bottom in -Space to leave for bottom side of internal border for \fItkwin\fR, -in pixel units. +Space to leave for bottom side of internal border for \fItkwin\fR, in pixel units. .BE .SH DESCRIPTION .PP \fBTk_GeometryRequest\fR is called by widget code to indicate its preference for the dimensions of a particular window. The arguments Index: doc/GetAnchor.3 ================================================================== --- doc/GetAnchor.3 +++ doc/GetAnchor.3 @@ -13,18 +13,17 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetAnchorFromObj\fR(\fIinterp, objPtr, anchorPtr\fR) +\fBTk_GetAnchorFromObj(\fIinterp, objPtr, anchorPtr\fB)\fR .sp int -\fBTk_GetAnchor\fR(\fIinterp, string, anchorPtr\fR) +\fBTk_GetAnchor(\fIinterp, string, anchorPtr\fB)\fR .sp const char * -\fBTk_NameOfAnchor\fR(\fIanchor\fR) -.fi +\fBTk_NameOfAnchor(\fIanchor\fB)\fR .SH ARGUMENTS .AS "Tk_Anchor" *anchorPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting, or NULL. .AP Tcl_Obj *objPtr in/out Index: doc/GetBitmap.3 ================================================================== --- doc/GetBitmap.3 +++ doc/GetBitmap.3 @@ -13,30 +13,29 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Pixmap -\fBTk_AllocBitmapFromObj\fR(\fIinterp, tkwin, objPtr\fR) +\fBTk_AllocBitmapFromObj(\fIinterp, tkwin, objPtr\fB)\fR .sp Pixmap -\fBTk_GetBitmap\fR(\fIinterp, tkwin, info\fR) +\fBTk_GetBitmap(\fIinterp, tkwin, info\fB)\fR .sp Pixmap -\fBTk_GetBitmapFromObj\fR(\fItkwin, objPtr\fR) +\fBTk_GetBitmapFromObj(\fItkwin, objPtr\fB)\fR .sp int -\fBTk_DefineBitmap\fR(\fIinterp, name, source, width, height\fR) +\fBTk_DefineBitmap(\fIinterp, name, source, width, height\fB)\fR .sp const char * -\fBTk_NameOfBitmap\fR(\fIdisplay, bitmap\fR) -.sp -\fBTk_SizeOfBitmap\fR(\fIdisplay, bitmap, widthPtr, heightPtr\fR) -.sp -\fBTk_FreeBitmapFromObj\fR(\fItkwin, objPtr\fR) -.sp -\fBTk_FreeBitmap\fR(\fIdisplay, bitmap\fR) -.fi +\fBTk_NameOfBitmap(\fIdisplay, bitmap\fB)\fR +.sp +\fBTk_SizeOfBitmap(\fIdisplay, bitmap, widthPtr, heightPtr\fB)\fR +.sp +\fBTk_FreeBitmapFromObj(\fItkwin, objPtr\fB)\fR +.sp +\fBTk_FreeBitmap(\fIdisplay, bitmap\fB)\fR .SH ARGUMENTS .AS "unsigned long" *pixelPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting; if NULL then no error message is left after errors. @@ -79,78 +78,102 @@ in \fItkwin\fR. It re-uses an existing bitmap, if possible, and creates a new one otherwise. \fIObjPtr\fR's value must have one of the following forms: .TP 20 \fB@\fIfileName\fR -. \fIFileName\fR must be the name of a file containing a bitmap description in the standard X11 format. .TP 20 \fIname\fR -. \fIName\fR must be the name of a bitmap defined previously with a call to \fBTk_DefineBitmap\fR. The following names are pre-defined by Tk: .RS -.IP \fBerror\fR 12 +.TP 12 +\fBerror\fR The international .QW don't symbol: a circle with a diagonal line across it. -.IP \fBgray75\fR 12 +.TP 12 +\fBgray75\fR 75% gray: a checkerboard pattern where three out of four bits are on. -.IP \fBgray50\fR 12 +.TP 12 +\fBgray50\fR 50% gray: a checkerboard pattern where every other bit is on. -.IP \fBgray25\fR 12 +.TP 12 +\fBgray25\fR 25% gray: a checkerboard pattern where one out of every four bits is on. -.IP \fBgray12\fR 12 +.TP 12 +\fBgray12\fR 12.5% gray: a pattern where one-eighth of the bits are on, consisting of every fourth pixel in every other row. -.IP \fBhourglass\fR 12 +.TP 12 +\fBhourglass\fR An hourglass symbol. -.IP \fBinfo\fR 12 +.TP 12 +\fBinfo\fR A large letter .QW i . -.IP \fBquesthead\fR 12 +.TP 12 +\fBquesthead\fR The silhouette of a human head, with a question mark in it. -.IP \fBquestion\fR 12 +.TP 12 +\fBquestion\fR A large question-mark. -.IP \fBwarning\fR 12 +.TP 12 +\fBwarning\fR A large exclamation point. .PP In addition, the following pre-defined names are available only on the \fBMacintosh\fR platform: -.IP \fBdocument\fR 12 +.TP 12 +\fBdocument\fR A generic document. -.IP \fBstationery\fR 12 +.TP 12 +\fBstationery\fR Document stationery. -.IP \fBedition\fR 12 +.TP 12 +\fBedition\fR The \fIedition\fR symbol. -.IP \fBapplication\fR 12 +.TP 12 +\fBapplication\fR Generic application icon. -.IP \fBaccessory\fR 12 +.TP 12 +\fBaccessory\fR A desk accessory. -.IP \fBfolder\fR 12 +.TP 12 +\fBfolder\fR Generic folder icon. -.IP \fBpfolder\fR 12 +.TP 12 +\fBpfolder\fR A locked folder. -.IP \fBtrash\fR 12 +.TP 12 +\fBtrash\fR A trash can. -.IP \fBfloppy\fR 12 +.TP 12 +\fBfloppy\fR A floppy disk. -.IP \fBramdisk\fR 12 +.TP 12 +\fBramdisk\fR A floppy disk with chip. -.IP \fBcdrom\fR 12 +.TP 12 +\fBcdrom\fR A cd disk icon. -.IP \fBpreferences\fR 12 +.TP 12 +\fBpreferences\fR A folder with prefs symbol. -.IP \fBquerydoc\fR 12 +.TP 12 +\fBquerydoc\fR A database document icon. -.IP \fBstop\fR 12 +.TP 12 +\fBstop\fR A stop sign. -.IP \fBnote\fR 12 +.TP 12 +\fBnote\fR A face with balloon words. -.IP \fBcaution\fR 12 +.TP 12 +\fBcaution\fR A triangle with an exclamation point. .RE .LP Under normal conditions, \fBTk_AllocBitmapFromObj\fR returns an identifier for the requested bitmap. If an error @@ -185,11 +208,11 @@ describe the bitmap. \fBTk_DefineBitmap\fR normally returns \fBTCL_OK\fR; if an error occurs (e.g. a bitmap named \fInameId\fR has already been defined) then \fBTCL_ERROR\fR is returned and an error message is left in interpreter \fIinterp\fR's result. -Note that \fBTk_DefineBitmap\fR expects the memory pointed to by +Note: \fBTk_DefineBitmap\fR expects the memory pointed to by \fIsource\fR to be static: \fBTk_DefineBitmap\fR does not make a private copy of this memory, but uses the bytes pointed to by \fIsource\fR later in calls to \fBTk_AllocBitmapFromObj\fR or \fBTk_GetBitmap\fR. .PP Index: doc/GetCapStyl.3 ================================================================== --- doc/GetCapStyl.3 +++ doc/GetCapStyl.3 @@ -13,15 +13,14 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetCapStyle\fR(\fIinterp, string, capPtr\fR) +\fBTk_GetCapStyle(\fIinterp, string, capPtr\fB)\fR .sp const char * -\fBTk_NameOfCapStyle\fR(\fIcap\fR) -.fi +\fBTk_NameOfCapStyle(\fIcap\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *capPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP "const char" *string in Index: doc/GetClrmap.3 ================================================================== --- doc/GetClrmap.3 +++ doc/GetClrmap.3 @@ -13,16 +13,15 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Colormap -\fBTk_GetColormap\fR(\fIinterp, tkwin, string\fR) +\fBTk_GetColormap(\fIinterp, tkwin, string\fB)\fR .sp -\fBTk_PreserveColormap\fR(\fIdisplay, colormap\fR) +\fBTk_PreserveColormap(\fIdisplay, colormap\fB)\fR .sp -\fBTk_FreeColormap\fR(\fIdisplay, colormap\fR) -.fi +\fBTk_FreeColormap(\fIdisplay, colormap\fB)\fR .SH ARGUMENTS .AS "Colormap" colormap .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP Tk_Window tkwin in Index: doc/GetFont.3 ================================================================== --- doc/GetFont.3 +++ doc/GetFont.3 @@ -13,29 +13,29 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Tk_Font -\fBTk_AllocFontFromObj\fR(\fIinterp, tkwin, objPtr\fR) +\fBTk_AllocFontFromObj(\fIinterp, tkwin, objPtr\fB)\fR .sp Tk_Font -\fBTk_GetFont\fR(\fIinterp, tkwin, string\fR) +\fBTk_GetFont(\fIinterp, tkwin, string\fB)\fR .sp Tk_Font -\fBTk_GetFontFromObj\fR(\fItkwin, objPtr\fR) +\fBTk_GetFontFromObj(\fItkwin, objPtr\fB)\fR .sp Tcl_Obj * -\fBTk_FontGetDescription\fR(\fItkfont\fR) +\fBTk_FontGetDescription(\fItkfont\fB)\fR .sp const char * -\fBTk_NameOfFont\fR(\fItkfont\fR) +\fBTk_NameOfFont(\fItkfont\fB)\fR .sp Tk_Font -\fBTk_FreeFontFromObj\fR(\fItkwin, objPtr\fR) +\fBTk_FreeFontFromObj(\fItkwin, objPtr\fB)\fR .sp -\fBTk_FreeFont\fR(\fItkfont\fR) -.fi +void +\fBTk_FreeFont(\fItkfont\fB)\fR .SH ARGUMENTS .AS "const char" *tkfont .AP "Tcl_Interp" *interp in Interpreter to use for error reporting. If \fBNULL\fR, then no error messages are left after errors. @@ -90,12 +90,11 @@ windows or for different purposes), then a single Tk_Font will be shared for all uses. The underlying resources will be freed automatically when no-one is using the font anymore. .PP The procedure \fBTk_FontGetDescription\fR returns information about the font -description as a Tcl list. One possible result is -.QW "{{DejaVu Sans} -16 bold underline}" . +description as a Tcl list. One possible result is "{{DejaVu Sans} -16 bold underline}". .PP The procedure \fBTk_NameOfFont\fR is roughly the inverse of \fBTk_GetFont\fR. Given a \fItkfont\fR that was created by \fBTk_GetFont\fR (or \fBTk_AllocFontFromObj\fR), the return value is the \fIstring\fR argument that was Index: doc/GetGC.3 ================================================================== --- doc/GetGC.3 +++ doc/GetGC.3 @@ -15,12 +15,11 @@ \fB#include \fR .sp GC \fBTk_GetGC\fR(\fItkwin, valueMask, valuePtr\fR) .sp -\fBTk_FreeGC\fR(\fIdisplay, gc\fR) -.fi +\fBTk_FreeGC(\fIdisplay, gc\fR) .SH ARGUMENTS .AS "unsigned long" valueMask .AP Tk_Window tkwin in Token for window in which the graphics context will be used. .AP "unsigned long" valueMask in Index: doc/GetHINSTANCE.3 ================================================================== --- doc/GetHINSTANCE.3 +++ doc/GetHINSTANCE.3 @@ -11,11 +11,10 @@ .nf \fB#include \fR .sp HINSTANCE \fBTk_GetHINSTANCE\fR() -.fi .BE .SH DESCRIPTION .PP \fBTk_GetHINSTANCE\fR returns the Windows application instance handle for the Tk application. This function is only available on Windows platforms. Index: doc/GetHWND.3 ================================================================== --- doc/GetHWND.3 +++ doc/GetHWND.3 @@ -14,11 +14,10 @@ HWND \fBTk_GetHWND\fR(\fIwindow\fR) .sp Window \fBTk_AttachHWND\fR(\fItkwin, hwnd\fR) -.fi .SH ARGUMENTS .AP Window window in X token for window. .AP Tk_Window tkwin in Tk window for window. Index: doc/GetImage.3 ================================================================== --- doc/GetImage.3 +++ doc/GetImage.3 @@ -20,11 +20,10 @@ \fBTk_RedrawImage\fR(\fIimage, imageX, imageY, width, height, drawable, drawableX, drawableY\fR) .sp \fBTk_SizeOfImage\fR(\fIimage, widthPtr, heightPtr\fR) .sp \fBTk_FreeImage\fR(\fIimage\fR) -.fi .SH ARGUMENTS .AS Tk_ImageChangedProc *changeProc .AP Tcl_Interp *interp in Place to leave error message. .AP Tk_Window tkwin in Index: doc/GetJoinStl.3 ================================================================== --- doc/GetJoinStl.3 +++ doc/GetJoinStl.3 @@ -13,15 +13,14 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetJoinStyle\fR(\fIinterp, string, joinPtr\fR) +\fBTk_GetJoinStyle(\fIinterp, string, joinPtr\fB)\fR .sp const char * -\fBTk_NameOfJoinStyle\fR(\fIjoin\fR) -.fi +\fBTk_NameOfJoinStyle(\fIjoin\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *joinPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP "const char" *string in Index: doc/GetJustify.3 ================================================================== --- doc/GetJustify.3 +++ doc/GetJustify.3 @@ -13,18 +13,17 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetJustifyFromObj\fR(\fIinterp, objPtr, justifyPtr\fR) +\fBTk_GetJustifyFromObj(\fIinterp, objPtr, justifyPtr\fB)\fR .sp int -\fBTk_GetJustify\fR(\fIinterp, string, justifyPtr\fR) +\fBTk_GetJustify(\fIinterp, string, justifyPtr\fB)\fR .sp const char * -\fBTk_NameOfJustify\fR(\fIjustify\fR) -.fi +\fBTk_NameOfJustify(\fIjustify\fB)\fR .SH ARGUMENTS .AS "Tk_Justify" *justifyPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting, or NULL. .AP Tcl_Obj *objPtr in/out @@ -47,17 +46,20 @@ .SH DESCRIPTION .PP \fBTk_GetJustifyFromObj\fR places in \fI*justifyPtr\fR the justify value corresponding to \fIobjPtr\fR's value. This value will be one of the following: -.IP \fBTK_JUSTIFY_LEFT\fR +.TP +\fBTK_JUSTIFY_LEFT\fR Means that the text on each line should start at the left edge of the line; as a result, the right edges of lines may be ragged. -.IP \fBTK_JUSTIFY_RIGHT\fR +.TP +\fBTK_JUSTIFY_RIGHT\fR Means that the text on each line should end at the right edge of the line; as a result, the left edges of lines may be ragged. -.IP \fBTK_JUSTIFY_CENTER\fR +.TP +\fBTK_JUSTIFY_CENTER\fR Means that the text on each line should be centered; as a result, both the left and right edges of lines may be ragged. .PP Under normal circumstances the return value is \fBTCL_OK\fR and \fIinterp\fR is unused. Index: doc/GetOption.3 ================================================================== --- doc/GetOption.3 +++ doc/GetOption.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp Tk_Uid \fBTk_GetOption\fR(\fItkwin, name, class\fR) -.fi .SH ARGUMENTS .AS Tk_Window *class .AP Tk_Window tkwin in Token for window. .AP "const char" *name in Index: doc/GetPixels.3 ================================================================== --- doc/GetPixels.3 +++ doc/GetPixels.3 @@ -13,24 +13,23 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetPixelsFromObj\fR(\fIinterp, tkwin, objPtr, intPtr\fR) +\fBTk_GetPixelsFromObj(\fIinterp, tkwin, objPtr, intPtr\fB)\fR +.sp +int +\fBTk_GetDoublePixelsFromObj(\fIinterp, tkwin, objPtr, doublePtr\fB)\fR .sp int -\fBTk_GetDoublePixelsFromObj\fR(\fIinterp, tkwin, objPtr, doublePtr\fR) +\fBTk_GetPixels(\fIinterp, tkwin, string, intPtr\fB)\fR .sp int -\fBTk_GetPixels\fR(\fIinterp, tkwin, string, intPtr\fR) +\fBTk_GetMMFromObj(\fIinterp, tkwin, objPtr, doublePtr\fB)\fR .sp int -\fBTk_GetMMFromObj\fR(\fIinterp, tkwin, objPtr, doublePtr\fR) -.sp -int -\fBTk_GetScreenMM\fR(\fIinterp, tkwin, string, doublePtr\fR) -.fi +\fBTk_GetScreenMM(\fIinterp, tkwin, string, doublePtr\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *joinPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP Tk_Window tkwin in @@ -55,19 +54,24 @@ In either case, \fIobjPtr\fR or \fIstring\fR specifies a screen distance as a floating-point number followed by one of the following characters that indicates units: -.IP +.TP + The number specifies a distance in pixels. -.IP \fBc\fR +.TP +\fBc\fR The number specifies a distance in centimeters on the screen. -.IP \fBi\fR +.TP +\fBi\fR The number specifies a distance in inches on the screen. -.IP \fBm\fR +.TP +\fBm\fR The number specifies a distance in millimeters on the screen. -.IP \fBp\fR +.TP +\fBp\fR The number specifies a distance in printer's points (1/72 inch) on the screen. .PP \fBTk_GetPixelsFromObj\fR converts the value of \fIobjPtr\fR to the nearest even number of pixels and stores that value at \fI*intPtr\fR. Index: doc/GetPixmap.3 ================================================================== --- doc/GetPixmap.3 +++ doc/GetPixmap.3 @@ -13,14 +13,13 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Pixmap -\fBTk_GetPixmap\fR(\fIdisplay, d, width, height, depth\fR) +\fBTk_GetPixmap(\fIdisplay, d, width, height, depth\fB)\fR .sp -\fBTk_FreePixmap\fR(\fIdisplay, pixmap\fR) -.fi +\fBTk_FreePixmap(\fIdisplay, pixmap\fB)\fR .SH ARGUMENTS .AS "Drawable" *pixelPtr .AP Display *display in X display for the pixmap. .AP Drawable d in Index: doc/GetRootCrd.3 ================================================================== --- doc/GetRootCrd.3 +++ doc/GetRootCrd.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_GetRootCoords\fR(\fItkwin, xPtr, yPtr\fR) -.fi .SH ARGUMENTS .AS Tk_Window tkwin .AP Tk_Window tkwin in Token for window. .AP int *xPtr out Index: doc/GetScroll.3 ================================================================== --- doc/GetScroll.3 +++ doc/GetScroll.3 @@ -13,20 +13,19 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_GetScrollInfoObj\fR(\fIinterp, objc, objv, fractionPtr, stepsPtr\fR) +\fBTk_GetScrollInfoObj(\fIinterp, objc, objv, fractionPtr, stepsPtr\fB)\fR .sp int -\fBTk_GetScrollInfo\fR(\fIinterp, argc, argv, fractionPtr, stepsPtr\fR) -.fi +\fBTk_GetScrollInfo(\fIinterp, argc, argv, fractionPtr, stepsPtr\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *fractionPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. -.AP Tcl_Size objc in +.AP int objc in Number of Tcl_Obj's in \fIobjv\fR array. .AP "Tcl_Obj *const *" objv in Argument objects. These represent the entire widget command, of which the first word is typically the widget name and the second word is typically \fBxview\fR or \fByview\fR. Index: doc/GetSelect.3 ================================================================== --- doc/GetSelect.3 +++ doc/GetSelect.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp int \fBTk_GetSelection\fR(\fIinterp, tkwin, selection, target, proc, clientData\fR) -.fi .SH ARGUMENTS .AS Tk_GetSelProc clientData .AP Tcl_Interp *interp in Interpreter to use for reporting errors. .AP Tk_Window tkwin in Index: doc/GetUid.3 ================================================================== --- doc/GetUid.3 +++ doc/GetUid.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp Tk_Uid \fBTk_GetUid\fR(\fIstring\fR) -.fi .SH ARGUMENTS .AP char *string in String for which the corresponding unique identifier is desired. .BE Index: doc/GetVRoot.3 ================================================================== --- doc/GetVRoot.3 +++ doc/GetVRoot.3 @@ -12,12 +12,11 @@ Tk_GetVRootGeometry \- Get location and size of virtual root for window .SH SYNOPSIS .nf \fB#include \fR .sp -\fBTk_GetVRootGeometry\fR(\fItkwin, xPtr, yPtr, widthPtr, heightPtr\fR) -.fi +\fBTk_GetVRootGeometry(\fItkwin, xPtr, yPtr, widthPtr, heightPtr\fB)\fR .SH ARGUMENTS .AS Tk_Window heightPtr .AP Tk_Window tkwin in Token for window whose virtual root is to be queried. .AP int xPtr out Index: doc/GetVisual.3 ================================================================== --- doc/GetVisual.3 +++ doc/GetVisual.3 @@ -13,12 +13,11 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Visual * -\fBTk_GetVisual\fR(\fIinterp, tkwin, string, depthPtr, colormapPtr\fR) -.fi +\fBTk_GetVisual(\fIinterp, tkwin, string, depthPtr, colormapPtr\fB)\fR .SH ARGUMENTS .AS "Tcl_Interp" *colormapPtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP Tk_Window tkwin in @@ -47,11 +46,10 @@ .PP The \fIstring\fR argument specifies the desired visual in one of the following ways: .TP 15 \fIclass depth\fR -. The string consists of a class name followed by an integer depth, with any amount of white space (including none) in between. \fIclass\fR selects what sort of visual is desired and must be one of \fBdirectcolor\fR, \fBgrayscale\fR, \fBgreyscale\fR, \fBpseudocolor\fR, \fBstaticcolor\fR, \fBstaticgray\fR, \fBstaticgrey\fR, or @@ -62,25 +60,21 @@ if there is no visual of the desired depth then \fBTk_GetVisual\fR looks first for a visual with greater depth, then one with less depth. .TP 15 \fBdefault\fR -. Use the default visual for \fItkwin\fR's screen. .TP 15 \fIpathName\fR -. Use the visual for the window given by \fIpathName\fR. \fIpathName\fR must be the name of a window on the same screen as \fItkwin\fR. .TP 15 \fInumber\fR -. Use the visual whose X identifier is \fInumber\fR. .TP 15 \fBbest\fR ?\fIdepth\fR? -. Choose the .QW "best possible" visual, using the following rules, in decreasing order of priority: .RS .IP (a) Index: doc/Grab.3 ================================================================== --- doc/Grab.3 +++ doc/Grab.3 @@ -12,12 +12,12 @@ \fB#include \fR .sp int \fBTk_Grab\fR(\fIinterp, tkwin, grabGlobal\fR) .sp +void \fBTk_Ungrab\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AP Tcl_Interp *interp in Interpreter to use for error reporting .AP Tk_Window tkwin in Window on whose behalf the pointer is to be grabbed or released Index: doc/HWNDToWindow.3 ================================================================== --- doc/HWNDToWindow.3 +++ doc/HWNDToWindow.3 @@ -11,11 +11,10 @@ .nf \fB#include \fR .sp Tk_Window \fBTk_HWNDToWindow\fR(\fIhwnd\fR) -.fi .SH ARGUMENTS .AP HWND hwnd in Windows handle for the window. .BE .SH DESCRIPTION Index: doc/HandleEvent.3 ================================================================== --- doc/HandleEvent.3 +++ doc/HandleEvent.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_HandleEvent\fR(\fIeventPtr\fR) -.fi .SH ARGUMENTS .AS XEvent *eventPtr .AP XEvent *eventPtr in Pointer to X event to dispatch to relevant handler(s). It is important that all unused fields of the structure be set to zero. Index: doc/IdToWindow.3 ================================================================== --- doc/IdToWindow.3 +++ doc/IdToWindow.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp Tk_Window \fBTk_IdToWindow\fR(\fIdisplay, window\fR) -.fi .SH ARGUMENTS .AS Tk_Window display .AP Display *display in X display containing the window. .AP Window window in Index: doc/ImgChanged.3 ================================================================== --- doc/ImgChanged.3 +++ doc/ImgChanged.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_ImageChanged\fR(\fImodel, x, y, width, height, imageWidth, imageHeight\fR) -.fi .SH ARGUMENTS .AS Tk_ImageModel imageHeight .AP Tk_ImageModel model in Token for image, which was passed to image's \fIcreateProc\fR when the image was created. Index: doc/Inactive.3 ================================================================== --- doc/Inactive.3 +++ doc/Inactive.3 @@ -10,14 +10,13 @@ .SH SYNOPSIS .nf \fB#include \fR .sp long -\fBTk_GetUserInactiveTime\fR(\fIdisplay\fR) +\fBTk_GetUserInactiveTime(\fIdisplay\fB)\fR .sp -\fBTk_ResetUserInactiveTime\fR(\fIdisplay\fR) -.fi +\fBTk_ResetUserInactiveTime(\fIdisplay\fB)\fR .SH ARGUMENTS .AS Display *display .AP Display *display in The display on which the user inactivity timer is to be queried or reset. Index: doc/InternAtom.3 ================================================================== --- doc/InternAtom.3 +++ doc/InternAtom.3 @@ -13,15 +13,14 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Atom -\fBTk_InternAtom\fR(\fItkwin, name\fR) +\fBTk_InternAtom(\fItkwin, name\fR) .sp const char * -\fBTk_GetAtomName\fR(\fItkwin, atom\fR) -.fi +\fBTk_GetAtomName(\fItkwin, atom\fR) .SH ARGUMENTS .AS Tk_Window parent .AP Tk_Window tkwin in Token for window. Used to map atom or name relative to a particular display. .AP "const char" *name in Index: doc/MainLoop.3 ================================================================== --- doc/MainLoop.3 +++ doc/MainLoop.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_MainLoop\fR() -.fi .BE .SH DESCRIPTION .PP \fBTk_MainLoop\fR is a procedure that loops repeatedly calling \fBTcl_DoOneEvent\fR. It returns only when there are no applications Index: doc/MainWin.3 ================================================================== --- doc/MainWin.3 +++ doc/MainWin.3 @@ -15,17 +15,18 @@ \fB#include \fR .sp Tk_Window \fBTk_MainWindow\fR(\fIinterp\fR) .sp +void \fBTk_SetMainMenubar\fR(\fIinterp, tkwin, menuName\fR) .sp +void \fBTk_SetWindowMenubar\fR(\fIinterp, tkwin, oldMenuName, menuName\fR) .sp int \fBTk_GetNumMainWindows\fR() -.fi .SH ARGUMENTS .AS Tcl_Interp *pathName .AP Tcl_Interp *interp in/out Interpreter associated with the application. .AP Tk_Window tkwin in @@ -49,12 +50,12 @@ .PP \fBTk_GetNumMainWindows\fR returns a count of the number of main windows currently open in the current thread. \fBTk_SetMainMenubar\fR Called when a toplevel widget is brought to front. On the Macintosh, -sets up the menubar that goes across the top of the main monitor. On +sets up the menubar that goes accross the top of the main monitor. On other platforms, nothing is necessary. \fBTk_SetWindowMenubar\fR associates a menu with a window. The old menu clones for the menubar are thrown away, and a handler is set up to allocate the new ones. .SH KEYWORDS application, main window Index: doc/MaintGeom.3 ================================================================== --- doc/MaintGeom.3 +++ doc/MaintGeom.3 @@ -15,11 +15,10 @@ \fB#include \fR .sp \fBTk_MaintainGeometry\fR(\fIwindow, container, x, y, width, height\fR) .sp \fBTk_UnmaintainGeometry\fR(\fIwindow, container\fR) -.fi .SH ARGUMENTS .AS Tk_Window container .AP Tk_Window window in Window whose geometry is to be controlled. .AP Tk_Window container in Index: doc/ManageGeom.3 ================================================================== --- doc/ManageGeom.3 +++ doc/ManageGeom.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_ManageGeometry\fR(\fItkwin, mgrPtr, clientData\fR) -.fi .SH ARGUMENTS .AS Tk_GeometryProc clientData .AP Tk_Window tkwin in Token for window to be managed. .AP "const Tk_GeomMgr" *mgrPtr in Index: doc/MapWindow.3 ================================================================== --- doc/MapWindow.3 +++ doc/MapWindow.3 @@ -16,11 +16,10 @@ .sp Tk_Window \fBTk_MapWindow\fR(\fItkwin\fR) .sp \fBTk_UnmapWindow\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window parent .AP Tk_Window tkwin in Token for window. .BE Index: doc/MeasureChar.3 ================================================================== --- doc/MeasureChar.3 +++ doc/MeasureChar.3 @@ -12,19 +12,19 @@ .SH SYNOPSIS .nf \fB#include \fR .sp int -\fBTk_MeasureChars\fR(\fItkfont, string, numBytes, maxPixels, flags, lengthPtr\fR) +\fBTk_MeasureChars(\fItkfont, string, numBytes, maxPixels, flags, lengthPtr\fB)\fR .sp int -\fBTk_TextWidth\fR(\fItkfont, string, numBytes\fR) +\fBTk_TextWidth(\fItkfont, string, numBytes\fB)\fR .sp -\fBTk_DrawChars\fR(\fIdisplay, drawable, gc, tkfont, string, numBytes, x, y\fR) +\fBTk_DrawChars(\fIdisplay, drawable, gc, tkfont, string, numBytes, x, y\fB)\fR .sp -\fBTk_UnderlineChars\fR(\fIdisplay, drawable, gc, tkfont, string, x, y, firstByte, lastByte\fR) -.fi +\fBTk_UnderlineChars(\fIdisplay, drawable, gc, tkfont, string, x, y, firstByte, lastByte\fB)\fR +.sp .SH ARGUMENTS .AS "const char" firstChar .AP Tk_Font tkfont in Token for font in which text is to be drawn or measured. Must have been returned by a previous call to \fBTk_GetFont\fR. @@ -31,11 +31,11 @@ .AP "const char" *string in Text to be measured or displayed. Need not be null terminated. Any non-printing meta-characters in the string (such as tabs, newlines, and other control characters) will be measured or displayed in a platform-dependent manner. -.AP Tcl_Size numBytes in +.AP int numBytes in The maximum number of bytes to consider when measuring or drawing \fIstring\fR. Must be greater than or equal to 0. .AP int maxPixels in If \fImaxPixels\fR is >= 0, it specifies the longest permissible line length in pixels. Characters from \fIstring\fR are processed only @@ -46,12 +46,12 @@ as long as any part of it fits in the length given by \fImaxPixels\fR; otherwise, a character must fit completely to be considered. \fBTK_WHOLE_WORDS\fR means stop on a word boundary, if possible. If \fBTK_AT_LEAST_ONE\fR is set, it means return at least one character even if no characters could fit in the length given by \fImaxPixels\fR. If -\fBTK_AT_LEAST_ONE\fR is set and \fBTK_WHOLE_WORDS\fR is also set, it means -that if not even one word fits on the line, return the first few letters of the +\fBTK_AT_LEAST_ONE\fR is set and \fBTK_WHOLE_WORDS\fR is also set, it means that if +not even one word fits on the line, return the first few letters of the word that did fit; if not even one letter of the word fit, then the first letter will still be returned. .AP int *lengthPtr out Filled with the number of pixels occupied by the number of characters returned as the result of \fBTk_MeasureChars\fR. Index: doc/MoveToplev.3 ================================================================== --- doc/MoveToplev.3 +++ doc/MoveToplev.3 @@ -12,12 +12,11 @@ Tk_MoveToplevelWindow \- Adjust the position of a top-level window .SH SYNOPSIS .nf \fB#include \fR .sp -\fBTk_MoveToplevelWindow\fR(\fItkwin, x, y\fR) -.fi +\fBTk_MoveToplevelWindow(\fItkwin, x, y\fB)\fR .SH ARGUMENTS .AS Tk_Window tkwin .AP Tk_Window tkwin in Token for top-level window to move. .AP int x in Index: doc/Name.3 ================================================================== --- doc/Name.3 +++ doc/Name.3 @@ -20,11 +20,10 @@ char * \fBTk_PathName\fR(\fItkwin\fR) .sp Tk_Window \fBTk_NameToWindow\fR(\fIinterp, pathName, tkwin\fR) -.fi .SH ARGUMENTS .AS Tcl_Interp *pathName .AP Tk_Window tkwin in Token for window. .AP Tcl_Interp *interp out Index: doc/NameOfImg.3 ================================================================== --- doc/NameOfImg.3 +++ doc/NameOfImg.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp const char * \fBTk_NameOfImage\fR(\fIimageModel\fR) -.fi .SH ARGUMENTS .AS Tk_ImageModel imageModel .AP Tk_ImageModel imageModel in Token for image, which was passed to image manager's \fIcreateProc\fR when the image was created. Index: doc/OwnSelect.3 ================================================================== --- doc/OwnSelect.3 +++ doc/OwnSelect.3 @@ -13,11 +13,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_OwnSelection\fR(\fItkwin, selection, proc, clientData\fR) -.fi .SH ARGUMENTS .AS Tk_LostSelProc clientData .AP Tk_Window tkwin in Window that is to become new selection owner. .AP Atom selection in Index: doc/ParseArgv.3 ================================================================== --- doc/ParseArgv.3 +++ doc/ParseArgv.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp int \fBTk_ParseArgv\fR(\fIinterp, tkwin, argcPtr, argv, argTable, flags\fR) -.fi .SH ARGUMENTS .AS Tk_ArgvInfo *argTable .AP Tcl_Interp *interp in Interpreter to use for returning error messages. .AP Tk_Window tkwin in @@ -112,19 +111,22 @@ \fBTk_ParseArgv\fR may also use the next argument in \fIargv\fR after the matching argument, which is called .QW "the following argument" . The legal values for \fItype\fR, and the processing that they cause, are as follows: -.IP \fBTK_ARGV_END\fR +.TP +\fBTK_ARGV_END\fR Marks the end of the table. The last entry in \fIargTable\fR must have this type; all of its other fields are ignored and it will never match any arguments. -.IP \fBTK_ARGV_CONSTANT\fR +.TP +\fBTK_ARGV_CONSTANT\fR \fISrc\fR is treated as an integer and \fIdst\fR is treated as a pointer to an integer. \fISrc\fR is stored at \fI*dst\fR. The matching argument is discarded. -.IP \fBTK_ARGV_INT\fR +.TP +\fBTK_ARGV_INT\fR The following argument must contain an integer string in the format accepted by \fBstrtol\fR (e.g. .QW 0 and .QW 0x @@ -131,52 +133,59 @@ prefixes may be used to specify octal or hexadecimal numbers, respectively). \fIDst\fR is treated as a pointer to an integer; the following argument is converted to an integer value and stored at \fI*dst\fR. \fISrc\fR is ignored. The matching and following arguments are discarded from \fIargv\fR. -.IP \fBTK_ARGV_FLOAT\fR +.TP +\fBTK_ARGV_FLOAT\fR The following argument must contain a floating-point number in the format accepted by \fBstrtol\fR. \fIDst\fR is treated as the address of a double-precision floating point value; the following argument is converted to a double-precision value and stored at \fI*dst\fR. The matching and following arguments are discarded from \fIargv\fR. -.IP \fBTK_ARGV_STRING\fR +.TP +\fBTK_ARGV_STRING\fR In this form, \fIdst\fR is treated as a pointer to a (char *); \fBTk_ParseArgv\fR stores at \fI*dst\fR a pointer to the following argument, and discards the matching and following arguments from \fIargv\fR. \fISrc\fR is ignored. -.IP \fBTK_ARGV_UID\fR +.TP +\fBTK_ARGV_UID\fR This form is similar to \fBTK_ARGV_STRING\fR, except that the argument is turned into a Tk_Uid by calling \fBTk_GetUid\fR. \fIDst\fR is treated as a pointer to a Tk_Uid; \fBTk_ParseArgv\fR stores at \fI*dst\fR the Tk_Uid corresponding to the following argument, and discards the matching and following arguments from \fIargv\fR. \fISrc\fR is ignored. -.IP \fBTK_ARGV_CONST_OPTION\fR +.TP +\fBTK_ARGV_CONST_OPTION\fR This form causes a Tk option to be set (as if the \fBoption\fR command had been invoked). The \fIsrc\fR field is treated as a pointer to a string giving the value of an option, and \fIdst\fR is treated as a pointer to the name of the option. The matching argument is discarded. If \fItkwin\fR is NULL, then argument specifiers of this type are ignored (as if they did not exist). -.IP \fBTK_ARGV_OPTION_VALUE\fR +.TP +\fBTK_ARGV_OPTION_VALUE\fR This form is similar to \fBTK_ARGV_CONST_OPTION\fR, except that the value of the option is taken from the following argument instead of from \fIsrc\fR. \fIDst\fR is used as the name of the option. \fISrc\fR is ignored. The matching and following arguments are discarded. If \fItkwin\fR is NULL, then argument specifiers of this type are ignored (as if they did not exist). -.IP \fBTK_ARGV_OPTION_NAME_VALUE\fR +.TP +\fBTK_ARGV_OPTION_NAME_VALUE\fR In this case the following argument is taken as the name of a Tk option and the argument after that is taken as the value for that option. Both \fIsrc\fR and \fIdst\fR are ignored. All three arguments are discarded from \fIargv\fR. If \fItkwin\fR is NULL, then argument specifiers of this type are ignored (as if they did not exist). -.IP \fBTK_ARGV_HELP\fR +.TP +\fBTK_ARGV_HELP\fR When this kind of option is encountered, \fBTk_ParseArgv\fR uses the \fIhelp\fR fields of \fIargTable\fR to format a message describing all the valid arguments. The message is placed in interpreter \fIinterp\fR's result and \fBTk_ParseArgv\fR returns \fBTCL_ERROR\fR. When this happens, the @@ -183,11 +192,12 @@ caller normally prints the help message and aborts. If the \fIkey\fR field of a \fBTK_ARGV_HELP\fR specifier is NULL, then the specifier will never match any arguments; in this case the specifier simply provides extra documentation, which will be included when some other \fBTK_ARGV_HELP\fR entry causes help information to be returned. -.IP \fBTK_ARGV_REST\fR +.TP +\fBTK_ARGV_REST\fR This option is used by programs or commands that allow the last several of their options to be the name and/or options for some other program. If a \fBTK_ARGV_REST\fR argument is found, then \fBTk_ParseArgv\fR does not process any of the remaining arguments; it returns them all at @@ -195,11 +205,12 @@ In addition, \fBTk_ParseArgv\fR treats \fIdst\fR as the address of an integer value, and stores at \fI*dst\fR the index of the first of the \fBTK_ARGV_REST\fR options in the returned \fIargv\fR. This allows the program to distinguish the \fBTK_ARGV_REST\fR options from other unprocessed options that preceded the \fBTK_ARGV_REST\fR. -.IP \fBTK_ARGV_FUNC\fR +.TP +\fBTK_ARGV_FUNC\fR For this kind of argument, \fIsrc\fR is treated as the address of a procedure, which is invoked to process the following argument. The procedure should have the following structure: .RS .CS @@ -219,11 +230,12 @@ \fBTk_ParseArgv\fR should discard it), then it should return 1. Otherwise it should return 0 and \fBTkParseArgv\fR will process the following argument in the normal fashion. In either event the matching argument is discarded. .RE -.IP \fBTK_ARGV_GENFUNC\fR +.TP +\fBTK_ARGV_GENFUNC\fR This form provides a more general procedural escape. It treats \fIsrc\fR as the address of a procedure, and passes that procedure all of the remaining arguments. The procedure should have the following form: .RS @@ -252,27 +264,31 @@ \fIinterp\fR's result, in the usual Tcl fashion, and return \-1; when this happens \fBTk_ParseArgv\fR will abort its processing and return \fBTCL_ERROR\fR. .RE .SS "FLAGS" -.IP \fBTK_ARGV_DONT_SKIP_FIRST_ARG\fR +.TP +\fBTK_ARGV_DONT_SKIP_FIRST_ARG\fR \fBTk_ParseArgv\fR normally treats \fIargv[0]\fR as a program or command name, and returns it to the caller just as if it had not matched \fIargTable\fR. If this flag is given, then \fIargv[0]\fR is not given special treatment. -.IP \fBTK_ARGV_NO_ABBREV\fR +.TP +\fBTK_ARGV_NO_ABBREV\fR Normally, \fBTk_ParseArgv\fR accepts unique abbreviations for \fIkey\fR values in \fIargTable\fR. If this flag is given then only exact matches will be acceptable. -.IP \fBTK_ARGV_NO_LEFTOVERS\fR +.TP +\fBTK_ARGV_NO_LEFTOVERS\fR Normally, \fBTk_ParseArgv\fR returns unrecognized arguments to the caller. If this bit is set in \fIflags\fR then \fBTk_ParseArgv\fR will return an error if it encounters any argument that does not match \fIargTable\fR. The only exception to this rule is \fIargv[0]\fR, which will be returned to the caller with no errors as long as \fBTK_ARGV_DONT_SKIP_FIRST_ARG\fR is not specified. -.IP \fBTK_ARGV_NO_DEFAULTS\fR +.TP +\fBTK_ARGV_NO_DEFAULTS\fR Normally, \fBTk_ParseArgv\fR searches an internal table of standard argument specifiers in addition to \fIargTable\fR. If this bit is set in \fIflags\fR, then \fBTk_ParseArgv\fR will use only \fIargTable\fR and not its default table. .SH EXAMPLE @@ -294,23 +310,25 @@ /* * Define option descriptions. */ Tk_ArgvInfo argTable[] = { - {"-X", TK_ARGV_CONSTANT, (char *) 1, &debugFlag, + {"\-X", TK_ARGV_CONSTANT, (char *) 1, &debugFlag, "Turn on debugging printfs"}, - {"-N", TK_ARGV_INT, NULL, &numReps, + {"\-N", TK_ARGV_INT, NULL, &numReps, "Number of repetitions"}, - {"-of", TK_ARGV_STRING, NULL, &fileName, + {"\-of", TK_ARGV_STRING, NULL, &fileName, "Name of file for output"}, {"x", TK_ARGV_REST, NULL, &exec, "File to exec, followed by any arguments (must be last argument)."}, {NULL, TK_ARGV_END, NULL, NULL, NULL} }; -int main(int argc, char *argv[]) +main(argc, argv) + int argc; + char *argv[]; { \&... if (Tk_ParseArgv(interp, tkwin, &argc, argv, argTable, 0) != TCL_OK) { fprintf(stderr, "%s\en", Tcl_GetString(Tcl_GetObjResult(interp))); @@ -326,17 +344,17 @@ Note that default values can be assigned to variables named in \fIargTable\fR: the variables will only be overwritten if the particular arguments are present in \fIargv\fR. Here are some example command lines and their effects. .CS -prog -N 200 infile # just sets the numReps variable to 200 -prog -of out200 infile # sets fileName to reference "out200" -prog -XN 10 infile # sets the debug flag, also sets numReps +prog \-N 200 infile # just sets the numReps variable to 200 +prog \-of out200 infile # sets fileName to reference "out200" +prog \-XN 10 infile # sets the debug flag, also sets numReps .CE In all of the above examples, \fIargc\fR will be set by \fBTk_ParseArgv\fR to 2, \fIargv\fR[0] will be .QW prog , \fIargv\fR[1] will be .QW infile , and \fIargv\fR[2] will be NULL. .SH KEYWORDS arguments, command line, options Index: doc/QWinEvent.3 ================================================================== --- doc/QWinEvent.3 +++ doc/QWinEvent.3 @@ -15,11 +15,10 @@ .sp int \fBTk_CollapseMotionEvents\fR(\fIdisplay, collapse\fR) .sp \fBTk_QueueWindowEvent\fR(\fIeventPtr, position\fR) -.fi .SH ARGUMENTS .AS Tcl_QueuePosition position .AP Display *display in Display for which to control motion event collapsing. .AP int collapse in Index: doc/Restack.3 ================================================================== --- doc/Restack.3 +++ doc/Restack.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp int \fBTk_RestackWindow\fR(\fItkwin, aboveBelow, other\fR) -.fi .SH ARGUMENTS .AS Tk_Window aboveBelow .AP Tk_Window tkwin in Token for window to restack. .AP int aboveBelow in Index: doc/RestrictEv.3 ================================================================== --- doc/RestrictEv.3 +++ doc/RestrictEv.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp Tk_RestrictProc * \fBTk_RestrictEvents\fR(\fIproc, arg, prevArgPtr\fR) -.fi .SH ARGUMENTS .AS Tk_RestrictProc **prevArgPtr .AP Tk_RestrictProc *proc in Predicate procedure to call to filter incoming X events. NULL means do not restrict events at all. Index: doc/SetAppName.3 ================================================================== --- doc/SetAppName.3 +++ doc/SetAppName.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp const char * \fBTk_SetAppName\fR(\fItkwin, name\fR) -.fi .SH ARGUMENTS .AS Tk_Window parent .AP Tk_Window tkwin in Token for window in application. Used only to select a particular application. Index: doc/SetCaret.3 ================================================================== --- doc/SetCaret.3 +++ doc/SetCaret.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp int \fBTk_SetCaretPos\fR(\fItkwin, x, y, height\fR) -.fi .SH ARGUMENTS .AP Tk_Window tkwin in Token for window. .AP int x in Window-relative x coordinate. Index: doc/SetClass.3 ================================================================== --- doc/SetClass.3 +++ doc/SetClass.3 @@ -16,11 +16,10 @@ .sp \fBTk_SetClass\fR(\fItkwin, class\fR) .sp Tk_Uid \fBTk_Class\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window parent .AP Tk_Window tkwin in Token for window. .AP char *class in Index: doc/SetClassProcs.3 ================================================================== --- doc/SetClassProcs.3 +++ doc/SetClassProcs.3 @@ -12,11 +12,10 @@ .SH SYNOPSIS .nf \fB#include \fR .sp \fBTk_SetClassProcs\fR(\fItkwin, procs, instanceData\fR) -.fi .SH ARGUMENTS .AS Tk_ClassProc instanceData .AP Tk_Window tkwin in Token for window to modify. .AP "const Tk_ClassProcs" *procs in @@ -31,11 +30,11 @@ \fBTk_SetClassProcs\fR is called to register a set of procedures that are used as callbacks in different places. .PP The structure pointed to by \fIprocs\fR contains the following: .CS -typedef struct { +typedef struct Tk_ClassProcs { size_t \fIsize\fR; Tk_ClassWorldChangedProc *\fIworldChangedProc\fR; Tk_ClassCreateProc *\fIcreateProc\fR; Tk_ClassModalProc *\fImodalProc\fR; } \fBTk_ClassProcs\fR; Index: doc/SetGrid.3 ================================================================== --- doc/SetGrid.3 +++ doc/SetGrid.3 @@ -15,11 +15,10 @@ \fB#include \fR .sp \fBTk_SetGrid\fR(\fItkwin, reqWidth, reqHeight, widthInc, heightInc\fR) .sp \fBTk_UnsetGrid\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window heightInc .AP Tk_Window tkwin in Token for window. .AP int reqWidth in Index: doc/SetOptions.3 ================================================================== --- doc/SetOptions.3 +++ doc/SetOptions.3 @@ -57,11 +57,11 @@ .AP Tk_Window tkwin in For options such as \fBTK_OPTION_COLOR\fR, this argument indicates the window in which the option will be used. If \fIoptionTable\fR uses no window-dependent options, then a NULL value may be supplied for this argument. -.AP Tcl_Size objc in +.AP int objc in Number of values in \fIobjv\fR. .AP Tcl_Obj "*const *objv" in Command-line arguments for setting configuring options. .AP Tk_SavedOptions *savePtr out If not NULL, the structure pointed to by this argument is filled @@ -529,11 +529,11 @@ Applications can extend the built-in configuration types with additional configuration types by writing procedures to parse, print, free, and restore saved copies of the type and creating a structure pointing to those procedures: .CS -typedef struct { +typedef struct Tk_ObjCustomOption { const char *\fIname\fR; Tk_CustomOptionSetProc *\fIsetProc\fR; Tk_CustomOptionGetProc *\fIgetProc\fR; Tk_CustomOptionRestoreProc *\fIrestoreProc\fR; Tk_CustomOptionFreeProc *\fIfreeProc\fR; Index: doc/SetVisual.3 ================================================================== --- doc/SetVisual.3 +++ doc/SetVisual.3 @@ -14,11 +14,10 @@ .nf \fB#include \fR .sp int \fBTk_SetWindowVisual\fR(\fItkwin, visual, depth, colormap\fR) -.fi .SH ARGUMENTS .AS "Tk_Window int" colormap .AP Tk_Window tkwin in Token for window. .AP Visual *visual in @@ -42,10 +41,10 @@ If \fItkwin\fR has already been created before \fBTk_SetWindowVisual\fR is called then it returns 0 and does not make any changes; otherwise it returns 1 to signify that the operation completed successfully. .PP -Note that \fBTk_SetWindowVisual\fR should not be called if you just want +Note: \fBTk_SetWindowVisual\fR should not be called if you just want to change a window's colormap without changing its visual or depth; call \fBTk_SetWindowColormap\fR instead. .SH KEYWORDS colormap, depth, visual Index: doc/StrictMotif.3 ================================================================== --- doc/StrictMotif.3 +++ doc/StrictMotif.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp int \fBTk_StrictMotif\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window tkwin .AP Tk_Window tkwin in Token for window. .BE Index: doc/TextLayout.3 ================================================================== --- doc/TextLayout.3 +++ doc/TextLayout.3 @@ -12,32 +12,35 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Tk_TextLayout -\fBTk_ComputeTextLayout\fR(\fItkfont, string, numChars, wrapLength, justify, flags, widthPtr, heightPtr\fR) -.sp -\fBTk_FreeTextLayout\fR(\fIlayout\fR) -.sp -\fBTk_DrawTextLayout\fR(\fIdisplay, drawable, gc, layout, x, y, firstChar, lastChar\fR) -.sp -\fBTk_UnderlineTextLayout\fR(\fIdisplay, drawable, gc, layout, x, y, underline\fR) -.sp -int -\fBTk_PointToChar\fR(\fIlayout, x, y\fR) -.sp -int -\fBTk_CharBbox\fR(\fIlayout, index, xPtr, yPtr, widthPtr, heightPtr\fR) -.sp -int -\fBTk_DistanceToTextLayout\fR(\fIlayout, x, y\fR) -.sp -int -\fBTk_IntersectTextLayout\fR(\fIlayout, x, y, width, height\fR) -.sp -\fBTk_TextLayoutToPostscript\fR(\fIinterp, layout\fR) -.fi +\fBTk_ComputeTextLayout(\fItkfont, string, numChars, wrapLength, justify, flags, widthPtr, heightPtr\fB)\fR +.sp +void +\fBTk_FreeTextLayout(\fIlayout\fB)\fR +.sp +void +\fBTk_DrawTextLayout(\fIdisplay, drawable, gc, layout, x, y, firstChar, lastChar\fB)\fR +.sp +void +\fBTk_UnderlineTextLayout(\fIdisplay, drawable, gc, layout, x, y, underline\fB)\fR +.sp +int +\fBTk_PointToChar(\fIlayout, x, y\fB)\fR +.sp +int +\fBTk_CharBbox(\fIlayout, index, xPtr, yPtr, widthPtr, heightPtr\fB)\fR +.sp +int +\fBTk_DistanceToTextLayout(\fIlayout, x, y\fB)\fR +.sp +int +\fBTk_IntersectTextLayout(\fIlayout, x, y, width, height\fB)\fR +.sp +void +\fBTk_TextLayoutToPostscript(\fIinterp, layout\fB)\fR .SH ARGUMENTS .AS Tk_TextLayout "*xPtr, *yPtr" .AP Tk_Font tkfont in Font to use when constructing and displaying a text layout. The \fItkfont\fR must remain valid for the lifetime of the text layout. Must @@ -95,22 +98,22 @@ .AP int "x, y" in Point, in pixels, at which to place the upper-left hand corner of the text layout when it is being drawn, or the coordinates of a point (with respect to the upper-left hand corner of the text layout) to check against the text layout. -.AP Tcl_Size firstChar in +.AP int firstChar in The index of the first character to draw from the given text layout. The number 0 means to draw from the beginning. -.AP Tcl_Size lastChar in +.AP int lastChar in The index of the last character up to which to draw. The character specified by \fIlastChar\fR itself will not be drawn. A number less than 0 means to draw all characters in the text layout. .AP int underline in Index of the single character to underline in the text layout, or a negative number counting backwards from the end of the string. Any out-of-range number (e.g. INT_MIN) means no underline. -.AP Tcl_Size index in +.AP int index in The index of the character whose bounding box is desired. The bounding box is computed with respect to the upper-left hand corner of the text layout. .AP int "*xPtr, *yPtr" out Filled with the upper-left hand corner, in pixels, of the bounding box for the character specified by \fIindex\fR. Either or both \fIxPtr\fR Index: doc/TkInitStubs.3 ================================================================== --- doc/TkInitStubs.3 +++ doc/TkInitStubs.3 @@ -13,11 +13,10 @@ .nf \fB#include \fR .sp const char * \fBTk_InitStubs\fR(\fIinterp, version, exact\fR) -.fi .SH ARGUMENTS .AS Tcl_Interp *interp in .AP Tcl_Interp *interp in Tcl interpreter handle. .AP char *version in Index: doc/Tk_Init.3 ================================================================== --- doc/Tk_Init.3 +++ doc/Tk_Init.3 @@ -45,51 +45,41 @@ \fBTk_SafeInit\fR is identical to \fBTk_Init\fR except that it removes all Tk commands that are considered unsafe. Those commands and the reasons for their exclusion are: .TP \fBbell\fR -. Continuous ringing of the bell is a nuisance. .TP \fBclipboard\fR -. A malicious script could replace the contents of the clipboard with the string .QW "\fBrm \-r *\fR" and lead to surprises when the contents of the clipboard are pasted. .TP \fBgrab\fR -. Grab can be used to block the user from using any other applications. .TP \fBmenu\fR -. Menus can be used to cover the entire screen and to steal input from the user. .TP \fBselection\fR -. See clipboard. .TP \fBsend\fR -. Send can be used to cause unsafe interpreters to execute commands. .TP \fBtk\fR -. The tk command recreates the send command, which is unsafe. .TP \fBtkwait\fR -. Tkwait can block the containing process forever .TP \fBtoplevel\fR -. Toplevels can be used to cover the entire screen and to steal input from the user. .TP \fBwm\fR -. If toplevels are ever allowed, wm can be used to remove decorations, move windows around, etc. .SH KEYWORDS safe, application, initialization, load, main window Index: doc/Tk_Main.3 ================================================================== --- doc/Tk_Main.3 +++ doc/Tk_Main.3 @@ -15,11 +15,11 @@ \fB#include \fR .sp \fBTk_Main\fR(\fIargc, argv, appInitProc\fR) .SH ARGUMENTS .AS Tcl_AppInitProc *appInitProc -.AP Tcl_Size argc in +.AP int argc in Number of elements in \fIargv\fR. .AP char *argv[] in Array of strings containing command-line arguments. On Windows, when using -DUNICODE, the parameter type changes to wchar_t *. .AP Tcl_AppInitProc *appInitProc in Index: doc/WinUtil.3 ================================================================== --- doc/WinUtil.3 +++ doc/WinUtil.3 @@ -13,19 +13,18 @@ .SH SYNOPSIS .nf \fB#include \fR .sp Tk_Window -\fBTk_GetOtherWindow\fR(\fItkwin\fR) +\fBTk_GetOtherWindow(\fItkwin\fB)\fR .sp -\fBTk_MakeContainer\fR(\fItkwin\fR) +\fBTk_MakeContainer(\fItkwin\fB)\fR .sp -\fBTk_MakeWindow\fR(\fItkwin, parent\fR) +\fBTk_MakeWindow(\fItkwin, parent\fB)\fR .sp int -\fBTk_UseWindow\fR(\fIinterp, tkwin, string\fR) -.fi +\fBTk_UseWindow(\fIinterp, tkwin, string\fB)\fR .SH ARGUMENTS .AS XSetWindowAttributes borderWidth .AP Tcl_Interp * interp in Interpreter associated with the application. .AP Tk_Window tkwin in Index: doc/WindowId.3 ================================================================== --- doc/WindowId.3 +++ doc/WindowId.3 @@ -101,11 +101,10 @@ Tcl_Interp * \fBTk_Interp\fR(\fItkwin\fR) .sp Tcl_Obj * \fBTk_NewWindowObj\fR(\fItkwin\fR) -.fi .SH ARGUMENTS .AS Tk_Window tkwin .AP Tk_Window tkwin in Token for window. .BE @@ -146,11 +145,11 @@ returns a pointer to a structure containing all of the above information plus a few other fields. \fBTk_Attributes\fR returns a pointer to an XSetWindowAttributes structure describing all of the attributes of the \fItkwin\fR's window, such as background pixmap, event mask, and so on (Tk keeps track of all this information -as it is changed by the application). Note that it is essential that +as it is changed by the application). Note: it is essential that applications use Tk procedures like \fBTk_ResizeWindow\fR instead of X procedures like \fBXResizeWindow\fR, so that Tk can keep its data structures up-to-date. .PP \fBTk_IsContainer\fR returns a non-zero value if \fItkwin\fR Index: doc/bind.n ================================================================== --- doc/bind.n +++ doc/bind.n @@ -147,13 +147,12 @@ pattern, all of the events must occur close together in time and without substantial mouse motion in between. For example, \fB\fR is equivalent to \fB\fR with the extra time and space requirement. .PP -The \fBCommand\fR, \fBOption\fR, \fBNum\fR and \fBFn\fRmodifiers are -equivalents of \fBMod1\fR up to \fBMod4\fR; they correspond to -Macintosh-specific modifier keys. +The \fBCommand\fR, \fBOption\fR, \fBNum\fR and \fBFn\fRmodifiers are equivalents +of \fBMod1\fR up to \fBMod4\fR, they correspond to Macintosh-specific modifier keys. .PP The \fBExtended\fR modifier is, at present, specific to Windows. It appears on events that are associated with the keys on the .QW "extended keyboard" . On a US keyboard, the extended keys include the \fBAlt\fR @@ -648,13 +647,13 @@ If the \fBbreak\fR command is invoked within a binding script, then that script terminates and no other scripts will be invoked for the event. .PP Within a script called from the binding script, \fBreturn\fR -\fB\-code ok\fR may be used to continue processing (including +\fB-code ok\fR may be used to continue processing (including .QW + -appended scripts), or \fBreturn\fR \fB\-code break\fR may be used to +appended scripts), or \fBreturn\fR \fB-code break\fR may be used to stop processing all other binding scripts. .PP If more than one binding matches a particular event and they have the same \fItag\fR, then the most specific binding is chosen and its script is evaluated. @@ -738,20 +737,20 @@ .SH "EXAMPLES" .PP Arrange for a string describing the motion of the mouse to be printed out when the mouse is double-clicked: .CS -\fBbind\fR . { +\fBbind\fR . { puts "hi from (%x,%y)" } .CE .PP A little GUI that displays what the keysym name of the last key pressed is: .CS set keysym "Press any key" -pack [label .l -textvariable keysym -padx 2m -pady 1m] +pack [label .l \-textvariable keysym \-padx 2m \-pady 1m] \fBbind\fR . { set keysym "You pressed %K" } .CE .SH "SEE ALSO" Index: doc/bitmap.n ================================================================== --- doc/bitmap.n +++ doc/bitmap.n @@ -13,11 +13,11 @@ bitmap \- Images that display two colors .SH SYNOPSIS .nf \fBimage create bitmap \fR?\fIname\fR? ?\fIoptions\fR? -\fIimageName \fBcget\fI option\fR +\fIimageName \fBcget\fR \fIoption\fR \fIimageName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? .fi .BE .SH DESCRIPTION .PP @@ -37,52 +37,46 @@ .SH "CREATING BITMAPS" .PP Like all images, bitmaps are created using the \fBimage create\fR command. Bitmaps support the following \fIoptions\fR: -.\" OPTION: -background .TP \fB\-background \fIcolor\fR . Specifies a background color for the image in any of the standard ways accepted by Tk. If this option is set to an empty string then the background pixels will be transparent. This effect is achieved by using the source bitmap as the mask bitmap, ignoring any \fB\-maskdata\fR or \fB\-maskfile\fR options. -.\" OPTION: -data .TP \fB\-data \fIstring\fR . Specifies the contents of the source bitmap as a string. The string must adhere to X11 bitmap format (e.g., as generated by the \fBbitmap\fR program). If both the \fB\-data\fR and \fB\-file\fR options are specified, the \fB\-data\fR option takes precedence. -.\" OPTION: -file .TP \fB\-file \fIname\fR . \fIname\fR gives the name of a file whose contents define the source bitmap. The file must adhere to X11 bitmap format (e.g., as generated by the \fBbitmap\fR program). -.\" OPTION: -foreground .TP \fB\-foreground \fIcolor\fR . Specifies a foreground color for the image in any of the standard ways accepted by Tk. -.\" OPTION: -maskdata .TP \fB\-maskdata \fIstring\fR . Specifies the contents of the mask as a string. The string must adhere to X11 bitmap format (e.g., as generated by the \fBbitmap\fR program). If both the \fB\-maskdata\fR and \fB\-maskfile\fR options are specified, the \fB\-maskdata\fR option takes precedence. -.\" OPTION: -maskfile .TP \fB\-maskfile \fIname\fR . \fIname\fR gives the name of a file whose contents define the mask. @@ -99,19 +93,17 @@ \fIimageName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for bitmap images: -.\" METHOD: cget .TP -\fIimageName \fBcget\fI option\fR +\fIimageName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBimage create\fR \fBbitmap\fR command. -.\" METHOD: configure .TP \fIimageName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options for the image. If no \fIoption\fR is specified, returns a list describing all of Index: doc/busy.n ================================================================== --- doc/busy.n +++ doc/busy.n @@ -262,11 +262,11 @@ \fBhold\fR so that no keyboard events will be sent to \fB.frame\fR or any of its descendants. It also makes sure it's not possible to leave button \fB.cancel\fR using the keyboard. .SH PORTABILITY .PP -Note that the \fBtk busy\fR command does not currently have any effect on OSX +Note that the \fBtk busy\fR command does not currently have any effect on macOS when Tk is built using Aqua support. .SH "SEE ALSO" grab(n) .SH KEYWORDS busy, keyboard events, pointer events, window Index: doc/button.n ================================================================== --- doc/button.n +++ doc/button.n @@ -181,11 +181,11 @@ .PP The behavior of buttons can be changed by defining new bindings for individual widgets or by redefining the class bindings. .SH "PLATFORM NOTES" .PP -On Aqua/Mac OS X, some configuration options are ignored for the purpose of +On Aqua/macOS, some configuration options are ignored for the purpose of drawing of the widget because they would otherwise conflict with platform guidelines. The \fBconfigure\fR and \fBcget\fR subcommands can still manipulate the values, but do not cause any variation to the look of the widget. The options affected notably include \fB\-background\fR and \fB\-relief\fR. Index: doc/canvas.n ================================================================== --- doc/canvas.n +++ doc/canvas.n @@ -11,11 +11,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME canvas \- Create and manipulate 'canvas' hypergraphics drawing surface widgets .SH SYNOPSIS -\fBcanvas\fI pathName \fR?\fIoptions\fR? +\fBcanvas\fR \fIpathName \fR?\fIoptions\fR? .SO \-background \-borderwidth \-cursor \-highlightbackground \-highlightcolor \-highlightthickness \-insertbackground \-insertborderwidth \-insertofftime \-insertontime \-insertwidth \-relief @@ -254,11 +254,13 @@ the last one in the text item; this is necessary for such tasks as inserting new text at the end of the item. Lines and Polygons do not support the insertion cursor and the selection. Their indices are supposed to be even always, because coordinates always appear in pairs. -.IP \fInumber\fR 10 +.TP 10 +\fInumber\fR +. A decimal number giving the position of the desired character within the text item. 0 refers to the first character, 1 to the next character, and so on. If indexes are odd for lines and polygons, they will be automatically decremented by one. @@ -267,24 +269,34 @@ as if it were equal to the length of the text item. For polygons, negative numbers or numbers greater than the length of the coordinate list will be adjusted by adding or subtracting the length until the result is between zero and the length, inclusive. -.IP \fBend\fR 10 +.TP 10 +\fBend\fR +. Refers to the character or coordinate just after the last one in the item (same as the number of characters or coordinates in the item). -.IP \fBinsert\fR 10 +.TP 10 +\fBinsert\fR +. Refers to the character just before which the insertion cursor is drawn in this item. Not valid for lines and polygons. -.IP \fBsel.first\fR 10 +.TP 10 +\fBsel.first\fR +. Refers to the first selected character in the item. If the selection is not in this item then this form is illegal. -.IP \fBsel.last\fR 10 +.TP 10 +\fBsel.last\fR +. Refers to the last selected character in the item. If the selection is not in this item then this form is illegal. -.IP \fB@\fIx,y\fR 10 +.TP 10 +\fB@\fIx,y\fR +. Refers to the character or coordinate at the point given by \fIx\fR and \fIy\fR, where \fIx\fR and \fIy\fR are specified in the coordinate system of the canvas. If \fIx\fR and \fIy\fR lie outside the coordinates covered by the text item, then they refer to the first or last character in the @@ -339,11 +351,10 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following widget commands are possible for canvas widgets: -.\" METHOD: addtag .TP \fIpathName \fBaddtag \fItag searchSpec \fR?\fIarg ...\fR? . For each item that meets the constraints specified by \fIsearchSpec\fR and the \fIarg\fRs, add @@ -354,23 +365,31 @@ command has no effect. This command returns an empty string as result. \fISearchSpec\fR and \fIarg\fR's may take any of the following forms: .RS -.IP "\fBabove \fItagOrId\fR" +.TP +\fBabove \fItagOrId\fR +. Selects the item just after (above) the one given by \fItagOrId\fR in the display list. If \fItagOrId\fR denotes more than one item, then the last (topmost) of these items in the display list is used. -.IP \fBall\fR +.TP +\fBall\fR +. Selects all the items in the canvas. -.IP "\fBbelow \fItagOrId\fR" +.TP +\fBbelow \fItagOrId\fR +. Selects the item just before (below) the one given by \fItagOrId\fR in the display list. If \fItagOrId\fR denotes more than one item, then the first (lowest) of these items in the display list is used. -.IP "\fBclosest \fIx y \fR?\fIhalo\fR? ?\fIstart\fR?" +.TP +\fBclosest \fIx y \fR?\fIhalo\fR? ?\fIstart\fR? +. Selects the item closest to the point given by \fIx\fR and \fIy\fR. If more than one item is at the same closest distance (e.g. two items overlap the point), then the top-most of these items (the last one in the display list) is used. If \fIhalo\fR is specified, then it must be a non-negative @@ -384,25 +403,30 @@ the given tag). Instead of selecting the topmost closest item, this form will select the topmost closest item that is below \fIstart\fR in the display list; if no such item exists, then the selection behaves as if the \fIstart\fR argument had not been specified. -.IP "\fBenclosed\fI x1 y1 x2 y2\fR" +.TP +\fBenclosed\fR \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR +. Selects all the items completely enclosed within the rectangular region given by \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR. \fIX1\fR must be no greater than \fIx2\fR and \fIy1\fR must be no greater than \fIy2\fR. -.IP "\fBoverlapping\fI x1 y1 x2 y2\fR" +.TP +\fBoverlapping\fR \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR +. Selects all the items that overlap or are enclosed within the rectangular region given by \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR. \fIX1\fR must be no greater than \fIx2\fR and \fIy1\fR must be no greater than \fIy2\fR. -.IP "\fBwithtag \fItagOrId\fR" +.TP +\fBwithtag \fItagOrId\fR +. Selects all the items given by \fItagOrId\fR. .RE -.\" METHOD: bbox .TP \fIpathName \fBbbox \fItagOrId\fR ?\fItagOrId tagOrId ...\fR? . Returns a list with four elements giving an approximate bounding box for all the items named by the \fItagOrId\fR arguments. @@ -416,11 +440,10 @@ a few pixels. If no items match any of the \fItagOrId\fR arguments or if the matching items have empty bounding boxes (i.e. they have nothing to display) then an empty string is returned. -.\" METHOD: bind .TP \fIpathName \fBbind \fItagOrId\fR ?\fIsequence\fR? ?\fIcommand\fR? . This command associates \fIcommand\fR with all the items given by \fItagOrId\fR such that whenever the event sequence given by @@ -478,35 +501,31 @@ command, then they are invoked in addition to bindings created for the canvas's items using the \fBbind\fR widget command. The bindings for items will be invoked before any of the bindings for the window as a whole. .RE -.\" METHOD: canvasx .TP \fIpathName \fBcanvasx \fIscreenx\fR ?\fIgridspacing\fR? . Given a window x-coordinate in the canvas \fIscreenx\fR, this command returns the canvas x-coordinate that is displayed at that location. If \fIgridspacing\fR is specified, then the canvas coordinate is rounded to the nearest multiple of \fIgridspacing\fR units. -.\" METHOD: canvasy .TP \fIpathName \fBcanvasy \fIscreeny\fR ?\fIgridspacing\fR? . Given a window y-coordinate in the canvas \fIscreeny\fR this command returns the canvas y-coordinate that is displayed at that location. If \fIgridspacing\fR is specified, then the canvas coordinate is rounded to the nearest multiple of \fIgridspacing\fR units. -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBcanvas\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of @@ -518,15 +537,14 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBcanvas\fR command. -.\" METHOD: coords .TP -\fIpathName \fBcoords \fItagOrId \fR?\fIx0 y0 ...\fR? +\fIpathName\fR \fBcoords \fItagOrId \fR?\fIx0 y0 ...\fR? .TP -\fIpathName \fBcoords \fItagOrId \fR?\fIcoordList\fR? +\fIpathName\fR \fBcoords \fItagOrId \fR?\fIcoordList\fR? . Query or modify the coordinates that define an item. If no coordinates are specified, this command returns a list whose elements are the coordinates of the item named by \fItagOrId\fR. @@ -541,11 +559,10 @@ which may not be the order originally given. Also the coordinates are always returned in screen units with no units (that is, in pixels). So if the original coordinates were specified for instance in centimeters or inches, the returned values will nevertheless be in pixels. .RE -.\" METHOD: create .TP \fIpathName \fBcreate \fItype x y \fR?\fIx y ...\fR? ?\fIoption value ...\fR? .TP \fIpathName \fBcreate \fItype coordList \fR?\fIoption value ...\fR? . @@ -555,11 +572,10 @@ one or more points, followed by specifications for zero or more item options. See the subsections on individual item types below for more on the syntax of this command. This command returns the id for the new item. -.\" METHOD: dchars .TP \fIpathName \fBdchars \fItagOrId first \fR?\fIlast\fR? . For each item given by \fItagOrId\fR, delete the characters, or coordinates, in the range given by \fIfirst\fR and \fIlast\fR, inclusive. @@ -568,17 +584,15 @@ Text items interpret \fIfirst\fR and \fIlast\fR as indices to a character, line and polygon items interpret them as indices to a coordinate (an x,y pair). Indices are described in \fBINDICES\fR above. If \fIlast\fR is omitted, it defaults to \fIfirst\fR. This command returns an empty string. -.\" METHOD: delete .TP \fIpathName \fBdelete \fR?\fItagOrId tagOrId ...\fR? . Delete each of the items given by each \fItagOrId\fR, and return an empty string. -.\" METHOD: dtag .TP \fIpathName \fBdtag \fItagOrId \fR?\fItagToDelete\fR? . For each of the items given by \fItagOrId\fR, delete the tag given by \fItagToDelete\fR from the list of those @@ -585,21 +599,19 @@ associated with the item. If an item does not have the tag \fItagToDelete\fR then the item is unaffected by the command. If \fItagToDelete\fR is omitted then it defaults to \fItagOrId\fR. This command returns an empty string. -.\" METHOD: find .TP \fIpathName \fBfind \fIsearchCommand \fR?\fIarg ...\fR? . This command returns a list consisting of all the items that meet the constraints specified by \fIsearchCommand\fR and \fIarg\fR's. \fISearchCommand\fR and \fIargs\fR have any of the forms accepted by the \fBaddtag\fR command. The items are returned in stacking order, with the lowest item first. -.\" METHOD: focus .TP \fIpathName \fBfocus \fR?\fItagOrId\fR? . Set the keyboard focus for the canvas widget to the item given by \fItagOrId\fR. @@ -625,70 +637,55 @@ within the canvas. In most cases it is advisable to follow the \fBfocus\fR widget command with the \fBfocus\fR command to set the focus window to the canvas (if it was not there already). .RE -.\" METHOD: gettags .TP -\fIpathName \fBgettags\fI tagOrId\fR +\fIpathName \fBgettags\fR \fItagOrId\fR . Return a list whose elements are the tags associated with the item given by \fItagOrId\fR. If \fItagOrId\fR refers to more than one item, then the tags are returned from the first such item in the display list. If \fItagOrId\fR does not refer to any items, or if the item contains no tags, then an empty string is returned. -.\" METHOD: icursor .TP \fIpathName \fBicursor \fItagOrId index\fR . Set the position of the insertion cursor for the item(s) given by \fItagOrId\fR to just before the character whose position is given by \fIindex\fR. If some or all of the items given by \fItagOrId\fR do not support an insertion cursor then this command has no effect on them. See \fBINDICES\fR above for a description of the legal forms for \fIindex\fR. -.RS -.PP -Note that the insertion cursor is only displayed in an item if +Note: the insertion cursor is only displayed in an item if that item currently has the keyboard focus (see the \fBfocus\fR widget command, above), but the cursor position may be set even when the item does not have the focus. -.PP This command returns an empty string. -.RE -.\" METHOD: image .TP \fIpathName \fBimage \fIimagename\fR ?\fIsubsample\fR? ?\fIzoom\fR? . -Draw the canvas into the Tk photo image named \fIimagename\fR. -If a \fB\-scrollregion\fR has been defined then this will be the boundaries -of the canvas region drawn and the final size of the photo image. Otherwise -the widget width and height with an origin of 0,0 will be the size of the -canvas region drawn and the final size of the photo image. Optionally an -integer \fIsubsample\fR factor may be given and the photo image -will be reduced in size. -.RS -.PP -In addition to the \fIsubsample\fR an integer \fIzoom\fR factor can also -be given and the photo image will be enlarged. The image background will -be filled with the canvas background colour. The canvas widget does not -need to be mapped for this widget command to work, but at least one of -it's ancestors must be mapped. -.PP +Draw the canvas into the Tk photo image named \fIimagename\fR. If a \fB-scrollregion\fR +has been defined then this will be the boundaries of the canvas region drawn and the +final size of the photo image. Otherwise the widget width and height with an origin +of 0,0 will be the size of the canvas region drawn and the final size of the photo +image. Optionally an integer \fIsubsample\fR factor may be given and the photo image +will be reduced in size. In addition to the \fIsubsample\fR an integer \fIzoom\fR +factor can also be given and the photo image will be enlarged. The image background +will be filled with the canvas background colour. The canvas widget does not need to +be mapped for this widget command to work, but at least one of it's ancestors must be +mapped. This command returns an empty string. -.RE -.\" METHOD: imove .TP \fIpathName \fBimove \fItagOrId index x y\fR . This command causes the \fIindex\fR'th coordinate of each of the items indicated by \fItagOrId\fR to be relocated to the location (\fIx\fR,\fIy\fR). Each item interprets \fIindex\fR independently according to the rules described in \fBINDICES\fR above. Out of the standard set of items, only line and polygon items may have their coordinates relocated this way. -.\" METHOD: index .TP \fIpathName \fBindex \fItagOrId index\fR . This command returns a decimal string giving the numerical index within \fItagOrId\fR corresponding to \fIindex\fR. @@ -699,11 +696,10 @@ The return value is guaranteed to lie between 0 and the number of characters, or coordinates, within the item, inclusive. If \fItagOrId\fR refers to multiple items, then the index is processed in the first of these items that supports indexing operations (in display list order). -.\" METHOD: insert .TP \fIpathName \fBinsert \fItagOrId beforeThis string\fR . For each of the items given by \fItagOrId\fR, if the item supports text or coordinate, insertion then \fIstring\fR is inserted into the item's @@ -710,30 +706,24 @@ text just before the character, or coordinate, whose index is \fIbeforeThis\fR. Text items interpret \fIbeforeThis\fR as an index to a character, line and polygon items interpret it as an index to a coordinate (an x,y pair). For lines and polygons the \fIstring\fR must be a valid coordinate sequence. -.RS -.PP See \fBINDICES\fR above for information about the forms allowed for \fIbeforeThis\fR. -.PP This command returns an empty string. -.RE -.\" METHOD: itemcget .TP -\fIpathName \fBitemcget\fI tagOrId option\fR +\fIpathName \fBitemcget\fR \fItagOrId\fR \fIoption\fR . Returns the current value of the configuration option for the item given by \fItagOrId\fR whose name is \fIoption\fR. This command is similar to the \fBcget\fR widget command except that it applies to a particular item rather than the widget as a whole. \fIOption\fR may have any of the values accepted by the \fBcreate\fR widget command when the item was created. If \fItagOrId\fR is a tag that refers to more than one item, the first (lowest) such item is used. -.\" METHOD: itemconfigure .TP \fIpathName \fBitemconfigure \fItagOrId\fR ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? . This command is similar to the \fBconfigure\fR widget command except that it modifies item-specific options for the items given by @@ -752,11 +742,10 @@ this case the command returns an empty string. The \fIoption\fRs and \fIvalue\fRs are the same as those permissible in the \fBcreate\fR widget command when the item(s) were created; see the sections describing individual item types below for details on the legal options. -.\" METHOD: lower .TP \fIpathName \fBlower \fItagOrId \fR?\fIbelowThis\fR? . Move all of the items given by \fItagOrId\fR to a new position in the display list just before the item given by \fIbelowThis\fR. @@ -763,25 +752,23 @@ If \fItagOrId\fR refers to more than one item then all are moved but the relative order of the moved items will not be changed. \fIBelowThis\fR is a tag or id; if it refers to more than one item then the first (lowest) of these items in the display list is used as the destination location for the moved items. -Note that this command has no effect on window items. Window items always +Note: this command has no effect on window items. Window items always obscure other item types, and the stacking order of window items is determined by the \fBraise\fR command and \fBlower\fR command, not the \fBraise\fR widget command and \fBlower\fR widget command for canvases. This command returns an empty string. -.\" METHOD: move .TP \fIpathName \fBmove \fItagOrId xAmount yAmount\fR . Move each of the items given by \fItagOrId\fR in the canvas coordinate space by adding \fIxAmount\fR to the x-coordinate of each point associated with the item and \fIyAmount\fR to the y-coordinate of each point associated with the item. This command returns an empty string. -.\" METHOD: moveto .TP \fIpathName \fBmoveto \fItagOrId xPos yPos\fR . Move the items given by \fItagOrId\fR in the canvas coordinate space so that the first coordinate pair (the upper-left corner of the @@ -790,11 +777,10 @@ position (\fIxPos\fR,\fIyPos\fR). \fIxPos\fR and \fIyPos\fR may be the empty string, in which case the corresponding coordinate will be unchanged. All items matching \fItagOrId\fR remain in the same positions relative to each other. This command returns an empty string. -.\" METHOD: postscript .TP \fIpathName \fBpostscript \fR?\fIoption value option value ...\fR? . Generate a Postscript representation for part or all of the canvas. If the \fB\-file\fR option is specified then the Postscript is written @@ -817,19 +803,17 @@ options to specify the area of the canvas to print. The \fIoption\fR\-\fIvalue\fR argument pairs provide additional information to control the generation of Postscript. The following options are supported: .RS -.\" OPTION: -channel .TP \fB\-channel \fIchannelName\fR . Specifies the name of the channel to which to write the Postscript. If this option and the \fB\-file\fR option are not specified then the Postscript is returned as the result of the command. -.\" OPTION: -colormap .TP \fB\-colormap \fIvarName\fR . \fIVarName\fR must be the name of an array variable that specifies a color mapping to use in the Postscript. @@ -839,33 +823,27 @@ When outputting color information in the Postscript, Tk checks to see if there is an element of \fIvarName\fR with the same name as the color. If so, Tk uses the value of the element as the Postscript command to set the color. -.RS -.PP If this option has not been specified, or if there is no entry in \fIvarName\fR for a given color, then Tk uses the red, green, and blue intensities from the X color. -.RE -.\" OPTION: -colormode .TP \fB\-colormode \fImode\fR . Specifies how to output color information. \fIMode\fR must be either \fBcolor\fR (for full color output), \fBgray\fR (convert all colors to their gray-scale equivalents) or \fBmono\fR (convert all colors to black or white). -.\" OPTION: -file .TP \fB\-file \fIfileName\fR . Specifies the name of the file in which to write the Postscript. If this option and the \fB\-channel\fR option are not specified then the Postscript is returned as the result of the command. -.\" OPTION: -fontmap .TP \fB\-fontmap \fIvarName\fR . \fIVarName\fR must be the name of an array variable that specifies a font mapping to use in the Postscript. @@ -878,36 +856,27 @@ that element is used in the Postscript. Otherwise Tk attempts to guess what Postscript font to use. Tk's guesses generally only work for well-known fonts such as Times and Helvetica and Courier, and only if the X font name does not omit any dashes up through the point size. -.RS -.PP For example, \fB\-*\-Courier\-Bold\-R\-Normal\-\-*\-120\-*\fR will work but \fB*Courier\-Bold\-R\-Normal*120*\fR will not; Tk needs the dashes to parse the font name). -.RE -.\" OPTION: -height .TP \fB\-height \fIsize\fR . Specifies the height of the area of the canvas to print. Defaults to the height of the canvas window. -.\" OPTION: -pageanchor .TP \fB\-pageanchor \fIanchor\fR . Specifies which point of the printed area of the canvas should appear over the positioning point on the page (which is given by the \fB\-pagex\fR and \fB\-pagey\fR options). -.RS -.PP For example, \fB\-pageanchor n\fR means that the top center of the area of the canvas being printed (as it appears in the canvas window) should be over the positioning point. Defaults to \fBcenter\fR. -.RE -.\" OPTION: -pageheight .TP \fB\-pageheight \fIsize\fR . Specifies that the Postscript should be scaled in both x and y so that the printed area is \fIsize\fR high on the Postscript page. @@ -916,11 +885,10 @@ or \fBp\fR or nothing for printer's points (1/72 inch). Defaults to the height of the printed area on the screen. If both \fB\-pageheight\fR and \fB\-pagewidth\fR are specified then the scale factor from \fB\-pagewidth\fR is used (non-uniform scaling is not implemented). -.\" OPTION: -pagewidth .TP \fB\-pagewidth \fIsize\fR . Specifies that the Postscript should be scaled in both x and y so that the printed area is \fIsize\fR wide on the Postscript page. @@ -927,29 +895,26 @@ \fISize\fR has the same form as for \fB\-pageheight\fR. Defaults to the width of the printed area on the screen. If both \fB\-pageheight\fR and \fB\-pagewidth\fR are specified then the scale factor from \fB\-pagewidth\fR is used (non-uniform scaling is not implemented). -.\" OPTION: -pagex .TP \fB\-pagex \fIposition\fR . \fIPosition\fR gives the x-coordinate of the positioning point on the Postscript page, using any of the forms allowed for \fB\-pageheight\fR. Used in conjunction with the \fB\-pagey\fR and \fB\-pageanchor\fR options to determine where the printed area appears on the Postscript page. Defaults to the center of the page. -.\" OPTION: -pagey .TP \fB\-pagey \fIposition\fR . \fIPosition\fR gives the y-coordinate of the positioning point on the Postscript page, using any of the forms allowed for \fB\-pageheight\fR. Used in conjunction with the \fB\-pagex\fR and \fB\-pageanchor\fR options to determine where the printed area appears on the Postscript page. Defaults to the center of the page. -.\" OPTION: -rotate .TP \fB\-rotate \fIboolean\fR . \fIBoolean\fR specifies whether the printed area is to be rotated 90 degrees. @@ -957,34 +922,30 @@ the short dimension of the page .PQ portrait " orientation" ; in rotated output the x-axis runs along the long dimension of the page .PQ landscape " orientation" . Defaults to non-rotated. -.\" OPTION: -width .TP \fB\-width \fIsize\fR . Specifies the width of the area of the canvas to print. Defaults to the width of the canvas window. -.\" OPTION: -x .TP \fB\-x \fIposition\fR . Specifies the x-coordinate of the left edge of the area of the canvas that is to be printed, in canvas coordinates, not window coordinates. Defaults to the coordinate of the left edge of the window. -.\" OPTION: -y .TP \fB\-y \fIposition\fR . Specifies the y-coordinate of the top edge of the area of the canvas that is to be printed, in canvas coordinates, not window coordinates. Defaults to the coordinate of the top edge of the window. .RE -.\" METHOD: raise .TP \fIpathName \fBraise \fItagOrId \fR?\fIaboveThis\fR? . Move all of the items given by \fItagOrId\fR to a new position in the display list just after the item given by \fIaboveThis\fR. @@ -994,16 +955,15 @@ item then the last (topmost) of these items in the display list is used as the destination location for the moved items. This command returns an empty string. .RS .PP -Note this this command has no effect on window items. Window items always +Note: this command has no effect on window items. Window items always obscure other item types, and the stacking order of window items is determined by the \fBraise\fR command and \fBlower\fR command, not the \fBraise\fR widget command and \fBlower\fR widget command for canvases. .RE -.\" METHOD: rchars .TP \fIpathName \fBrchars \fItagOrId first last string\fR . This command causes the text or coordinates between \fIfirst\fR and \fIlast\fR for each of the items indicated by \fItagOrId\fR to be replaced by @@ -1011,11 +971,10 @@ according to the rules described in \fBINDICES\fR above. Out of the standard set of items, text items support this operation by altering their text as directed, and line and polygon items support this operation by altering their coordinate list (in which case \fIstring\fR should be a list of coordinates to use as a replacement). The other items ignore this operation. -.\" METHOD: rotate .TP \fIpathName \fBrotate \fItagOrId xOrigin yOrigin angle\fR .VS "8.7, TIP164" Rotate the coordinates of all of the items given by \fItagOrId\fR in canvas coordinate space. @@ -1033,11 +992,10 @@ .PP Some items (currently \fBarc\fR and\fB text\fR) have angles in their options; this command \fIdoes not\fR affect those options. .RE .VE "8.7, TIP164" -.\" METHOD: scale .TP \fIpathName \fBscale \fItagOrId xOrigin yOrigin xScale yScale\fR . Rescale the coordinates of all of the items given by \fItagOrId\fR in canvas coordinate space. @@ -1055,13 +1013,12 @@ .PP Note that some items have only a single pair of coordinates (e.g., text, images and windows) and so scaling of them by this command can only move them around. .RE -.\" METHOD: scan .TP -\fIpathName \fBscan\fI option args\fR +\fIpathName \fBscan\fR \fIoption args\fR . This command is used to implement scanning on canvases. It has two forms, depending on \fIoption\fR: .RS .TP @@ -1083,11 +1040,10 @@ This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the canvas at high speed through its window. The return value is an empty string. .RE -.\" METHOD: select .TP \fIpathName \fBselect \fIoption\fR ?\fItagOrId arg\fR? . Manipulates the selection in one of several ways, depending on \fIoption\fR. @@ -1150,21 +1106,19 @@ If the selection anchor point for the widget is not currently in \fItagOrId\fR, then it is set to the same character given by \fIindex\fR. Returns an empty string. .RE -.\" METHOD: type .TP \fIpathName \fBtype\fI tagOrId\fR . Returns the type of the item given by \fItagOrId\fR, such as \fBrectangle\fR or \fBtext\fR. If \fItagOrId\fR refers to more than one item, then the type of the first item in the display list is returned. If \fItagOrId\fR does not refer to any items at all then an empty string is returned. -.\" METHOD: xview .TP \fIpathName \fBxview \fR?\fIargs\fR? . This command is used to query and change the horizontal position of the information displayed in the canvas's window. @@ -1204,11 +1158,10 @@ becomes visible. If \fIwhat\fR is \fBunits\fR, the view adjusts left or right in units of the \fBxScrollIncrement\fR option, if it is greater than zero, or in units of one-tenth the window's width otherwise. .RE -.\" METHOD: yview .TP \fIpathName \fByview ?\fIargs\fR? . This command is used to query and change the vertical position of the information displayed in the canvas's window. @@ -1265,11 +1218,10 @@ the coordinates of the item. .SS "COMMON ITEM OPTIONS" .PP Many items share a common set of options. These options are explained here, and then referred to be each widget type for brevity. -.\" OPTION: -anchor .TP \fB\-anchor \fIanchorPos\fR . \fIAnchorPos\fR tells how to position the item relative to the positioning point for the item; it may have any of the forms @@ -1276,67 +1228,56 @@ accepted by \fBTk_GetAnchor\fR. For example, if \fIanchorPos\fR is \fBcenter\fR then the item is centered on the point; if \fIanchorPos\fR is \fBn\fR then the item will be drawn so that its top center point is at the positioning point. This option defaults to \fBcenter\fR. -.\" OPTION: -dash .TP \fB\-dash \fIpattern\fR -.\" OPTION: -activedash .TP \fB\-activedash \fIpattern\fR -.\" OPTION: -disableddash .TP \fB\-disableddash \fIpattern\fR . -These options specify dash patterns for the normal, active +This option specifies dash patterns for the normal, active state, and disabled state of an item. \fIpattern\fR may have any of the forms accepted by \fBTk_GetDash\fR. If the dash options are omitted then the default is a solid outline. See \fBDASH PATTERNS\fR for more information. -.\" OPTION: -dashoffset .TP \fB\-dashoffset \fIoffset\fR . The starting \fIoffset\fR in pixels into the pattern provided by the \fB\-dash\fR option. \fB\-dashoffset\fR is ignored if there is no \fB\-dash\fR pattern. The \fIoffset\fR may have any of the forms described in the \fBCOORDINATES\fR section above. -.\" OPTION: -fill .TP \fB\-fill \fIcolor\fR -.\" OPTION: -activefill .TP \fB\-activefill \fIcolor\fR -.\" OPTION: -disabledfill .TP \fB\-disabledfill \fIcolor\fR . -These options specify the color to be used to fill item's area. +Specifies the color to be used to fill item's area. in its normal, active, and disabled states. The even-odd fill rule is used. \fIColor\fR may have any of the forms accepted by \fBTk_GetColor\fR. For the line item, it specifies the color of the line drawn. For the text item, it specifies the foreground color of the text. If \fIcolor\fR is an empty string (the default for all canvas items except line and text), then the item will not be filled. -.\" OPTION: -outline .TP \fB\-outline \fIcolor\fR -.\" OPTION: -activeoutline .TP \fB\-activeoutline \fIcolor\fR -.\" OPTION: -disabledoutline .TP \fB\-disabledoutline \fIcolor\fR . -These options specify the color that should be used to draw the +This option specifies the color that should be used to draw the outline of the item in its normal, active and disabled states. \fIColor\fR may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR is specified as an empty string then no outline is drawn for the item. -.\" OPTION: -offset .TP \fB\-offset \fIoffset\fR . Specifies the offset of stipples. The offset value can be of the form \fBx,y\fR or \fIside\fR, where side can be \fBn\fR, \fBne\fR, \fBe\fR, @@ -1347,21 +1288,18 @@ toplevel origin instead. For canvas objects, the \fB\-offset\fR option is used for stippling as well. For the line and polygon canvas items you can also specify an index as argument, which connects the stipple origin to one of the coordinate points of the line/polygon. Note that stipple offsets are \fIonly supported on X11\fR; they are silently ignored on other platforms. -.\" OPTION: -outlinestipple .TP \fB\-outlinestipple \fIbitmap\fR -.\" OPTION: -activeoutlinestipple .TP \fB\-activeoutlinestipple \fIbitmap\fR -.\" OPTION: -disabledoutlinestipple .TP \fB\-disabledoutlinestipple \fIbitmap\fR . -These options specify stipple patterns that should be used to draw the +This option specifies stipple patterns that should be used to draw the outline of the item in its normal, active and disabled states. Indicates that the outline for the item should be drawn with a stipple pattern; \fIbitmap\fR specifies the stipple pattern to use, in any of the forms accepted by \fBTk_GetBitmap\fR. If the \fB\-outline\fR option has not been specified then this option @@ -1368,28 +1306,24 @@ has no effect. If \fIbitmap\fR is an empty string (the default), then the outline is drawn in a solid fashion. \fINote that stipples are not well supported on platforms that do not use X11 as their drawing API.\fR -.\" OPTION: -outlineoffset .TP \fB\-outlineoffset \fIoffset\fR . Specifies the offset of the stipple pattern used for outlines, in the same way that the \fB\-outline\fR option controls fill stipples. (See the \fB\-outline\fR option for a description of the syntax of \fIoffset\fR.) -.\" OPTION: -stipple .TP \fB\-stipple \fIbitmap\fR -.\" OPTION: -activestipple .TP \fB\-activestipple \fIbitmap\fR -.\" OPTION: -disabledstipple .TP \fB\-disabledstipple \fIbitmap\fR . -These options specify stipple patterns that should be used to fill +This option specifies stipple patterns that should be used to fill the item in its normal, active and disabled states. \fIbitmap\fR specifies the stipple pattern to use, in any of the forms accepted by \fBTk_GetBitmap\fR. If the \fB\-fill\fR option has not been specified then this option has no effect. @@ -1396,35 +1330,30 @@ If \fIbitmap\fR is an empty string (the default), then filling is done in a solid fashion. For the text item, it affects the actual text. \fINote that stipples are not well supported on platforms that do not use X11 as their drawing API.\fR -.\" OPTION: -state .TP \fB\-state \fIstate\fR . This allows an item to override the canvas widget's global \fIstate\fR option. It takes the same values: \fInormal\fR, \fIdisabled\fR or \fIhidden\fR. -.\" OPTION: -tags .TP \fB\-tags \fItagList\fR . Specifies a set of tags to apply to the item. \fITagList\fR consists of a list of tag names, which replace any existing tags for the item. \fITagList\fR may be an empty list. -.\" OPTION: -width .TP \fB\-width \fIoutlineWidth\fR -.\" OPTION: -activewidth .TP \fB\-activewidth \fIoutlineWidth\fR -.\" OPTION: -disabledwidth .TP \fB\-disabledwidth \fIoutlineWidth\fR . -These options specify the width of the outline to be drawn around +Specifies the width of the outline to be drawn around the item's region, in its normal, active and disabled states. \fIoutlineWidth\fR may be in any of the forms described in the \fBCOORDINATES\fR section above. If the \fB\-outline\fR option has been specified as an empty string then this option has no effect. This option defaults to 1.0. @@ -1433,13 +1362,12 @@ .SH "STANDARD ITEM TYPES" .SS "ARC ITEMS" .PP Items of type \fBarc\fR appear on the display as arc-shaped regions. An arc is a section of an oval delimited by two angles (specified -by either the \fB\-start\fR and \fB\-extent\fR options or the \fB\-height\fR -option) and displayed in one of several ways (specified by the \fB\-style\fR -option). +by either the \fB\-start\fR and \fB\-extent\fR options or the \fB\-height\fR option) +and displayed in one of several ways (specified by the \fB\-style\fR option). Arcs are created with widget commands of the following form: .CS \fIpathName \fBcreate arc \fIx1 y1 x2 y2 \fR?\fIoption value ...\fR? \fIpathName \fBcreate arc \fIcoordList\fR ?\fIoption value ...\fR? .CE @@ -1471,36 +1399,30 @@ \fB\-state\fR \fB\-tags\fR \fB\-width\fR \fB\-activewidth\fR \fB\-disabledwidth\fR .DE The following extra options are supported for arcs: -.\" OPTION: -extent .TP \fB\-extent \fIdegrees\fR -. Specifies the size of the angular range occupied by the arc. The arc's range extends for \fIdegrees\fR degrees counter-clockwise from the starting angle given by the \fB\-start\fR option. \fIDegrees\fR may be negative. If it is greater than 360 or less than \-360, then \fIdegrees\fR modulo 360 is used as the extent. -.\" OPTION: -start .TP \fB\-start \fIdegrees\fR -. Specifies the beginning of the angular range occupied by the arc. \fIDegrees\fR is given in units of degrees measured counter-clockwise from the 3-o'clock position; it may be either positive or negative. -.\" OPTION: -height .TP \fB\-height \fIdistance\fR -. Provides a shortcut for creating a circular arc segment by defining the distance of the mid-point of the arc from its chord. When this option is used the coordinates are interpreted as the start and end coordinates -of the chord, and the options \fB\-start\fR and \fB\-extent\fR are ignored. +of the chord, and the options \fB\-start\fR and \fB-extent\fR are ignored. The value of \fIdistance\fR has the following meaning: .RS .PP .RS \fIdistance\fR > 0 creates a clockwise arc @@ -1519,14 +1441,12 @@ choosing the minus sign for the minor arc and the plus sign for the major arc. .PP Note that \fBitemcget \-height\fR always returns 0 so that introspection code can be kept simple. .RE -.\" OPTION: -style .TP \fB\-style \fItype\fR -. Specifies how to draw the arc. If \fItype\fR is \fBpieslice\fR (the default) then the arc's region is defined by a section of the oval's perimeter plus two line segments, one between the center of the oval and each end of the perimeter section. If \fItype\fR is \fBchord\fR then the arc's region is defined @@ -1560,51 +1480,39 @@ .ta 3i \fB\-anchor\fR \fB\-state\fR \fB\-tags\fR .DE The following extra options are supported for bitmaps: -.\" OPTION: -background .TP \fB\-background \fIcolor\fR -.\" OPTION: -activebackground .TP \fB\-activebackground \fIcolor\fR -.\" OPTION: -disabledbackground .TP \fB\-disabledbackground \fIcolor\fR -. Specifies the color to use for each of the bitmap's .QW 0 valued pixels in its normal, active and disabled states. \fIColor\fR may have any of the forms accepted by \fBTk_GetColor\fR. If this option is not specified, or if it is specified as an empty string, then nothing is displayed where the bitmap pixels are 0; this produces a transparent effect. -.\" OPTION: -bitmap .TP \fB\-bitmap \fIbitmap\fR -.\" OPTION: -activebitmap .TP \fB\-activebitmap \fIbitmap\fR -.\" OPTION: -disabledbitmap .TP \fB\-disabledbitmap \fIbitmap\fR -. -These options specify the bitmaps to display in the item in its normal, -active and disabled states. +Specifies the bitmaps to display in the item in its normal, active and +disabled states. \fIBitmap\fR may have any of the forms accepted by \fBTk_GetBitmap\fR. -.\" OPTION: -foreground .TP \fB\-foreground \fIcolor\fR -.\" OPTION: -activeforeground .TP \fB\-activeforeground \fIcolor\fR -.\" OPTION: -disabledforeground .TP \fB\-disabledforeground \fIcolor\fR -. -These options specify the color to use for each of the bitmap's +Specifies the color to use for each of the bitmap's .QW 1 valued pixels in its normal, active and disabled states. \fIColor\fR may have any of the forms accepted by \fBTk_GetColor\fR. .SS "IMAGE ITEMS" .PP @@ -1630,20 +1538,16 @@ .ta 3i \fB\-anchor\fR \fB\-state\fR \fB\-tags\fR .DE The following extra options are supported for images: -.\" OPTION: -image .TP \fB\-image \fIname\fR -.\" OPTION: -activeimage .TP \fB\-activeimage \fIname\fR -.\" OPTION: -disabledimage .TP \fB\-disabledimage \fIname\fR -. Specifies the name of the images to display in the item in is normal, active and disabled states. This image must have been created previously with the \fBimage create\fR command. .SS "LINE ITEMS" @@ -1679,14 +1583,12 @@ \fB\-state\fR \fB\-tags\fR \fB\-width\fR \fB\-activewidth\fR \fB\-disabledwidth\fR .DE The following extra options are supported for lines: -.\" OPTION: -arrow .TP \fB\-arrow \fIwhere\fR -. Indicates whether or not arrowheads are to be drawn at one or both ends of the line. \fIWhere\fR must have one of the values \fBnone\fR (for no arrowheads), \fBfirst\fR (for an arrowhead at the first point of the line), \fBlast\fR (for an arrowhead at the last point of the line), or @@ -1696,14 +1598,12 @@ line end point so that the rendered line ends at the neck of the arrowhead rather than at its tip so that the line doesn't extend past the edge of the arrowhead. This may trigger a \fBLeave\fR event if the mouse is hovering this line end. Conversely, when removing an arrowhead Tk adjusts the corresponding line point the other way round, which may trigger an \fBEnter\fR event. -.\" OPTION: -arrowshape .TP \fB\-arrowshape \fIshape\fR -. This option indicates how to draw arrowheads. The \fIshape\fR argument must be a list with three elements, each specifying a distance in any of the forms described in the \fBCOORDINATES\fR section above. The first element of the list gives the distance along the line @@ -1713,40 +1613,33 @@ element gives the distance from the outside edge of the line to the trailing points. If this option is not specified then Tk picks a .QW reasonable shape. -.\" OPTION: -capstyle .TP \fB\-capstyle \fIstyle\fR -. Specifies the ways in which caps are to be drawn at the endpoints of the line. \fIStyle\fR may have any of the forms accepted by \fBTk_GetCapStyle\fR (\fBbutt\fR, \fBprojecting\fR, or \fBround\fR). If this option is not specified then it defaults to \fBbutt\fR. Where arrowheads are drawn the cap style is ignored. -.\" OPTION: -joinstyle .TP \fB\-joinstyle \fIstyle\fR -. Specifies the ways in which joints are to be drawn at the vertices of the line. \fIStyle\fR may have any of the forms accepted by \fBTk_GetJoinStyle\fR (\fBbevel\fR, \fBmiter\fR, or \fBround\fR). If this option is not specified then it defaults to \fBround\fR. If the line only contains two points then this option is irrelevant. -.\" OPTION: -smooth .TP \fB\-smooth \fIsmoothMethod\fR -. \fIsmoothMethod\fR must have one of the forms accepted by \fBTcl_GetBoolean\fR or a line smoothing method. Only \fBtrue\fR and \fBraw\fR are -supported in the core (with \fBbezier\fR being an alias for \fBtrue\fR), -but more can be added at runtime. If a boolean +supported in the core (with \fBbezier\fR being an alias for \fBtrue\fR), but more can be added at runtime. If a boolean false value or empty string is given, no smoothing is applied. A boolean truth value assumes \fBtrue\fR smoothing. If the smoothing method is \fBtrue\fR, this indicates that the line should be drawn as a curve, rendered as a set of quadratic splines: one spline is drawn for the first and second line segments, one for the second @@ -1759,14 +1652,12 @@ coordinates are control points on the cubic Bezier curve. Straight line segments can be generated within a curve by making control points equal to their neighbouring knot points. If the last point is a control point and not a knot point, the point is repeated (one or two times) so that it also becomes a knot point. -.\" OPTION: -splinesteps .TP \fB\-splinesteps \fInumber\fR -. Specifies the degree of smoothness desired for curves: each spline will be approximated with \fInumber\fR line segments. This option is ignored unless the \fB\-smooth\fR option is true or \fBraw\fR. .SS "OVAL ITEMS" .PP @@ -1819,12 +1710,12 @@ Polygons are created with widget commands of the following form: .CS \fIpathName \fBcreate polygon \fIx1 y1 ... xn yn \fR?\fIoption value ...\fR? \fIpathName \fBcreate polygon \fIcoordList\fR ?\fIoption value ...\fR? .CE -The arguments \fIx1\fR through \fIyn\fR or \fIcoordList\fR specify the -coordinates for three or more points that define a polygon. +The arguments \fIx1\fR through \fIyn\fR or \fIcoordList\fR specify the coordinates for +three or more points that define a polygon. The first point should not be repeated as the last to close the shape; Tk will automatically close the periphery between the first and last points. After the coordinates there may be any number of \fIoption\fR\-\fIvalue\fR pairs, each of which sets one of the configuration options @@ -1849,27 +1740,22 @@ \fB\-state\fR \fB\-tags\fR \fB\-width\fR \fB\-activewidth\fR \fB\-disabledwidth\fR .DE The following extra options are supported for polygons: -.\" OPTION: -joinstyle .TP \fB\-joinstyle \fIstyle\fR -. Specifies the ways in which joints are to be drawn at the vertices of the outline. \fIStyle\fR may have any of the forms accepted by \fBTk_GetJoinStyle\fR (\fBbevel\fR, \fBmiter\fR, or \fBround\fR). If this option is not specified then it defaults to \fBround\fR. -.\" OPTION: -smooth .TP \fB\-smooth \fIboolean\fR -. \fIBoolean\fR must have one of the forms accepted by \fBTcl_GetBoolean\fR or a line smoothing method. Only \fBtrue\fR and \fBraw\fR are -supported in the core (with \fBbezier\fR being an alias for \fBtrue\fR), -but more can be added at runtime. If a boolean +supported in the core (with \fBbezier\fR being an alias for \fBtrue\fR), but more can be added at runtime. If a boolean false value or empty string is given, no smoothing is applied. A boolean truth value assumes \fBtrue\fR smoothing. If the smoothing method is \fBtrue\fR, this indicates that the polygon should be drawn as a curve, rendered as a set of quadratic splines: one spline is drawn for the first and second line segments, one for the second @@ -1883,14 +1769,12 @@ line segments can be generated within a curve by making control points equal to their neighbouring knot points. If the last point is not the second point of a pair of control points, the point is repeated (one or two times) so that it also becomes the second point of a pair of control points (the associated knot point will be the first control point). -.\" OPTION: -splinesteps .TP \fB\-splinesteps \fInumber\fR -. Specifies the degree of smoothness desired for curves: each spline will be approximated with \fInumber\fR line segments. This option is ignored unless the \fB\-smooth\fR option is true or \fBraw\fR. .PP Polygon items are different from other items such as rectangles, ovals @@ -1977,59 +1861,48 @@ \fB\-stipple\fR \fB\-activestipple\fR \fB\-disabledstipple\fR \fB\-state\fR \fB\-tags\fR .DE The following extra options are supported for text items: -.\" OPTION: -angle .TP \fB\-angle \fIrotationDegrees\fR . \fIRotationDegrees\fR tells how many degrees to rotate the text anticlockwise about the positioning point for the text; it may have any floating-point value from 0.0 to 360.0. For example, if \fIrotationDegrees\fR is \fB90\fR, then the text will be drawn vertically from bottom to top. This option defaults to \fB0.0\fR. -.\" OPTION: -font .TP \fB\-font \fIfontName\fR -. Specifies the font to use for the text item. \fIFontName\fR may be any string acceptable to \fBTk_GetFont\fR. If this option is not specified, it defaults to a system-dependent font. -.\" OPTION: -justify .TP \fB\-justify \fIhow\fR -. Specifies how to justify the text within its bounding region. \fIHow\fR must be one of the values \fBleft\fR, \fBright\fR, or \fBcenter\fR. This option will only matter if the text is displayed as multiple lines. If the option is omitted, it defaults to \fBleft\fR. -.\" OPTION: -text .TP \fB\-text \fIstring\fR -. \fIString\fR specifies the characters to be displayed in the text item. Newline characters cause line breaks. The characters in the item may also be changed with the \fBinsert\fR and \fBdelete\fR widget commands. This option defaults to an empty string. -.\" OPTION: -underline .TP -\fB\-underline \fInumber\fR -. +\fB\-underline \fI\fR Specifies the integer index of a character within the text to be underlined. 0 corresponds to the first character of the text displayed, 1 to the next character, and so on. \-1 means that no underline should be drawn (if the whole text item is to be underlined, the appropriate font should be used instead). -.\" OPTION: -width .TP \fB\-width \fIlineLength\fR -. Specifies a maximum line length for the text, in any of the forms described in the \fBCOORDINATES\fR section above. If this option is zero (the default) the text is broken into lines only at newline characters. However, if this option is non-zero then any line that would @@ -2064,38 +1937,35 @@ .ta 3i \fB\-anchor\fR \fB\-state\fR \fB\-tags\fR .DE The following extra options are supported for window items: -.\" OPTION: -height .TP \fB\-height \fIpixels\fR . Specifies the height to assign to the item's window. \fIPixels\fR may have any of the forms described in the \fBCOORDINATES\fR section above. If this option is not specified, or if it is specified as zero, then the window is given whatever height it requests internally. -.\" OPTION: -width .TP \fB\-width \fIpixels\fR . Specifies the width to assign to the item's window. \fIPixels\fR may have any of the forms described in the \fBCOORDINATES\fR section above. If this option is not specified, or if it is specified as zero, then the window is given whatever width it requests internally. -.\" OPTION: -window .TP \fB\-window \fIpathName\fR . Specifies the window to associate with this item. The window specified by \fIpathName\fR must either be a child of the canvas widget or a child of some ancestor of the canvas widget. \fIPathName\fR may not refer to a top-level window. .PP -Note that, due to restrictions in the ways that windows are managed, it is not +Note: due to restrictions in the ways that windows are managed, it is not possible to draw other graphical items (such as lines and images) on top of window items. A window item always obscures any graphics that overlap it, regardless of their order in the display list. Also note that window items, unlike other canvas items, are not clipped for display by their containing canvas's border, and are instead clipped by the parent widget of Index: doc/checkbutton.n ================================================================== --- doc/checkbutton.n +++ doc/checkbutton.n @@ -195,22 +195,18 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for checkbutton widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR -. +\fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBcheckbutton\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -219,47 +215,37 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBcheckbutton\fR command. -.\" METHOD: deselect .TP \fIpathName \fBdeselect\fR -. Deselects the checkbutton and sets the associated variable to its .QW off value. -.\" METHOD: flash .TP \fIpathName \fBflash\fR -. Flashes the checkbutton. This is accomplished by redisplaying the checkbutton several times, alternating between active and normal colors. At the end of the flash the checkbutton is left in the same normal/active state as when the command was invoked. This command is ignored if the checkbutton's state is \fBdisabled\fR. -.\" METHOD: invoke .TP \fIpathName \fBinvoke\fR -. Does just what would have happened if the user invoked the checkbutton with the mouse: toggle the selection state of the button and invoke the Tcl command associated with the checkbutton, if there is one. The return value is the return value from the Tcl command, or an empty string if there is no command associated with the checkbutton. This command is ignored if the checkbutton's state is \fBdisabled\fR. -.\" METHOD: select .TP \fIpathName \fBselect\fR -. Selects the checkbutton and sets the associated variable to its .QW on value. -.\" METHOD: toggle .TP \fIpathName \fBtoggle\fR -. Toggles the selection state of the button, redisplaying it and modifying its associated variable to reflect the new state. .SH BINDINGS .PP Tk automatically creates class bindings for checkbuttons that give them @@ -289,19 +275,19 @@ .SH EXAMPLE .PP This example shows a group of uncoupled checkbuttons. .PP .CS -labelframe .lbl -text "Steps:" -\fBcheckbutton\fR .c1 -text Lights -variable lights -\fBcheckbutton\fR .c2 -text Cameras -variable cameras -\fBcheckbutton\fR .c3 -text Action! -variable action -pack .c1 .c2 .c3 -in .lbl +labelframe .lbl \-text "Steps:" +\fBcheckbutton\fR .c1 \-text Lights \-variable lights +\fBcheckbutton\fR .c2 \-text Cameras \-variable cameras +\fBcheckbutton\fR .c3 \-text Action! \-variable action +pack .c1 .c2 .c3 \-in .lbl pack .lbl .CE .SH "SEE ALSO" button(n), options(n), radiobutton(n), ttk::checkbutton(n) .SH KEYWORDS checkbutton, widget '\" Local Variables: '\" mode: nroff '\" End: Index: doc/chooseColor.n ================================================================== --- doc/chooseColor.n +++ doc/chooseColor.n @@ -16,27 +16,21 @@ .SH DESCRIPTION .PP The procedure \fBtk_chooseColor\fR pops up a dialog box for the user to select a color. The following \fIoption\-value\fR pairs are possible as command line arguments: -.\" OPTION: -initialcolor .TP -\fB\-initialcolor\fI color\fR -. +\fB\-initialcolor\fR \fIcolor\fR Specifies the color to display in the color dialog when it pops up. \fIcolor\fR must be in a form acceptable to the \fBTk_GetColor\fR function. -.\" OPTION: -parent .TP -\fB\-parent\fI window\fR -. +\fB\-parent\fR \fIwindow\fR Makes \fIwindow\fR the logical parent of the color dialog. The color dialog is displayed on top of its parent window. -.\" OPTION: -title .TP -\fB\-title\fI titleString\fR -. +\fB\-title\fR \fItitleString\fR Specifies a string to display as the title of the dialog box. If this option is not specified, then a default title will be displayed. .LP If the user selects a color, \fBtk_chooseColor\fR will return the name of the color in a form acceptable to \fBTk_GetColor\fR. If the @@ -43,12 +37,12 @@ user cancels the operation, both commands will return the empty string. .SH EXAMPLE .PP .CS -button .b -bg [tk_chooseColor -initialcolor gray -title "Choose color"] +button .b \-bg [tk_chooseColor \-initialcolor gray \-title "Choose color"] .CE .SH KEYWORDS color, color selection, dialog '\" Local Variables: '\" mode: nroff '\" End: Index: doc/chooseDirectory.n ================================================================== --- doc/chooseDirectory.n +++ doc/chooseDirectory.n @@ -22,11 +22,11 @@ . Specifies the prefix of a Tcl command to invoke when the user closes the dialog after having selected an item. This callback is not called if the user cancelled the dialog. The actual command consists of \fIstring\fR followed by a space and the value selected by the user in the dialog. This -is only available on Mac OS X. +is only available on macOS. .\" OPTION: -initialdir .TP \fB\-initialdir\fI dirname\fR . Specifies that the directories in \fIdirectory\fR should be displayed @@ -40,11 +40,11 @@ .\" OPTION: -message .TP \fB\-message\fI string\fR . Specifies a message to include in the client area of the dialog. -This is only available on Mac OS X. +This is only available on macOS. .\" OPTION: -mustexist .TP \fB\-mustexist\fI boolean\fR . Specifies whether the user may specify non-existent directories. If @@ -53,11 +53,11 @@ .\" OPTION: -parent .TP \fB\-parent\fI window\fR . Makes \fIwindow\fR the logical parent of the dialog. The dialog -is displayed on top of its parent window. On Mac OS X, this +is displayed on top of its parent window. On macOS, this turns the file dialog into a sheet attached to the parent window. .\" OPTION: -title .TP \fB\-title\fI titleString\fR . Index: doc/clipboard.n ================================================================== --- doc/clipboard.n +++ doc/clipboard.n @@ -25,13 +25,12 @@ appends should be completed before returning to the event loop. .PP The first argument to \fBclipboard\fR determines the format of the rest of the arguments and the behavior of the command. The following forms are currently supported: -.\" METHOD: append .TP -\fBclipboard append\fR ?\fB\-displayof\fI window\fR? ?\fB\-format\fI format\fR? ?\fB\-type\fI type\fR? ?\fB\-\|\-\fR? \fIdata\fR +\fBclipboard append\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-format\fR \fIformat\fR? ?\fB\-type\fR \fItype\fR? ?\fB\-\|\-\fR? \fIdata\fR . Appends \fIdata\fR to the clipboard on \fIwindow\fR's display in the form given by \fItype\fR with the representation given by \fIformat\fR and claims ownership of the clipboard on \fIwindow\fR's display. @@ -70,21 +69,19 @@ A \fB\-\|\-\fR argument may be specified to mark the end of options: the next argument will always be used as \fIdata\fR. This feature may be convenient if, for example, \fIdata\fR starts with a \fB\-\fR. .RE -.\" METHOD: clear .TP -\fBclipboard clear\fR ?\fB\-displayof\fI window\fR? +\fBclipboard clear\fR ?\fB\-displayof\fR \fIwindow\fR? . Claims ownership of the clipboard on \fIwindow\fR's display and removes any previous contents. \fIWindow\fR defaults to .QW . . Returns an empty string. -.\" METHOD: get .TP -\fBclipboard get\fR ?\fB\-displayof\fI window\fR? ?\fB\-type\fI type\fR? +\fBclipboard get\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-type\fR \fItype\fR? . Retrieve data from the clipboard on \fIwindow\fR's display. \fIWindow\fR defaults to .QW . . \fIType\fR specifies the form in which @@ -123,11 +120,11 @@ set script {} foreach item [$canvas find withtag $tag] { append script {$canvas create } [$canvas type $item] append script { } [$canvas coords $item] { } foreach config [$canvas itemconf $item] { - lassign $config name - - - value + lassign $config name \- \- \- value append script [list $name $value] { } } append script \en } return [string trim $script] @@ -134,22 +131,22 @@ } # Set up a binding on a canvas to cut and paste an item set c [canvas .c] pack $c -$c create text 150 30 -text "cut and paste me" +$c create text 150 30 \-text "cut and paste me" bind $c <> { \fBclipboard clear\fR - \fBclipboard append -type\fR TkCanvasItem \e + \fBclipboard append \-type\fR TkCanvasItem \e [getItemConfig %W current] # Delete because this is cut, not copy. %W delete current } bind $c <> { catch { set canvas %W - eval [\fBclipboard get -type\fR TkCanvasItem] + eval [\fBclipboard get \-type\fR TkCanvasItem] } } .CE .SH "SEE ALSO" interp(n), selection(n) Index: doc/colors.n ================================================================== --- doc/colors.n +++ doc/colors.n @@ -780,11 +780,11 @@ yellow4 139 139 0 YellowGreen 154 205 50 .DE .SH "PORTABILITY ISSUES" .TP -\fBMac OS X\fR +\fBmacOS\fR . On macOS, the following additional system colors are available. This first group contains all of the HIBrush colors available in the HIToolbox library. Note that on macOS 10.14 (Mojave) and later these colors are unlikely to match the color actually used for the purpose @@ -868,11 +868,11 @@ .DE .RE . Tk supports all of the NSColors in the macOS System ColorList. The convention for naming these colors is that the Tk name is generated by -capitalizing the macOS name and adding the prefix "system". On OSX +capitalizing the macOS name and adding the prefix "system". On macOS 10.14 (Mojave) and later many of these "semantic" colors will appear differently depending on whether the NSWindow in which they are used has the Aqua or DarkAqua appearance. The System ColorList differs between releases of macOS and some colors, such as systemLinkColor and systemControlAccentColor, are simulated on older systems which did not Index: doc/console.n ================================================================== --- doc/console.n +++ doc/console.n @@ -9,11 +9,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME console \- Control the console on systems without a real console .SH SYNOPSIS -\fBconsole\fI subcommand\fR ?\fIarg ...\fR? +\fBconsole\fR \fIsubcommand\fR ?\fIarg ...\fR? .BE .SH DESCRIPTION .PP The console window is a replacement for a real console to allow input and output on the standard I/O channels on platforms that do not have @@ -21,43 +21,34 @@ Tk toolkit loaded, and control over this interpreter is given through the \fBconsole\fR command. The behaviour of the console window is defined mainly through the contents of the \fIconsole.tcl\fR file in the Tk library. Except for TkAqua, this command is not available when Tk is loaded into a tclsh interpreter with -.QW "\fBpackage require Tk\fR" , +.QW "\fBpackage require tk\fR" , as a conventional terminal is expected to be present in that case. In TkAqua, this command is disabled when there is a startup script and stdin is \fB/dev/null\fR (as is the case e.g. when a bundled application embedding Tk is started by the macOS Launcher). To enable the command in that case, define the environment variable \fBTK_CONSOLE\fR. This can be done by modifying the Info.plist file by adding the LSEnvironment key -to the main dict and setting its value to be a dict with the key -\fBTK_CONSOLE\fR. +to the main dict and setting its value to be a dict with the key \fBTK_CONSOLE\fR. .PP -.\" METHOD: eval .TP \fBconsole eval \fIscript\fR -. Evaluate the \fIscript\fR argument as a Tcl script in the console interpreter. The normal interpreter is accessed through the \fBconsoleinterp\fR command in the console interpreter. -.\" METHOD: hide .TP \fBconsole hide\fR -. Hide the console window from view. Precisely equivalent to withdrawing the \fB.\fR window in the console interpreter. -.\" METHOD: show .TP \fBconsole show\fR -. Display the console window. Precisely equivalent to deiconifying the \fB.\fR window in the console interpreter. -.\" METHOD: title .TP \fBconsole title \fR?\fIstring\fR? -. Query or modify the title of the console window. If \fIstring\fR is not specified, queries the title of the console window, and sets the title of the console window to \fIstring\fR otherwise. Precisely equivalent to using the \fBwm title\fR command in the console interpreter. @@ -65,20 +56,16 @@ .PP The \fBconsoleinterp\fR command in the console interpreter allows scripts to be evaluated in the main interpreter. It supports two subcommands: \fBeval\fR and \fBrecord\fR. .PP -.\" METHOD: eval .TP \fBconsoleinterp eval \fIscript\fR -. Evaluates \fIscript\fR as a Tcl script at the global level in the main interpreter. -.\" METHOD: record .TP \fBconsoleinterp record \fIscript\fR -. Records and evaluates \fIscript\fR as a Tcl script at the global level in the main interpreter as if \fIscript\fR had been typed in at the console. .SH "ADDITIONAL TRAP CALLS" .PP Index: doc/cursors.n ================================================================== --- doc/cursors.n +++ doc/cursors.n @@ -129,13 +129,13 @@ uparrow wait .CE .RE .TP -\fBMac OS X\fR +\fBmacOS\fR . -On Mac OS X systems, the following cursors are mapped to native cursors: +On macOS, the following cursors are mapped to native cursors: .RS .CS arrow top_left_arrow left_ptr Index: doc/dialog.n ================================================================== --- doc/dialog.n +++ doc/dialog.n @@ -17,29 +17,35 @@ .SH DESCRIPTION .PP This procedure is part of the Tk script library. It is largely \fIdeprecated\fR by the \fBtk_messageBox\fR. Its arguments describe a dialog box: -.IP \fIwindow\fR +.TP +\fIwindow\fR Name of top-level window to use for dialog. Any existing window by this name is destroyed. -.IP \fItitle\fR +.TP +\fItitle\fR Text to appear in the window manager's title bar for the dialog. -.IP \fItext\fR +.TP +\fItext\fR Message to appear in the top portion of the dialog box. -.IP \fIbitmap\fR +.TP +\fIbitmap\fR If non-empty, specifies a bitmap (in a form suitable for Tk_GetBitmap) to display in the top portion of the dialog, to the left of the text. If this is an empty string then no bitmap is displayed in the dialog. -.IP \fIdefault\fR +.TP +\fIdefault\fR If this is an integer greater than or equal to zero, then it gives the index of the button that is to be the default button for the dialog (0 for the leftmost button, and so on). If negative or an empty string then there will not be any default button. -.IP \fIstring\fR +.TP +\fIstring\fR There will be one button for each of these arguments. Each \fIstring\fR specifies text to display in a button, in order from left to right. .PP After creating a dialog box, \fBtk_dialog\fR waits for the user to Index: doc/entry.n ================================================================== --- doc/entry.n +++ doc/entry.n @@ -11,11 +11,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME entry \- Create and manipulate 'entry' one-line text entry widgets .SH SYNOPSIS -\fBentry\fI pathName \fR?\fIoptions\fR? +\fBentry\fR \fIpathName \fR?\fIoptions\fR? .SO \-background \-highlightthickness \-selectbackground \-borderwidth \-insertbackground \-selectborderwidth \-cursor \-insertborderwidth \-selectforeground \-exportselection \-insertofftime \-takefocus @@ -174,13 +174,13 @@ \fB\-validate\fR option will also set itself to \fBnone\fR when you edit the entry widget from within either the \fB\-validatecommand\fR or the \fB\-invalidcommand\fR. Such editions will override the one that was being validated. If you wish to edit the entry widget (for example set it to {}) during validation and still have the \fB\-validate\fR option set, you should -include the command: +include the command .CS -after idle {%W config -validate %v} +after idle {%W config \-validate %v} .CE in the \fB\-validatecommand\fR or \fB\-invalidcommand\fR (whichever one you were editing the entry widget from). It is also recommended to not set an associated \fB\-textvariable\fR during validation, as that can cause the entry widget to become out of sync with the \fB\-textvariable\fR. @@ -199,43 +199,36 @@ Many of the widget commands for entries take one or more indices as arguments. An index specifies a particular character in the entry's string, in any of the following ways: .TP 12 \fInumber\fR -. Specifies the character as a numerical index, where 0 corresponds to the first character in the string. .TP 12 \fBanchor\fR -. Indicates the anchor point for the selection, which is set with the \fBselect from\fR and \fBselect adjust\fR widget commands. .TP 12 \fBend\fR -. Indicates the character just after the last one in the entry's string. This is equivalent to specifying a numerical index equal to the length of the entry's string. .TP 12 \fBinsert\fR -. Indicates the character adjacent to and immediately following the insertion cursor. .TP 12 \fBsel.first\fR -. Indicates the first character in the selection. It is an error to use this form if the selection is not in the entry window. .TP 12 \fBsel.last\fR -. Indicates the character just after the last one in the selection. It is an error to use this form if the selection is not in the entry window. .TP 12 \fB@\fInumber\fR -. In this form, \fInumber\fR is treated as an x-coordinate in the entry's window; the character spanning that x-coordinate is used. For example, .QW \fB@0\fR indicates the left-most character in the window. @@ -250,34 +243,28 @@ for the command \fBstring index\fR, with simple integer index arithmetic and indexing relative to \fBend\fR. .SS SUBCOMMANDS .PP The following commands are possible for entry widgets: -.\" METHOD: bbox .TP \fIpathName \fBbbox \fIindex\fR -. Returns a list of four numbers describing the bounding box of the character given by \fIindex\fR. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the character (in pixels relative to the widget) and the last two elements give the width and height of the character, in pixels. The bounding box may refer to a region outside the visible area of the window. -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR -. +\fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBentry\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -286,78 +273,61 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBentry\fR command. -.\" METHOD: delete .TP \fIpathName \fBdelete \fIfirst \fR?\fIlast\fR? -. Delete one or more elements of the entry. \fIFirst\fR is the index of the first character to delete, and \fIlast\fR is the index of the character just after the last one to delete. If \fIlast\fR is not specified it defaults to \fIfirst\fR+1, i.e. a single character is deleted. This command returns an empty string. -.\" METHOD: get .TP \fIpathName \fBget\fR -. Returns the entry's string. -.\" METHOD: icursor .TP \fIpathName \fBicursor \fIindex\fR -. Arrange for the insertion cursor to be displayed just before the character given by \fIindex\fR. Returns an empty string. -.\" METHOD: index .TP \fIpathName \fBindex\fI index\fR -. Returns the numerical index corresponding to \fIindex\fR. -.\" METHOD: insert .TP \fIpathName \fBinsert \fIindex string\fR -. Insert the characters of \fIstring\fR just before the character indicated by \fIindex\fR. Returns an empty string. -.\" METHOD: scan .TP -\fIpathName \fBscan\fI option args\fR -. +\fIpathName \fBscan\fR \fIoption args\fR This command is used to implement scanning on entries. It has two forms, depending on \fIoption\fR: .RS .TP \fIpathName \fBscan mark \fIx\fR -. Records \fIx\fR and the current view in the entry window; used in conjunction with later \fBscan dragto\fR commands. Typically this command is associated with a mouse button press in the widget. It returns an empty string. .TP \fIpathName \fBscan dragto \fIx\fR -. This command computes the difference between its \fIx\fR argument and the \fIx\fR argument to the last \fBscan mark\fR command for the widget. It then adjusts the view left or right by 10 times the difference in x-coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the entry at high speed through the window. The return value is an empty string. .RE -.\" METHOD: selection .TP \fIpathName \fBselection \fIoption arg\fR -. This command is used to adjust the selection within an entry. It has several forms, depending on \fIoption\fR: .RS .TP \fIpathName \fBselection adjust \fIindex\fR -. Locate the end of the selection nearest to the character given by \fIindex\fR, and adjust that end of the selection to be at \fIindex\fR (i.e. including but not going beyond \fIindex\fR). The other end of the selection is made the anchor point for future \fBselect to\fR commands. If the selection @@ -365,36 +335,31 @@ include the characters between \fIindex\fR and the most recent selection anchor point, inclusive. Returns an empty string. .TP \fIpathName \fBselection clear\fR -. Clear the selection if it is currently in this widget. If the selection is not in this widget then the command has no effect. Returns an empty string. .TP \fIpathName \fBselection from \fIindex\fR -. Set the selection anchor point to just before the character given by \fIindex\fR. Does not change the selection. Returns an empty string. .TP \fIpathName \fBselection present\fR -. Returns 1 if there is are characters selected in the entry, 0 if nothing is selected. .TP -\fIpathName \fBselection range \fIstart end\fR -. +\fIpathName \fBselection range \fIstart\fR \fIend\fR Sets the selection to include the characters starting with the one indexed by \fIstart\fR and ending with the one just before \fIend\fR. If \fIend\fR refers to the same character as \fIstart\fR or an earlier one, then the entry's selection is cleared. .TP \fIpathName \fBselection to \fIindex\fR -. If \fIindex\fR is before the anchor point, set the selection to the characters from \fIindex\fR up to but not including the anchor point. If \fIindex\fR is the same as the anchor point, do nothing. If \fIindex\fR is after the anchor point, set the selection @@ -404,51 +369,43 @@ or \fBselect adjust\fR command in this widget. If the selection is not in this widget then a new selection is created using the most recent anchor point specified for the widget. Returns an empty string. .RE -.\" METHOD: validate .TP \fIpathName \fBvalidate\fR -. This command is used to force an evaluation of the \fB\-validatecommand\fR independent of the conditions specified by the \fB\-validate\fR option. This is done by temporarily setting the \fB\-validate\fR option to \fBall\fR. It returns 0 or 1. -.\" METHOD: xview .TP \fIpathName \fBxview \fIargs\fR -. This command is used to query and change the horizontal position of the text in the widget's window. It can take any of the following forms: .RS .TP \fIpathName \fBxview\fR -. Returns a list containing two elements. Each element is a real fraction between 0 and 1; together they describe the horizontal span that is visible in the window. For example, if the first element is .2 and the second element is .6, 20% of the entry's text is off-screen to the left, the middle 40% is visible in the window, and 40% of the text is off-screen to the right. These are the same values passed to scrollbars via the \fB\-xscrollcommand\fR option. .TP -\fIpathName \fBxview\fI index\fR -. +\fIpathName \fBxview\fR \fIindex\fR Adjusts the view in the window so that the character given by \fIindex\fR is displayed at the left edge of the window. .TP \fIpathName \fBxview moveto\fI fraction\fR -. Adjusts the view in the window so that the character \fIfraction\fR of the way through the text appears at the left edge of the window. \fIFraction\fR must be a fraction between 0 and 1. .TP \fIpathName \fBxview scroll \fInumber what\fR -. This command shifts the view in the window left or right according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer or a float, but if it is a float then it is converted to an integer, rounded away from 0. \fIWhat\fR must be either \fBpages\fR or \fBunits\fR or an abbreviation Index: doc/event.n ================================================================== --- doc/event.n +++ doc/event.n @@ -18,27 +18,23 @@ .PP The \fBevent\fR command provides several facilities for dealing with window system events, such as defining virtual events and synthesizing events. The command has several different forms, determined by the first argument. The following forms are currently supported: -.\" METHOD: add .TP \fBevent add <<\fIvirtual\fB>>\fI sequence \fR?\fIsequence ...\fR? -. Associates the virtual event \fIvirtual\fR with the physical event sequence(s) given by the \fIsequence\fR arguments, so that the virtual event will trigger whenever any one of the \fIsequence\fRs occurs. \fIVirtual\fR may be any string value and \fIsequence\fR may have any of the values allowed for the \fIsequence\fR argument to the \fBbind\fR command. If \fIvirtual\fR is already defined, the new physical event sequences add to the existing sequences for the event. -.\" METHOD: delete .TP -\fBevent delete <<\fIvirtual\fB>> \fR?\fIsequence sequence ...\fR? -. +\fBevent delete <<\fIvirtual\fB>> \fR?\fIsequence\fR \fIsequence ...\fR? Deletes each of the \fIsequence\fRs from those associated with the virtual event given by \fIvirtual\fR. \fIVirtual\fR may be any string value and \fIsequence\fR may have any of the values allowed for the \fIsequence\fR argument to the \fBbind\fR command. @@ -45,14 +41,12 @@ Any \fIsequence\fRs not currently associated with \fIvirtual\fR are ignored. If no \fIsequence\fR argument is provided, all physical event sequences are removed for \fIvirtual\fR, so that the virtual event will not trigger anymore. -.\" METHOD: generate .TP \fBevent generate \fIwindow event \fR?\fIoption value option value ...\fR? -. Generates a window event and arranges for it to be processed just as if it had come from the window system. \fIWindow\fR gives the path name of the window for which the event will be generated; it may also be an identifier (such as returned by \fBwinfo id\fR) as long as it is for a window in the current application. @@ -69,14 +63,12 @@ event is processed immediately: all of the handlers for the event will complete before the \fBevent generate\fR command returns. If the \fB\-when\fR option is specified then it determines when the event is processed. Certain events, such as key events, require that the window has focus to receive the event properly. -.\" METHOD: info .TP \fBevent info \fR?\fB<<\fIvirtual\fB>>\fR? -. Returns information about virtual events. If the \fB<<\fIvirtual\fB>>\fR argument is omitted, the return value is a list of all the virtual events that are currently defined. If \fB<<\fIvirtual\fB>>\fR is specified then the return value is a list whose elements are the physical event sequences currently @@ -91,65 +83,51 @@ .PP The following options are supported for the \fBevent generate\fR command. These correspond to the .QW % expansions allowed in binding scripts for the \fBbind\fR command. -.\" OPTION: -above .TP \fB\-above\fI window\fR -. \fIWindow\fR specifies the \fIabove\fR field for the event, either as a window path name or as an integer window id. Valid for \fBConfigure\fR events. Corresponds to the \fB%a\fR substitution for binding scripts. -.\" OPTION: -borderwidth .TP \fB\-borderwidth\fI size\fR -. \fISize\fR must be a screen distance; it specifies the \fIborder_width\fR field for the event. Valid for \fBConfigure\fR events. Corresponds to the \fB%B\fR substitution for binding scripts. -.\" OPTION: -button .TP \fB\-button\fI number\fR -. \fINumber\fR must be an integer; it specifies the \fIdetail\fR field for a \fBButton\fR or \fBButtonRelease\fR event, overriding any button number provided in the base \fIevent\fR argument. Corresponds to the \fB%b\fR substitution for binding scripts. -.\" OPTION: -count .TP \fB\-count\fI number\fR -. \fINumber\fR must be an integer; it specifies the \fIcount\fR field for the event. Valid for \fBExpose\fR events. Corresponds to the \fB%c\fR substitution for binding scripts. -.\" OPTION: -data .TP \fB\-data\fI string\fR -. \fIString\fR may be any value; it specifies the \fIuser_data\fR field for the event. Only valid for virtual events. Corresponds to the \fB%d\fR substitution for virtual events in binding scripts. -.\" OPTION: -delta .TP \fB\-delta\fI number\fR -. \fINumber\fR must be an integer; it specifies the \fIdelta\fR field for the \fBMouseWheel\fR event. The \fIdelta\fR refers to the direction and magnitude the mouse wheel was rotated. Note the value is not a screen distance but are units of motion in the mouse wheel. Typically these values are multiples of 120. For example, 120 should scroll the text widget up 4 lines and \-240 would scroll the text widget down 8 lines. Of course, other widgets may define different behaviors for mouse wheel motion. This field corresponds to the \fB%D\fR substitution for binding scripts. -.\" OPTION: -detail .TP \fB\-detail\fI detail\fR -. \fIDetail\fR specifies the \fIdetail\fR field for the event and must be one of the following: .RS .DS .ta 6c @@ -160,166 +138,130 @@ .DE Valid for \fBEnter\fR, \fBLeave\fR, \fBFocusIn\fR and \fBFocusOut\fR events. Corresponds to the \fB%d\fR substitution for binding scripts. .RE -.\" OPTION: -focus .TP \fB\-focus\fI boolean\fR -. \fIBoolean\fR must be a boolean value; it specifies the \fIfocus\fR field for the event. Valid for \fBEnter\fR and \fBLeave\fR events. Corresponds to the \fB%f\fR substitution for binding scripts. -.\" OPTION: -height .TP \fB\-height\fI size\fR -. \fISize\fR must be a screen distance; it specifies the \fIheight\fR field for the event. Valid for \fBConfigure\fR events. Corresponds to the \fB%h\fR substitution for binding scripts. -.\" OPTION: -keycode .TP \fB\-keycode\fI number\fR -. \fINumber\fR must be an integer; it specifies the \fIkeycode\fR field for the event. Valid for \fBKey\fR and \fBKeyRelease\fR events. Corresponds to the \fB%k\fR substitution for binding scripts. -.\" OPTION: -keysym .TP \fB\-keysym\fI name\fR -. \fIName\fR must be the name of a valid keysym, such as \fBg\fR, \fBspace\fR, or \fBReturn\fR; its corresponding keycode value is used as the \fIkeycode\fR field for event, overriding any detail specified in the base \fIevent\fR argument. Valid for \fBKey\fR and \fBKeyRelease\fR events. Corresponds to the \fB%K\fR substitution for binding scripts. -.\" OPTION: -mode .TP \fB\-mode\fI notify\fR -. \fINotify\fR specifies the \fImode\fR field for the event and must be one of \fBNotifyNormal\fR, \fBNotifyGrab\fR, \fBNotifyUngrab\fR, or \fBNotifyWhileGrabbed\fR. Valid for \fBEnter\fR, \fBLeave\fR, \fBFocusIn\fR, and \fBFocusOut\fR events. Corresponds to the \fB%m\fR substitution for binding scripts. -.\" OPTION: -override .TP \fB\-override\fI boolean\fR -. \fIBoolean\fR must be a boolean value; it specifies the \fIoverride_redirect\fR field for the event. Valid for \fBMap\fR, \fBReparent\fR, and \fBConfigure\fR events. Corresponds to the \fB%o\fR substitution for binding scripts. -.\" OPTION: -place .TP \fB\-place\fI where\fR -. \fIWhere\fR specifies the \fIplace\fR field for the event; it must be either \fBPlaceOnTop\fR or \fBPlaceOnBottom\fR. Valid for \fBCirculate\fR events. Corresponds to the \fB%p\fR substitution for binding scripts. -.\" OPTION: -root .TP \fB\-root\fI window\fR -. \fIWindow\fR must be either a window path name or an integer window identifier; it specifies the \fIroot\fR field for the event. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, and \fBMotion\fR events. Corresponds to the \fB%R\fR substitution for binding scripts. -.\" OPTION: -rootx .TP \fB\-rootx\fI coord\fR -. \fICoord\fR must be a screen distance; it specifies the \fIx_root\fR field for the event. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, and \fBMotion\fR events. Corresponds to the \fB%X\fR substitution for binding scripts. -.\" OPTION: -rooty .TP \fB\-rooty\fI coord\fR -. \fICoord\fR must be a screen distance; it specifies the \fIy_root\fR field for the event. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, and \fBMotion\fR events. Corresponds to the \fB%Y\fR substitution for binding scripts. -.\" OPTION: -sendevent .TP \fB\-sendevent\fI boolean\fR -. \fIBoolean\fR must be a boolean value; it specifies the \fIsend_event\fR field for the event. Valid for all events. Corresponds to the \fB%E\fR substitution for binding scripts. -.\" OPTION: -serial .TP \fB\-serial\fI number\fR -. \fINumber\fR must be an integer; it specifies the \fIserial\fR field for the event. Valid for all events. Corresponds to the \fB%#\fR substitution for binding scripts. -.\" OPTION: -state .TP \fB\-state\fI state\fR -. \fIState\fR specifies the \fIstate\fR field for the event. For \fBKey\fR, \fBKeyRelease\fR, \fBButtons\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, and \fBMotion\fR events it must be an integer value. For \fBVisibility\fR events it must be one of \fBVisibilityUnobscured\fR, \fBVisibilityPartiallyObscured\fR, or \fBVisibilityFullyObscured\fR. This option overrides any modifiers such as \fBMeta\fR or \fBControl\fR specified in the base \fIevent\fR. Corresponds to the \fB%s\fR substitution for binding scripts. -.\" OPTION: -subwindow .TP \fB\-subwindow\fI window\fR -. \fIWindow\fR specifies the \fIsubwindow\fR field for the event, either as a path name for a Tk widget or as an integer window identifier. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, and \fBMotion\fR events. Similar to \fB%S\fR substitution for binding scripts. -.\" OPTION: -time .TP \fB\-time\fI integer\fR -. \fIInteger\fR must be an integer value; it specifies the \fItime\fR field -for the event. Additionally, the special value \fBcurrent\fR is allowed; +for the event. Additonally the special value \fBcurrent\fR is allowed, this value will be substituted by the current event time. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBEnter\fR, \fBLeave\fR, \fBMotion\fR, and \fBProperty\fR events. Corresponds to the \fB%t\fR substitution for binding scripts. -.\" OPTION: -warp .TP \fB\-warp\fI boolean\fR -. \fIboolean\fR must be a boolean value; it specifies whether the screen pointer should be warped as well. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, and \fBMotion\fR events. The pointer will only warp to a window if it is mapped. -.\" OPTION: -width .TP \fB\-width\fI size\fR -. \fISize\fR must be a screen distance; it specifies the \fIwidth\fR field for the event. Valid for \fBConfigure\fR events. Corresponds to the \fB%w\fR substitution for binding scripts. -.\" OPTION: -when .TP \fB\-when\fI when\fR -. \fIWhen\fR determines when the event will be processed; it must have one of the following values: .RS .IP \fBnow\fR 10 Process the event immediately, before the command returns. @@ -334,14 +276,12 @@ Place the event at the front of Tcl's event queue but behind any other events already queued with \fB\-when mark\fR. This option is useful when generating a series of events that should be processed in order but at the front of the queue. .RE -.\" OPTION: -x .TP \fB\-x\fI coord\fR -. \fICoord\fR must be a screen distance; it specifies the \fIx\fR field for the event. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBMotion\fR, \fBEnter\fR, \fBLeave\fR, \fBExpose\fR, \fBConfigure\fR, \fBGravity\fR, and \fBReparent\fR @@ -348,14 +288,12 @@ events. Corresponds to the \fB%x\fR substitution for binding scripts. If \fIWindow\fR is empty the coordinate is relative to the screen, and this option corresponds to the \fB%X\fR substitution for binding scripts. -.\" OPTION: -y .TP \fB\-y\fI coord\fR -. \fICoord\fR must be a screen distance; it specifies the \fIy\fR field for the event. Valid for \fBKey\fR, \fBKeyRelease\fR, \fBButton\fR, \fBButtonRelease\fR, \fBMotion\fR, \fBEnter\fR, \fBLeave\fR, \fBExpose\fR, \fBConfigure\fR, \fBGravity\fR, and \fBReparent\fR @@ -372,44 +310,37 @@ .PP Tk defines the following virtual events for the purposes of notification: .TP \fB<>\fR -. This is sent to widget to notify it that the letter it has underlined (as an accelerator indicator) with the \fB\-underline\fR option has been pressed in combination with the Alt key. The usual response to this is to either focus into the widget (or some related widget) or to invoke the widget. .TP \fB<>\fR -. This can be sent to some widgets (e.g. button, listbox, menu) as an alternative to . .TP \fB<>\fR -. This is sent to a listbox when the set of selected item(s) in the listbox is updated. .TP \fB<>\fR -. This is sent to a menu when the currently selected item in the menu changes. It is intended for use with context-sensitive help systems. .TP \fB<>\fR -. This is sent to a text widget when the contents of the widget are changed. .TP \fB<>\fR -. This is sent to a text widget when the selection in the widget is changed. .TP \fB<>\fR -. This is sent to all widgets when the ttk theme changed. The ttk widgets listen to this event and redisplay themselves when it fires. The legacy widgets ignore this event. .TP \fB<>\fR @@ -420,30 +351,26 @@ be sent to all widgets, and the user_data field will indicate the cause of the change. NOTE: all tk and ttk widgets already handle this event internally. .TP \fB<>\fR -. This is sent to a widget when the focus enters the widget because of a user-driven .QW "tab to widget" action. .TP \fB<>\fR -. This is sent to a widget when the focus leaves the widget because of a user-driven .QW "tab to widget" action. .TP \fB<>\fR -. This is sent to a text widget when its undo stack or redo stack becomes empty or unempty. .TP \fB<>\fR -. This is sent to a text widget when its internal data become obsolete, and again when these internal data are back in sync with the widget view. The detail field (%d substitution) is either true (when the widget is in sync) or false (when it is not). .PP @@ -450,19 +377,16 @@ Tk defines the following virtual events for the purposes of unifying bindings across multiple platforms. Users expect them to behave in the following way: .TP \fB<>\fR -. Delete the currently selected widget contents. .TP \fB<>\fR -. Copy the currently selected widget contents to the clipboard. .TP \fB<>\fR -. Move the currently selected widget contents to the clipboard. .TP \fB<>\fR . Move to the end of the line in the current widget while deselecting any @@ -492,16 +416,14 @@ . Move to the next group of items (i.e., visible word) in the current widget while deselecting any selected contents. .TP \fB<>\fR -. Replace the currently selected widget contents with the contents of the clipboard. .TP \fB<>\fR -. Insert the contents of the selection at the mouse location. (This event has meaningful \fB%x\fR and \fB%y\fR substitutions). .TP \fB<>\fR . @@ -517,20 +439,18 @@ . Move to the previous paragraph in the current widget while deselecting any selected contents. .TP \fB<>\fR -. Traverse to the previous window. .TP \fB<>\fR . Move to the previous group of items (i.e., visible word) in the current widget while deselecting any selected contents. .TP \fB<>\fR -. Redo one undone action. .TP \fB<>\fR . Set the range of selected contents to the complete widget. Index: doc/focus.n ================================================================== --- doc/focus.n +++ doc/focus.n @@ -53,47 +53,42 @@ things. .PP The \fBfocus\fR command can take any of the following forms: .TP \fBfocus\fR -. Returns the path name of the focus window on the display containing the application's main window, or an empty string if no window in this application has the focus on that display. Note: it is better to specify the display explicitly using \fB\-displayof\fR (see below) so that the code will work in applications using multiple displays. .TP \fBfocus \fIwindow\fR -. If the application currently has the input focus on \fIwindow\fR's display, this command resets the input focus for \fIwindow\fR's display to \fIwindow\fR and returns an empty string. If the application does not currently have the input focus on \fIwindow\fR's display, \fIwindow\fR will be remembered as the focus for its top-level; the next time the focus arrives at the top-level, Tk will redirect it to \fIwindow\fR. If \fIwindow\fR is an empty string then the command does nothing. .TP -\fBfocus \-displayof \fIwindow\fR -. +\fBfocus \-displayof\fR \fIwindow\fR Returns the name of the focus window on the display containing \fIwindow\fR. If the focus window for \fIwindow\fR's display is not in this application, the return value is an empty string. .TP \fBfocus \-force \fIwindow\fR -. Sets the focus of \fIwindow\fR's display to \fIwindow\fR, even if the application does not currently have the input focus for the display. This command should be used sparingly, if at all. In normal usage, an application should not claim the focus for itself; instead, it should wait for the window manager to give it the focus. If \fIwindow\fR is an empty string then the command does nothing. .TP -\fBfocus \-lastfor \fIwindow\fR -. +\fBfocus \-lastfor\fR \fIwindow\fR Returns the name of the most recent window to have the input focus among all the windows in the same top-level as \fIwindow\fR. If no window in that top-level has ever had the input focus, or if the most recent focus window has been deleted, then the name of the top-level is returned. The return value is the window that @@ -112,25 +107,24 @@ .SH "EXAMPLE" .PP To make a window that only participates in the focus traversal ring when a variable is set, add the following bindings to the widgets \fIbefore\fR and \fIafter\fR it in that focus ring: -.PP .CS -button .before -text "Before" -button .middle -text "Middle" -button .after -text "After" -checkbutton .flag -variable traverseToMiddle -takefocus 0 -pack .flag -side left +button .before \-text "Before" +button .middle \-text "Middle" +button .after \-text "After" +checkbutton .flag \-variable traverseToMiddle \-takefocus 0 +pack .flag \-side left pack .before .middle .after bind .before { if {!$traverseToMiddle} { \fBfocus\fR .after break } } -bind .after { +bind .after { if {!$traverseToMiddle} { \fBfocus\fR .before break } } Index: doc/focusNext.n ================================================================== --- doc/focusNext.n +++ doc/focusNext.n @@ -10,15 +10,15 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tk_focusNext, tk_focusPrev, tk_focusFollowsMouse \- Utility procedures for managing the input focus. .SH SYNOPSIS -.nf \fBtk_focusNext \fIwindow\fR +.sp \fBtk_focusPrev \fIwindow\fR +.sp \fBtk_focusFollowsMouse\fR -.fi .BE .SH DESCRIPTION .PP \fBtk_focusNext\fR is a utility procedure used for keyboard traversal. It returns the @@ -47,15 +47,14 @@ After this procedure is called, whenever the mouse enters a window Tk will automatically give it the input focus. The \fBfocus\fR command may be used to move the focus to a window other than the one under the mouse, but as soon as the mouse moves into a new window the focus will jump to that window. -.PP -Note that at present there is no built-in support for returning the +Note: at present there is no built-in support for returning the application to an explicit focus model; to do this you will have to write a script that deletes the bindings created by \fBtk_focusFollowsMouse\fR. .SH KEYWORDS focus, keyboard traversal, top-level '\" Local Variables: '\" mode: nroff '\" End: Index: doc/font.n ================================================================== --- doc/font.n +++ doc/font.n @@ -52,11 +52,11 @@ this case, all widgets using that font will redisplay themselves using the new attributes for the font. See \fBFONT OPTIONS\fR below for a list of the possible attributes. .RS .PP -Note that on Aqua/Mac OS X, the system fonts (see +Note that on Aqua/macOS, the system fonts (see \fBPLATFORM SPECIFIC FONTS\fR below) may not be actually altered because they are implemented by the system theme. To achieve the effect of modification, use \fBfont actual\fR to get their configuration and \fBfont create\fR to synthesize a copy of the font which can be modified. .RE @@ -360,11 +360,11 @@ \fBsystem\fR \fBansi\fR \fBdevice\fR \fBsystemfixed\fR \fBansifixed\fR \fBoemfixed\fR .DE .RE .TP -\fBMac OS X\fR +\fBmacOS\fR . The following fonts are supported, and are mapped to the user's style defaults. .RS .DS Index: doc/fontchooser.n ================================================================== --- doc/fontchooser.n +++ doc/fontchooser.n @@ -22,11 +22,11 @@ The \fBtk fontchooser\fR command controls the Tk font selection dialog. It uses the native platform font selection dialog where available, or a dialog implemented in Tcl otherwise. .PP Unlike most of the other Tk dialog commands, \fBtk fontchooser\fR does not -return an immediate result, as on some platforms (Mac OS X) the standard font +return an immediate result, as on some platforms (macOS) the standard font dialog is modeless while on others (Windows) it is modal. To accommodate this difference, all user interaction with the dialog will be communicated to the caller via callbacks or virtual events. .PP The \fBtk fontchooser\fR command can have one of the following forms: @@ -119,11 +119,11 @@ the \fB\-command\fR callback and the \fB<>\fR virtual events. It is implementation dependent which exact user actions result in the callback being called resp. the virtual events being sent. Where an Apply or OK button is present in the dialog, that button will trigger the \fB\-command\fR callback and \fB<>\fR virtual event. On some implementations -other user actions may also have that effect; on Mac OS X for instance, the +other user actions may also have that effect; on macOS for instance, the standard font selection dialog immediately reflects all user choices to the caller. .PP In the presence of multiple widgets intended to be influenced by the font selection dialog, care needs to be taken to correctly handle focus changes: the Index: doc/frame.n ================================================================== --- doc/frame.n +++ doc/frame.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME frame \- Create and manipulate 'frame' simple container widgets .SH SYNOPSIS -\fBframe\fI pathName\fR ?\fIoptions\fR? +\fBframe\fR \fIpathName\fR ?\fIoptions\fR? .SO \-borderwidth \-highlightcolor \-pady \-cursor \-highlightthickness \-relief \-highlightbackground \-padx \-takefocus .SE @@ -125,19 +125,17 @@ .PP \fIPathName\fR is the name of the command, which is the same as the frame widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for frame widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBframe\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of Index: doc/getOpenFile.n ================================================================== --- doc/getOpenFile.n +++ doc/getOpenFile.n @@ -40,11 +40,11 @@ . Specifies the prefix of a Tcl command to invoke when the user closes the dialog after having selected an item. This callback is not called if the user cancelled the dialog. The actual command consists of \fIstring\fR followed by a space and the value selected by the user in the dialog. This -is only available on Mac OS X. +is only available on macOS. .\" OPTION: -confirmoverwrite .TP \fB\-confirmoverwrite\fI boolean\fR . Configures how the Save dialog reacts when the selected file already @@ -56,11 +56,11 @@ \fB\-defaultextension\fI extension\fR . Specifies a string that will be appended to the filename if the user enters a filename without an extension. The default value is the empty string, which means no extension will be appended to the filename in -any case. This option is ignored on Mac OS X, which +any case. This option is ignored on macOS, which does not require extensions to filenames, and the UNIX implementation guesses reasonable values for this from the \fB\-filetypes\fR option when this is not supplied. .\" OPTION: -filetypes .TP @@ -94,11 +94,11 @@ .\" OPTION: -message .TP \fB\-message\fI string\fR . Specifies a message to include in the client area of the dialog. -This is only available on Mac OS X. +This is only available on macOS. .\" OPTION: -multiple .TP \fB\-multiple\fI boolean\fR . Allows the user to choose multiple files from the Open dialog. @@ -105,11 +105,11 @@ .\" OPTION: -parent .TP \fB\-parent\fI window\fR . Makes \fIwindow\fR the logical parent of the file dialog. The file -dialog is displayed on top of its parent window. On Mac OS X, this +dialog is displayed on top of its parent window. On macOS, this turns the file dialog into a sheet attached to the parent window. .\" OPTION: -title .TP \fB\-title\fI titleString\fR . Index: doc/grab.n ================================================================== --- doc/grab.n +++ doc/grab.n @@ -10,14 +10,13 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME grab \- Confine pointer and keyboard events to a window sub-tree .SH SYNOPSIS -.nf \fBgrab \fR?\fB\-global\fR? \fIwindow\fR +.sp \fBgrab \fIoption \fR?\fIarg \fR...? -.fi .BE .SH DESCRIPTION .PP This command implements simple pointer and keyboard grabs for Tk. Tk's grabs are different than the grabs @@ -82,43 +81,34 @@ grab on a given display at once. .PP The \fBgrab\fR command can take any of the following forms: .TP \fBgrab \fR?\fB\-global\fR? \fIwindow\fR -. Same as \fBgrab set\fR, described below. -.\" METHOD: current .TP \fBgrab current \fR?\fIwindow\fR? -. If \fIwindow\fR is specified, returns the name of the current grab window in this application for \fIwindow\fR's display, or an empty string if there is no such window. If \fIwindow\fR is omitted, the command returns a list whose elements are all of the windows grabbed by this application for all displays, or an empty string if the application has no grabs. -.\" METHOD: release .TP \fBgrab release \fIwindow\fR -. Releases the grab on \fIwindow\fR if there is one, otherwise does nothing. Returns an empty string. -.\" METHOD: set .TP \fBgrab set \fR?\fB\-global\fR? \fIwindow\fR -. Sets a grab on \fIwindow\fR. If \fB\-global\fR is specified then the grab is global, otherwise it is local. If a grab was already in effect for this application on \fIwindow\fR's display then it is automatically released. If there is already a grab on \fIwindow\fR and it has the same global/local form as the requested grab, then the command does nothing. Returns an empty string. -.\" METHOD: status .TP \fBgrab status \fIwindow\fR -. Returns \fBnone\fR if no grab is currently set on \fIwindow\fR, \fBlocal\fR if a local grab is set on \fIwindow\fR, and \fBglobal\fR if a global grab is set. .SH WARNING .PP @@ -144,17 +134,17 @@ .PP Set a grab so that only one button may be clicked out of a group. The other buttons are unresponsive to the mouse until the middle button is clicked. .CS -pack [button .b1 -text "Click me! #1" -command {destroy .b1}] -pack [button .b2 -text "Click me! #2" -command {destroy .b2}] -pack [button .b3 -text "Click me! #3" -command {destroy .b3}] +pack [button .b1 \-text "Click me! #1" \-command {destroy .b1}] +pack [button .b2 \-text "Click me! #2" \-command {destroy .b2}] +pack [button .b3 \-text "Click me! #3" \-command {destroy .b3}] \fBgrab\fR .b2 .CE .SH "SEE ALSO" busy(n) .SH KEYWORDS grab, keyboard events, pointer events, window '\" Local Variables: '\" mode: nroff '\" End: Index: doc/grid.n ================================================================== --- doc/grid.n +++ doc/grid.n @@ -26,18 +26,16 @@ If the first argument to \fBgrid\fR is suitable as the first window argument to \fBgrid configure\fR, either a window name (any value starting with \fB.\fR) or one of the characters \fBx\fR or \fB^\fR (see the \fBRELATIVE PLACEMENT\fR section below), then the command is processed in the same way as \fBgrid configure\fR. -.\" METHOD: anchor .TP \fBgrid anchor \fIwindow\fR ?\fIanchor\fR? . The anchor value controls how to place the grid within the container window when no row/column has any weight. See \fBTHE GRID ALGORITHM\fR below for further details. The default \fIanchor\fR is \fInw\fR. -.\" METHOD: bbox .TP \fBgrid bbox \fIwindow\fR ?\fIcolumn row\fR? ?\fIcolumn2 row2\fR? . With no arguments, the bounding box (in pixels) of the grid is returned. @@ -47,11 +45,10 @@ also in pixels. If a single \fIcolumn\fR and \fIrow\fR is specified on the command line, then the bounding box for that cell is returned, where the top left cell is numbered from zero. If both \fIcolumn\fR and \fIrow\fR arguments are specified, then the bounding box spanning the rows and columns indicated is returned. -.\" METHOD: columnconfigure .TP \fBgrid columnconfigure \fIwindow index \fR?\fI\-option value...\fR? . Query or set the column properties of the \fIindex\fR column of the geometry container, \fIwindow\fR. @@ -83,13 +80,12 @@ grid geometry manager requests a size from the containing window. If only an option is specified, with no value, the current value of that option is returned. If only the container window and index is specified, all the current settings are returned in a list of -.QW "\fI\-option value\fR" +.QW "\-option value" pairs. -.\" METHOD: configure .TP \fBgrid configure \fIwindow \fR?\fIwindow ...\fR? ?\fIoptions\fR? . The arguments consist of the names of one or more content windows followed by pairs of arguments that specify how @@ -98,11 +94,10 @@ can be specified instead of a window name to alter the default location of a \fIwindow\fR, as described in the \fBRELATIVE PLACEMENT\fR section, below. The following options are supported: .RS -.\" OPTION: -column .TP \fB\-column \fIn\fR . Insert the window so that it occupies the \fIn\fRth column in the grid. Column numbers start with 0. If this option is not supplied, then the @@ -111,81 +106,72 @@ .QW 0 if it is the first window. For each \fBx\fR that immediately precedes the \fIwindow\fR, the column position is incremented by one. Thus the \fBx\fR represents a blank column for this row in the grid. -.\" OPTION: -columnspan .TP \fB\-columnspan \fIn\fR . Insert the window so that it occupies \fIn\fR columns in the grid. The default is one column, unless the window name is followed by a \fB\-\fR, in which case the columnspan is incremented once for each immediately following \fB\-\fR. -.\" OPTION: -in .TP \fB\-in \fIcontainer\fR . Insert the window(s) in the container window given by \fIcontainer\fR. The default is the first window's parent window. -.\" OPTION: -ipadx .TP \fB\-ipadx \fIamount\fR . The \fIamount\fR specifies how much horizontal internal padding to leave on each side of the content. This is space is added inside the content border. The \fIamount\fR must be a valid screen distance, such as \fB2\fR or \fB.5c\fR. It defaults to 0. -.\" OPTION: -ipady .TP \fB\-ipady \fIamount\fR . The \fIamount\fR specifies how much vertical internal padding to leave on the top and bottom of the content. This space is added inside the content border. The \fIamount\fR defaults to 0. -.\" OPTION: -padx .TP \fB\-padx \fIamount\fR . The \fIamount\fR specifies how much horizontal external padding to leave on each side of the content, in screen units. \fIAmount\fR may be a list of two values to specify padding for left and right separately. The \fIamount\fR defaults to 0. This space is added outside the content border. -.\" OPTION: -pady .TP \fB\-pady \fIamount\fR . The \fIamount\fR specifies how much vertical external padding to leave on the top and bottom of the content, in screen units. \fIAmount\fR may be a list of two values to specify padding for top and bottom separately. The \fIamount\fR defaults to 0. This space is added outside the content border. -.\" OPTION: -row .TP \fB\-row \fIn\fR . Insert the content so that it occupies the \fIn\fRth row in the grid. Row numbers start with 0. If this option is not supplied, then the content is arranged on the same row as the previous content specified on this call to \fBgrid\fR, or the next row after the highest occupied row if this is the first content. -.\" OPTION: -rowspan .TP \fB\-rowspan \fIn\fR . Insert the content so that it occupies \fIn\fR rows in the grid. The default is one row. If the next \fBgrid\fR command contains \fB^\fR characters instead of \fIcontent\fR that line up with the columns of this \fIcontent\fR, then the \fBrowspan\fR of this \fIcontent\fR is extended by one. -.\" OPTION: -sticky .TP \fB\-sticky \fIstyle\fR . If a content's cell is larger than its requested dimensions, this option may be used to position (or stretch) the content within its cell. @@ -205,20 +191,10 @@ .LP If any of the content is already managed by the geometry manager then any unspecified options for them retain their previous values rather than receiving default values. .RE -.\" METHOD: content -.TP -\fBgrid content \fIwindow\fR ?\fI\-option value\fR? -. -If no options are supplied, a list of all of the content in \fIwindow\fR -is returned, most recently managed first. -\fIOption\fR can be either \fB\-row\fR or \fB\-column\fR which -causes only the content in the row (or column) specified by \fIvalue\fR -to be returned. -.\" METHOD: forget .TP \fBgrid forget \fIwindow \fR?\fIwindow ...\fR? . Removes each of the \fIwindow\fRs from grid for its container and unmaps their windows. @@ -227,34 +203,31 @@ window is managed once more by the grid geometry manager, the initial default settings are used. .RS .PP .VS "TIP 518" -If the last content window of the container becomes unmanaged, this will also -send the virtual event \fB<>\fR to the container; the container +If the last content window of the container becomes unmanaged, this will also send +the virtual event \fB<>\fR to the container; the container may choose to resize itself (or otherwise respond) to such a change. .VE "TIP 518" .RE -.\" METHOD: info .TP \fBgrid info \fIwindow\fR . Returns a list whose elements are the current configuration state of the content given by \fIwindow\fR in the same option-value form that might be specified to \fBgrid configure\fR. The first two elements of the list are .QW "\fB\-in \fIcontainer\fR" where \fIcontainer\fR is the windows's container window. -.\" METHOD: location .TP \fBgrid location \fIwindow x y\fR . -Given \fIx\fR and \fIy\fR values in screen units relative to the container -window, the column and row number at that \fIx\fR and \fIy\fR location is -returned. For locations that are above or to the left of the grid, \fB\-1\fR -is returned. -.\" METHOD: propagate +Given \fIx\fR and \fIy\fR values in screen units relative to the container window, +the column and row number at that \fIx\fR and \fIy\fR location is returned. +For locations that are above or to the left of the grid, \fB\-1\fR is +returned. .TP \fBgrid propagate \fIwindow\fR ?\fIboolean\fR? . If \fIboolean\fR has a true boolean value such as \fB1\fR or \fBon\fR then propagation is enabled for \fIwindow\fR, which must be a window @@ -263,15 +236,11 @@ disabled for \fIwindow\fR. In either of these cases an empty string is returned. If \fIboolean\fR is omitted then the command returns \fB0\fR or \fB1\fR to indicate whether propagation is currently enabled for \fIwindow\fR. -.RS -.PP Propagation is enabled by default. -.RE -.\" METHOD: rowconfigure .TP \fBgrid rowconfigure \fIwindow index \fR?\fI\-option value...\fR? . Query or set the row properties of the \fIindex\fR row of the geometry container, \fIwindow\fR. @@ -278,13 +247,13 @@ The valid options are \fB\-minsize\fR, \fB\-weight\fR, \fB\-uniform\fR and \fB\-pad\fR. If one or more options are provided, then \fIindex\fR may be given as a list of row indices to which the configuration options will operate on. Indices may be integers, window names or the keyword \fIall\fR. For \fIall\fR -the options apply to all rows currently occupied by content windows. For a -window name, that window must be a content window of this container and the -options apply to all rows currently occupied by the container window. +the options apply to all rows currently occupied by content windows. For +a window name, that window must be a content window of this container and the options +apply to all rows currently occupied by the container window. The \fB\-minsize\fR option sets the minimum size, in screen units, that will be permitted for this row. The \fB\-weight\fR option (an integer value) sets the relative weight for apportioning any extra spaces among @@ -305,11 +274,10 @@ the current value of that option is returned. If only the container window and index is specified, all the current settings are returned in a list of .QW "-option value" pairs. -.\" METHOD: remove .TP \fBgrid remove \fIwindow \fR?\fIwindow ...\fR? . Removes each of the \fIwindow\fRs from grid for its container and unmaps their windows. @@ -318,24 +286,30 @@ so that if the content window is managed once more by the grid geometry manager, the previous values are retained. .RS .PP .VS "TIP 518" -If the last content window of the container becomes unmanaged, this will also -send the virtual event \fB<>\fR to the container; the -container may choose to resize itself (or otherwise respond) to such a change. +If the last content window of the container becomes unmanaged, this will also send +the virtual event \fB<>\fR to the container; the container +may choose to resize itself (or otherwise respond) to such a change. .VE "TIP 518" .RE -.\" METHOD: size .TP \fBgrid size \fIcontainer\fR . Returns the size of the grid (in columns then rows) for \fIcontainer\fR. The size is determined either by the \fIcontent\fR occupying the largest row or column, or the largest column or row with a \fB\-minsize\fR, \fB\-weight\fR, or \fB\-pad\fR that is non-zero. -.\" METHOD: slaves +.TP +\fBgrid content \fIwindow\fR ?\fI\-option value\fR? +. +If no options are supplied, a list of all of the content in \fIwindow\fR +is returned, most recently managed first. +\fIOption\fR can be either \fB\-row\fR or \fB\-column\fR which +causes only the content in the row (or column) specified by \fIvalue\fR +to be returned. .TP \fBgrid slaves \fIwindow\fR ?\fI\-option value\fR? . Synonym for \fBgrid content \fIwindow\fR ?\fI\-option value\fR?. .SH "RELATIVE PLACEMENT" @@ -352,19 +326,25 @@ based upon the current layout of the grid, the position of the \fIcontent\fR relative to other \fIcontent\fRs in the same grid command, and the presence of the characters \fB\-\fR, \fBx\fR, and \fB^\fR in \fBgrid\fR command where \fIcontent\fR names are normally expected. .RS -.IP \fB\-\fR +.TP +\fB\-\fR +. This increases the \fB\-columnspan\fR of the \fIcontent\fR to the left. Several -\fB\-\fR's in a row will successively increase the number of columns spanned. -A \fB\-\fR may not follow a \fB^\fR or a \fBx\fR, nor may it be the first -\fIcontent\fR argument to \fBgrid configure\fR. -.IP \fBx\fR +\fB\-\fR's in a row will successively increase the number of columns spanned. A \fB\-\fR +may not follow a \fB^\fR or a \fBx\fR, nor may it be the first \fIcontent\fR +argument to \fBgrid configure\fR. +.TP +\fBx\fR +. This leaves an empty column between the \fIcontent\fR on the left and the \fIcontent\fR on the right. -.IP \fB^\fR +.TP +\fB^\fR +. This extends the \fB\-rowspan\fR of the \fIcontent\fR above the \fB^\fR's in the grid. The number of \fB^\fR's in a row must match the number of columns spanned by the \fIcontent\fR above it. .RE .SH "THE GRID ALGORITHM" @@ -377,12 +357,12 @@ of the container. If the sizes are different, then spaces is added to or taken away from the layout as needed. For the final step, each content is positioned in its row(s) and column(s) based on the setting of its \fIsticky\fR flag. .PP -To compute the minimum size of a layout, the grid geometry manager first looks -at all content whose \fB\-columnspan\fR and \fB\-rowspan\fR values are one, +To compute the minimum size of a layout, the grid geometry manager +first looks at all content whose \fB\-columnspan\fR and \fB\-rowspan\fR values are one, and computes the nominal size of each row or column to be either the \fIminsize\fR for that row or column, or the sum of the \fIpad\fRding plus the size of the largest content, whichever is greater. After that the rows or columns in each uniform group adapt to each other. Then the content whose row-spans or column-spans are greater than one are @@ -459,37 +439,37 @@ A toplevel window containing a text widget and two scrollbars: .PP .CS # Make the widgets toplevel .t -text .t.txt -wrap none -xscroll {.t.h set} -yscroll {.t.v set} -scrollbar .t.v -orient vertical -command {.t.txt yview} -scrollbar .t.h -orient horizontal -command {.t.txt xview} +text .t.txt \-wrap none \-xscroll {.t.h set} \-yscroll {.t.v set} +scrollbar .t.v \-orient vertical \-command {.t.txt yview} +scrollbar .t.h \-orient horizontal \-command {.t.txt xview} # Lay them out -\fBgrid\fR .t.txt .t.v -sticky nsew -\fBgrid\fR .t.h -sticky nsew +\fBgrid\fR .t.txt .t.v \-sticky nsew +\fBgrid\fR .t.h \-sticky nsew # Tell the text widget to take all the extra room -\fBgrid rowconfigure\fR .t .t.txt -weight 1 -\fBgrid columnconfigure\fR .t .t.txt -weight 1 +\fBgrid rowconfigure\fR .t .t.txt \-weight 1 +\fBgrid columnconfigure\fR .t .t.txt \-weight 1 .CE .PP Three widgets of equal width, despite their different .QW natural widths: .PP .CS -button .b -text "Foo" -entry .e -textvariable foo ; set foo "Hello World!" -label .l -text "This is a fairly long piece of text" +button .b \-text "Foo" +entry .e \-textvariable foo ; set foo "Hello World!" +label .l \-text "This is a fairly long piece of text" -\fBgrid\fR .b .e .l -sticky ew -\fBgrid columnconfigure\fR . "all" -uniform allTheSame +\fBgrid\fR .b .e .l \-sticky ew +\fBgrid columnconfigure\fR . "all" \-uniform allTheSame .CE .SH "SEE ALSO" pack(n), place(n) .SH KEYWORDS geometry manager, location, grid, cell, propagation, size, pack '\" Local Variables: '\" mode: nroff '\" End: Index: doc/image.n ================================================================== --- doc/image.n +++ doc/image.n @@ -10,21 +10,19 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME image \- Create and manipulate images .SH SYNOPSIS -\fBimage\fI option \fR?\fIarg ...\fR? +\fBimage\fR \fIoption \fR?\fIarg ...\fR? .BE .SH DESCRIPTION .PP The \fBimage\fR command is used to create, delete, and query images. It can take several different forms, depending on the \fIoption\fR argument. The legal forms are: -.\" METHOD: create .TP \fBimage create \fItype \fR?\fIname\fR? ?\fIoption value ...\fR? -. Creates a new image and a command with the same name and returns its name. \fItype\fR specifies the type of the image, which must be one of the types currently defined (e.g., \fBbitmap\fR). \fIname\fR specifies the name for the image; if it is omitted then Tk picks a name of the form \fBimage\fIx\fR, where \fIx\fR is @@ -38,14 +36,12 @@ with the new contents. It is important to note that the image command will silently overwrite any procedure that may currently be defined by the given name, so choose the name wisely. It is recommended to use a separate namespace for image names (e.g., \fB::img::logo\fR, \fB::img::large\fR). -.\" METHOD: delete .TP \fBimage delete \fR?\fIname name\fR ...? -. Deletes each of the named images and returns an empty string. If there are instances of the images displayed in widgets, the images will not actually be deleted until all of the instances are released. However, the association between the instances and the image @@ -52,44 +48,32 @@ manager will be dropped. Existing instances will retain their sizes but redisplay as empty areas. If a deleted image is recreated with another call to \fBimage create\fR, the existing instances will use the new image. -.\" METHOD: height .TP \fBimage height \fIname\fR -. Returns a decimal string giving the height of image \fIname\fR in pixels. -.\" METHOD: inuse .TP \fBimage inuse \fIname\fR -. Returns a boolean value indicating whether or not the image given by \fIname\fR is in use by any widgets. -.\" METHOD: names .TP \fBimage names\fR -. Returns a list containing the names of all existing images. -.\" METHOD: type .TP \fBimage type \fIname\fR -. Returns the type of image \fIname\fR (the value of the \fItype\fR argument to \fBimage create\fR when the image was created). -.\" METHOD: types .TP \fBimage types\fR -. Returns a list whose elements are all of the valid image types (i.e., all of the values that may be supplied for the \fItype\fR argument to \fBimage create\fR). -.\" METHOD: width .TP \fBimage width \fIname\fR -. Returns a decimal string giving the width of image \fIname\fR in pixels. .PP Additional operations (e.g. writing the image to a file) may be available as subcommands of the image instance command. See the manual @@ -97,19 +81,22 @@ .SH "BUILT-IN IMAGE TYPES" .PP The following image types are defined by Tk so they will be available in any Tk application. Individual applications or extensions may define additional types. -.IP \fBbitmap\fR +.TP +\fBbitmap\fR Each pixel in the image displays a foreground color, a background color, or nothing. See the \fBbitmap\fR manual entry for more information. -.IP \fBphoto\fR +.TP +\fBphoto\fR Displays a variety of full-color images, using dithering to approximate colors on displays with limited color capabilities. See the \fBphoto\fR manual entry for more information. -.IP \fBnsimage\fR +.TP +\fBnsimage\fR This type is only available in the Aqua platform. It is a full-color image which may be created from a named system image. It has options designed to facilitate the use of these images in buttons. An \fBnsimage\fR can be based on an a \fItemplate image\fR, which is an anti-aliased 2-color image format that automatically interchanges Index: doc/keysyms.n ================================================================== --- doc/keysyms.n +++ doc/keysyms.n @@ -571,11 +571,11 @@ Greek_ZETA 1990 0x7C6 Greek_ETA 1991 0x7C7 Greek_THETA 1992 0x7C8 Greek_IOTA 1993 0x7C9 Greek_KAPPA 1994 0x7CA -Greek_LAMBDA 1995 0x7CB +Greek_LAMDA 1995 0x7CB Greek_MU 1996 0x7CC Greek_NU 1997 0x7CD Greek_XI 1998 0x7CE Greek_OMICRON 1999 0x7CF Greek_PI 2000 0x7D0 @@ -595,11 +595,11 @@ Greek_zeta 2022 0x7E6 Greek_eta 2023 0x7E7 Greek_theta 2024 0x7E8 Greek_iota 2025 0x7E9 Greek_kappa 2026 0x7EA -Greek_lambda 2027 0x7EB +Greek_lamda 2027 0x7EB Greek_mu 2028 0x7EC Greek_nu 2029 0x7ED Greek_xi 2030 0x7EE Greek_omicron 2031 0x7EF Greek_pi 2032 0x7F0 @@ -1094,10 +1094,11 @@ dead_u 65160 0xFE88 dead_U 65161 0xFE89 dead_schwa 65162 0xFE8A dead_SCHWA 65163 0xFE8B dead_greek 65164 0xFE8C +dead_hamza 65165 0xFE8D dead_lowline 65168 0xFE90 dead_aboveverticalline 65169 0xFE91 dead_belowverticalline 65170 0xFE92 dead_longsolidusoverlay 65171 0xFE93 ch 65184 0xFEA0 @@ -1153,11 +1154,11 @@ Sys_Req 65301 0xFF15 Escape 65307 0xFF1B Multi_key 65312 0xFF20 Kanji 65313 0xFF21 Muhenkan 65314 0xFF22 -Henkan 65315 0xFF23 +Henkan_Mode 65315 0xFF23 Romaji 65316 0xFF24 Hiragana 65317 0xFF25 Katakana 65318 0xFF26 Hiragana_Katakana 65319 0xFF27 Zenkaku 65320 0xFF28 Index: doc/label.n ================================================================== --- doc/label.n +++ doc/label.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME label \- Create and manipulate 'label' non-interactive text or image widgets .SH SYNOPSIS -\fBlabel\fI pathName \fR?\fIoptions\fR? +\fBlabel\fR \fIpathName \fR?\fIoptions\fR? .SO \-activebackground \-disabledforeground \-padx \-activeforeground \-font \-pady \-anchor \-foreground \-relief \-background \-highlightbackground \-takefocus @@ -78,22 +78,18 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for label widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR -. +\fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBlabel\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -110,25 +106,25 @@ labels are not intended to be interactive. .SH EXAMPLE .PP .CS # Make the widgets -\fBlabel\fR .t -text "This widget is at the top" -bg red -\fBlabel\fR .b -text "This widget is at the bottom" -bg green -\fBlabel\fR .l -text "Left\enHand\enSide" -\fBlabel\fR .r -text "Right\enHand\enSide" +\fBlabel\fR .t \-text "This widget is at the top" \-bg red +\fBlabel\fR .b \-text "This widget is at the bottom" \-bg green +\fBlabel\fR .l \-text "Left\enHand\enSide" +\fBlabel\fR .r \-text "Right\enHand\enSide" text .mid \&.mid insert end "This layout is like Java's BorderLayout" # Lay them out -pack .t -side top -fill x -pack .b -side bottom -fill x -pack .l -side left -fill y -pack .r -side right -fill y -pack .mid -expand 1 -fill both +pack .t \-side top \-fill x +pack .b \-side bottom \-fill x +pack .l \-side left \-fill y +pack .r \-side right \-fill y +pack .mid \-expand 1 \-fill both .CE .SH "SEE ALSO" labelframe(n), button(n), ttk::label(n) .SH KEYWORDS label, widget '\" Local Variables: '\" mode: nroff '\" End: Index: doc/labelframe.n ================================================================== --- doc/labelframe.n +++ doc/labelframe.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME labelframe \- Create and manipulate 'labelframe' labelled container widgets .SH SYNOPSIS -\fBlabelframe\fI pathName\fR ?\fIoptions\fR? +\fBlabelframe\fR \fIpathName\fR ?\fIoptions\fR? .SO \-borderwidth \-highlightbackground \-pady \-cursor \-highlightcolor \-relief \-font \-highlightthickness \-takefocus \-foreground \-padx \-text @@ -99,22 +99,18 @@ .CE \fIPathName\fR is the name of the command, which is the same as the labelframe widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for frame widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR -. +\fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBlabelframe\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -134,14 +130,14 @@ This shows how to build part of a GUI for a hamburger vendor. The \fBlabelframe\fR widgets are used to organize the available choices by the kinds of things that the choices are being made over. .PP .CS -grid [\fBlabelframe\fR .burger -text "Burger"] \e - [\fBlabelframe\fR .bun -text "Bun"] -sticky news -grid [\fBlabelframe\fR .cheese -text "Cheese Option"] \e - [\fBlabelframe\fR .pickle -text "Pickle Option"] -sticky news +grid [\fBlabelframe\fR .burger \-text "Burger"] \e + [\fBlabelframe\fR .bun \-text "Bun"] \-sticky news +grid [\fBlabelframe\fR .cheese \-text "Cheese Option"] \e + [\fBlabelframe\fR .pickle \-text "Pickle Option"] \-sticky news foreach {type name val} { burger Beef beef burger Lamb lamb burger Vegetarian beans @@ -159,13 +155,13 @@ pickle None none pickle Gherkins gherkins pickle Onions onion pickle Chili chili } { - set w [radiobutton .$type.$val -text $name -anchor w \e - -variable $type -value $val] - pack $w -side top -fill x + set w [radiobutton .$type.$val \-text $name \-anchor w \e + \-variable $type \-value $val] + pack $w \-side top \-fill x } set burger beef set bun white set cheese none set pickle none Index: doc/listbox.n ================================================================== --- doc/listbox.n +++ doc/listbox.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME listbox \- Create and manipulate 'listbox' item list widgets .SH SYNOPSIS -\fBlistbox\fI pathName \fR?\fIoptions\fR? +\fBlistbox\fR \fIpathName \fR?\fIoptions\fR? .SO \-background \-borderwidth \-cursor \-disabledforeground \-exportselection \-font \-foreground \-highlightbackground \-highlightcolor \-highlightthickness \-justify \-relief @@ -93,32 +93,41 @@ .PP Many of the widget commands for listboxes take one or more indices as arguments. An index specifies a particular element of the listbox, in any of the following ways: -.IP \fInumber\fR 12 +.TP 12 +\fInumber\fR +. Specifies the element as a numerical index, where 0 corresponds to the first element in the listbox. -.IP \fBactive\fR 12 +.TP 12 +\fBactive\fR +. Indicates the element that has the location cursor. This element will be displayed as specified by \fB\-activestyle\fR when the listbox has the keyboard focus, and it is specified with the \fBactivate\fR widget command. -.IP \fBanchor\fR 12 +.TP 12 +\fBanchor\fR +. Indicates the anchor point for the selection, which is set with the \fBselection anchor\fR widget command. -.IP \fBend\fR 12 +.TP 12 +\fBend\fR +. Indicates the end of the listbox. For most commands this refers to the last element in the listbox, but for a few commands such as \fBindex\fR and \fBinsert\fR it refers to the element just after the last one. -.IP \fB@\fIx\fB,\fIy\fR 12 +.TP 12 +\fB@\fIx\fB,\fIy\fR Indicates the element that covers the point in the listbox window specified by \fIx\fR and \fIy\fR (in pixel coordinates). If no element covers that point, then the closest element to that point is used. -.PP +.LP Indexes support the same simple interpretation as for the command \fBstring index\fR, with simple integer index arithmetic and indexing relative to \fBend\fR. In the widget command descriptions below, arguments named \fIindex\fR, \fIfirst\fR, and \fIlast\fR always contain text indices in one of @@ -133,23 +142,21 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for listbox widgets: -.\" METHOD: activate .TP -\fIpathName \fBactivate\fI index\fR +\fIpathName \fBactivate\fR \fIindex\fR . Sets the active element to the one indicated by \fIindex\fR. If \fIindex\fR is outside the range of elements in the listbox then the closest element is activated. The active element is drawn as specified by \fB\-activestyle\fR when the widget has the input focus, and its index may be retrieved with the index \fBactive\fR. -.\" METHOD: bbox .TP -\fIpathName \fBbbox\fI index\fR +\fIpathName \fBbbox\fR \fIindex\fR . Returns a list of four numbers describing the bounding box of the text in the element given by \fIindex\fR. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the text @@ -159,19 +166,17 @@ screen, or if \fIindex\fR refers to a non-existent element, then the result is an empty string; if the element is partially visible, the result gives the full area of the element, including any parts that are not visible. -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBlistbox\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of @@ -183,27 +188,24 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBlistbox\fR command. -.\" METHOD: curselection .TP \fIpathName \fBcurselection\fR . Returns a list containing the numerical indices of all of the elements in the listbox that are currently selected. If there are no elements selected in the listbox then an empty string is returned. -.\" METHOD: delete .TP \fIpathName \fBdelete \fIfirst \fR?\fIlast\fR? . Deletes one or more elements of the listbox. \fIFirst\fR and \fIlast\fR are indices specifying the first and last elements in the range to delete. If \fIlast\fR is not specified it defaults to \fIfirst\fR, i.e. a single element is deleted. -.\" METHOD: get .TP \fIpathName \fBget \fIfirst\fR ?\fIlast\fR? . If \fIlast\fR is omitted, returns the contents of the listbox element indicated by \fIfirst\fR, @@ -211,33 +213,29 @@ If \fIlast\fR is specified, the command returns a list whose elements are all of the listbox elements between \fIfirst\fR and \fIlast\fR, inclusive. Both \fIfirst\fR and \fIlast\fR may have any of the standard forms for indices. -.\" METHOD: index .TP \fIpathName \fBindex \fIindex\fR . Returns the integer index value that corresponds to \fIindex\fR. If \fIindex\fR is \fBend\fR the return value is a count of the number of elements in the listbox (not the index of the last element). -.\" METHOD: insert .TP \fIpathName \fBinsert \fIindex \fR?\fIelement element ...\fR? . Inserts zero or more new elements in the list just before the element given by \fIindex\fR. If \fIindex\fR is specified as \fBend\fR then the new elements are added to the end of the list. Returns an empty string. -.\" METHOD: itemcget .TP \fIpathName \fBitemcget \fIindex option\fR . Returns the current value of the item configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBitemconfigure\fR command. -.\" METHOD: itemconfigure .TP \fIpathName \fBitemconfigure \fIindex\fR ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? . Query or modify the configuration options of an item in the listbox. If no \fIoption\fR is specified, returns a list describing all of @@ -249,46 +247,40 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. The following options are currently supported for items: .RS -.\" OPTION: -background .TP \fB\-background \fIcolor\fR . \fIColor\fR specifies the background color to use when displaying the item. It may have any of the forms accepted by \fBTk_GetColor\fR. -.\" OPTION: -foreground .TP \fB\-foreground \fIcolor\fR . \fIColor\fR specifies the foreground color to use when displaying the item. It may have any of the forms accepted by \fBTk_GetColor\fR. -.\" OPTION: -selectbackground .TP \fB\-selectbackground \fIcolor\fR . \fIcolor\fR specifies the background color to use when displaying the item while it is selected. It may have any of the forms accepted by \fBTk_GetColor\fR. -.\" OPTION: -selectforeground .TP \fB\-selectforeground \fIcolor\fR . \fIcolor\fR specifies the foreground color to use when displaying the item while it is selected. It may have any of the forms accepted by \fBTk_GetColor\fR. .RE -.\" METHOD: nearest .TP \fIpathName \fBnearest \fIy\fR . Given a y-coordinate within the listbox window, this command returns the index of the (visible) listbox element nearest to that y-coordinate. -.\" METHOD: scan .TP -\fIpathName \fBscan\fI option args\fR +\fIpathName \fBscan\fR \fIoption args\fR . This command is used to implement scanning on listboxes. It has two forms, depending on \fIoption\fR: .RS .TP @@ -308,21 +300,19 @@ difference in coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the list at high speed through the window. The return value is an empty string. .RE -.\" METHOD: see .TP \fIpathName \fBsee \fIindex\fR . Adjust the view in the listbox so that the element given by \fIindex\fR is visible. If the element is already visible then the command has no effect; if the element is near one edge of the window then the listbox scrolls to bring the element into view at the edge; otherwise the listbox scrolls to center the element. -.\" METHOD: selection .TP \fIpathName \fBselection \fIoption arg\fR . This command is used to adjust the selection within a listbox. It has several forms, depending on \fIoption\fR: @@ -354,17 +344,15 @@ . Selects all of the elements in the range between \fIfirst\fR and \fIlast\fR, inclusive, without affecting the selection state of elements outside that range. .RE -.\" METHOD: size .TP \fIpathName \fBsize\fR . Returns a decimal string indicating the total number of elements in the listbox. -.\" METHOD: xview .TP \fIpathName \fBxview \fR?\fIargs\fR . This command is used to query and change the horizontal position of the information in the widget's window. It can take any of the following @@ -409,21 +397,19 @@ become visible. If \fIwhat\fR is \fBunits\fR, the view adjusts left or right by \fInumber\fR character units (the width of the \fB0\fR character) on the display. .RE -.\" METHOD: yview .TP \fIpathName \fByview \fR?\fIargs\fR? . This command is used to query and change the vertical position of the text in the widget's window. It can take any of the following forms: .RS .TP \fIpathName \fByview\fR -. Returns a list containing two elements, both of which are real fractions between 0 and 1. The first element gives the position of the listbox element at the top of the window, relative to the listbox as a whole (0.5 means it is halfway through the listbox, for example). Index: doc/loadTk.n ================================================================== --- doc/loadTk.n +++ doc/loadTk.n @@ -9,11 +9,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME safe::loadTk \- Load Tk into a safe interpreter. .SH SYNOPSIS -\fBsafe::loadTk \fIchild\fR ?\fB\-use\fI windowId\fR? ?\fB\-display\fI displayName\fR? +\fBsafe::loadTk \fIchild\fR ?\fB\-use\fR \fIwindowId\fR? ?\fB\-display\fR \fIdisplayName\fR? .BE .SH DESCRIPTION .PP Safe Tk is based on Safe Tcl, which provides a mechanism that allows restricted and mediated access to auto-loading and packages for safe @@ -30,11 +30,11 @@ window of the safe interpreter; it can be any valid id, eventually referencing a window belonging to another application. As a convenience, if the window you plan to use is a Tk Window of the application you can use the window name (e.g., .QW \fB.x.y\fR ) -instead of its window Id (e.g., from \fBwinfo id\fI .x.y\fR). +instead of its window Id (e.g., from \fBwinfo id\fR \fB.x.y\fR). When \fB\-use\fR is not specified, a new toplevel window is created for the .QW . window of the safe interpreter. On X11 if you want the embedded window to use another display than the default one, specify it with \fB\-display\fR. See the \fBSECURITY ISSUES\fR section below for implementation details. @@ -49,11 +49,11 @@ .PP Tk initialization is now safe with respect to not trusting the child's state for startup. \fBsafe::loadTk\fR registers the child's name so when the Tk initialization (\fBTk_SafeInit\fR) is called and in turn calls the parent's \fBsafe::InitTk\fR it will return the desired \fBargv\fR equivalent -(\fB\-use\fI windowId\fR, correct \fB\-display\fR, etc.) +(\fB\-use\fR \fIwindowId\fR, correct \fB\-display\fR, etc.) .PP When \fB\-use\fR is not used, the new toplevel created is specially decorated so the user is always aware that the user interface presented comes from a potentially unsafe code and can easily delete the corresponding interpreter. .PP Index: doc/menu.n ================================================================== --- doc/menu.n +++ doc/menu.n @@ -39,11 +39,11 @@ which specifies whether or not the menu should include a tear-off entry at the top. If so, it will exist as entry 0 of the menu and the other entries will number starting at 1. The default menu bindings arrange for the menu to be torn off when the tear-off entry is invoked. -This option is ignored under Aqua/MacOS, where menus cannot +This option is ignored under Aqua/macOS, where menus cannot be torn off. .OP \-tearoffcommand tearOffCommand TearOffCommand If this option has a non-empty value, then it specifies a Tcl command to invoke whenever the menu is torn off. The actual command will consist of the value of this option, followed by a space, followed @@ -53,11 +53,11 @@ .QW "\fBa b\fR" and menu \fB.x.y\fR is torn off to create a new menu \fB.x.tearoff1\fR, then the command .QW "\fBa b .x.y .x.tearoff1\fR" will be invoked. -This option is ignored under Aqua/MacOS, where menus cannot +This option is ignored under Aqua/macOS, where menus cannot be torn off. .OP \-title title Title The string will be used to title the window created when this menu is torn off. If the title is NULL, then the window will have the title of the menubutton or the text of the cascade item from which this menu @@ -261,21 +261,21 @@ becoming the Application menu. .PP When Tk sees a .menubar.window menu on the Macintosh, the menu's contents are inserted into the standard Window menu of the user's menubar whenever the window's menubar is in front. The first items in -the menu are provided by Mac OS X, and the names of the current +the menu are provided by macOS, and the names of the current toplevels are automatically appended after all the Tk-defined items and a separator. The Window menu on the Mac also allows toggling the window into a fullscreen state, and managing a tabbed window interface (multiple windows grouped into a single window) if supported by that version of the operating system. .PP When Tk sees a .menubar.help menu on the Macintosh, the menu's contents are appended to the standard Help menu of the user's menubar whenever the window's menubar is in front. The first items in the menu -are provided by Mac OS X. +are provided by macOS. .PP When Tk sees a System menu on Windows, its items are appended to the system menu that the menubar is attached to. This menu is tied to the application icon and can be invoked with the mouse or by typing Alt+Spacebar. Due to limitations in the Windows API, any font changes, @@ -328,10 +328,15 @@ .QW "no entry at all" ; this is used most commonly with the \fBactivate\fR option to deactivate all the entries in the menu. In most cases the specification of \fB{}\fR causes nothing to happen in the widget command. +.TP 12 +\fBnone\fR +. +Same as \fB{}\fR +This form is deprecated and may not be abbreviated. .IP \fB@\fIx\fB,\fIy\fR 12 Indicates the entry that covers the point in the menu's window specified by \fIx\fR and \fIy\fR (in pixel coordinates). If no entry covers that point, then this form is equivalent to \fB{}\fR. If only a single number is specified, it is treated as the y-coordinate. @@ -361,11 +366,11 @@ \fIpathName \fBactivate \fIindex\fR . Change the state of the entry indicated by \fIindex\fR to \fBactive\fR and redisplay it using its active colors. Any previously-active entry is deactivated. If \fIindex\fR -is specified as \fB{}\fR, or if the specified entry is +is specified as \fB{}\fR or \fBnone\fR, or if the specified entry is disabled, then the menu ends up with no active entry. Returns an empty string. .\" METHOD: add .TP \fIpathName \fBadd \fItype \fR?\fIid\fR? ?\fIoption value option value ...\fR? @@ -457,11 +462,11 @@ .\" METHOD: index .TP \fIpathName \fBindex \fIindex\fR . Returns the numerical index corresponding to \fIindex\fR, or -\fB{}\fR if \fIindex\fR was specified as \fB{}\fR. +\fB{}\fR if \fIindex\fR was specified as \fB{}\fR or \fBnone\fR. .\" METHOD: insert .TP \fIpathName \fBinsert \fIindex type \fR?\fIid\fR? ?\fIoption value option value ...\fR? . Same as the \fBadd\fR widget command except that it inserts the new @@ -543,11 +548,11 @@ .\" OPTION: -activebackground .TP \fB\-activebackground \fIvalue\fR . Specifies a background color to use for displaying this entry when it -is active. This option is ignored on Aqua/MacOS. +is active. This option is ignored on Aqua/macOS. If it is specified as an empty string (the default), then the \fB\-activebackground\fR option for the overall menu is used. If the \fBtk_strictMotif\fR variable has been set to request strict Motif compliance, then this option is ignored and the \fB\-background\fR option is used in its place. @@ -558,10 +563,11 @@ . Specifies a foreground color to use for displaying this entry when it is active. This option is ignored on Aqua/macOS. If this option is specified as an empty string (the default), then the \fB\-activeforeground\fR option for the overall menu is used. +This option is not available for separator or tear-off entries. .\" OPTION: -accelerator .TP \fB\-accelerator \fIvalue\fR . Specifies a string to display at the right side of the menu entry. Index: doc/menubutton.n ================================================================== --- doc/menubutton.n +++ doc/menubutton.n @@ -93,11 +93,11 @@ causes the underlying menu entry to be invoked. When the button is released, the menu is unposted. .PP Menubuttons are used to construct a \fBtk_optionMenu\fR, which is the preferred mechanism for allowing a user to select one item from a list -on Mac OS X. +on macOS. .PP Menubuttons were also typically organized into groups called menu bars that allow scanning: if the mouse button is pressed over one menubutton (causing it to post its menu) and the mouse is moved over another menubutton Index: doc/message.n ================================================================== --- doc/message.n +++ doc/message.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME message \- Create and manipulate 'message' non-interactive text widgets .SH SYNOPSIS -\fBmessage\fI pathName \fR?\fIoptions\fR? +\fBmessage\fR \fIpathName \fR?\fIoptions\fR? .SO \-anchor \-background \-borderwidth \-cursor \-font \-foreground \-highlightbackground \-highlightcolor \-highlightthickness \-padx \-pady \-relief @@ -109,19 +109,17 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for message widgets: -.\" METHOD: cget .TP \fIpathName \fBcget \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBmessage\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of Index: doc/messageBox.n ================================================================== --- doc/messageBox.n +++ doc/messageBox.n @@ -21,96 +21,99 @@ name (see the \fB\-type\fR options). After the message window is popped up, \fBtk_messageBox\fR waits for the user to select one of the buttons. Then it returns the symbolic name of the selected button. .PP The following option-value pairs are supported: -.\" OPTION: -command .TP -\fB\-command\fI string\fR -. +\fB\-command\fR \fIstring\fR Specifies the prefix of a Tcl command to invoke when the user closes the dialog. The actual command consists of \fIstring\fR followed by a space and the name of the button clicked by the user to close the dialog. This -is only available on Mac OS X. -.\" OPTION: -default +is only available on macOS. .TP -\fB\-default\fI name\fR +\fB\-default\fR \fIname\fR . \fIName\fR gives the symbolic name of the default button for this message window ( .QW ok , .QW cancel , and so on). See \fB\-type\fR for a list of the symbolic names. If this option is not specified, the first button in the dialog will be made the default. -.\" OPTION: -detail .TP -\fB\-detail\fI string\fR +\fB\-detail\fR \fIstring\fR . Specifies an auxiliary message to the main message given by the \fB\-message\fR option. The message detail will be presented beneath the main message and, where supported by the OS, in a less emphasized font than the main message. -.\" OPTION: -icon .TP -\fB\-icon\fI iconImage\fR +\fB\-icon\fR \fIiconImage\fR . Specifies an icon to display. \fIIconImage\fR must be one of the following: \fBerror\fR, \fBinfo\fR, \fBquestion\fR or \fBwarning\fR. If this option is not specified, then the info icon will be displayed. -.\" OPTION: -message .TP -\fB\-message\fI string\fR +\fB\-message\fR \fIstring\fR . Specifies the message to display in this message box. The default value is an empty string. -.\" OPTION: -parent .TP -\fB\-parent\fI window\fR +\fB\-parent\fR \fIwindow\fR . Makes \fIwindow\fR the logical parent of the message box. The message box is displayed on top of its parent window. -.\" OPTION: -title .TP -\fB\-title\fI titleString\fR +\fB\-title\fR \fItitleString\fR . Specifies a string to display as the title of the message box. The default value is an empty string. -.\" OPTION: -type .TP -\fB\-type\fI predefinedType\fR +\fB\-type\fR \fIpredefinedType\fR . Arranges for a predefined set of buttons to be displayed. The following values are possible for \fIpredefinedType\fR: .RS -.IP \fBabortretryignore\fR 18 +.TP 18 +\fBabortretryignore\fR +. Displays three buttons whose symbolic names are \fBabort\fR, \fBretry\fR and \fBignore\fR. -.IP \fBok\fR 18 -Displays one button whose symbolic name is \fBok\fR. -.IP \fBokcancel\fR 18 +.TP 18 +\fBok\fR +. +Displays one button whose symbolic name is \fBok\fR. This is the default. +.TP 18 +\fBokcancel\fR +. Displays two buttons whose symbolic names are \fBok\fR and \fBcancel\fR. -.IP \fBretrycancel\fR 18 +.TP 18 +\fBretrycancel\fR +. Displays two buttons whose symbolic names are \fBretry\fR and \fBcancel\fR. -.IP \fByesno\fR 18 +.TP 18 +\fByesno\fR +. Displays two buttons whose symbolic names are \fByes\fR and \fBno\fR. -.IP \fByesnocancel\fR 18 +.TP 18 +\fByesnocancel\fR +. Displays three buttons whose symbolic names are \fByes\fR, \fBno\fR and \fBcancel\fR. .RE .PP .SH EXAMPLE .PP .CS -set answer [\fBtk_messageBox\fR -message "Really quit?" \e - -icon question -type yesno \e - -detail "Select \e"Yes\e" to make the application exit"] -switch -- $answer { +set answer [\fBtk_messageBox\fR \-message "Really quit?" \e + \-icon question \-type yesno \e + \-detail "Select \e"Yes\e" to make the application exit"] +switch \-\- $answer { yes exit - no {\fBtk_messageBox\fR -message "I know you like this application!" \e - -type ok} + no {\fBtk_messageBox\fR \-message "I know you like this application!" \e + \-type ok} } .CE .SH KEYWORDS message box '\" Local Variables: Index: doc/nsimage.n ================================================================== --- doc/nsimage.n +++ doc/nsimage.n @@ -24,101 +24,97 @@ creates a new nsimage and a command with the same name and returns its name. .SH OPTIONS .PP Valid \fIoptions\fR are: -.\" OPTION: -source .TP -\fB\-source\fI string\fR +\fB\-source\fR .PP The value of the \fB\-source\fR option is a string describing an NSimage. There are several ways to interpret this string, and the interpretation is determined by the value of the \fB\-as\fR option. This option is required. .PP -.\" OPTION: -as .TP -\fB\-as\fI type\fR +\fB\-as\fR .PP -There are four possible values for the \fB\-as\fR option which specify +There are four possible values for the \fB-as\fR option which specify how the source string should be interpreted. The allowed values and their meanings are: -.RS -.IP \fBname\fR +.IP +\fBname\fR +.IP The source should be interpreted as the name of a named NSImage -provided by the system. -This is the default if the \fB\-as\fR option is not specified. -.IP \fBfile\fR +provided by the system. This is the default if the -as option is not specified. +.IP +\fBfile\fR +.IP The source should be interpreted as a path to an image file in one of the formats understood by the NSImage class. -.IP \fBpath\fR +.IP +\fBpath\fR +.IP The source should be interpreted as a path to an arbitrary file. The type of the file will be examined and the resulting image will be the system icon for files of that type. -.IP \fBfiletype\fR +.IP +\fBfiletype\fR +.IP The source is interpreted as a string identifying a particular file type. It may be a filename extension, an Apple Uniform Type Identifier or a 4-character OSType value as used in the HFS filesystem. -.RE -.\" OPTION: -width .TP -\fB\-width\fI pixels\fR +\fB\-width\fR .PP The value of the \fIwidth\fR option is an integer specifying the width in pixels of the nsimage. If the width is not specified it will be computed from the height so as to preserve the aspect ration. If neither width nor height are specified then the width and height of the underlying NSImage will be used. -.\" OPTION: -height .TP -\fB\-height\fI pixels\fR +\fB\-height\fR .PP The value of the \fIheight\fR option is an integer specifying the height in pixels of the nsimage. If the height is not specified it will be computed from the height so as to preserve the aspect ration. If neither width nor height are specified then the width and height of the underlying NSImage will be used. -.\" OPTION: -radius .TP -\fB\-radius\fI pixels\fR +\fB\-radius\fR .PP The value of the \fIradius\fR option is an integer. If non-zero the image will be clipped to a rounded rectangle with the same width and height as the image, but with circular arcs of the specified radius cutting off the corners of the rectangle. -.\" OPTION: -ring .TP -\fB\-ring\fI pixels\fR +\fB\-ring\fR .PP The value of the \fIring\fR option is an integer. If non-zero then it specifies the thickness of a focus ring which will be drawn around the image using the control accent color specified in the System Preferences. The image is resized to reduce its width and height by twice the thickness of the ring. Note that this may create a small amount of distortion. The aspect ration of a non-square image will change slightly. -.\" OPTION: -alpha .TP -\fB\-alpha\fI float\fR +\fB\-alpha\fR .PP The value of the \fIalpha\fR option should be a floating point number between 0.0 and 1.0. This alpha value will be applied to each pixel of the nsimage, producing a partially transparent image. The default value -is 1.0, which makes the image opaque. -.\" OPTION: -pressed +is 1,0, which makes the image opaque. .TP -\fB\-pressed\fI boolean\fR +\fB\-pressed\fR .PP The \fIpressed\fR option takes a boolean value. If the value is true or 1 then the image will be algorithmically modified to become darker in light mode or lighter in dark mode. The default is false. For an image button, the primary image should use the value false while the pressed image should be the same image but with the \fIpressed\fR option set to true. -.\" OPTION: -template .TP -\fB\-template\fI boolean\fR +\fB\-template\fR .PP The \fItemplate\fR option takes a boolean value. If the value is true or 1 then the image will be marked as being a template image. This means that the system will algorithmically convert the image to a light colored image when in dark mode. For the algorithm to work Index: doc/option.n ================================================================== --- doc/option.n +++ doc/option.n @@ -20,13 +20,12 @@ .fi .BE .SH DESCRIPTION .PP The \fBoption\fR command allows you to add entries to the Tk option -database or to retrieve options from the database. -.\" METHOD: add -The \fBadd\fR form of the command adds a new option to the database. +database or to retrieve options from the database. The \fBadd\fR +form of the command adds a new option to the database. \fIPattern\fR contains the option being specified, and consists of names and/or classes separated by asterisks or dots, in the usual X format (see \fBPATTERN FORMAT\fR). \fIValue\fR contains a text string to associate with \fIpattern\fR; this is the @@ -34,19 +33,17 @@ invocations of the \fBoption get\fR command. If \fIpriority\fR is specified, it indicates the priority level for this option (see below for legal values); it defaults to \fBinteractive\fR. This command always returns an empty string. .PP -.\" METHOD: clear The \fBoption clear\fR command clears the option database. Default options (from the \fBRESOURCE_MANAGER\fR property or the \fB.Xdefaults\fR file) will be reloaded automatically the next time an option is added to the database or removed from it. This command always returns an empty string. .PP -.\" METHOD: get The \fBoption get\fR command returns the value of the option specified for \fIwindow\fR under \fIname\fR and \fIclass\fR. If several entries in the option database match \fIwindow\fR, \fIname\fR, and \fIclass\fR, then the command returns whichever was created with highest @@ -53,11 +50,10 @@ \fIpriority\fR level. If there are several matching entries at the same priority level, then it returns whichever entry was most recently entered into the option database. If there are no matching entries, then the empty string is returned. .PP -.\" METHOD: readfile The \fBreadfile\fR form of the command reads \fIfileName\fR, which should have the standard format for an X resource database such as \fB.Xdefaults\fR, and adds all the options specified in that file to the option database. If \fIpriority\fR is specified, it indicates the priority level at which to enter the @@ -69,20 +65,24 @@ probability will work as well, but this cannot be guaranteed. This cannot be changed, setting the [encoding system] has no effect. .PP The \fIpriority\fR arguments to the \fBoption\fR command are normally specified symbolically using one of the following values: -.IP \fBwidgetDefault\fR3 +.TP +\fBwidgetDefault\fR Level 20. Used for default values hard-coded into widgets. -.IP \fBstartupFile\fR +.TP +\fBstartupFile\fR Level 40. Used for options specified in application-specific startup files. -.IP \fBuserDefault\fR +.TP +\fBuserDefault\fR Level 60. Used for options specified in user-specific defaults files, such as \fB.Xdefaults\fR, resource databases loaded into the X server, or user-specific startup files. -.IP \fBinteractive\fR +.TP +\fBinteractive\fR Level 80. Used for options specified interactively after the application starts running. If \fIpriority\fR is not specified, it defaults to this level. .PP Any of the above keywords may be abbreviated. In addition, priorities Index: doc/options.n ================================================================== --- doc/options.n +++ doc/options.n @@ -58,11 +58,11 @@ .OP \-activeforeground activeForeground Background Specifies foreground color to use when drawing active elements. See above for definition of active elements. .OP \-activerelief activeRelief Relief Specifies the 3-D effect desired for the active item of the widget. -See the \fB\-relief\fR option for details. +See the \fB-relief\fR option for details. .OP \-anchor anchor Anchor Specifies how the information in a widget (e.g. text or a bitmap) is to be displayed in the widget. Must be one of the values \fBn\fR, \fBne\fR, \fBe\fR, \fBse\fR, \fBs\fR, \fBsw\fR, \fBw\fR, \fBnw\fR, or \fBcenter\fR. @@ -290,11 +290,11 @@ and evaluate the resulting string as a Tcl script. The script must return \fB0\fR, \fB1\fR, or an empty string: a \fB0\fR or \fB1\fR value specifies whether the window will receive the input focus, and an empty string results in the default decision described above. -Note that this interpretation of the option is defined entirely by +Note: this interpretation of the option is defined entirely by the Tcl scripts that implement traversal: the widget implementations ignore the option entirely, so you can change its meaning if you redefine the keyboard traversal scripts. .OP \-text text Text Specifies a string to be displayed inside the widget. The way in which Index: doc/pack.n ================================================================== --- doc/pack.n +++ doc/pack.n @@ -21,118 +21,97 @@ packing them in order around the edges of the parent. The \fBpack\fR command can have any of several forms, depending on the \fIoption\fR argument: .TP \fBpack \fIwindow \fR?\fIwindow ...\fR? ?\fIoptions\fR? -. If the first argument to \fBpack\fR is a window name (any value starting with .QW . ), then the command is processed in the same way as \fBpack configure\fR. -.\" METHOD: configure .TP \fBpack configure \fIwindow \fR?\fIwindow ...\fR? ?\fIoptions\fR? -. The arguments consist of the names of one or more content windows followed by pairs of arguments that specify how to manage the content. See \fBTHE PACKER ALGORITHM\fR below for details on how the options are used by the packer. The following options are supported: .RS -.\" OPTION: -after .TP \fB\-after \fIother\fR -. \fIOther\fR must the name of another window. Use its container as the container for the content, and insert the content just after \fIother\fR in the packing order. -.\" OPTION: -anchor .TP \fB\-anchor \fIanchor\fR -. \fIAnchor\fR must be a valid anchor position such as \fBn\fR or \fBsw\fR; it specifies where to position each content in its parcel. Defaults to \fBcenter\fR. -.\" OPTION: -before .TP \fB\-before \fIother\fR -. \fIOther\fR must the name of another window. Use its container as the container for the content, and insert the content just before \fIother\fR in the packing order. -.\" OPTION: -expand .TP \fB\-expand \fIboolean\fR -. Specifies whether the content should be expanded to consume extra space in their container. \fIBoolean\fR may have any proper boolean value, such as \fB1\fR or \fBno\fR. Defaults to 0. -.\" OPTION: -fill .TP \fB\-fill \fIstyle\fR -. If a content's parcel is larger than its requested dimensions, this option may be used to stretch the content. \fIStyle\fR must have one of the following values: .RS -.IP \fBnone\fR +.TP +\fBnone\fR Give the content its requested dimensions plus any internal padding requested with \fB\-ipadx\fR or \fB\-ipady\fR. This is the default. -.IP \fBx\fR +.TP +\fBx\fR Stretch the content horizontally to fill the entire width of its parcel (except leave external padding as specified by \fB\-padx\fR). -.IP \fBy\fR +.TP +\fBy\fR Stretch the content vertically to fill the entire height of its parcel (except leave external padding as specified by \fB\-pady\fR). -.IP \fBboth\fR +.TP +\fBboth\fR Stretch the content both horizontally and vertically. .RE -.\" OPTION: -in .TP \fB\-in \fIcontainer\fR -. Insert the window at the end of the packing order for the container window given by \fIcontainer\fR. -.\" OPTION: -ipadx .TP \fB\-ipadx \fIamount\fR -. \fIAmount\fR specifies how much horizontal internal padding to leave on each side of the content. \fIAmount\fR must be a valid screen distance, such as \fB2\fR or \fB.5c\fR. It defaults to 0. -.\" OPTION: -ipady .TP \fB\-ipady \fIamount\fR -. \fIAmount\fR specifies how much vertical internal padding to leave on each side of the content. \fIAmount\fR defaults to 0. -.\" OPTION: -padx .TP \fB\-padx \fIamount\fR -. \fIAmount\fR specifies how much horizontal external padding to leave on each side of the content. \fIAmount\fR may be a list of two values to specify padding for left and right separately. \fIAmount\fR defaults to 0. -.\" OPTION: -pady .TP \fB\-pady \fIamount\fR -. \fIAmount\fR specifies how much vertical external padding to leave on each side of the content. \fIAmount\fR may be a list of two values to specify padding for top and bottom separately. \fIAmount\fR defaults to 0. -.\" OPTION: -side .TP \fB\-side \fIside\fR -. Specifies which side of the container the content will be packed against. Must be \fBleft\fR, \fBright\fR, \fBtop\fR, or \fBbottom\fR. Defaults to \fBtop\fR. .LP If no \fB\-in\fR, \fB\-after\fR or \fB\-before\fR option is specified @@ -143,47 +122,33 @@ inserted at the specified point. If any of the content are already managed by the geometry manager then any unspecified options for them retain their previous values rather than receiving default values. .RE -.\" METHOD: content -.TP -\fBpack content \fIwindow\fR -. -Returns a list of all of the content windows in the packing order for -\fIwindow\fR. The order of the content windows in the list is the same as -their order in the packing order. -If \fIwindow\fR has no content then an empty string is returned. -.\" METHOD: forget .TP \fBpack forget \fIwindow \fR?\fIwindow ...\fR? -. Removes each of the \fIwindow\fRs from the packing order for its container and unmaps their windows. The content will no longer be managed by the packer. .RS .PP .VS "TIP 518" -If the last content window of the container becomes unmanaged, this will -also send the virtual event \fB<>\fR to the container; the -container may choose to resize itself (or otherwise respond) to such a change. +If the last content window of the container becomes unmanaged, this will also send +the virtual event \fB<>\fR to the container; the container +may choose to resize itself (or otherwise respond) to such a change. .VE "TIP 518" .RE -.\" METHOD: info .TP \fBpack info \fIwindow\fR -. Returns a list whose elements are the current configuration state of the window given by \fIwindow\fR in the same option-value form that might be specified to \fBpack configure\fR. The first two elements of the list are .QW "\fB\-in \fIcontainer\fR" where \fIcontainer\fR is the window's container. -.\" METHOD: propagate .TP \fBpack propagate \fIcontainer\fR ?\fIboolean\fR? -. If \fIboolean\fR has a true boolean value such as \fB1\fR or \fBon\fR then propagation is enabled for \fIcontainer\fR, which must be a window name (see \fBGEOMETRY PROPAGATION\fR below). If \fIboolean\fR has a false boolean value then propagation is disabled for \fIcontainer\fR. @@ -190,11 +155,16 @@ In either of these cases an empty string is returned. If \fIboolean\fR is omitted then the command returns \fB0\fR or \fB1\fR to indicate whether propagation is currently enabled for \fIcontainer\fR. Propagation is enabled by default. -.\" METHOD: slaves +.TP +\fBpack content \fIwindow\fR +Returns a list of all of the content windows in the packing order for \fIwindow\fR. +The order of the content windows in the list is the same as their order in +the packing order. +If \fIwindow\fR has no content then an empty string is returned. .TP \fBpack slaves \fIwindow\fR . Synonym for \fBpack content \fIwindow\fR. .SH "THE PACKER ALGORITHM" @@ -301,25 +271,25 @@ the stacking order of either the container or the content. .SH EXAMPLE .PP .CS # Make the widgets -label .t -text "This widget is at the top" -bg red -label .b -text "This widget is at the bottom" -bg green -label .l -text "Left\enHand\enSide" -label .r -text "Right\enHand\enSide" +label .t \-text "This widget is at the top" \-bg red +label .b \-text "This widget is at the bottom" \-bg green +label .l \-text "Left\enHand\enSide" +label .r \-text "Right\enHand\enSide" text .mid \&.mid insert end "This layout is like Java's BorderLayout" # Lay them out -\fBpack\fR .t -side top -fill x -\fBpack\fR .b -side bottom -fill x -\fBpack\fR .l -side left -fill y -\fBpack\fR .r -side right -fill y -\fBpack\fR .mid -expand 1 -fill both +\fBpack\fR .t \-side top \-fill x +\fBpack\fR .b \-side bottom \-fill x +\fBpack\fR .l \-side left \-fill y +\fBpack\fR .r \-side right \-fill y +\fBpack\fR .mid \-expand 1 \-fill both .CE .SH "SEE ALSO" grid(n), place(n) .SH KEYWORDS geometry manager, location, packer, parcel, propagation, size '\" Local Variables: '\" mode: nroff '\" End: Index: doc/palette.n ================================================================== --- doc/palette.n +++ doc/palette.n @@ -9,15 +9,15 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tk_setPalette, tk_bisque \- Modify the Tk color palette .SH SYNOPSIS -.nf \fBtk_setPalette \fIbackground\fR +.sp \fBtk_setPalette \fIname value \fR?\fIname value ...\fR? +.sp \fBtk_bisque\fR -.fi .BE .SH DESCRIPTION .PP The \fBtk_setPalette\fR procedure changes the color scheme for Tk. It does this by modifying the colors of existing widgets and by changing Index: doc/panedwindow.n ================================================================== --- doc/panedwindow.n +++ doc/panedwindow.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME panedwindow \- Create and manipulate 'panedwindow' split container widgets .SH SYNOPSIS -\fBpanedwindow\fI pathName \fR?\fIoptions\fR? +\fBpanedwindow\fR \fIpathName \fR?\fIoptions\fR? .SO \-background \-borderwidth \-cursor \-orient \-relief .SE .SH "WIDGET-SPECIFIC OPTIONS" @@ -36,21 +36,21 @@ .QW ghost version of the sash is displayed during the resizing to show where the panes will be resized to when releasing the mouse button. This .QW ghost version of the sash is the proxy. It's rendering can be configured -using the \fB\-proxybackground\fR, \fB\-proxyborderwidth\fR and -\fB\-proxyrelief\fR options. +using the \fB-proxybackground\fR, \fB-proxyborderwidth\fR and +\fB-proxyrelief\fR options. .OP \-proxybackground proxyBackground ProxyBackground Background color to use when drawing the proxy. If an empty string, the -value of the \fB\-background\fR option will be used. +value of the \fB-background\fR option will be used. .OP \-proxyborderwidth proxyBorderWidth ProxyBorderWidth Specifies the borderwidth of the proxy. May be any value accepted by \fBTk_GetPixels\fR. .OP \-proxyrelief proxyRelief ProxyRelief Relief to use when drawing the proxy. May be any of the standard Tk -relief values. If an empty string, the value of the \fB\-sashrelief\fR +relief values. If an empty string, the value of the \fB-sashrelief\fR option will be used. .OP \-sashcursor sashCursor SashCursor Mouse cursor to use when over a sash. If null, \fBsb_h_double_arrow\fR will be used for horizontal panedwindows, and \fBsb_v_double_arrow\fR will be used for vertical panedwindows. @@ -96,27 +96,24 @@ .CE \fIPathName\fR is the name of the command, which is the same as the panedwindow widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for panedwindow widgets: -.\" METHOD: add .TP \fIpathName \fBadd \fIwindow \fR?\fIwindow ...\fR? ?\fIoption value ...\fR? . Add one or more windows to the panedwindow, each in a separate pane. The arguments consist of the names of one or more windows followed by pairs of arguments that specify how to manage the windows. \fIOption\fR may have any of the values accepted by the \fBconfigure\fR subcommand. -.\" METHOD: cget .TP \fIpathName \fBcget \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBpanedwindow\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure \fR?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the @@ -127,33 +124,29 @@ sublist of the value returned if no \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBpanedwindow\fR command. -.\" METHOD: forget .TP \fIpathName \fBforget \fIwindow \fR?\fIwindow ...\fR? . Remove the pane containing \fIwindow\fR from the panedwindow. All geometry management options for \fIwindow\fR will be forgotten. -.\" METHOD: identify .TP \fIpathName \fBidentify \fIx y\fR . Identify the panedwindow component underneath the point given by \fIx\fR and \fIy\fR, in window coordinates. If the point is over a sash or a sash handle, the result is a two element list containing the index of the sash or handle, and a word indicating whether it is over a sash or a handle, such as {0 sash} or {2 handle}. If the point is over any other part of the panedwindow, the result is an empty list. -.\" METHOD: panecget .TP \fIpathName \fBpanecget \fIwindow option\fR . Query a management option for \fIwindow\fR. \fIOption\fR may be any value allowed by the \fBpaneconfigure\fR subcommand. -.\" METHOD: paneconfigure .TP \fIpathName \fBpaneconfigure \fIwindow \fR?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the management options for \fIwindow\fR. If no \fIoption\fR is specified, returns a list describing all of the @@ -165,63 +158,55 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. The following options are supported: .RS -.\" OPTION: -after .TP \fB\-after \fIwindow\fR . Insert the window after the window specified. \fIwindow\fR should be the name of a window already managed by \fIpathName\fR. -.\" OPTION: -before .TP \fB\-before \fIwindow\fR . Insert the window before the window specified. \fIwindow\fR should be the name of a window already managed by \fIpathName\fR. -.\" OPTION: -height .TP \fB\-height \fIsize\fR . Specify a height for the window. The height will be the outer dimension of the window including its border, if any. If \fIsize\fR is an empty string, or if \fB\-height\fR is not specified, then the height requested internally by the window will be used initially; the height may later be adjusted by the movement of sashes in the panedwindow. \fISize\fR may be any value accepted by \fBTk_GetPixels\fR. -.\" OPTION: -hide .TP \fB\-hide \fIboolean\fR . Controls the visibility of a pane. When the \fIboolean\fR is true (according to \fBTcl_GetBoolean\fR) the pane will not be visible, but it will still be maintained in the list of panes. -.\" OPTION: -minsize .TP \fB\-minsize \fIn\fR . Specifies that the size of the window cannot be made less than \fIn\fR. This constraint only affects the size of the widget in the paned dimension \(em the x dimension for horizontal panedwindows, the y dimension for vertical panedwindows. May be any value accepted by \fBTk_GetPixels\fR. -.\" OPTION: -padx .TP \fB\-padx \fIn\fR . Specifies a non-negative value indicating how much extra space to leave on each side of the window in the X-direction. The value may have any of the forms accepted by \fBTk_GetPixels\fR. -.\" OPTION: -pady .TP \fB\-pady \fIn\fR . Specifies a non-negative value indicating how much extra space to leave on each side of the window in the Y-direction. The value may have any of the forms accepted by \fBTk_GetPixels\fR. -.\" OPTION: -sticky .TP \fB\-sticky \fIstyle\fR . If a window's pane is larger than the requested dimensions of the window, this option may be used to position (or stretch) the window @@ -232,11 +217,10 @@ will .QW stick to. If both \fBn\fR and \fBs\fR (or \fBe\fR and \fBw\fR) are specified, the window will be stretched to fill the entire height (or width) of its cavity. -.\" OPTION: -stretch .TP \fB\-stretch \fIwhen\fR . Controls how extra space is allocated to each of the panes. \fIWhen\fR is one of \fBalways\fR, \fBfirst\fR, \fBlast\fR, @@ -245,24 +229,33 @@ remaining (or deficit) space will be distributed to those panes marked for stretching. The space will be distributed based on each panes current ratio of the whole. The \fIwhen\fR values have the following definition: .RS -.IP \fBalways\fR +.TP +\fBalways\fR +. This pane will always stretch. -.IP \fBfirst\fR +.TP +\fBfirst\fR +. Only if this pane is the first pane (left-most or top-most) will it stretch. -.IP \fBlast\fR +.TP +\fBlast\fR +. Only if this pane is the last pane (right-most or bottom-most) will it stretch. This is the default value. -.IP \fBmiddle\fR +.TP +\fBmiddle\fR +. Only if this pane is not the first or last pane will it stretch. -.IP \fBnever\fR +.TP +\fBnever\fR +. This pane will never stretch. .RE -.\" OPTION: -width .TP \fB\-width \fIsize\fR . Specify a width for the window. The width will be the outer dimension of the window including its border, if any. If \fIsize\fR @@ -269,16 +262,14 @@ is an empty string, or if \fB\-width\fR is not specified, then the width requested internally by the window will be used initially; the width may later be adjusted by the movement of sashes in the panedwindow. \fISize\fR may be any value accepted by \fBTk_GetPixels\fR. .RE -.\" METHOD: panes .TP \fIpathName \fBpanes\fR . Returns an ordered list of the widgets managed by \fIpathName\fR. -.\" METHOD: proxy .TP \fIpathName \fBproxy \fR?\fIargs\fR? . This command is used to query and change the position of the sash proxy, used for rubberband-style pane resizing. It can take any of @@ -296,14 +287,12 @@ .TP \fIpathName \fBproxy place \fIx y\fR . Place the proxy at the given \fIx\fR and \fIy\fR coordinates. .RE -.\" METHOD: sash .TP \fIpathName \fBsash \fR?\fIargs\fR? -. This command is used to query and change the position of sashes in the panedwindow. It can take any of the following forms: .RS .TP \fIpathName \fBsash coord \fIindex\fR Index: doc/photo.n ================================================================== --- doc/photo.n +++ doc/photo.n @@ -41,26 +41,21 @@ from a file or a string, or it can be supplied from C code through a procedural interface. At present, only .VS 8.6 PNG, .VE 8.6 -GIF, PPM/PGM, -.VS 8.7 -and (read-only) SVG -.VE 8.7 -formats are supported, but an interface exists to +GIF and PPM/PGM formats are supported, but an interface exists to allow additional image file formats to be added easily. A photo image is (semi)transparent if the image data it was obtained from had -transparency information. In regions where no image data has been +transparency informaton. In regions where no image data has been supplied, it is fully transparent. Transparency may also be modified with the \fBtransparency set\fR subcommand. .SH "CREATING PHOTOS" .PP Like all images, photos are created using the \fBimage create\fR command. Photos support the following \fIoptions\fR: -.\" OPTION: -data .TP \fB\-data \fIstring\fR . Specifies the contents of the image as a string. .VS 8.7 @@ -71,27 +66,24 @@ currently guaranteed to be supported for PNG and GIF images). The format of the string must be one of those for which there is an image file format handler that will accept string data. If both the \fB\-data\fR and \fB\-file\fR options are specified, the \fB\-file\fR option takes precedence. -.\" OPTION: -format .TP \fB\-format\fR {\fIformat-name\fR ?\fIoption value ...\fR?} . Specifies the name of the file format for the data specified with the \fB\-data\fR or \fB\-file\fR option and optional arguments passed to -the format handler. Note that the value of this option must be a Tcl list. +the format handler. Note: the value of this option must be a Tcl list. This means that the braces may be omitted if the argument has only one word. Also, instead of braces, double quotes may be used for quoting. -.\" OPTION: -file .TP \fB\-file \fIname\fR . \fIname\fR gives the name of a file that is to be read to supply data for the photo image. The file format must be one of those for which there is an image file format handler that can read data. -.\" OPTION: -gamma .TP \fB\-gamma \fIvalue\fR . Specifies that the colors allocated for displaying this image in a window should be corrected for a non-linear display with the specified @@ -100,30 +92,27 @@ approximation; gamma is the exponent and is typically around 2). The value specified must be greater than zero. The default value is one (no correction). In general, values greater than one will make the image lighter, and values less than one will make it darker. -.\" OPTION: -height .TP \fB\-height \fInumber\fR . Specifies the height of the image, in pixels. This option is useful primarily in situations where the user wishes to build up the contents of the image piece by piece. A value of zero (the default) allows the image to expand or shrink vertically to fit the data stored in it. .VS 8.7 -.\" OPTION: -metadata .TP \fB\-metadata \fImetadata\fR . Set the metadata dictionary of the image. Additional keys may be set within the metadata dictionary of the image, if image data is processed due to a \fB\-file\fR or \fB\-data\fR options and the driver outputs any metadata keys. See section \fBMETADATA DICTIONARY\fR below. .VE 8.7 -.\" OPTION: -palette .TP \fB\-palette \fIpalette-spec\fR . Specifies the resolution of the color cube to be allocated for displaying this image, and thus the number of colors used from the @@ -132,11 +121,10 @@ specifying the number of shades of gray to use, or three decimal numbers separated by slashes (/), specifying the number of shades of red, green and blue to use, respectively. If the first form (a single number) is used, the image will be displayed in monochrome (i.e., grayscale). -.\" OPTION: -width .TP \fB\-width \fInumber\fR . Specifies the width of the image, in pixels. This option is useful primarily in situations where the user wishes to build up the contents @@ -161,27 +149,23 @@ \fB\-width\fR and/or \fB\-height\fR configuration options, in which case the width and/or height, respectively, of the image will not be changed. .PP The following commands are possible for photo images: -.\" METHOD: blank .TP \fIimageName \fBblank\fR . Blank the image; that is, set the entire image to have no data, so it will be displayed as transparent, and the background of whatever -window it is displayed in will show through. The metadata dict of the -image is not changed. -.\" METHOD: cget +window it is displayed in will show through. The metadata dict of the image is not changed. .TP -\fIimageName \fBcget\fI option\fR +\fIimageName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBimage create\fR \fBphoto\fR command. -.\" METHOD: configure .TP \fIimageName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options for the image. If no \fIoption\fR is specified, returns a list describing all of @@ -194,25 +178,23 @@ modifies the given option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBimage create\fR \fBphoto\fR command. .VS 8.7 -Note that setting the \fB\-metadata\fR option without any other option +Note: setting the \fB\-metadata\fR option without any other option will not invoke the image format driver to recreate the bitmap. .VE 8.7 -.\" METHOD: copy .TP -\fIimageName \fBcopy\fI sourceImage\fR ?\fIoption value(s) ...\fR? +\fIimageName \fBcopy\fR \fIsourceImage\fR ?\fIoption value(s) ...\fR? . Copies a region from the image called \fIsourceImage\fR (which must be a photo image) to the image called \fIimageName\fR, possibly with pixel zooming and/or subsampling. If no options are specified, this command copies the whole of \fIsourceImage\fR into \fIimageName\fR, starting at coordinates (0,0) in \fIimageName\fR. The following options may be specified: .RS -.\" OPTION: -from .TP \fB\-from \fIx1 y1 x2 y2\fR . Specifies a rectangular sub-region of the source image to be copied. (\fIx1,y1\fR) and (\fIx2,y2\fR) specify diagonally opposite corners of @@ -219,11 +201,10 @@ the rectangle. If \fIx2\fR and \fIy2\fR are not specified, the default value is the bottom-right corner of the source image. The pixels copied will include the left and top edges of the specified rectangle but not the bottom or right edges. If the \fB\-from\fR option is not given, the default is the whole source image. -.\" OPTION: -to .TP \fB\-to \fIx1 y1 x2 y2\fR . Specifies a rectangular sub-region of the destination image to be affected. (\fIx1,y1\fR) and (\fIx2,y2\fR) specify diagonally opposite @@ -230,39 +211,35 @@ corners of the rectangle. If \fIx2\fR and \fIy2\fR are not specified, the default value is (\fIx1,y1\fR) plus the size of the source region (after subsampling and zooming, if specified). If \fIx2\fR and \fIy2\fR are specified, the source region will be replicated if necessary to fill the destination region in a tiled fashion. -.\" OPTION: -shrink .TP \fB\-shrink\fR . Specifies that the size of the destination image should be reduced, if necessary, so that the region being copied into is at the bottom-right corner of the image. This option will not affect the width or height of the image if the user has specified a non-zero value for the \fB\-width\fR or \fB\-height\fR configuration option, respectively. -.\" OPTION: -zoom .TP \fB\-zoom \fIx y\fR . Specifies that the source region should be magnified by a factor of \fIx\fR in the X direction and \fIy\fR in the Y direction. If \fIy\fR is not given, the default value is the same as \fIx\fR. With this option, each pixel in the source image will be expanded into a block of \fIx\fR x \fIy\fR pixels in the destination image, all the same color. \fIx\fR and \fIy\fR must be greater than 0. -.\" OPTION: -subsample .TP \fB\-subsample \fIx y\fR . Specifies that the source image should be reduced in size by using only every \fIx\fRth pixel in the X direction and \fIy\fRth pixel in the Y direction. Negative values will cause the image to be flipped about the Y or X axes, respectively. If \fIy\fR is not given, the default value is the same as \fIx\fR. -.\" OPTION: -compositingrule .TP \fB\-compositingrule \fIrule\fR . Specifies how transparent pixels in the source image are combined with the destination image. When a compositing rule of \fIoverlay\fR is @@ -271,31 +248,28 @@ over the top of the destination. When a compositing rule of \fIset\fR is set, the old contents of the destination image are discarded and the source image is used as-is. The default compositing rule is \fIoverlay\fR. .RE -.\" METHOD: data .TP \fIimageName \fBdata\fR ?\fIoption value(s) ...\fR? . Returns image data in the form of a string. .VS 8.7 The format of the string depends on the format handler. By default, a human readable format as a list of lists of pixel data is used, other -formats can be chosen with the \fB\-format\fR option. +formats can be chosen with the \fB-format\fR option. See \fBIMAGE FORMATS\fR below for details. .VE 8.7 The following options may be specified: .RS -.\" OPTION: -background .TP \fB\-background\fI color\fR . If the color is specified, the data will not contain any transparency information. In all transparent pixels the color will be replaced by the specified color. -.\" OPTION: -format .TP \fB\-format\fR {\fIformat-name\fR ?\fIoption value ...\fR?} . Specifies the name of the image file format handler to use and, optionally, arguments to the format handler. Specifically, this @@ -307,14 +281,13 @@ that consists of a list (one element per row) of lists (one element per pixel/column) of colors in .QW \fB#\fIrrggbb\fR format (see \fBIMAGE FORMATS\fR below). .VE 8.7 -Note that the value of this option must be a Tcl list. +Note: the value of this option must be a Tcl list. This means that the braces may be omitted if the argument has only one word. Also, instead of braces, double quotes may be used for quoting. -.\" OPTION: -from .TP \fB\-from \fIx1 y1 x2 y2\fR . Specifies a rectangular region of \fIimageName\fR to be returned. If only \fIx1\fR and \fIy1\fR are specified, the region @@ -321,42 +294,38 @@ extends from \fI(x1,y1)\fR to the bottom-right corner of \fIimageName\fR. If all four coordinates are given, they specify diagonally opposite corners of the rectangular region, including x1,y1 and excluding x2,y2. The default, if this option is not given, is the whole image. -.\" OPTION: -grayscale .TP \fB\-grayscale\fR . If this options is specified, the data will not contain color information. All pixel data will be transformed into grayscale. .VS 8.7 -.\" OPTION: -metadata .TP -\fB\-metadata\fI metadata\fR +\fB\-metadata\fR \fImetadata\fR . Image format handler may use metadata to be included in the returned data string. The specified \fImetadata\fR is passed to the driver for inclusion in the data. If no \fB\-metadata\fR option is given, the current metadata of the image is used. .VE 8.7 .RE -.\" METHOD: get -.TP -\fIimageName \fBget\fI x y\fR ?\fB\-withalpha\fR? +\fIimageName \fBget\fR \fIx y\fR ?\fB-withalpha\fR? . Returns the color of the pixel at coordinates (\fIx\fR,\fIy\fR) in the image as a list of three integers between 0 and 255, representing the -red, green and blue components respectively. If the \fB\-withalpha\fR +red, green and blue components respectively. If the \fB-withalpha\fR option is specified, the returned list will have a fourth element representing the alpha value of the pixel as an integer between 0 and 255. -.\" METHOD: put +.VE 8.7 .TP -\fIimageName \fBput\fI data\fR ?\fIoption value(s) ...\fR? +\fIimageName \fBput\fR \fIdata\fR ?\fIoption value(s) ...\fR? . Sets pixels in \fI imageName\fR to the data specified in \fIdata\fR. .VS 8.7 This command searches the list of image file format handlers for a handler that can interpret the data in \fIdata\fR, and then reads @@ -363,71 +332,65 @@ the image encoded within into \fIimageName\fR (the destination image). See \fBIMAGE FORMATS\fR below for details on formats for image data. .VE 8.7 The following options may be specified: .RS -.\" OPTION: -format .TP \fB\-format\fR {\fIformat-name\fR ?\fIoption value ..\fR?} . Specifies the format of the image data in \fIdata\fR and, optionally, arguments to be passed to the format handler. Specifically, only image file format handlers whose names begin with \fIformat-name\fR will be used while searching for an image data format handler to read the data. -Note that the value of this option must be a Tcl list. +Note: the value of this option must be a Tcl list. This means that the braces may be omitted if the argument has only one word. Also, instead of braces, double quotes may be used for quoting. .VS 8.7 -.\" OPTION: -metadata .TP -\fB\-metadata\fI metadata\fR +\fB\-metadata\fR \fImetadata\fR . A specified \fImetadata\fR is passed to the image format driver when interpreting the data. -Note that the current metadata of the image is not passed to the format driver +Note: The current metadata of the image is not passed to the format driver and is not changed by the command. .VE 8.7 -.\" OPTION: -to .TP \fB\-to \fIx1 y1\fR ?\fIx2 y2\fR? . Specifies the coordinates of the top-left corner (\fIx1\fR,\fIy1\fR) of the region of \fIimageName\fR into which the image data will be copied. The default position is (0,0). If \fIx2\fR,\fIy2\fR is given and \fIdata\fR is not large enough to cover the rectangle specified by this option, the image data extracted will be tiled so it covers the -entire destination rectangle. If the region specified with this option +entire destination rectangle. If the region specified with this opion is smaller than the supplied \fIdata\fR, the exceeding data is silently discarded. Note that if \fIdata\fR specifies a single color value, then a region extending to the bottom-right corner represented by (\fIx2\fR,\fIy2\fR) will be filled with that color. .RE -.\" METHOD: read .TP -\fIimageName \fBread\fI filename\fR ?\fIoption value(s) ...\fR? +\fIimageName \fBread\fR \fIfilename\fR ?\fIoption value(s) ...\fR? . Reads image data from the file named \fIfilename\fR into the image. This command first searches the list of image file format handlers for a handler that can interpret the data in \fIfilename\fR, and then reads the image in \fIfilename\fR into \fIimageName\fR (the destination image). The following options may be specified: .RS -.\" OPTION: -format .TP \fB\-format {\fIformat-name\fR ?\fIoption value ..\fR?} . Specifies the format of the image data in \fIfilename\fR and, optionally, additional options to the format handler. Specifically, only image file format handlers whose names begin with \fIformat-name\fR will be used while searching for an image data format handler to read the data. -Note that the value of this option must be a Tcl list. +Note: the value of this option must be a Tcl list. This means that the braces may be omitted if the argument has only one word. Also, instead of braces, double quotes may be used for quoting. -.\" OPTION: -from .TP \fB\-from \fIx1 y1 x2 y2\fR . Specifies a rectangular sub-region of the image file data to be copied to the destination image. If only \fIx1\fR and \fIy1\fR are @@ -435,38 +398,34 @@ corner of the image in the image file. If all four coordinates are specified, they specify diagonally opposite corners or the region. The default, if this option is not specified, is the whole of the image in the image file. .VS 8.7 -.\" OPTION: -metadata .TP -\fB\-metadata\fI metadata\fR +\fB\-metadata\fR \fImetadata\fR . A specified \fImetadata\fR is passed to the image format driver when interpreting the data. -Note that the current metadata of the image is not passed to the format driver +Note: The current metadata of the image is not passed to the format driver and is not changed by the command. .VE 8.7 -.\" OPTION: -shrink .TP \fB\-shrink\fR . If this option, the size of \fIimageName\fR will be reduced, if necessary, so that the region into which the image file data are read is at the bottom-right corner of the \fIimageName\fR. This option will not affect the width or height of the image if the user has specified a non-zero value for the \fB\-width\fR or \fB\-height\fR configuration option, respectively. -.\" OPTION: -to .TP \fB\-to \fIx y\fR . Specifies the coordinates of the top-left corner of the region of \fIimageName\fR into which data from \fIfilename\fR are to be read. The default is (0,0). .RE -.\" METHOD: redither .TP \fIimageName \fBredither\fR . The dithering algorithm used in displaying photo images propagates quantization errors from one pixel to its neighbors. @@ -473,50 +432,49 @@ If the image data for \fIimageName\fR is supplied in pieces, the dithered image may not be exactly correct. Normally the difference is not noticeable, but if it is a problem, this command can be used to recalculate the dithered image in each window where the image is displayed. -.\" METHOD: transparency .TP \fIimageName \fBtransparency \fIsubcommand \fR?\fIarg ...\fR? . Allows examination and manipulation of the transparency information in the photo image. Several subcommands are available: .RS -.TP -\fIimageName \fBtransparency get \fIx y\fR ?\fB\-alpha\fR? .VS 8.7 +.TP +\fIimageName \fBtransparency get \fIx y\fR ?\fB-alpha\fR? +. Returns true if the pixel at (\fIx\fR,\fIy\fR) is fully transparent, -false otherwise. If the option \fB\-alpha\fR is passed, returns the +false otherwise. If the option \fB-alpha\fR is passed, returns the alpha value of the pixel instead, as an integer in the range 0 to 255. .VE 8.7 -.TP -\fIimageName \fBtransparency set \fIx y newVal\fR ?\fB\-alpha\fR? + .VS 8.7 +.TP +\fIimageName \fBtransparency set \fIx y\fR \fInewVal\fR ?\fB-alpha\fR? +. Change the transparency of the pixel at (\fIx\fR,\fIy\fR) to \fInewVal.\fR If no additional option is passed, \fInewVal\fR is interpreted as a boolean and the pixel is made fully transparent if -that value is true, fully opaque otherwise. If the \fB\-alpha\fR +that value is true, fully opaque otherwise. If the \fB-alpha\fR option is passed, \fInewVal\fR is interpreted as an integral alpha value for the pixel, which must be in the range 0 to 255. .VE 8.7 .RE -.\" METHOD: write .TP \fIimageName \fBwrite \fIfilename\fR ?\fIoption value(s) ...\fR? . Writes image data from \fIimageName\fR to a file named \fIfilename\fR. The following options may be specified: .RS -.\" OPTION: -background .TP \fB\-background\fI color\fR . If the color is specified, the data will not contain any transparency information. In all transparent pixels the color will be replaced by the specified color. -.\" OPTION: -format .TP \fB\-format\fR {\fIformat-name\fR ?\fIoption value ...\fR?} . Specifies the name of the image file format handler to be used to write the data to the file and, optionally, options to pass to the @@ -524,33 +482,30 @@ handler whose name matches an initial substring of \fIformat-name\fR and which has the capability to write an image file. If this option is not given, the format is guessed from the file extension. If that cannot be determined, this subcommand uses the first handler that has the capability to write an image file. -Note that the value of this option must be a Tcl list. +Note: the value of this option must be a Tcl list. This means that the braces may be omitted if the argument has only one word. Also, instead of braces, double quotes may be used for quoting. -.\" OPTION: -from .TP \fB\-from \fIx1 y1 x2 y2\fR . Specifies a rectangular region of \fIimageName\fR to be written to the image file. If only \fIx1\fR and \fIy1\fR are specified, the region extends from \fI(x1,y1)\fR to the bottom-right corner of \fIimageName\fR. If all four coordinates are given, they specify diagonally opposite corners of the rectangular region. The default, if this option is not given, is the whole image. -.\" OPTION: -grayscale .TP \fB\-grayscale\fR . If this options is specified, the data will not contain color information. All pixel data will be transformed into grayscale. .VS 8.7 -.\" OPTION: -metadata .TP -\fB\-metadata\fI metadata\fR +\fB\-metadata\fR \fBmetadata\fR . Image format handler may use metadata to be included in the written file. The specified \fImetadata\fR is passed to the driver for inclusion in the file. If no \fB\-metadata\fR option is given, the current metadata of the @@ -561,12 +516,12 @@ .PP The photo image code is structured to allow handlers for additional image file formats to be added easily. The photo image code maintains a list of these handlers. Handlers are added to the list by registering them with a call to \fBTk_CreatePhotoImageFormat\fR. The -standard Tk distribution comes with handlers for PPM/PGM, PNG, GIF and -(read-only) SVG formats, +standard Tk distribution comes with handlers for PPM/PGM, PNG and GIF +formats, .VS 8.7 as well as the \fBdefault\fR handler to encode/decode image data in a human readable form. .VE 8.7 These handlers are automatically registered on initialization. @@ -598,11 +553,11 @@ The \fBdefault\fR image handler cannot be used to read or write data from/to a file. Its sole purpose is to encode and decode image data in string form in a clear text, human readable, form. The \fIimageName\fR \fBdata\fR subcommand uses this handler when no other format is specified. When reading image data from a string with \fIimageName\fR -\fBput\fR or the \fB\-data\fR option, the default handler is treated +\fBput\fR or the \fB-data\fR option, the default handler is treated as the other handlers. .PP Image data in the \fBdefault\fR string format is a (top-to-bottom) list of scan-lines, with each scan-line being a (left-to-right) list of pixel data. Every scan-line has the same length. The color @@ -611,128 +566,98 @@ .VE 8.7 .SS "FORMAT SUBOPTIONS" .PP .VS 8.6 -Image formats may support sub-options, which are specified using +Image formats may support sub-options, wich ahre specified using additional words in the value to the \fB\-format\fR option. These suboptions can affect how image data is read or written to file or string. The nature and values of these options is up to the format handler. The built-in handlers support these suboptions: -.\" OPTION -colorformat .VS 8.7 .TP \fBdefault \-colorformat\fI formatType\fR . The option is allowed when writing image data to a string with -\fIimageName \fBdata\fR. Specifies the format to use for the color +\fIimageName\fR \fBdata\fR. Specifies the format to use for the color string of each pixel. \fIformatType\fR may be one of: \fBrgb\fR to encode pixel data in the form \fB#\fIRRGGBB\fR, \fBrgba\fR to encode pixel data in the form \fB#\fIRRGGBBAA\fR or \fBlist\fR to encode pixel data as a list with four elements. See \fBCOLOR FORMATS\fR below for details. The default is \fBrgb\fR. .VE 8.7 -.\" OPTION -index .TP \fBgif \-index\fI indexValue\fR . The option has effect when reading image data from a file. When parsing a multi-part GIF image, Tk normally only accesses the first image. By giving the \fB\-index\fR sub-option, the \fIindexValue\fR'th value may be used instead. The \fIindexValue\fR must be an integer from 0 up to the number of image parts in the GIF data. -.\" OPTION -alpha .TP \fBpng \-alpha\fI alphaValue\fR . The option has effect when reading image data from a file. Specifies an additional alpha filtering for the overall image, which allows the background on which the image is displayed to show through. This usually also has the effect of desaturating the image. The \fIalphaValue\fR must be between 0.0 and 1.0. -.\" OPTION -dpi -.\" OPTION -scale -.\" OPTION -scaletowidth -.\" OPTION -scaletoheight .TP -\fBsvg \-dpi\fI dpiValue \fB\-scale\fI scaleValue \fB\-scaletowidth\fI width \fB\-scaletoheight\fI height\fR +\fBsvg \-dpi\fI dpiValue\fB \-scale\fI scaleValue\fB \-scaletowidth \fI width\fB \-scaletoheight\fI height\fR . \fIdpiValue\fR is used in conversion between given coordinates and screen resolution. The value must be greater than 0 and the default value is 96. -.PP -.RS \fIscaleValue\fR is used to scale the resulting image. The value must be greater than 0 and the default value is 1. \fIwidth\fR and \fIheight\fR are the width or height that the image will be adjusted to. Only one parameter among \fB\-scale\fR, \fB\-scaletowidth\fR and \fB\-scaletoheight\fR can be given at a time and the aspect ratio of the original image is always preserved. -The \fBsvg\fR format supports a wide range of SVG features, but the +The svg format supports a wide range of SVG features, but the full SVG standard is not available, for instance the 'text' feature is missing and silently ignored when reading the SVG data. The supported SVG features are: -.TP -\fBelements:\fR . -g, path, rect, circle, ellipse, line, polyline, polygon, +.RS +\fB elements:\fR g, path, rect, circle, ellipse, line, polyline, polygon, linearGradient, radialGradient, stop, defs, svg, style -.TP -\fBattributes:\fR -. -width, height, viewBox, +.PP +\fB attributes:\fR width, height, viewBox, preserveAspectRatio with none, xMin, xMid, xMax, yMin, yMid, yMax, slice -.TP -\fBgradient attributes:\fR -. -gradientUnits with objectBoundingBox, +.PP +\fB gradient attributes:\fR gradientUnits with objectBoundingBox, gradientTransform, cx, cy, r fx, fy x1, y1, x2, y2 spreadMethod with pad, reflect or repeat, xlink:href -.TP -\fBpoly attributes:\fR -. -points -.TP -\fBline attributes:\fR -. -x1, y1, x2, y2 -.TP -\fBellipse attributes:\fR -. -cx, cy, rx, ry -.TP -\fBcircle attributes:\fR -. -cx, cy, r -.TP -\fBrectangle attributes:\fR -. -x, y, width, height, rx, ry -.TP -\fBpath attributes:\fR -. -d with m, M, l, L, h, H, v, V, c, C, s, S, q, Q, t, T, a, A, z, Z -.TP -\fBstyle attributes:\fR -. -display with none, visibility, hidden, visible, +.PP +\fB poly attributes: \fR points +.PP +\fB line attributes: \fR x1, y1, x2, y2 +.PP +\fB ellipse attributes: \fR cx, cy, rx, ry +.PP +\fB circle attributes: \fR cx, cy, r +.PP +\fB rectangle attributes: \fR x, y, width, height, rx, ry +.PP +\fB path attributes: \fR d with m, M, l, L, h, H, v, V, c, C, s, S, q, Q, t, T, a, A, z, Z +.PP +\fB style attributes: \fR display with none, visibility, hidden, visible, fill with nonzero and evenodd, opacity, fill-opacity, stroke, stroke-width, stroke-dasharray, stroke-dashoffset, stroke-opacity, stroke-linecap with butt, round and square, stroke-linejoin with miter, round and bevel, stroke-miterlimit fill-rule, font-size, transform with matrix, translate, scale, rotate, skewX and skewY, stop-color, stop-opacity, offset, id, class .RE -.PP -.RS +. Currently only SVG images reading and conversion into (pixel-based format) photos is supported: Tk does not (yet) support bundling photo images in SVG vector graphics. -.RE .VE 8.6 .VS 8.7 .SH "COLOR FORMATS" .PP The default image handler can represent/parse color and alpha values @@ -819,46 +744,50 @@ parsed, or may use metadata to be included in image files or formats. .SS "METADATA KEYS (MULTIPLE FORMATS)" .PP Each image format driver supports an individual set of metadata dictionary keys. Predefined keys are: -.IP \fBDPI\fR +.TP +DPI +. Horizontal image resolution in DPI as a double value. Supported by format \fBpng\fR. -.IP \fBaspect\fR +.TP +aspect +. Aspect ratio horizontal divided by vertical as double value. Supported by formats \fBgif\fR and \fBpng\fR. -.IP \fBcomment\fR +.TP +comment +. Image text comment. Supported by formats \fBgif\fR and \fBpng\fR. .PP It is valid to set any key in the metadata dict. -A format driver will ignore keys that it does not handle. +A format driver will ignore keys it does not handle. .SS "METADATA KEYS FOR ANIMATED GIF INFORMATION" .PP The following metadata keys are reported when reading a \fBgif\fR format file. -They are typically used in conjunction with the \fB\-index\fR option of an -animated \fBgif\fR file to properly display the subimage sequence. -The options are linked to each subimage selected by \fB\-index\fR. -.TP -\fBdelay time\fI time\fR -. -Update delay time in 10ms units. -This key is only present if the delay time is not 0. -.TP -\fBdisposal method\fI method\fR +They are typically used in conjunction with the \fI-index\fR option of an +animated \fBgif\fR file to properly display the subimage sequence. +The options are linked to each subimage selected by \fI-index\fR. +.TP +\fBdelay time\fR \fItime\fR +. +Update delay time in 10ms unit. This key is only present, if delay time is not 0. +.TP +\fBdisposal method\fR \fImethod\fR . Disposal method of the preceeding image, if given for the current image. -Possible values are: \fBdo not dispose\fR, \fBrestore to background color\fR, -\fBrestore to previous\fR. +Possible values are: \fIdo not dispose\fR, \fIrestore to background color\fR, \fIrestore to previous\fR. .TP -\fBuser interaction\fI bool\fR +\fBuser interaction\fR \fIbool\fR . The key is present with a value of 1, if user interaction is specified. Otherwise, the key is not present. .TP -\fBupdate region\fI X0\fR, \fIY0\fR, \fIwidth\fR, \fIheight\fR +\fBupdate region\fR \fIX0\fR, \fIY0\fR, \fIwidth\fR, \fIheight\fR . Update region of the current subimage, if subimage has not the same size as the full image. The pixel outside of this box are all fully transparent. .PP .VE 8.7 @@ -872,30 +801,30 @@ Load an image from a file and tile it to the size of a window, which is useful for producing a tiled background: .PP .CS # These lines should be called once -\fBimage create photo\fR untiled -file "theFile.ppm" +\fBimage create photo\fR untiled \-file "theFile.ppm" \fBimage create photo\fR tiled # These lines should be called whenever .someWidget changes # size; a binding is useful here set width [winfo width .someWidget] set height [winfo height .someWidget] -tiled \fBcopy\fR untiled -to 0 0 $width $height -shrink +tiled \fBcopy\fR untiled \-to 0 0 $width $height \-shrink .CE .PP .VS 8.6 The PNG image loader allows the application of an additional alpha factor during loading, which is useful for generating images suitable for disabled buttons: .PP .CS -\fBimage create photo\fR icon -file "icon.png" -\fBimage create photo\fR iconDisabled -file "icon.png" \e - -format "png -alpha 0.5" -button .b -image icon -disabledimage iconDisabled +\fBimage create photo\fR icon \-file "icon.png" +\fBimage create photo\fR iconDisabled \-file "icon.png" \e + \-format "png \-alpha 0.5" +button .b \-image icon \-disabledimage iconDisabled .CE .VE 8.6 .PP .VS 8.7 Create a green box with a simple shadow effect Index: doc/place.n ================================================================== --- doc/place.n +++ doc/place.n @@ -28,20 +28,17 @@ that, for example, the content has a fixed width and height but is centered inside the container. .PP .TP \fBplace \fIwindow option value \fR?\fIoption value ...\fR? -. Arrange for the placer to manage the geometry of a content whose pathName is \fIwindow\fR. The remaining arguments consist of one or more \fIoption\-value\fR pairs that specify the way in which \fIwindow\fR's geometry is managed. \fIOption\fR may have any of the values accepted by the \fBplace configure\fR command. -.\" METHOD: configure .TP \fBplace configure \fIwindow \fR?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the geometry options of the content given by \fIwindow\fR. If no \fIoption\fR is specified, this command returns a list describing the available options (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -51,27 +48,23 @@ modifies the given option(s) to have the given value(s); in this case the command returns an empty string. .RS .PP The following \fIoption\-value\fR pairs are supported: -.\" OPTION: -anchor .TP \fB\-anchor \fIwhere\fR -. \fIWhere\fR specifies which point of \fIwindow\fR is to be positioned at the (x,y) location selected by the \fB\-x\fR, \fB\-y\fR, \fB\-relx\fR, and \fB\-rely\fR options. The anchor point is in terms of the outer area of \fIwindow\fR including its border, if any. Thus if \fIwhere\fR is \fBse\fR then the lower-right corner of \fIwindow\fR's border will appear at the given (x,y) location in the container. The anchor position defaults to \fBnw\fR. -.\" OPTION: -bordermode .TP \fB\-bordermode \fImode\fR -. \fIMode\fR determines the degree to which borders within the container are used in determining the placement of the content. The default and most common value is \fBinside\fR. In this case the placer considers the area of the container to be the innermost area of the container, inside any border: @@ -89,25 +82,21 @@ case borders are ignored: the area of the container is considered to be its official X area, which includes any internal border but no external border. A bordermode of \fBignore\fR is probably not very useful. .RE -.\" OPTION: -height .TP \fB\-height \fIsize\fR -. \fISize\fR specifies the height for \fIwindow\fR in screen units (i.e. any of the forms accepted by \fBTk_GetPixels\fR). The height will be the outer dimension of \fIwindow\fR including its border, if any. If \fIsize\fR is an empty string, or if no \fB\-height\fR or \fB\-relheight\fR option is specified, then the height requested internally by the window will be used. -.\" OPTION: -in .TP \fB\-in \fIcontainer\fR -. \fIContainer\fR specifies the path name of the window relative to which \fIwindow\fR is to be placed. \fIContainer\fR must either be \fIwindow\fR's parent or a descendant of \fIwindow\fR's parent. In addition, \fIcontainer\fR and \fIwindow\fR must both be descendants @@ -114,38 +103,32 @@ of the same top-level window. These restrictions are necessary to guarantee that \fIwindow\fR is visible whenever \fIcontainer\fR is visible. If this option is not specified then the other window defaults to \fIwindow\fR's parent. -.\" OPTION: -relheight .TP \fB\-relheight \fIsize\fR -. \fISize\fR specifies the height for \fIwindow\fR. In this case the height is specified as a floating-point number relative to the height of the container: 0.5 means \fIwindow\fR will be half as high as the container, 1.0 means \fIwindow\fR will have the same height as the container, and so on. If both \fB\-height\fR and \fB\-relheight\fR are specified for a content, their values are summed. For example, \fB\-relheight 1.0 \-height \-2\fR makes the content 2 pixels shorter than the container. -.\" OPTION: -relwidth .TP \fB\-relwidth \fIsize\fR -. \fISize\fR specifies the width for \fIwindow\fR. In this case the width is specified as a floating-point number relative to the width of the container: 0.5 means \fIwindow\fR will be half as wide as the container, 1.0 means \fIwindow\fR will have the same width as the container, and so on. If both \fB\-width\fR and \fB\-relwidth\fR are specified for a content, their values are summed. For example, \fB\-relwidth 1.0 \-width 5\fR makes the content 5 pixels wider than the container. -.\" OPTION: -relx .TP \fB\-relx \fIlocation\fR -. \fILocation\fR specifies the x-coordinate within the container window of the anchor point for \fIwindow\fR. In this case the location is specified in a relative fashion as a floating-point number: 0.0 corresponds to the left edge of the container and 1.0 corresponds to the right edge of the container. @@ -152,14 +135,12 @@ \fILocation\fR need not be in the range 0.0\-1.0. If both \fB\-x\fR and \fB\-relx\fR are specified for a content then their values are summed. For example, \fB\-relx 0.5 \-x \-2\fR positions the left edge of the content 2 pixels to the left of the center of its container. -.\" OPTION: -rely .TP \fB\-rely \fIlocation\fR -. \fILocation\fR specifies the y-coordinate within the container window of the anchor point for \fIwindow\fR. In this case the value is specified in a relative fashion as a floating-point number: 0.0 corresponds to the top edge of the container and 1.0 corresponds to the bottom edge of the container. @@ -166,34 +147,28 @@ \fILocation\fR need not be in the range 0.0\-1.0. If both \fB\-y\fR and \fB\-rely\fR are specified for a content then their values are summed. For example, \fB\-rely 0.5 \-x 3\fR positions the top edge of the content 3 pixels below the center of its container. -.\" OPTION: -width .TP \fB\-width \fIsize\fR -. \fISize\fR specifies the width for \fIwindow\fR in screen units (i.e. any of the forms accepted by \fBTk_GetPixels\fR). The width will be the outer width of \fIwindow\fR including its border, if any. If \fIsize\fR is an empty string, or if no \fB\-width\fR or \fB\-relwidth\fR option is specified, then the width requested internally by the window will be used. -.\" OPTION: -x .TP \fB\-x \fIlocation\fR -. \fILocation\fR specifies the x-coordinate within the container window of the anchor point for \fIwindow\fR. The location is specified in screen units (i.e. any of the forms accepted by \fBTk_GetPixels\fR) and need not lie within the bounds of the container window. -.\" OPTION: -y .TP \fB\-y \fIlocation\fR -. \fILocation\fR specifies the y-coordinate within the container window of the anchor point for \fIwindow\fR. The location is specified in screen units (i.e. any of the forms accepted by \fBTk_GetPixels\fR) and need not lie within the bounds of the container window. @@ -200,35 +175,27 @@ .PP If the same value is specified separately with two different options, such as \fB\-x\fR and \fB\-relx\fR, then the most recent option is used and the older one is ignored. .RE -.\" METHOD: content -.TP -\fBplace content \fIwindow\fR -. -Returns a list of all the content windows for which \fIwindow\fR is the -container. If there is no content for \fIwindow\fR then an empty string -is returned. -.\" METHOD: forget .TP \fBplace forget \fIwindow\fR -. Causes the placer to stop managing the geometry of \fIwindow\fR. As a side effect of this command \fIwindow\fR will be unmapped so that it does not appear on the screen. If \fIwindow\fR is not currently managed by the placer then the command has no effect. This command returns an empty string. -.\" METHOD: info .TP \fBplace info \fIwindow\fR -. Returns a list giving the current configuration of \fIwindow\fR. The list consists of \fIoption\-value\fR pairs in exactly the same form as might be specified to the \fBplace configure\fR command. -.\" METHOD: slaves +.TP +\fBplace content \fIwindow\fR +Returns a list of all the content windows for which \fIwindow\fR is the container. +If there is no content for \fIwindow\fR then an empty string is returned. .TP \fBplace slaves \fIwindow\fR . Synonym for \fBplace content \fIwindow\fR. .PP @@ -278,16 +245,15 @@ .SH EXAMPLE .PP Make the label occupy the middle bit of the toplevel, no matter how it is resized: .CS -label .l -text "In the\enMiddle!" -bg black -fg white -\fBplace\fR .l -relwidth .3 -relx .35 -relheight .3 -rely .35 +label .l \-text "In the\enMiddle!" \-bg black \-fg white +\fBplace\fR .l \-relwidth .3 \-relx .35 \-relheight .3 \-rely .35 .CE .SH "SEE ALSO" grid(n), pack(n) .SH KEYWORDS -geometry manager, height, location, container, place, rubber sheet, -content, width +geometry manager, height, location, container, place, rubber sheet, content, width '\" Local Variables: '\" mode: nroff '\" End: Index: doc/popup.n ================================================================== --- doc/popup.n +++ doc/popup.n @@ -29,15 +29,15 @@ .PP How to attach a simple popup menu to a widget. .CS # Create a menu set m [menu .popupMenu] -$m add command -label "Example 1" -command bell -$m add command -label "Example 2" -command bell +$m add command \-label "Example 1" \-command bell +$m add command \-label "Example 2" \-command bell # Create something to attach it to -pack [label .l -text "Click me!"] +pack [label .l \-text "Click me!"] # Arrange for the menu to pop up when the label is clicked bind .l {\fBtk_popup\fR .popupMenu %X %Y} .CE .SH "SEE ALSO" Index: doc/radiobutton.n ================================================================== --- doc/radiobutton.n +++ doc/radiobutton.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME radiobutton \- Create and manipulate 'radiobutton' pick-one widgets .SH SYNOPSIS -\fBradiobutton\fI pathName \fR?\fIoptions\fR? +\fBradiobutton\fR \fIpathName \fR?\fIoptions\fR? .SO \-activebackground \-disabledforeground \-padx \-activeforeground \-font \-pady \-anchor \-foreground \-relief \-background \-highlightbackground \-takefocus @@ -63,12 +63,12 @@ The empty string is the default value. .OP \-selectcolor selectColor Background Specifies a background color to use when the button is selected. If \fBindicatorOn\fR is true then the color is used as the background for the indicator regardless of the select state. -If \fB\-indicatoron\fR is false, this color is used as the background for the -entire widget, in place of \fB\-background\fR or \fB\-activeBackground\fR, +If \fB\-indicatoron\fR is false, this color is used as the background +for the entire widget, in place of \fB\-background\fR or \fB\-activeBackground\fR, whenever the widget is selected. If specified as an empty string then no special color is used for displaying when the widget is selected. .OP \-selectimage selectImage SelectImage Specifies an image to display (in place of the \fB\-image\fR option) @@ -179,19 +179,17 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for radiobutton widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBradiobutton\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of @@ -203,38 +201,34 @@ one or more \fIoption\-value\fR pairs are specified, the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBradiobutton\fR command. -.\" METHOD: deselect .TP \fIpathName \fBdeselect\fR . Deselects the radiobutton and sets the associated variable to an empty string. If this radiobutton was not currently selected, the command has no effect. -.\" METHOD: flash .TP \fIpathName \fBflash\fR . Flashes the radiobutton. This is accomplished by redisplaying the radiobutton several times, alternating between active and normal colors. At the end of the flash the radiobutton is left in the same normal/active state as when the command was invoked. This command is ignored if the radiobutton's state is \fBdisabled\fR. -.\" METHOD: invoke .TP \fIpathName \fBinvoke\fR . Does just what would have happened if the user invoked the radiobutton with the mouse: selects the button and invokes its associated Tcl command, if there is one. The return value is the return value from the Tcl command, or an empty string if there is no command associated with the radiobutton. This command is ignored if the radiobutton's state is \fBdisabled\fR. -.\" METHOD: select .TP \fIpathName \fBselect\fR . Selects the radiobutton and sets the associated variable to the value corresponding to this widget. @@ -261,12 +255,11 @@ actions occur: the radiobutton is completely non-responsive. .PP The behavior of radiobuttons can be changed by defining new bindings for individual widgets or by redefining the class bindings. .SH "SEE ALSO" -checkbutton(n), labelframe(n), listbox(n), options(n), scale(n), -ttk::radiobutton(n) +checkbutton(n), labelframe(n), listbox(n), options(n), scale(n), ttk::radiobutton(n) .SH KEYWORDS radiobutton, widget '\" Local Variables: '\" mode: nroff '\" End: Index: doc/raise.n ================================================================== --- doc/raise.n +++ doc/raise.n @@ -39,15 +39,15 @@ Make a button appear to be in a sibling frame that was created after it. This is is often necessary when building GUIs in the style where you create your activity widgets first before laying them out on the display: .CS -button .b -text "Hi there!" -pack [frame .f -background blue] -pack [label .f.l1 -text "This is above"] -pack .b -in .f -pack [label .f.l2 -text "This is below"] +button .b \-text "Hi there!" +pack [frame .f \-background blue] +pack [label .f.l1 \-text "This is above"] +pack .b \-in .f +pack [label .f.l2 \-text "This is below"] \fBraise\fR .b .CE .SH "SEE ALSO" lower(n) .SH KEYWORDS Index: doc/scale.n ================================================================== --- doc/scale.n +++ doc/scale.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME scale \- Create and manipulate 'scale' value-controlled slider widgets .SH SYNOPSIS -\fBscale\fI pathName \fR?\fIoptions\fR? +\fBscale\fR \fIpathName \fR?\fIoptions\fR? .SO \-activebackground \-foreground \-relief \-background \-highlightbackground \-repeatdelay \-borderwidth \-highlightcolor \-repeatinterval \-cursor \-highlightthickness \-takefocus @@ -76,13 +76,11 @@ If the scale is active, the slider is displayed using the color specified by the \fB\-activebackground\fR option. .OP \-tickinterval tickInterval TickInterval Must be a real value. Determines the spacing between numerical -tick marks displayed below or to the left of the slider. The values will all -be displayed with the same number of decimal places, which will be enough to -ensure they are all accurate to within 20% of a tick interval. +tick marks displayed below or to the left of the slider. The values will all be displayed with the same number of decimal places, which will be enough to ensure they are all accurate to within 20% of a tick interval. If 0, no tick marks will be displayed. .OP \-to to To Specifies a real value corresponding to the right or bottom end of the scale. This value may be either less than or greater than the \fB\-from\fR option. @@ -143,19 +141,17 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for scale widgets: -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBscale\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of @@ -167,29 +163,26 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBscale\fR command. -.\" METHOD: coords .TP \fIpathName \fBcoords \fR?\fIvalue\fR? . Returns a list whose elements are the x and y coordinates of the point along the centerline of the trough that corresponds to \fIvalue\fR. If \fIvalue\fR is omitted then the scale's current value is used. -.\" METHOD: get .TP \fIpathName \fBget\fR ?\fIx y\fR? . If \fIx\fR and \fIy\fR are omitted, returns the current value of the scale. If \fIx\fR and \fIy\fR are specified, they give pixel coordinates within the widget; the command returns the scale value corresponding to the given pixel. Only one of \fIx\fR or \fIy\fR is used: for horizontal scales \fIy\fR is ignored, and for vertical scales \fIx\fR is ignored. -.\" METHOD: identify .TP \fIpathName \fBidentify \fIx y\fR . Returns a string indicating what part of the scale lies under the coordinates given by \fIx\fR and \fIy\fR. @@ -198,11 +191,10 @@ portion of the slider above or to the left of the slider; and \fBtrough2\fR means that the point is over the portion of the slider below or to the right of the slider. If the point is not over one of these elements, an empty string is returned. -.\" METHOD: set .TP \fIpathName \fBset \fIvalue\fR . This command is invoked to change the current value of the scale, and hence the position at which the slider is displayed. \fIValue\fR Index: doc/scrollbar.n ================================================================== --- doc/scrollbar.n +++ doc/scrollbar.n @@ -40,11 +40,11 @@ as described in \fBSCROLLING COMMANDS\fR below. .OP \-elementborderwidth elementBorderWidth BorderWidth Specifies the width of borders drawn around the internal elements of the scrollbar (the two arrows and the slider). The value may have any of the forms acceptable to \fBTk_GetPixels\fR. -If this value is the empty string (the default), the value of +If this value is negative (the default is -1), the value of the \fB\-borderwidth\fR option is used in its place. .OP \-width width Width Specifies the desired narrow dimension of the scrollbar window, not including 3-D border, if any. For vertical scrollbars this will be the width and for horizontal scrollbars Index: doc/selection.n ================================================================== --- doc/selection.n +++ doc/selection.n @@ -24,25 +24,23 @@ \fBclipboard\fR command may also be used. .PP The first argument to \fBselection\fR determines the format of the rest of the arguments and the behavior of the command. The following forms are currently supported: -.\" METHOD: clear .TP -\fBselection clear\fR ?\fB\-displayof\fI window\fR? ?\fB\-selection\fI selection\fR? +\fBselection clear\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR? . If \fIselection\fR exists anywhere on \fIwindow\fR's display, clear it so that no window owns the selection anymore. \fISelection\fR specifies the X selection that should be cleared, and should be an atom name such as \fBPRIMARY\fR or \fBCLIPBOARD\fR; see the Inter-Client Communication Conventions Manual for complete details. \fISelection\fR defaults to \fBPRIMARY\fR and \fIwindow\fR defaults to .QW . . Returns an empty string. -.\" METHOD: get .TP -\fBselection get\fR ?\fB\-displayof\fI window\fR? ?\fB\-selection\fI selection\fR? ?\fB\-type\fI type\fR? +\fBselection get\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR? ?\fB\-type\fR \fItype\fR? . Retrieves the value of \fIselection\fR from \fIwindow\fR's display and returns it as a result. \fISelection\fR defaults to \fBPRIMARY\fR and \fIwindow\fR defaults to .QW . . @@ -61,13 +59,12 @@ or \fBATOM\fR, the \fBselection\fR command converts it to string format as a collection of fields separated by spaces: atoms are converted to their textual names, and anything else is converted to hexadecimal integers. Note that \fBselection get\fR does not retrieve the selection in the \fBUTF8_STRING\fR format unless told to. -.\" METHOD: handle .TP -\fBselection handle\fR ?\fB\-selection\fI s\fR? ?\fB\-type\fI t\fR? ?\fB\-format\fI f\fR? \fIwindow command\fR +\fBselection handle\fR ?\fB\-selection\fR \fIs\fR? ?\fB\-type\fR \fIt\fR? ?\fB\-format\fR \fIf\fR? \fIwindow command\fR . Creates a handler for selection requests, such that \fIcommand\fR will be executed whenever selection \fIs\fR is owned by \fIwindow\fR and someone attempts to retrieve it in the form given by type \fIt\fR (e.g. \fIt\fR is specified in the \fBselection get\fR command). @@ -120,15 +117,14 @@ selection requesters that do not use Tk. If Tk is being used to retrieve the selection then the value is converted back to a string at the requesting end, so \fIformat\fR is irrelevant. .RE -.\" METHOD: own +.TP +\fBselection own\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR? .TP -\fBselection own\fR ?\fB\-displayof\fI window\fR? ?\fB\-selection\fI selection\fR? -.TP -\fBselection own\fR ?\fB\-command\fI command\fR? ?\fB\-selection\fI selection\fR? \fIwindow\fR +\fBselection own\fR ?\fB\-command\fR \fIcommand\fR? ?\fB\-selection\fR \fIselection\fR? \fIwindow\fR . The first form of \fBselection own\fR returns the path name of the window in this application that owns \fIselection\fR on the display containing \fIwindow\fR, or an empty string if no window in this application owns the selection. \fISelection\fR defaults to \fBPRIMARY\fR and @@ -144,80 +140,61 @@ some other window claims ownership of the selection away from \fIwindow\fR. \fISelection\fR defaults to PRIMARY. .RE .SH WIDGET FACILITIES .PP -The \fBtext\fR, \fBentry\fR, \fBttk::entry\fR, \fBlistbox\fR, \fBspinbox\fR -and \fBttk::spinbox\fR widgets have the option \fB\-exportselection\fR. If a -widget has this option set to boolean \fBtrue\fR, then (in an unsafe -interpreter) a selection made in the widget is automatically written to the -\fBPRIMARY\fR selection. +The \fBtext\fR, \fBentry\fR, \fBttk::entry\fR, \fBlistbox\fR, \fBspinbox\fR and \fBttk::spinbox\fR widgets have the option \fB\-exportselection\fR. If a widget has this option set to boolean \fBtrue\fR, then (in an unsafe interpreter) a selection made in the widget is automatically written to the \fBPRIMARY\fR selection. .PP -A GUI event, for example \fB<>\fR, can copy the \fBPRIMARY\fR -selection to certain widgets. This copy is implemented by a widget binding to -the event. The binding script makes appropriate calls to the \fBselection\fR -command. +A GUI event, for example \fB<>\fR, can copy the \fBPRIMARY\fR selection to certain widgets. This copy is implemented by a widget binding to the event. The binding script makes appropriate calls to the \fBselection\fR command. .PP .SH PORTABILITY ISSUES .PP -On X11, the \fBPRIMARY\fR selection is a system-wide feature of the X server, -allowing communication between different processes that are X11 clients. +On X11, the \fBPRIMARY\fR selection is a system-wide feature of the X server, allowing communication between different processes that are X11 clients. .PP -On Windows, the \fBPRIMARY\fR selection is not provided by the system, but -only by Tk, and so it is shared only between windows of a parent interpreter -and its child interpreters. It is not shared between interpreters in -different processes or different threads. Each parent interpreter has a -separate \fBPRIMARY\fR selection that is shared only with its child -interpreters which are not safe interpreters. +On Windows, the \fBPRIMARY\fR selection is not provided by the system, but only by Tk, and so it is shared only between windows of a parent interpreter and its child interpreters. It is not shared between interpreters in different processes or different threads. Each parent interpreter has a separate \fBPRIMARY\fR selection that is shared only with its child interpreters which are not safe interpreters. .PP .SH SECURITY .PP -A safe interpreter cannot read from the \fBPRIMARY\fR selection because its -\fBselection\fR command is hidden. For this reason the \fBPRIMARY\fR -selection cannot be written to the Tk widgets of a safe interpreter. -.PP -A Tk widget can have its option \fB\-exportselection\fR set to boolean -\fBtrue\fR, but in a safe interpreter this option has no effect: writing -from the widget to the \fBPRIMARY\fR selection is disabled. -.PP -These are security features. A safe interpreter may run untrusted code, and -it is a security risk if this untrusted code can read or write the -\fBPRIMARY\fR selection used by other interpreters. +A safe interpreter cannot read from the \fBPRIMARY\fR selection because its \fBselection\fR command is hidden. For this reason the \fBPRIMARY\fR selection cannot be written to the Tk widgets of a safe interpreter. +.PP +A Tk widget can have its option \fB\-exportselection\fR set to boolean \fBtrue\fR, but in a safe interpreter this option has no effect: writing from the widget to the \fBPRIMARY\fR selection is disabled. +.PP +These are security features. A safe interpreter may run untrusted code, and it is a security risk if this untrusted code can read or write the \fBPRIMARY\fR selection used by other interpreters. .PP .SH EXAMPLES .PP On X11 platforms, one of the standard selections available is the \fBSECONDARY\fR selection. Hardly anything uses it, but here is how to read it using Tk: .PP .CS -set selContents [\fBselection get\fR -selection SECONDARY] +set selContents [\fBselection get\fR \-selection SECONDARY] .CE .PP Many different types of data may be available for a selection; the special type \fBTARGETS\fR allows you to get a list of available types: .PP .CS -foreach type [\fBselection get\fR -type TARGETS] { +foreach type [\fBselection get\fR \-type TARGETS] { puts "Selection PRIMARY supports type $type" } .CE .PP To claim the selection, you must first set up a handler to supply the data for the selection. Then you have to claim the selection... .CS # Set up the data handler ready for incoming requests set foo "This is a string with some data in it... blah blah" -\fBselection handle\fR -selection SECONDARY . getData +\fBselection handle\fR \-selection SECONDARY . getData proc getData {offset maxChars} { puts "Retrieving selection starting at $offset" return [string range $::foo $offset [expr {$offset+$maxChars-1}]] } # Now we grab the selection itself puts "Claiming selection" -\fBselection own\fR -command lost -selection SECONDARY . +\fBselection own\fR \-command lost \-selection SECONDARY . proc lost {} { puts "Lost selection" } .CE .SH "SEE ALSO" Index: doc/send.n ================================================================== --- doc/send.n +++ doc/send.n @@ -28,31 +28,25 @@ command to be executed, just as for the \fBeval\fR command. .PP If the initial arguments of the command begin with .QW \- they are treated as options. The following options are currently defined: -.\" OPTION: -async .TP \fB\-async\fR -. Requests asynchronous invocation. In this case the \fBsend\fR command will complete immediately without waiting for \fIcmd\fR to complete in the target application; no result will be available and errors in the sent command will be ignored. If the target application is in the same process as the sending application then the \fB\-async\fR option is ignored. -.\" OPTION: -displayof .TP -\fB\-displayof\fI pathName\fR -. +\fB\-displayof\fR \fIpathName\fR Specifies that the target application's main window is on the display of the window given by \fIpathName\fR, instead of the display containing the application's main window. -.\" OPTION: -- .TP \fB\-\|\-\fR -. Serves no purpose except to terminate the list of options. This option is needed only if \fIapp\fR could contain a leading .QW \- character. .SH "APPLICATION NAMES" @@ -94,11 +88,11 @@ .PP This script fragment can be used to make an application that only runs once on a particular display. .CS if {[tk appname FoobarApp] ne "FoobarApp"} { - \fBsend\fR -async FoobarApp RemoteStart $argv + \fBsend\fR \-async FoobarApp RemoteStart $argv exit } # The command that will be called remotely, which raises # the application main window and opens the requested files proc RemoteStart args { Index: doc/spinbox.n ================================================================== --- doc/spinbox.n +++ doc/spinbox.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME spinbox \- Create and manipulate 'spinbox' value spinner widgets .SH SYNOPSIS -\fBspinbox\fI pathName \fR?\fIoptions\fR? +\fBspinbox\fR \fIpathName \fR?\fIoptions\fR? .SO \-activebackground \-highlightthickness \-repeatinterval \-background \-insertbackground \-selectbackground \-borderwidth \-insertborderwidth \-selectborderwidth \-cursor \-insertontime \-selectforeground @@ -166,12 +166,12 @@ The \fB\-validatecommand\fR will be called when the spinbox is edited. .IP \fBall\fR 10 The \fB\-validatecommand\fR will be called for all above conditions. .PP It is possible to perform percent substitutions on the \fB\-validatecommand\fR -and \fB\-invalidcommand\fR scripts, just as you would in a \fBbind\fR script. -The following substitutions are recognized: +and \fB\-invalidcommand\fR scripts, just as you would in a \fBbind\fR script. The +following substitutions are recognized: .PP .IP \fB%d\fR 5 Type of action: 1 for \fBinsert\fR, 0 for \fBdelete\fR, or \-1 for focus, forced or textvariable validation. .IP \fB%i\fR 5 @@ -211,30 +211,30 @@ \fB\-invalidcommand\fR. Such editions will override the one that was being validated. If you wish to edit the value of the widget during validation and still have the \fB\-validate\fR option set, you should include the command .CS - \fI%W config -validate %v\fR + \fI%W config \-validate %v\fR .CE in the \fB\-validatecommand\fR or \fB\-invalidcommand\fR (whichever one you were editing the spinbox widget from). It is also recommended to not set an associated \fB\-textvariable\fR during validation, as that can cause the spinbox widget to become out of sync with the \fB\-textvariable\fR. .PP -Also, the \fB\-validate\fR option will set itself to \fBnone\fR when the -spinbox value gets changed because of adjustment of \fB\-from\fR or \fB\-to\fR -and the \fB\-validatecommand\fR returns false. For instance +Also, the \fB-validate\fR option will set itself to \fBnone\fR when the +spinbox value gets changed because of adjustment of \fB-from\fR or \fB-to\fR +and the \fB-validatecommand\fR returns false. For instance .CS - \fIspinbox pathName -from 1 -to 10 -validate all -validatecommand {return 0}\fR + \fIspinbox pathName \-from 1 \-to 10 \-validate all \-validatecommand {return 0}\fR .CE -will in fact set the \fB\-validate\fR option to \fBnone\fR because the default -value for the spinbox gets changed (due to the \fB\-from\fR and \fB\-to\fR +will in fact set the \fB-validate\fR option to \fBnone\fR because the default +value for the spinbox gets changed (due to the \fB-from\fR and \fB-to\fR options) to a value not accepted by the validation script. .PP Moreover, forced validation is performed when invoking any spinbutton of the spinbox. If the validation script returns false in this situation, -then the \fB\-validate\fR option will be automatically set to \fBnone\fR. +then the \fB-validate\fR option will be automatically set to \fBnone\fR. .SH "WIDGET COMMAND" .PP The \fBspinbox\fR command creates a new Tcl command whose name is \fIpathName\fR. This command may be used to invoke various operations on the widget. It has the following general form: @@ -248,43 +248,36 @@ Many of the widget commands for spinboxes take one or more indices as arguments. An index specifies a particular character in the spinbox's string, in any of the following ways: .TP 12 \fInumber\fR -. Specifies the character as a numerical index, where 0 corresponds to the first character in the string. .TP 12 \fBanchor\fR -. Indicates the anchor point for the selection, which is set with the \fBselect from\fR and \fBselect adjust\fR widget commands. .TP 12 \fBend\fR -. Indicates the character just after the last one in the spinbox's string. This is equivalent to specifying a numerical index equal to the length of the spinbox's string. .TP 12 \fBinsert\fR -. Indicates the character adjacent to and immediately following the insertion cursor. .TP 12 \fBsel.first\fR -. Indicates the first character in the selection. It is an error to use this form if the selection is not in the spinbox window. .TP 12 \fBsel.last\fR -. Indicates the character just after the last one in the selection. It is an error to use this form if the selection is not in the spinbox window. .TP 12 \fB@\fInumber\fR -. In this form, \fInumber\fR is treated as an x-coordinate in the spinbox's window; the character spanning that x-coordinate is used. For example, .QW \fB@0\fR indicates the left-most character in the window. @@ -299,34 +292,28 @@ for the command \fBstring index\fR, with simple integer index arithmetic and indexing relative to \fBend\fR. .SS SUBCOMMANDS .PP The following commands are possible for spinbox widgets: -.\" METHOD: bbox .TP \fIpathName \fBbbox \fIindex\fR -. Returns a list of four numbers describing the bounding box of the character given by \fIindex\fR. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the character (in pixels relative to the widget) and the last two elements give the width and height of the character, in pixels. The bounding box may refer to a region outside the visible area of the window. -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR -. +\fIpathName \fBcget\fR \fIoption\fR Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBspinbox\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -. Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command returns a list describing the @@ -335,91 +322,70 @@ one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBspinbox\fR command. -.\" METHOD: delete .TP \fIpathName \fBdelete \fIfirst \fR?\fIlast\fR? -. Delete one or more elements of the spinbox. \fIFirst\fR is the index of the first character to delete, and \fIlast\fR is the index of the character just after the last one to delete. If \fIlast\fR is not specified it defaults to \fIfirst\fR+1, i.e. a single character is deleted. This command returns an empty string. -.\" METHOD: get .TP \fIpathName \fBget\fR -. Returns the spinbox's string. -.\" METHOD: icursor .TP \fIpathName \fBicursor \fIindex\fR -. Arrange for the insertion cursor to be displayed just before the character given by \fIindex\fR. Returns an empty string. -.\" METHOD: identify .TP \fIpathName \fBidentify\fI x y\fR -. Returns the name of the window element corresponding to coordinates \fIx\fR and \fIy\fR in the spinbox. Return value is one of: \fBnone\fR, \fBbuttondown\fR, \fBbuttonup\fR, \fBentry\fR. -.\" METHOD: index .TP \fIpathName \fBindex\fI index\fR -. Returns the numerical index corresponding to \fIindex\fR. -.\" METHOD: insert .TP \fIpathName \fBinsert \fIindex string\fR -. Insert the characters of \fIstring\fR just before the character indicated by \fIindex\fR. Returns an empty string. -.\" METHOD: invoke .TP \fIpathName \fBinvoke\fI element\fR -. Causes the specified element, either \fBbuttondown\fR or \fBbuttonup\fR, to be invoked, triggering the action associated with it. -.\" METHOD: scan .TP -\fIpathName \fBscan\fI option args\fR -. +\fIpathName \fBscan\fR \fIoption args\fR This command is used to implement scanning on spinboxes. It has two forms, depending on \fIoption\fR: .RS .TP \fIpathName \fBscan mark \fIx\fR -. Records \fIx\fR and the current view in the spinbox window; used in conjunction with later \fBscan dragto\fR commands. Typically this command is associated with a mouse button press in the widget. It returns an empty string. .TP \fIpathName \fBscan dragto \fIx\fR -. This command computes the difference between its \fIx\fR argument and the \fIx\fR argument to the last \fBscan mark\fR command for the widget. It then adjusts the view left or right by 10 times the difference in x-coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the spinbox at high speed through the window. The return value is an empty string. .RE -.\" METHOD: selection .TP \fIpathName \fBselection \fIoption arg\fR -. This command is used to adjust the selection within a spinbox. It has several forms, depending on \fIoption\fR: .RS .TP \fIpathName \fBselection adjust \fIindex\fR -. Locate the end of the selection nearest to the character given by \fIindex\fR, and adjust that end of the selection to be at \fIindex\fR (i.e. including but not going beyond \fIindex\fR). The other end of the selection is made the anchor point for future \fBselect to\fR commands. If the selection @@ -427,41 +393,35 @@ include the characters between \fIindex\fR and the most recent selection anchor point, inclusive. Returns an empty string. .TP \fIpathName \fBselection clear\fR -. Clear the selection if it is currently in this widget. If the selection is not in this widget then the command has no effect. Returns an empty string. .TP \fIpathName \fBselection element\fR ?\fIelement\fR? -. Sets or gets the currently selected element. If a spinbutton element is specified, it will be displayed depressed. .TP \fIpathName \fBselection from \fIindex\fR -. Set the selection anchor point to just before the character given by \fIindex\fR. Does not change the selection. Returns an empty string. .TP \fIpathName \fBselection present\fR -. Returns 1 if there is are characters selected in the spinbox, 0 if nothing is selected. .TP \fIpathName \fBselection range \fIstart end\fR -. Sets the selection to include the characters starting with the one indexed by \fIstart\fR and ending with the one just before \fIend\fR. If \fIend\fR refers to the same character as \fIstart\fR or an earlier one, then the spinbox's selection is cleared. .TP \fIpathName \fBselection to \fIindex\fR -. If \fIindex\fR is before the anchor point, set the selection to the characters from \fIindex\fR up to but not including the anchor point. If \fIindex\fR is the same as the anchor point, do nothing. If \fIindex\fR is after the anchor point, set the selection @@ -471,36 +431,29 @@ or \fBselect adjust\fR command in this widget. If the selection is not in this widget then a new selection is created using the most recent anchor point specified for the widget. Returns an empty string. .RE -.\" METHOD: set .TP \fIpathName \fBset\fR ?\fIstring\fR? -. If \fIstring\fR is specified, the spinbox will try and set it to this value, otherwise it just returns the spinbox's string. If validation is on, it will occur when setting the string. -.\" METHOD: validate .TP \fIpathName \fBvalidate\fR -. This command is used to force an evaluation of the \fB\-validatecommand\fR independent of the conditions specified by the \fB\-validate\fR option. This is done by temporarily setting the \fB\-validate\fR option to \fBall\fR. It returns 0 or 1. -.\" METHOD: xview .TP \fIpathName \fBxview \fIargs\fR -. This command is used to query and change the horizontal position of the text in the widget's window. It can take any of the following forms: .RS .TP \fIpathName \fBxview\fR -. Returns a list containing two elements. Each element is a real fraction between 0 and 1; together they describe the horizontal span that is visible in the window. For example, if the first element is .2 and the second element is .6, 20% of the spinbox's text is off-screen to the left, the middle 40% is visible @@ -507,22 +460,19 @@ in the window, and 40% of the text is off-screen to the right. These are the same values passed to scrollbars via the \fB\-xscrollcommand\fR option. .TP \fIpathName \fBxview \fIindex\fR -. Adjusts the view in the window so that the character given by \fIindex\fR is displayed at the left edge of the window. .TP \fIpathName \fBxview moveto\fI fraction\fR -. Adjusts the view in the window so that the character \fIfraction\fR of the way through the text appears at the left edge of the window. \fIFraction\fR must be a fraction between 0 and 1. .TP \fIpathName \fBxview scroll \fInumber what\fR -. This command shifts the view in the window left or right according to \fInumber\fR and \fIwhat\fR. \fINumber\fR must be an integer or a float, but if it is a float then it is converted to an integer, rounded away from 0. \fIWhat\fR must be either \fBpages\fR or \fBunits\fR or an abbreviation Index: doc/sysnotify.n ================================================================== --- doc/sysnotify.n +++ doc/sysnotify.n @@ -5,21 +5,18 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" .TH tk sysnotify n "" Tk "Tk Built-In Commands" .so man.macros -.BS .SH NAME sysnotify \- Creates a notification window with a title and message. .SH SYNOPSIS -\fBtk sysnotify\fI title message\fR +\fBtk sysnotify\fR \fItitle\fR \fImessage\fR .BE .SH DESCRIPTION .PP -The \fBtk sysnotify\fR command creates a platform-specific system notification -alert. Its intent is to provide a brief, unobtrusive notification to the user -by popping up a window that briefly appears in a corner of the screen. +The \fBtk sysnotify\fR command creates a platform-specific system notification alert. Its intent is to provide a brief, unobtrusive notification to the user by popping up a window that briefly appears in a corner of the screen. .SH EXAMPLE .PP Here is an example of the \fBtk sysnotify\fR code: .PP .CS Index: doc/systray.n ================================================================== --- doc/systray.n +++ doc/systray.n @@ -5,20 +5,21 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" .TH tk systray n "" Tk "Tk Built-In Commands" .so man.macros -.BS .SH NAME systray \- Creates an icon display in the platform-specific system tray. .SH SYNOPSIS -.nf -\fBtk systray create \-image \fIimage\fR ?\fB\-text \fItext\fR? ?\fB\-button1 \fIcallback\fR? ?\fB\-button3 \fIcallback\fR? +\fBtk systray create \fI\-image image\fR \fI?\-text text\fR? \fI?\-button1 callback?\fR \fI?\-button3 callback?\fR +.sp \fBtk systray configure \fI?option? ?value option value ...?\fR +.sp \fBtk systray exists\fR +.sp \fBtk systray destroy\fR -.fi +.BE .BE .SH DESCRIPTION .PP .\" METHOD: create The \fBtk systray create\fR command creates an icon in the platform-specific Index: doc/text.n ================================================================== --- doc/text.n +++ doc/text.n @@ -11,15 +11,14 @@ '\" Note: do not modify the .SH NAME line immediately below! .SH NAME text, tk_textCopy, tk_textCut, tk_textPaste \- Create and manipulate 'text' hypertext editing widgets .SH SYNOPSIS .nf -\fBtext\fI pathName \fR?\fIoptions\fR? -\fBtk_textCopy\fI pathName\fR -\fBtk_textCut\fI pathName\fR -\fBtk_textPaste\fI pathName\fR -.fi +\fBtext\fR \fIpathName \fR?\fIoptions\fR? +\fBtk_textCopy\fR \fIpathName\fR +\fBtk_textCut\fR \fIpathName\fR +\fBtk_textPaste\fR \fIpathName\fR .SO \-background \-highlightthickness \-relief \-borderwidth \-insertbackground \-selectbackground \-cursor \-insertborderwidth \-selectborderwidth \-exportselection \-insertofftime \-selectforeground @@ -415,80 +414,70 @@ individual tags using the .QW "\fIpathName \fBtag configure\fR" widget command. If a character has been tagged, then the display options associated with the tag override the default display style. The following options are currently supported for tags: -.\" OPTION: -background .TP \fB\-background \fIcolor\fR . \fIColor\fR specifies the background color to use for characters associated with the tag. It may have any of the forms accepted by \fBTk_GetColor\fR. -.\" OPTION: -bgstipple .TP \fB\-bgstipple \fIbitmap\fR . \fIBitmap\fR specifies a bitmap that is used as a stipple pattern for the background. It may have any of the forms accepted by \fBTk_GetBitmap\fR. If \fIbitmap\fR has not been specified, or if it is specified as an empty string, then a solid fill will be used for the background. -.\" OPTION: -borderwidth .TP \fB\-borderwidth \fIpixels\fR . \fIPixels\fR specifies the width of a border to draw around the tag using any of the forms accepted by \fBTk_GetPixels\fR. This option should be used in conjunction with the \fB\-relief\fR option to provide the desired border. -.\" OPTION: -elide .TP \fB\-elide \fIboolean\fR . \fIElide\fR specifies whether the data should be elided. Elided data (characters, images, embedded windows, etc.) is not displayed and takes no space on screen, but further on behaves just as normal data. -.\" OPTION: -fgstipple .TP \fB\-fgstipple \fIbitmap\fR . \fIBitmap\fR specifies a bitmap that is used as a stipple pattern when drawing text and other foreground information such as underlines. It may have any of the forms accepted by \fBTk_GetBitmap\fR. If \fIbitmap\fR has not been specified, or if it is specified as an empty string, then a solid fill will be used. -.\" OPTION: -font .TP \fB\-font \fIfontName\fR . \fIFontName\fR is the name of a font to use for drawing characters. It may have any of the forms accepted by \fBTk_GetFont\fR. -.\" OPTION: -foreground .TP \fB\-foreground \fIcolor\fR . \fIColor\fR specifies the color to use when drawing text and other foreground information such as underlines. It may have any of the forms accepted by \fBTk_GetColor\fR. -.\" OPTION: -justify .TP \fB\-justify \fIjustify\fR . If the first non-elided character of a display line has a tag for which this option has been specified, then \fIjustify\fR determines how to justify the line. It must be one of \fBleft\fR, \fBright\fR, or \fBcenter\fR. If a line wraps, then the justification for each line on the display is determined by the first non-elided character of that display line. -.\" OPTION: -lmargin1 .TP \fB\-lmargin1 \fIpixels\fR . If the first non-elided character of a text line has a tag for which this option has been specified, then \fIpixels\fR specifies how much the line should be indented from the left edge of the window. \fIPixels\fR may have any of the standard forms for screen distances. If a line of text wraps, this option only applies to the first line on the display; the \fB\-lmargin2\fR option controls the indentation for subsequent lines. -.\" OPTION: -lmargin2 .TP \fB\-lmargin2 \fIpixels\fR . If the first non-elided character of a display line has a tag for which this option has been specified, and if the display line is not the first for its @@ -495,54 +484,48 @@ text line (i.e., the text line has wrapped), then \fIpixels\fR specifies how much the line should be indented from the left edge of the window. \fIPixels\fR may have any of the standard forms for screen distances. This option is only used when wrapping is enabled, and it only applies to the second and later display lines for a text line. -.\" OPTION: -lmargincolor .TP \fB\-lmargincolor \fIcolor\fR . \fIColor\fR specifies the background color to use in regions that do not contain characters because they are indented by \fB\-lmargin1\fR or \fB\-lmargin2\fR. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color used is specified by the -\fB\-background\fR tag option (or, if this is also unspecified, by the -\fB\-background\fR widget option). -.\" OPTION: -offset +\fB-background\fR tag option (or, if this is also unspecified, by the +\fB-background\fR widget option). .TP \fB\-offset \fIpixels\fR . \fIPixels\fR specifies an amount by which the text's baseline should be offset vertically from the baseline of the overall line, in pixels. For example, a positive offset can be used for superscripts and a negative offset can be used for subscripts. \fIPixels\fR may have any of the standard forms for screen distances. -.\" OPTION: -overstrike .TP \fB\-overstrike \fIboolean\fR . Specifies whether or not to draw a horizontal rule through the middle of characters. \fIBoolean\fR may have any of the forms accepted by \fBTcl_GetBoolean\fR. -.\" OPTION: -overstrikefg .TP \fB\-overstrikefg \fIcolor\fR . \fIColor\fR specifies the color to use when displaying the overstrike. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color specified by the \fB\-foreground\fR tag option is used. -.\" OPTION: -relief .TP \fB\-relief \fIrelief\fR . \fIRelief\fR specifies the relief style to use for drawing the border, in any of the forms accepted by \fBTk_GetRelief\fR. This option is used in conjunction with the \fB\-borderwidth\fR option to enable to the desired border appearance. -.\" OPTION: -rmargin .TP \fB\-rmargin \fIpixels\fR . If the first non-elided character of a display line has a tag for which this option has been specified, then \fIpixels\fR specifies how wide a margin to @@ -549,60 +532,51 @@ leave between the end of the line and the right edge of the window. \fIPixels\fR may have any of the standard forms for screen distances. This option is only used when wrapping is enabled. If a text line wraps, the right margin for each line on the display is determined by the first non-elided character of that display line. -.\" OPTION: -rmargincolor .TP \fB\-rmargincolor \fIcolor\fR . \fIColor\fR specifies the background color to use in regions that do not contain characters because they are indented by \fB\-rmargin\fR. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color -used is specified by the \fB\-background\fR tag option (or, if this is also -unspecified, by the \fB\-background\fR widget option). -.\" OPTION: -selectbackground +used is specified by the \fB-background\fR tag option (or, if this is also +unspecified, by the \fB-background\fR widget option). .TP \fB\-selectbackground \fIcolor\fR -. \fIColor\fR specifies the background color to use when displaying selected items. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color specified by the \fB\-background\fR tag option is used. -.\" OPTION: -selectforeground .TP \fB\-selectforeground \fIcolor\fR -. \fIColor\fR specifies the foreground color to use when displaying selected items. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color specified by the \fB\-foreground\fR tag option is used. -.\" OPTION: -spacing1 .TP \fB\-spacing1 \fIpixels\fR . \fIPixels\fR specifies how much additional space should be left above each text line, using any of the standard forms for screen distances. If a line wraps, this option only applies to the first line on the display. -.\" OPTION: -spacing2 .TP \fB\-spacing2 \fIpixels\fR . For lines that wrap, this option specifies how much additional space to leave between the display lines for a single text line. \fIPixels\fR may have any of the standard forms for screen distances. -.\" OPTION: -spacing3 .TP \fB\-spacing3 \fIpixels\fR . \fIPixels\fR specifies how much additional space should be left below each text line, using any of the standard forms for screen distances. If a line wraps, this option only applies to the last line on the display. -.\" OPTION: -tabs .TP \fB\-tabs \fItabList\fR . \fITabList\fR specifies a set of tab stops in the same form as for the \fB\-tabs\fR option for the text widget. This option only applies to a display @@ -610,34 +584,30 @@ this option is specified as an empty string, it cancels the option, leaving it unspecified for the tag (the default). If the option is specified as a non-empty string that is an empty list, such as \fB\-tags\0{\0}\fR, then it requests default 8-character tabs as described for the \fB\-tags\fR widget option. -.\" OPTION: -tabstyle .TP \fB\-tabstyle \fIstyle\fR . \fIStyle\fR specifies either the \fItabular\fR or \fIwordprocessor\fR style of tabbing to use for the text widget. This option only applies to a display line if it applies to the first non-elided character on that display line. If this option is specified as an empty string, it cancels the option, leaving it unspecified for the tag (the default). -.\" OPTION: -underline .TP \fB\-underline \fIboolean\fR . \fIBoolean\fR specifies whether or not to draw an underline underneath characters. It may have any of the forms accepted by \fBTcl_GetBoolean\fR. -.\" OPTION: -underlinefg .TP \fB\-underlinefg \fIcolor\fR . \fIColor\fR specifies the color to use when displaying the underline. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color specified by the \fB\-foreground\fR tag option is used. -.\" OPTION: -wrap .TP \fB\-wrap \fImode\fR . \fIMode\fR specifies how to handle lines that are wider than the text's window. This option only applies to a display line if it applies to the @@ -724,22 +694,21 @@ index space. If the range of text containing the embedded window is deleted then the window is destroyed. Similarly if the text widget as a whole is deleted, then the window is destroyed. .PP Eliding an embedded window immediately after scheduling it for creation via -\fIpathName \fBwindow create \fIindex \fB\-create\fR will prevent it from being +\fIpathName \fBwindow create \fIindex \fB-create\fR will prevent it from being effectively created. Uneliding an elided embedded window scheduled for creation -via \fIpathName \fBwindow create \fIindex \fB\-create\fR will automatically +via \fIpathName \fBwindow create \fIindex \fB-create\fR will automatically trigger the associated creation script. After destroying an elided embedded window, the latter won't get automatically recreated. .PP When an embedded window is added to a text widget with the \fIpathName \fBwindow create\fR widget command, several configuration options may be associated with it. These options may be modified later with the \fIpathName \fBwindow configure\fR widget command. The following options are currently supported: -.\" OPTION: -align .TP \fB\-align \fIwhere\fR . If the window is not as tall as the line in which it is displayed, this option determines where the window is displayed in the line. \fIWhere\fR must have @@ -746,11 +715,10 @@ one of the values \fBtop\fR (align the top of the window with the top of the line), \fBcenter\fR (center the window within the range of the line), \fBbottom\fR (align the bottom of the window with the bottom of the line's area), or \fBbaseline\fR (align the bottom of the window with the baseline of the line). -.\" OPTION: -create .TP \fB\-create \fIscript\fR . Specifies a Tcl script that may be evaluated to create the window for the annotation. If no \fB\-window\fR option has been specified for the annotation @@ -759,34 +727,30 @@ the name of that window as its result. Two substitutions will be performed in \fIscript\fR before evaluation. \fI%W\fR will be substituted by the name of the parent text widget, and \fI%%\fR will be substituted by a single \fI%\fR. If the annotation's window should ever be deleted, \fIscript\fR will be evaluated again the next time the annotation is displayed. -.\" OPTION: -padx .TP \fB\-padx \fIpixels\fR . \fIPixels\fR specifies the amount of extra space to leave on each side of the embedded window. It may have any of the usual forms defined for a screen distance. -.\" OPTION: -pady .TP \fB\-pady \fIpixels\fR . \fIPixels\fR specifies the amount of extra space to leave on the top and on the bottom of the embedded window. It may have any of the usual forms defined for a screen distance. -.\" OPTION: -stretch .TP \fB\-stretch \fIboolean\fR . If the requested height of the embedded window is less than the height of the line in which it is displayed, this option can be used to specify whether the window should be stretched vertically to fill its line. If the \fB\-pady\fR option has been specified as well, then the requested padding will be retained even if the window is stretched. -.\" OPTION: -window .TP \fB\-window \fIpathName\fR . Specifies the name of a window to display in the annotation. Note that if a \fIpathName\fR has been set, then later configuring a window to the empty @@ -809,13 +773,13 @@ into the text widget with \fIpathName \fBimage create\fR. If the range of text containing the embedded image is deleted then that copy of the image is removed from the screen. .PP Eliding an embedded image immediately after scheduling it for creation via -\fIpathName \fBimage create \fIindex \fB\-create\fR will prevent it from being +\fIpathName \fBimage create \fIindex \fB-create\fR will prevent it from being effectively created. Uneliding an elided embedded image scheduled for creation -via \fIpathName \fBimage create \fIindex \fB\-create\fR will automatically +via \fIpathName \fBimage create \fIindex \fB-create\fR will automatically trigger the associated creation script. After destroying an elided embedded image, the latter won't get automatically recreated. .PP When an embedded image is added to a text widget with the \fIpathName \fBimage create\fR widget command, a name unique to this instance of the image is @@ -831,42 +795,37 @@ .PP When an embedded image is added to a text widget with the \fIpathName \fBimage create\fR widget command, several configuration options may be associated with it. These options may be modified later with the \fIpathName \fBimage configure\fR widget command. The following options are currently supported: -.\" OPTION: -align .TP \fB\-align \fIwhere\fR . If the image is not as tall as the line in which it is displayed, this option determines where the image is displayed in the line. \fIWhere\fR must have one of the values \fBtop\fR (align the top of the image with the top of the line), \fBcenter\fR (center the image within the range of the line), \fBbottom\fR (align the bottom of the image with the bottom of the line's area), or \fBbaseline\fR (align the bottom of the image with the baseline of the line). -.\" OPTION: -image .TP \fB\-image \fIimage\fR . Specifies the name of the Tk image to display in the annotation. If \fIimage\fR is not a valid Tk image, then an error is returned. -.\" OPTION: -name .TP \fB\-name \fIImageName\fR . Specifies the name by which this image instance may be referenced in the text widget. If \fIImageName\fR is not supplied, then the name of the Tk image is used instead. If the \fIimageName\fR is already in use, \fI#nn\fR is appended to the end of the name as described above. -.\" OPTION: -padx .TP \fB\-padx \fIpixels\fR . \fIPixels\fR specifies the amount of extra space to leave on each side of the embedded image. It may have any of the usual forms defined for a screen distance. -.\" OPTION: -pady .TP \fB\-pady \fIpixels\fR . \fIPixels\fR specifies the amount of extra space to leave on the top and on the bottom of the embedded image. It may have any of the usual forms defined @@ -1018,11 +977,11 @@ .PP In order to maintain a responsive user-experience, the text widget calculates lines metrics (line heights in pixels) asynchronously. Because of this, some commands of the text widget may return wrong results if the asynchronous calculations are not finished at the time of calling. This applies to -\fIpathName \fBcount \-ypixels\fR and \fIpathName \fByview\fR. +\fIpathName \fBcount -ypixels\fR and \fIpathName \fByview\fR. .PP Again for performance reasons, it would not be appropriate to let these commands always wait for the end of the update calculation each time they are called. In most use cases of these commands a more or less inaccurate result does not really matter compared to execution speed. @@ -1100,11 +1059,10 @@ \fIpathName option \fR?\fIarg ...\fR? .CE \fIPathName\fR is the name of the command, which is the same as the text widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for text widgets: -.\" METHOD: bbox .TP \fIpathName \fBbbox \fIindex\fR . Returns a list of four elements describing the screen area of the character given by \fIindex\fR. The first two elements of the list give the x and y @@ -1111,27 +1069,24 @@ coordinates of the upper-left corner of the area occupied by the character, and the last two elements give the width and height of the area. If the character is only partially visible on the screen, then the return value reflects just the visible part. If the character is not visible on the screen then the return value is an empty list. -.\" METHOD: cget .TP -\fIpathName \fBcget\fI option\fR +\fIpathName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtext\fR command. -.\" METHOD: compare .TP -\fIpathName \fBcompare\fI index1 op index2\fR +\fIpathName \fBcompare\fR \fIindex1 op index2\fR . Compares the indices given by \fIindex1\fR and \fIindex2\fR according to the relational operator given by \fIop\fR, and returns 1 if the relationship is satisfied and 0 if it is not. \fIOp\fR must be one of the operators <, <=, ==, >=, >, or !=. If \fIop\fR is == then 1 is returned if the two indices refer to the same character, if \fIop\fR is < then 1 is returned if \fIindex1\fR refers to an earlier character in the text than \fIindex2\fR, and so on. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of the available options for @@ -1141,11 +1096,10 @@ the corresponding sublist of the value returned if no \fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. \fIOption\fR may have any of the values accepted by the \fBtext\fR command. -.\" METHOD: count .TP \fIpathName \fBcount\fR ?\fIoptions\fR? \fIindex1 index2\fR . Counts the number of relevant things between the two indices. If \fIindex1\fR is after \fIindex2\fR, the result will be a negative number (and this holds @@ -1205,11 +1159,10 @@ each counting option given, so a list is returned if more than one option was supplied. For example .QW ".text count \-xpixels \-ypixels 1.3 4.5" is perfectly valid and will return a list of two elements. .RE -.\" METHOD: debug .TP \fIpathName \fBdebug \fR?\fIboolean\fR? . If \fIboolean\fR is specified, then it must have one of the true or false values accepted by Tcl_GetBoolean. If the value is a true one then internal @@ -1226,11 +1179,10 @@ When debugging is turned on, the drawing routines of the text widget set the global variables \fBtk_textRedraw\fR and \fBtk_textRelayout\fR to the lists of indices that are redrawn. The values of these variables are tested by Tk's test suite. .RE -.\" METHOD: delete .TP \fIpathName \fBdelete \fIindex1 \fR?\fIindex2 ...\fR? . Delete a range of characters from the text. If both \fIindex1\fR and \fIindex2\fR are specified, then delete @@ -1254,11 +1206,10 @@ first range so deleted text does not cause an undesired index shifting side-effects. If multiple ranges with the same start index are given, then the longest range is used. If overlapping ranges are given, then they will be merged into spans that do not cause deletion of text outside the given ranges due to text shifted during deletion. -.\" METHOD: dlineinfo .TP \fIpathName \fBdlineinfo \fIindex\fR . Returns a list with five elements describing the area occupied by the display line containing \fIindex\fR. The first two elements of the list give the x and @@ -1271,11 +1222,10 @@ the portions that are out of the window. If the line is shorter than the full width of the window then the area returned reflects just the portion of the line that is occupied by characters and embedded windows. If the display line containing \fIindex\fR is not visible on the screen then the return value is an empty list. -.\" METHOD: dump .TP \fIpathName \fBdump \fR?\fIswitches\fR? \fIindex1 \fR?\fIindex2\fR? . Return the contents of the text widget from \fIindex1\fR up to, but not including \fIindex2\fR, including the text and information about marks, tags, @@ -1290,60 +1240,52 @@ \fBtagoff\fR, \fBimage\fR, and \fBwindow\fR. The corresponding \fIvalue\fR is the text, mark name, tag name, image name, or window name. The \fIindex\fR information is the index of the start of the text, mark, tag transition, image or window. One or more of the following switches (or abbreviations thereof) may be specified to control the dump: -.\" OPTION: -all .TP \fB\-all\fR . Return information about all elements: text, marks, tags, images and windows. This is the default. -.\" OPTION: -command .TP \fB\-command \fIcommand\fR . Instead of returning the information as the result of the dump operation, invoke the \fIcommand\fR on each element of the text widget within the range. The command has three arguments appended to it before it is evaluated: the \fIkey\fR, \fIvalue\fR, and \fIindex\fR. -.\" OPTION: -image .TP \fB\-image\fR . Include information about images in the dump results. -.\" OPTION: -mark .TP \fB\-mark\fR . Include information about marks in the dump results. -.\" OPTION: -tag .TP \fB\-tag\fR . Include information about tag transitions in the dump results. Tag information is returned as \fBtagon\fR and \fBtagoff\fR elements that indicate the begin and end of each range of each tag, respectively. -.\" OPTION: -text .TP \fB\-text\fR . Include information about text in the dump results. The value is the text up to the next element or the end of range indicated by \fIindex2\fR. A text element does not span newlines. A multi-line block of text that contains no marks or tag transitions will still be dumped as a set of text segments that each end with a newline. The newline is part of the value. -.\" OPTION: -window .TP \fB\-window\fR . Include information about embedded windows in the dump results. The value of a window is its Tk pathname, unless the window has not been created yet. (It must have a create script.) In this case an empty string is returned, and you must query the window by its index position to get more information. .RE -.\" METHOD: edit .TP \fIpathName \fBedit \fIoption \fR?\fIarg ...\fR? . This command controls the undo mechanism and the modified flag. The exact behavior of the command depends on the \fIoption\fR argument that follows the @@ -1390,11 +1332,10 @@ list of indices indicating what ranges were changed by the undo operation. An edit action is defined as all the insert and delete commands that are recorded on the undo stack in between two separators. Generates an error when the undo stack is empty. Does nothing when the \fB\-undo\fR option is false. .RE -.\" METHOD: get .TP \fIpathName \fBget\fR ?\fB\-displaychars\fR? ?\fB\-\-\fR? \fIindex1\fR ?\fIindex2 ...\fR? . Return a range of characters from the text. The return value will be all the characters in the text starting with the one whose index is \fIindex1\fR and @@ -1409,11 +1350,10 @@ represented with empty strings in the list. The ranges are returned in the order passed to \fIpathName \fBget\fR. If the \fB\-displaychars\fR option is given, then, within each range, only those characters which are not elided will be returned. This may have the effect that some of the returned ranges are empty strings. -.\" METHOD: image .TP \fIpathName \fBimage \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate embedded images. The behavior of the command depends on the \fIoption\fR argument that follows the \fBimage\fR @@ -1452,18 +1392,16 @@ \fIpathName \fBimage names\fR . Returns a list whose elements are the names of all image instances currently embedded in \fIwindow\fR. .RE -.\" METHOD: index .TP \fIpathName \fBindex \fIindex\fR . Returns the position corresponding to \fIindex\fR in the form \fIline.char\fR where \fIline\fR is the line number and \fIchar\fR is the character number. \fIIndex\fR may have any of the forms described under \fBINDICES\fR above. -.\" METHOD: insert .TP \fIpathName \fBinsert \fIindex chars \fR?\fItagList chars tagList ...\fR? . Inserts all of the \fIchars\fR arguments just before the character at \fIindex\fR. If \fIindex\fR refers to the end of the text (the character after @@ -1477,11 +1415,10 @@ of the tags present around the insertion point. If multiple \fIchars\fR\-\fItagList\fR argument pairs are present, they produce the same effect as if a separate \fIpathName \fBinsert\fR widget command had been issued for each pair, in order. The last \fItagList\fR argument may be omitted. -.\" METHOD: mark .TP \fIpathName \fBmark \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate marks. The exact behavior of the command depends on the \fIoption\fR argument that follows the \fBmark\fR argument. The @@ -1508,11 +1445,11 @@ begins immediately after that mark. This can still return a mark at the same position if there are multiple marks at the same index. These semantics mean that the \fBmark next\fR operation can be used to step through all the marks in a text widget in the same order as the mark information returned by the \fIpathName \fBdump\fR operation. If a mark has been set to the special -\fBend\fR index, then it appears to be \fIafter \fBend\fR with respect to +\fBend\fR index, then it appears to be \fIafter\fR \fBend\fR with respect to the \fIpathName \fBmark next\fR operation. An empty string is returned if there are no marks after \fIindex\fR. .TP \fIpathName \fBmark previous \fIindex\fR . @@ -1540,11 +1477,10 @@ removed marks will not be usable in indices and will not be returned by future calls to .QW "\fIpathName \fBmark names\fR" . This command returns an empty string. .RE -.\" METHOD: peer .TP \fIpathName \fBpeer \fIoption args\fR . This command is used to create and query widget peers. It has two forms, depending on \fIoption\fR: @@ -1560,19 +1496,15 @@ \fIpathName \fBpeer names\fR . Returns a list of peers of this widget (this does not include the widget itself). The order within this list is undefined. .RE -.\" METHOD: pendingsync .TP \fIpathName \fBpendingsync\fR -. Returns 1 if the line heights calculations are not up-to-date, 0 otherwise. -.\" METHOD: replace .TP -\fIpathName \fBreplace\fI index1 index2 chars\fR ?\fItagList chars tagList ...\fR? -. +\fIpathName \fBreplace\fR \fIindex1 index2 chars\fR ?\fItagList chars tagList ...\fR? Replaces the range of characters between \fIindex1\fR and \fIindex2\fR with the given characters and tags. See the section on \fIpathName \fBinsert\fR for an explanation of the handling of the \fItagList...\fR arguments, and the section on \fIpathName \fBdelete\fR for an explanation of the handling of the indices. If @@ -1583,11 +1515,10 @@ The deletion and insertion are arranged so that no unnecessary scrolling of the window or movement of insertion cursor occurs. In addition the undo/redo stack are correctly modified, if undo operations are active in the text widget. The command returns an empty string. .RE -.\" METHOD: scan .TP \fIpathName \fBscan \fIoption args\fR . This command is used to implement scanning on texts. It has two forms, depending on \fIoption\fR: @@ -1607,44 +1538,39 @@ command for the widget. It then adjusts the view by 10 times the difference in coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the text at high speed through the window. The return value is an empty string. .RE -.\" METHOD: search .TP \fIpathName \fBsearch \fR?\fIswitches\fR? \fIpattern index \fR?\fIstopIndex\fR? . Searches the text in \fIpathName\fR starting at \fIindex\fR for a range of characters that matches \fIpattern\fR. If a match is found, the index of the first character in the match is returned as result; otherwise an empty string is returned. One or more of the following switches (or abbreviations thereof) may be specified to control the search: .RS -.\" OPTION: -forwards .TP \fB\-forwards\fR . The search will proceed forward through the text, finding the first matching range starting at or after the position given by \fIindex\fR. This is the default. -.\" OPTION: -backwards .TP \fB\-backwards\fR . The search will proceed backward through the text, finding the matching range closest to \fIindex\fR whose first character is before \fIindex\fR (it is not allowed to be at \fIindex\fR). Note that, for a variety of reasons, backwards searches can be substantially slower than forwards searches (particularly when using \fB\-regexp\fR), so it is recommended that performance-critical code use forward searches. -.\" OPTION: -exact .TP \fB\-exact\fR . Use exact matching: the characters in the matching range must be identical to those in \fIpattern\fR. This is the default. -.\" OPTION: -regexp .TP \fB\-regexp\fR . Treat \fIpattern\fR as a regular expression and match it against the text using the rules for regular expressions (see the \fBregexp\fR command @@ -1652,25 +1578,22 @@ details). The default matching automatically passes both the \fB\-lineanchor\fR and \fB\-linestop\fR options to the regexp engine (unless \fB\-nolinestop\fR is used), so that \fI^$\fR match beginning and end of line, and \fI.\fR, \fI[^\fR sequences will never match the newline character \fI\en\fR. -.\" OPTION: -nolinestop .TP \fB\-nolinestop\fR . This allows \fI.\fR and \fI[^\fR sequences to match the newline character \fI\en\fR, which they will otherwise not do (see the \fBregexp\fR command for details). This option is only meaningful if \fB\-regexp\fR is also given, and an error will be thrown otherwise. For example, to match the entire text, use .QW "\fIpathName \fBsearch \-nolinestop \-regexp\fR \N'34'.*\N'34' 1.0" . -.\" OPTION: -nocase .TP \fB\-nocase\fR . Ignore case differences between the pattern and the text. -.\" OPTION: -count .TP \fB\-count\fI varName\fR . The argument following \fB\-count\fR gives the name of a variable; if a match is found, the number of index positions between beginning and end of the @@ -1677,11 +1600,10 @@ matching range will be stored in the variable. If there are no embedded images or windows in the matching range (and there are no elided characters if \fB\-elide\fR is not given), this is equivalent to the number of characters matched. In either case, the range \fImatchIdx\fR to \fImatchIdx + $count chars\fR will return the entire matched text. -.\" OPTION: -all .TP \fB\-all\fR . Find all matches in the given range and return a list of the indices of the first character of each match. If a \fB\-count\fI varName\fR switch is given, @@ -1697,11 +1619,10 @@ will just match twice, once for each word, and matching .QW "Z[a\-z]+Z" against .QW ZooZooZoo will just match once. -.\" OPTION: -overlap .TP \fB\-overlap\fR . When performing \fB\-all\fR searches, the normal behaviour is that matches which overlap an already-found match will not be returned. This switch changes @@ -1715,24 +1636,21 @@ .QW Z[a\-z]+Z against .QW ZooZooZoo will now match twice. An error will be thrown if this switch is used without \fB\-all\fR. -.\" OPTION: -strictlimits .TP \fB\-strictlimits\fR . When performing any search, the normal behaviour is that the start and stop limits are checked with respect to the start of the matching text. With the \fB\-strictlimits\fR flag, the entire matching range must lie inside the start and stop limits specified for the match to be valid. -.\" OPTION: -elide .TP \fB\-elide\fR . Find elided (hidden) text as well. By default only displayed text is searched. -.\" OPTION: -- .TP \fB\-\|\-\fR . This switch has no effect except to terminate the list of switches: the next argument will be treated as \fIpattern\fR even if it starts with \fB\-\fR. @@ -1751,42 +1669,36 @@ no wrap-around will occur. This means that, for example, if the search is \fB\-forwards\fR but \fIstopIndex\fR is earlier in the text than \fIstartIndex\fR, nothing will ever be found. See \fBKNOWN BUGS\fR below for a number of minor limitations of the \fIpathName \fBsearch\fR command. .RE -.\" METHOD: see .TP \fIpathName \fBsee \fIindex\fR . Adjusts the view in the window so that the character given by \fIindex\fR is completely visible. If \fIindex\fR is already visible then the command does nothing. If \fIindex\fR is a short distance out of view, the command adjusts the view just enough to make \fIindex\fR visible at the edge of the window. If \fIindex\fR is far out of view, then the command centers \fIindex\fR in the window. -.\" METHOD: sync .TP -\fIpathName \fBsync\fR ?\fB\-command \fIcommand\fR? -. +\fIpathName \fBsync\fR ?\fB-command \fIcommand\fR? Controls the synchronization of the view of the text widget. .RS .TP \fIpathName \fBsync\fR -. Immediately brings the line metrics up-to-date by forcing computation of any outdated line heights. The command returns immediately if there is no such outdated line heights, otherwise it returns only at the end of the computation. The command returns an empty string. .TP -\fIpathName \fBsync \-command \fIcommand\fR -. +\fIpathName \fBsync -command \fIcommand\fR Schedules \fIcommand\fR to be executed (by the event loop) exactly once as soon as all line heights are up-to-date. If there are no pending line metrics calculations, the scheduling is immediate. The command returns the empty string. \fBbgerror\fR is called on \fIcommand\fR failure. .RE -.\" METHOD: tag .TP \fIpathName \fBtag \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate tags. The exact behavior of the command depends on the \fIoption\fR argument that follows the \fBtag\fR argument. The @@ -1924,11 +1836,11 @@ is a list containing two elements, which are the index of the first character of the range and the index of the character just after the last one in the range. If no matching range is found then the return value is an empty string. If \fIindex2\fR is not given then it defaults to the beginning of the text. .TP -\fIpathName \fBtag raise \fItagName \fR?\fIaboveThis\fR? +\fIpathName\fB tag raise \fItagName \fR?\fIaboveThis\fR? . Changes the priority of tag \fItagName\fR so that it is just higher in priority than the tag whose name is \fIaboveThis\fR. If \fIaboveThis\fR is omitted, then \fItagName\fR's priority is changed to make it highest priority of all tags. @@ -1952,11 +1864,10 @@ tag is removed from the single character at \fIindex1\fR. If there are no characters in the specified range (e.g. \fIindex1\fR is past the end of the file or \fIindex2\fR is less than or equal to \fIindex1\fR) then the command has no effect. This command returns an empty string. .RE -.\" METHOD: window .TP \fIpathName \fBwindow \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate embedded windows. The behavior of the command depends on the \fIoption\fR argument that follows the \fBwindow\fR @@ -1993,11 +1904,10 @@ \fIpathName \fBwindow names\fR . Returns a list whose elements are the names of all windows currently embedded in \fIwindow\fR. .RE -.\" METHOD: xview .TP \fIpathName \fBxview \fIoption args\fR . This command is used to query and change the horizontal position of the text in the widget's window. It can take any of the following forms: @@ -2039,11 +1949,10 @@ \fInumber\fR pixels; if it is \fBunits\fR, the view adjusts left or right by \fInumber\fR average-width characters on the display. If \fInumber\fR is negative then characters farther to the left become visible; if it is positive then characters farther to the right become visible. .RE -.\" METHOD: yview .TP \fIpathName \fByview \fR?\fIargs\fR? . This command is used to query and change the vertical position of the text in the widget's window. It can take any of the following forms: @@ -2344,11 +2253,11 @@ would actually match, the text widget will return the wrong result. In practice this is a rare problem, but it can occur, for example: .CS pack [\fBtext\fR .t] \&.t insert 1.0 "aaaa\enbbbb\encccc\enbbbb\enaaaa\en" -\&.t search -regexp -- {(a+|b+\enc+\enb+)+\ena+} 1.0 +\&.t search \-regexp \-\- {(a+|b+\enc+\enb+)+\ena+} 1.0 .CE will not find a match when one exists of 19 characters starting from the first .QW b . .PP Whenever one possible match is fully enclosed in another, the search command @@ -2360,11 +2269,11 @@ not look back arbitrarily far for a possible match which might cover large portions of the widget. For example: .CS pack [\fBtext\fR .t] \&.t insert 1.0 "aaaa\enbbbb\enbbbb\enbbbb\enbbbb\\n" -\&.t search -regexp -backward -- {b+\en|a+\en(b+\en)+} end +\&.t search \-regexp \-backward \-\- {b+\en|a+\en(b+\en)+} end .CE matches at .QW 5.0 when a true greedy match would match at .QW 1.0 . Index: doc/tk.n ================================================================== --- doc/tk.n +++ doc/tk.n @@ -154,11 +154,11 @@ .TP \fBtk windowingsystem\fR . Returns the current Tk windowing system, one of \fBx11\fR (X11-based), \fBwin32\fR (MS Windows), -or \fBaqua\fR (Mac OS X Aqua). +or \fBaqua\fR (macOS Aqua). .SH "SEE ALSO" busy(n), fontchooser(n), print(n), send(n), sysnotify(n), systray(n), winfo(n) .SH KEYWORDS application name, print, send, sysnotify, systray '\" Local Variables: Index: doc/tk_mac.n ================================================================== --- doc/tk_mac.n +++ doc/tk_mac.n @@ -8,11 +8,11 @@ .TH tk::mac n 8.6 Tk "Tk Built-In Commands" .so man.macros .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME -tk::mac \- Access Mac-Specific Functionality on OS X from Tk +tk::mac \- Access Mac-Specific Functionality on macOS from Tk .SH SYNOPSIS .nf \fB::tk::mac::DoScriptFile\fR \fB::tk::mac::DoScriptText\fR \fB::tk::mac::ShowPreferences\fR @@ -38,11 +38,11 @@ \fB::tk::mac::iconBitmap \fIname width height \-kind value\fR .fi .BE .SH "EVENT HANDLER CALLBACKS" .PP -The Aqua/Mac OS X application environment defines a number of additional +The Aqua/macOS application environment defines a number of additional events that applications should respond to. These events are mapped by Tk to calls to commands in the \fB::tk::mac\fR namespace; unless otherwise noted, if the command is absent, no action will be taken. .\" COMMAND: DoScriptFile .TP @@ -221,11 +221,11 @@ . Returns the current applications's file path. .PP .SH "ADDITIONAL DIALOGS" .PP -The Aqua/Mac OS X defines additional dialogs that applications should +Aqua/macOS defines additional dialogs that applications should support. .\" COMMAND: standardAboutPanel .TP \fB::tk::mac::standardAboutPanel\fR . Index: doc/tkerror.n ================================================================== --- doc/tkerror.n +++ doc/tkerror.n @@ -16,19 +16,17 @@ .BE .SH DESCRIPTION .PP Note: as of Tk 4.1 the \fBtkerror\fR command has been renamed to \fBbgerror\fR because the event loop (which is what usually invokes -it) is now part of Tcl. Using the \fBtkerror\fR name is deprecated. -.PP -For backward compatibility +it) is now part of Tcl. For backward compatibility the \fBbgerror\fR provided by the current Tk version still tries to call \fBtkerror\fR if there is one (or an auto loadable one), so old script defining that error handler should still work, but you should anyhow modify your scripts to use \fBbgerror\fR instead of \fBtkerror\fR because that support for the old name might vanish -in the future. If that call fails, \fBbgerror\fR +in the near future. If that call fails, \fBbgerror\fR posts a dialog showing the error and offering to see the stack trace to the user. If you want your own error management you should directly override \fBbgerror\fR instead of \fBtkerror\fR. Documentation for \fBbgerror\fR is available as part of Tcl's documentation. Index: doc/tkvars.n ================================================================== --- doc/tkvars.n +++ doc/tkvars.n @@ -14,11 +14,10 @@ .BE .SH DESCRIPTION .PP The following Tcl variables are either set or used by Tk at various times in its execution: -.\" VARIABLE: tk_library .TP 15 \fBtk_library\fR . This variable holds the file name for a directory containing a library of Tcl scripts related to Tk. These scripts include an initialization @@ -39,11 +38,10 @@ working directory. .PP The variable can be modified by an application to switch to a different library. .RE -.\" VARIABLE: tk_patchLevel .TP \fBtk_patchLevel\fR . Contains a dot-separated sequence of decimal integers giving the current patch level for Tk. @@ -52,11 +50,10 @@ .RS .PP This value is normally the same as the result of .QW "\fBpackage require\fR \fBtk\fR" . .RE -.\" VARIABLE: scalingPct .TP \fBtk::scalingPct\fR . Tk sets this variable at initialization time to the scaling percentage corresponding to the display's DPI scaling level. This value is at least @@ -88,21 +85,19 @@ exclusively) from the value of the X resource Xft.dpi, and, as an additional step, Tk synchronizes the scaling factor used to convert between physical units and pixels with the scaling percentage, with the aid of the \fBtk scaling\fR command. .RE -.\" VARIABLE: tk_strictMotif .TP \fBtk_strictMotif\fR . This variable is set to zero by default. If an application sets it to one, then Tk attempts to adhere as closely as possible to Motif look-and-feel standards. For example, active elements such as buttons and scrollbar sliders will not change color when the pointer passes over them. Modern applications should not normally set this variable. -.\" VARIABLE: svgFmt .TP \fBtk::svgFmt\fR . This variable is set at Tk initialization time to .RS @@ -122,11 +117,10 @@ Note that any access to this variable is supposed to be strictly read-only! Note also that whenever the scaling factor used to convert between physical units and pixels is changed via \fBtk scaling\fR, the value of the variable \fBtk::svgFmt\fR is automatically updated. .RE -.\" VARIABLE: tk_version .TP \fBtk_version\fR . Tk sets this variable in the interpreter for each application. The variable holds the current version number of the Tk @@ -138,20 +132,17 @@ each new release of Tk, except that it resets to zero whenever the major version number changes. .SS "INTERNAL AND DEBUGGING VARIABLES" .PP These variables should not normally be set by user code. -.\" VARIABLE: Priv .TP \fBtk::Priv\fR . This variable is an array containing several pieces of information that are private to Tk. The elements of \fBtk::Priv\fR are used by Tk library procedures and default bindings. They should not be accessed by any code outside Tk. -.\" VARIABLE: tk_textRedraw -.\" VARIABLE: tk_textRelayout .TP \fBtk_textRedraw\fR .TP \fBtk_textRelayout\fR . @@ -161,11 +152,10 @@ used by Tk's test suite. .SH "OTHER GLOBAL VARIABLES" The following variables are only guaranteed to exist in \fBwish\fR executables; the Tk library does not define them itself but many Tk environments do. -.\" VARIABLE: geometry .TP \fBgeometry\fR . If set, contains the user-supplied geometry specification to use for the main Tk window. Index: doc/tkwait.n ================================================================== --- doc/tkwait.n +++ doc/tkwait.n @@ -10,33 +10,30 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tkwait \- Wait for variable to change or window to be destroyed .SH SYNOPSIS -.nf \fBtkwait variable \fIname\fR +.sp \fBtkwait visibility \fIname\fR +.sp \fBtkwait window \fIname\fR -.fi .BE .SH DESCRIPTION .PP The \fBtkwait\fR command waits for one of several things to happen, then it returns without taking any other actions. The return value is always an empty string. -.\" METHOD: variable If the first argument is \fBvariable\fR (or any abbreviation of it) then the second argument is the name of a global variable and the command waits for that variable to be modified. -.\" METHOD: visibility If the first argument is \fBvisibility\fR (or any abbreviation of it) then the second argument is the name of a window and the \fBtkwait\fR command waits for a change in its visibility state (as indicated by the arrival of a VisibilityNotify event). This form is typically used to wait for a newly-created window to appear on the screen before taking some action. -.\" METHOD: window If the first argument is \fBwindow\fR (or any abbreviation of it) then the second argument is the name of a window and the \fBtkwait\fR command waits for that window to be destroyed. This form is typically used to wait for a user to finish interacting with a dialog box before using the result of that interaction. Index: doc/toplevel.n ================================================================== --- doc/toplevel.n +++ doc/toplevel.n @@ -10,11 +10,11 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME toplevel \- Create and manipulate 'toplevel' main and popup window widgets .SH SYNOPSIS -\fBtoplevel\fI pathName \fR?\fIoptions\fR? +\fBtoplevel\fR \fIpathName \fR?\fIoptions\fR? .SO \-borderwidth \-highlightcolor \-pady \-cursor \-highlightthickness \-relief \-highlightbackground \-padx \-takefocus .SE @@ -146,19 +146,17 @@ .PP \fIPathName\fR is the name of the command, which is the same as the toplevel widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact behavior of the command. The following commands are possible for toplevel widgets: -.\" METHOD: cget .TP \fIpathName \fBcget \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. \fIOption\fR may have any of the values accepted by the \fBtoplevel\fR command. -.\" METHOD: configure .TP \fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? . Query or modify the configuration options of the widget. If no \fIoption\fR is specified, returns a list describing all of Index: doc/ttk_panedwindow.n ================================================================== --- doc/ttk_panedwindow.n +++ doc/ttk_panedwindow.n @@ -144,11 +144,11 @@ .PP \fB\-background\fP \fIcolor\fP .br \fB\-bordercolor\fP \fIcolor\fP .br -\fB\-gripsize\fP \fIsize\fP (number of screen units) +\fB\-gripcount\fP \fIcount\fP .br \fB\-handlepad\fP \fIamount\fP .br \fB\-handlesize\fP \fIamount\fP .br Index: doc/ttk_scrollbar.n ================================================================== --- doc/ttk_scrollbar.n +++ doc/ttk_scrollbar.n @@ -175,11 +175,11 @@ .br \fB\-darkcolor\fP \fIcolor\fP (color of the dark part of the 3D relief) .br \fB\-foreground\fP \fIcolor\fP .br -\fB\-gripsize\fP \fIsize\fP (number of screen units) +\fB\-gripcount\fP \fIcount\fP (number of lines on the thumb) .br \fB\-lightcolor\fP \fIcolor\fP (color of the light part of the 3D relief) .br \fB\-troughcolor\fP \fIcolor\fP .PP Index: doc/ttk_sizegrip.n ================================================================== --- doc/ttk_sizegrip.n +++ doc/ttk_sizegrip.n @@ -27,11 +27,11 @@ \fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, \fBstate\fR and \fBstyle\fR (see \fBttk::widget\fR). .SH "PLATFORM-SPECIFIC NOTES" .PP -On Mac OSX, toplevel windows automatically include a built-in +On macOS, toplevel windows automatically include a built-in size grip by default. Adding a \fBttk::sizegrip\fR there is harmless, since the built-in grip will just mask the widget. .SH EXAMPLES .PP Index: doc/ttk_treeview.n ================================================================== --- doc/ttk_treeview.n +++ doc/ttk_treeview.n @@ -323,12 +323,10 @@ \fIpathname \fBidentify \fIcomponent x y\fR . Returns a description of the specified \fIcomponent\fR under the point given by \fIx\fR and \fIy\fR, or the empty string if no such \fIcomponent\fR is present at that position. -The values \fIx\fR and \fIy\fR may have any of the forms acceptable to -\fBTk_GetPixels\fR. The following subcommands are supported: .RS .TP \fIpathname \fBidentify region \fIx y\fR .RS @@ -717,24 +715,18 @@ .br \fB\-foreground\fP \fIcolor\fP .br \fB\-indent\fP \fIamount\fP .RS -Specifies how far items are indented from their parents. Defaults to 20 pixels. -The value may have any of the forms acceptable to \fBTk_GetPixels\fR. +Specifies how many pixels items are indented from their parents. Defaults to 20. .RE .br -\fB\-columnseparatorwidth\fP \fIamount\fP -.RS -Specifies the width of column separators. Defaults to 1 pixel. -The value may have any of the forms acceptable to \fBTk_GetPixels\fR. -.RE -.br -\fB\-rowheight\fP \fIamount\fP -.RS -This is the standard height for an item. Defaults to 20 pixels. -The value may have any of the forms acceptable to \fBTk_GetPixels\fR. +\fB\-columnseparatorwidth\fP \fIpixels\fP +.br +\fB\-rowheight\fP \fIpixels\fP +.RS +This is the standard height for an item. If \fB\-rowheight\fP is not set by the style, it is set by measuring an item and a cell layout with the style's settings. This thus picks up the font and any focus ring or padding from the theme's layout. The \fB\-rowheight\fP may need to be set to make sure that a row Index: doc/winfo.n ================================================================== --- doc/winfo.n +++ doc/winfo.n @@ -10,74 +10,60 @@ .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME winfo \- Return window-related information .SH SYNOPSIS -\fBwinfo\fI option \fR?\fIarg ...\fR? +\fBwinfo\fR \fIoption \fR?\fIarg ...\fR? .BE .SH DESCRIPTION .PP The \fBwinfo\fR command is used to retrieve information about windows managed by Tk. It can take any of a number of different forms, depending on the \fIoption\fR argument. The legal forms are: -.\" METHOD: atom .TP \fBwinfo atom \fR?\fB\-displayof \fIwindow\fR? \fIname\fR -. Returns a decimal string giving the integer identifier for the atom whose name is \fIname\fR. If no atom exists with the name \fIname\fR then a new one is created. If the \fB\-displayof\fR option is given then the atom is looked up on the display of \fIwindow\fR; otherwise it is looked up on the display of the application's main window. -.\" METHOD: atomname .TP \fBwinfo atomname \fR?\fB\-displayof \fIwindow\fR? \fIid\fR -. Returns the textual name for the atom whose integer identifier is \fIid\fR. If the \fB\-displayof\fR option is given then the identifier is looked up on the display of \fIwindow\fR; otherwise it is looked up on the display of the application's main window. This command is the inverse of the \fBwinfo atom\fR command. It generates an error if no such atom exists. -.\" METHOD: cells .TP \fBwinfo cells \fIwindow\fR -. Returns a decimal string giving the number of cells in the color map for \fIwindow\fR. -.\" METHOD: children .TP \fBwinfo children \fIwindow\fR -. Returns a list containing the path names of all the children of \fIwindow\fR. Top-level windows are returned as children of their logical parents. The list is in stacking order, with the lowest window first, except for Top-level windows which are not returned in stacking order. Use the \fBwm stackorder\fR command to query the stacking order of Top-level windows. -.\" METHOD: class .TP \fBwinfo class \fIwindow\fR -. Returns the class name for \fIwindow\fR. -.\" METHOD: colormapfull .TP \fBwinfo colormapfull \fIwindow\fR -. Returns 1 if the colormap for \fIwindow\fR is known to be full, 0 otherwise. The colormap for a window is .QW known to be full if the last attempt to allocate a new color on that window failed and this application has not freed any colors in the colormap since the failed allocation. -.\" METHOD: containing .TP \fBwinfo containing \fR?\fB\-displayof \fIwindow\fR? \fIrootX rootY\fR -. Returns the path name for the window containing the point given by \fIrootX\fR and \fIrootY\fR. \fIRootX\fR and \fIrootY\fR are specified in screen units (i.e. any form acceptable to \fBTk_GetPixels\fR) in the coordinate system of the root window (if a virtual-root window manager is in @@ -91,357 +77,273 @@ or border of its highest containing toplevel in this application. (Note that with some window managers the borders may be invisible.) In selecting the containing window, children are given higher priority than parents and among siblings the highest one in the stacking order is chosen. -.\" METHOD: depth .TP \fBwinfo depth \fIwindow\fR -. Returns a decimal string giving the depth of \fIwindow\fR (number of bits per pixel). -.\" METHOD: exists .TP \fBwinfo exists \fIwindow\fR -. Returns 1 if there exists a window named \fIwindow\fR, 0 if no such window exists. -.\" METHOD: fpixels .TP -\fBwinfo fpixels \fIwindow number\fR -. +\fBwinfo fpixels \fIwindow\fR \fInumber\fR Returns a floating-point value giving the number of pixels in \fIwindow\fR corresponding to the distance given by \fInumber\fR. \fINumber\fR may be specified in any of the forms acceptable to \fBTk_GetScreenMM\fR, such as .QW 2.0c or .QW 1i . The return value may be fractional; for an integer value, use \fBwinfo pixels\fR. -.\" METHOD: geometry .TP \fBwinfo geometry \fIwindow\fR -. Returns the geometry for \fIwindow\fR, in the form \fIwidth\fBx\fIheight\fB+\fIx\fB+\fIy\fR. All dimensions are in pixels. -.\" METHOD: height .TP \fBwinfo height \fIwindow\fR -. Returns a decimal string giving \fIwindow\fR's height in pixels. When a window is first created its height will be 1 pixel; the height will eventually be changed by a geometry manager to fulfil the window's needs. If you need the true height immediately after creating a widget, invoke \fBupdate\fR to force the geometry manager to arrange it, or use \fBwinfo reqheight\fR to get the window's requested height instead of its actual height. -.\" METHOD: id .TP \fBwinfo id \fIwindow\fR -. Returns a hexadecimal string giving a low-level platform-specific identifier for \fIwindow\fR. On Unix platforms, this is the X window identifier. Under Windows, this is the Windows HWND. On the Macintosh the value has no meaning outside Tk. -.\" METHOD: interps .TP \fBwinfo interps \fR?\fB\-displayof \fIwindow\fR? -. Returns a list whose members are the names of all Tcl interpreters (e.g. all Tk-based applications) currently registered for a particular display. If the \fB\-displayof\fR option is given then the return value refers to the display of \fIwindow\fR; otherwise it refers to the display of the application's main window. -.\" METHOD: ismapped .TP \fBwinfo ismapped \fIwindow\fR -. Returns \fB1\fR if \fIwindow\fR is currently mapped, \fB0\fR otherwise. -.\" METHOD: manager .TP \fBwinfo manager \fIwindow\fR -. Returns the name of the geometry manager currently responsible for \fIwindow\fR, or an empty string if \fIwindow\fR is not managed by any geometry manager. The name is usually the name of the Tcl command for the geometry manager, such as \fBpack\fR or \fBplace\fR. If the geometry manager is a widget, such as canvases or text, the name is the widget's class command, such as \fBcanvas\fR. -.\" METHOD: name .TP \fBwinfo name \fIwindow\fR -. Returns \fIwindow\fR's name (i.e. its name within its parent, as opposed to its full path name). The command \fBwinfo name .\fR will return the name of the application. -.\" METHOD: parent .TP \fBwinfo parent \fIwindow\fR -. Returns the path name of \fIwindow\fR's parent, or an empty string if \fIwindow\fR is the main window of the application. -.\" METHOD: pathname .TP \fBwinfo pathname \fR?\fB\-displayof \fIwindow\fR? \fIid\fR -. Returns the path name of the window whose X identifier is \fIid\fR. \fIId\fR must be a decimal, hexadecimal, or octal integer and must correspond to a window in the invoking application. If the \fB\-displayof\fR option is given then the identifier is looked up on the display of \fIwindow\fR; otherwise it is looked up on the display of the application's main window. -.\" METHOD: pixels .TP -\fBwinfo pixels \fIwindow number\fR -. +\fBwinfo pixels \fIwindow\fR \fInumber\fR Returns the number of pixels in \fIwindow\fR corresponding to the distance given by \fInumber\fR. \fINumber\fR may be specified in any of the forms acceptable to \fBTk_GetPixels\fR, such as .QW 2.0c or .QW 1i . The result is rounded to the nearest integer value; for a fractional result, use \fBwinfo fpixels\fR. -.\" METHOD: pointerx .TP \fBwinfo pointerx \fIwindow\fR -. If the mouse pointer is on the same screen as \fIwindow\fR, returns the pointer's x coordinate, measured in pixels in the screen's root window. If a virtual root window is in use on the screen, the position is measured in the virtual root. If the mouse pointer is not on the same screen as \fIwindow\fR then -1 is returned. -.\" METHOD: pointerxy .TP \fBwinfo pointerxy \fIwindow\fR -. If the mouse pointer is on the same screen as \fIwindow\fR, returns a list with two elements, which are the pointer's x and y coordinates measured in pixels in the screen's root window. If a virtual root window is in use on the screen, the position is computed in the virtual root. If the mouse pointer is not on the same screen as \fIwindow\fR then both of the returned coordinates are \-1. -.\" METHOD: pointery .TP \fBwinfo pointery \fIwindow\fR -. If the mouse pointer is on the same screen as \fIwindow\fR, returns the pointer's y coordinate, measured in pixels in the screen's root window. If a virtual root window is in use on the screen, the position is computed in the virtual root. If the mouse pointer is not on the same screen as \fIwindow\fR then -1 is returned. -.\" METHOD: reqheight .TP \fBwinfo reqheight \fIwindow\fR -. Returns a decimal string giving \fIwindow\fR's requested height, in pixels. This is the value used by \fIwindow\fR's geometry manager to compute its geometry. -.\" METHOD: reqwidth .TP \fBwinfo reqwidth \fIwindow\fR -. Returns a decimal string giving \fIwindow\fR's requested width, in pixels. This is the value used by \fIwindow\fR's geometry manager to compute its geometry. -.\" METHOD: rgb .TP \fBwinfo rgb \fIwindow color\fR -. Returns a list containing three decimal values in the range 0 to 65535, which are the red, green, and blue intensities that correspond to \fIcolor\fR in the window given by \fIwindow\fR. \fIColor\fR may be specified in any of the forms acceptable for a color option. -.\" METHOD: rootx .TP \fBwinfo rootx \fIwindow\fR -. Returns a decimal string giving the x-coordinate, in the root window of the screen, of the upper-left corner of \fIwindow\fR's border (or \fIwindow\fR if it has no border). -.\" METHOD: rooty .TP \fBwinfo rooty \fIwindow\fR -. Returns a decimal string giving the y-coordinate, in the root window of the screen, of the upper-left corner of \fIwindow\fR's border (or \fIwindow\fR if it has no border). -.\" METHOD: screen .TP \fBwinfo screen \fIwindow\fR -. Returns the name of the screen associated with \fIwindow\fR, in the form \fIdisplayName\fR.\fIscreenIndex\fR. -.\" METHOD: screencells .TP \fBwinfo screencells \fIwindow\fR -. Returns a decimal string giving the number of cells in the default color map for \fIwindow\fR's screen. -.\" METHOD: screendepth .TP \fBwinfo screendepth \fIwindow\fR -. Returns a decimal string giving the depth of the root window of \fIwindow\fR's screen (number of bits per pixel). -.\" METHOD: screenheight .TP \fBwinfo screenheight \fIwindow\fR -. -Returns a decimal string giving the height of \fIwindow\fR's screen, -in pixels. -.\" METHOD: screenmmheight -.TP -\fBwinfo screenmmheight \fIwindow\fR -. -Returns a decimal string giving the height of \fIwindow\fR's screen, -in millimeters. -.\" METHOD: screenmmwidth -.TP -\fBwinfo screenmmwidth \fIwindow\fR -. -Returns a decimal string giving the width of \fIwindow\fR's screen, -in millimeters. -.\" METHOD: screenvisual -.TP -\fBwinfo screenvisual \fIwindow\fR -. +Returns a decimal string giving the height of \fIwindow\fR's screen, +in pixels. +.TP +\fBwinfo screenmmheight \fIwindow\fR +Returns a decimal string giving the height of \fIwindow\fR's screen, +in millimeters. +.TP +\fBwinfo screenmmwidth \fIwindow\fR +Returns a decimal string giving the width of \fIwindow\fR's screen, +in millimeters. +.TP +\fBwinfo screenvisual \fIwindow\fR Returns one of the following strings to indicate the default visual class for \fIwindow\fR's screen: \fBdirectcolor\fR, \fBgrayscale\fR, \fBpseudocolor\fR, \fBstaticcolor\fR, \fBstaticgray\fR, or \fBtruecolor\fR. -.\" METHOD: screenwidth .TP \fBwinfo screenwidth \fIwindow\fR -. Returns a decimal string giving the width of \fIwindow\fR's screen, in pixels. -.\" METHOD: server .TP \fBwinfo server \fIwindow\fR -. Returns a string containing information about the server for \fIwindow\fR's display. The exact format of this string may vary from platform to platform. For X servers the string has the form .QW "\fBX\fImajor\fBR\fIminor vendor vendorVersion\fR" where \fImajor\fR and \fIminor\fR are the version and revision numbers provided by the server (e.g., \fBX11R5\fR), \fIvendor\fR is the name of the vendor for the server, and \fIvendorRelease\fR is an integer release number provided by the server. -.\" METHOD: toplevel .TP \fBwinfo toplevel \fIwindow\fR -. Returns the path name of the top-of-hierarchy window containing \fIwindow\fR. In standard Tk this will always be a \fBtoplevel\fR widget, but extensions may create other kinds of top-of-hierarchy widgets. -.\" METHOD: viewable .TP \fBwinfo viewable \fIwindow\fR -. Returns 1 if \fIwindow\fR and all of its ancestors up through the nearest toplevel window are mapped. Returns 0 if any of these windows are not mapped. -.\" METHOD: visual .TP \fBwinfo visual \fIwindow\fR -. Returns one of the following strings to indicate the visual class for \fIwindow\fR: \fBdirectcolor\fR, \fBgrayscale\fR, \fBpseudocolor\fR, \fBstaticcolor\fR, \fBstaticgray\fR, or \fBtruecolor\fR. -.\" METHOD: visualid .TP \fBwinfo visualid \fIwindow\fR -. Returns the X identifier for the visual for \fIwindow\fR. -.\" METHOD: visualsavailable .TP \fBwinfo visualsavailable \fIwindow\fR ?\fBincludeids\fR? -. Returns a list whose elements describe the visuals available for \fIwindow\fR's screen. Each element consists of a visual class followed by an integer depth. The class has the same form as returned by \fBwinfo visual\fR. The depth gives the number of bits per pixel in the visual. In addition, if the \fBincludeids\fR argument is provided, then the depth is followed by the X identifier for the visual. -.\" METHOD: vrootheight .TP \fBwinfo vrootheight \fIwindow\fR -. Returns the height of the virtual root window associated with \fIwindow\fR if there is one; otherwise returns the height of \fIwindow\fR's screen. -.\" METHOD: vrootwidth .TP \fBwinfo vrootwidth \fIwindow\fR -. Returns the width of the virtual root window associated with \fIwindow\fR if there is one; otherwise returns the width of \fIwindow\fR's screen. -.\" METHOD: vrootx .TP \fBwinfo vrootx \fIwindow\fR -. Returns the x-offset of the virtual root window associated with \fIwindow\fR, relative to the root window of its screen. This is normally either zero or negative. Returns 0 if there is no virtual root window for \fIwindow\fR. -.\" METHOD: vrooty .TP \fBwinfo vrooty \fIwindow\fR -. Returns the y-offset of the virtual root window associated with \fIwindow\fR, relative to the root window of its screen. This is normally either zero or negative. Returns 0 if there is no virtual root window for \fIwindow\fR. -.\" METHOD: width .TP \fBwinfo width \fIwindow\fR -. Returns a decimal string giving \fIwindow\fR's width in pixels. When a window is first created its width will be 1 pixel; the width will eventually be changed by a geometry manager to fulfil the window's needs. If you need the true width immediately after creating a widget, invoke \fBupdate\fR to force the geometry manager to arrange it, or use \fBwinfo reqwidth\fR to get the window's requested width instead of its actual width. -.\" METHOD: x .TP \fBwinfo x \fIwindow\fR -. Returns a decimal string giving the x-coordinate, in \fIwindow\fR's parent, of the upper-left corner of \fIwindow\fR's border (or \fIwindow\fR if it has no border). -.\" METHOD: y .TP \fBwinfo y \fIwindow\fR -. Returns a decimal string giving the y-coordinate, in \fIwindow\fR's parent, of the upper-left corner of \fIwindow\fR's border (or \fIwindow\fR if it has no border). .SH EXAMPLE .PP Print where the mouse pointer is and what window it is currently over: .CS lassign [\fBwinfo pointerxy\fR .] x y -puts -nonewline "Mouse pointer at ($x,$y) which is " +puts \-nonewline "Mouse pointer at ($x,$y) which is " set win [\fBwinfo containing\fR $x $y] if {$win eq ""} { puts "over no window" } else { puts "over $win" Index: doc/wish.1 ================================================================== --- doc/wish.1 +++ doc/wish.1 @@ -12,36 +12,29 @@ .SH NAME wish \- Simple windowing shell .SH SYNOPSIS \fBwish\fR ?\fB\-encoding \fIname\fR? ?\fIfileName arg ...\fR? .SH OPTIONS -.\" OPTION: -encoding .IP "\fB\-encoding \fIname\fR" 20 Specifies the encoding of the text stored in \fIfileName\fR. This option is only recognized prior to the \fIfileName\fR argument. -.\" OPTION: -colormap .IP "\fB\-colormap \fInew\fR" 20 Specifies that the window should have a new private colormap instead of using the default colormap for the screen. -.\" OPTION: -display .IP "\fB\-display \fIdisplay\fR" 20 Display (and screen) on which to display window. -.\" OPTION: -geometry .IP "\fB\-geometry \fIgeometry\fR" 20 Initial geometry to use for window. If this option is specified, its value is stored in the \fBgeometry\fR global variable of the application's Tcl interpreter. -.\" OPTION: -name .IP "\fB\-name \fIname\fR" 20 Use \fIname\fR as the title to be displayed in the window, and as the name of the interpreter for \fBsend\fR commands. -.\" OPTION: -sync .IP "\fB\-sync\fR" 20 Execute all X server commands synchronously, so that errors are reported immediately. This will result in much slower execution, but it is useful for debugging. -.\" OPTION: -use .IP "\fB\-use\fR \fIid\fR" 20 Specifies that the main window for the application is to be embedded in the window whose identifier is \fIid\fR, instead of being created as an independent toplevel window. \fIId\fR must be specified in the same way as the value for the \fB\-use\fR option for toplevel widgets (i.e. @@ -49,16 +42,14 @@ .RS Note that on some platforms this will only work correctly if \fIid\fR refers to a Tk \fBframe\fR or \fBtoplevel\fR that has its \fB\-container\fR option enabled. .RE -.\" OPTION: -visual .IP "\fB\-visual \fIvisual\fR" 20 Specifies the visual to use for the window. \fIVisual\fR may have any of the forms supported by the \fBTk_GetVisual\fR procedure. -.\" OPTION: -- .IP "\fB\-\|\-\fR" 20 Pass all remaining arguments through to the script's \fBargv\fR variable without interpreting them. This provides a mechanism for passing arguments such as \fB\-name\fR to a script instead of having \fBwish\fR interpret them. @@ -124,44 +115,34 @@ specifying options with a \fBRESOURCE_MANAGER\fR property or .Xdefaults file, is the same as its name except that the first letter is capitalized. .SH "VARIABLES" .PP -\fBWish\fR sets the following global Tcl variables: -.\" VARIABLE: argc +\fBWish\fR sets the following Tcl variables: .TP 15 \fBargc\fR -. Contains a count of the number of \fIarg\fR arguments (0 if none), not including the options described above. -.\" VARIABLE: argv .TP 15 \fBargv\fR -. Contains a Tcl list whose elements are the \fIarg\fR arguments that follow a \fB\-\|\-\fR option or do not match any of the options described in \fBOPTIONS\fR above, in order, or an empty string if there are no such arguments. -.\" VARIABLE: argv0 .TP 15 \fBargv0\fR -. Contains \fIfileName\fR if it was specified. Otherwise, contains the name by which \fBwish\fR was invoked. -.\" VARIABLE: geometry .TP 15 \fBgeometry\fR -. If the \fB\-geometry\fR option is specified, \fBwish\fR copies its value into this variable. If the variable still exists after \fIfileName\fR has been evaluated, \fBwish\fR uses the value of the variable in a \fBwm geometry\fR command to set the main window's geometry. -.\" VARIABLE: tcl_interactive .TP 15 \fBtcl_interactive\fR -. Contains 1 if \fBwish\fR is reading commands interactively (\fIfileName\fR was not specified and standard input is a terminal-like device), 0 otherwise. .SH "SCRIPT FILES" .PP @@ -228,26 +209,10 @@ will evaluate the script in \fBtcl_prompt1\fR. The variable \fBtcl_prompt2\fR is used in a similar way when a newline is typed but the current command is not yet complete; if \fBtcl_prompt2\fR is not set then no prompt is output for incomplete commands. -.SH ZIPVFS -.PP -When a zipfile is concatenated to the end of \fBwish\fR, on startup -the contents of the zip archive will be mounted under the virtual file -system \fB//zipfs:/\fR. If a top level directory \fBtk_library\fR is -present in the zip archive, it will become the directory loaded as -env(TK_LIBRARY). If a file named \fBmain.tcl\fR is present in the top -level directory of the zip archive, it will be sourced instead of the -shell's normal command line handing. -.PP -Only one zipfile can be concatenated to the end of executable image -(tclsh, or wish). However, if multiple zipfiles are -concatenated, only the last one is used. - -This filesystem is read-only. Files cannot be added or modified within -this mounted file system. See zipfs(n) for complete details. .SH "SEE ALSO" -tclsh(1), toplevel(n), zipfs(n), Tk_Main(3), Tk_MainLoop(3), Tk_MainWindow(3) +tclsh(1), toplevel(n), Tk_Main(3), Tk_MainLoop(3), Tk_MainWindow(3) .SH KEYWORDS application, argument, interpreter, prompt, script file, shell, toolkit, toplevel Index: doc/wm.n ================================================================== --- doc/wm.n +++ doc/wm.n @@ -72,11 +72,11 @@ .TP \fB\-fullscreen\fR . Places the window in a mode that takes up the entire screen, has no borders, and covers the general use area (i.e. Start menu and taskbar on -Windows, dock and menubar on OSX, general window decorations on X11). +Windows, dock and menubar on macOS, general window decorations on X11). .\" OPTION: -topmost .TP \fB\-topmost\fR . Specifies whether this is a topmost window (displays above all other windows). @@ -100,11 +100,11 @@ value accepted by \fBTk_GetColor\fR. If the empty string is specified (default), no transparent color is used. This is supported on Windows 2000/XP+. Where not supported, the \fB\-transparentcolor\fR value remains at \fB{}\fR. .PP -On MacOS, the following attributes may be set. +On macOS, the following attributes may be set. .\" OPTION: -appearance .TP \fB\-appearance\fR . Specifies whether the window is rendered in "dark mode". Allowed @@ -259,11 +259,11 @@ .\" OPTION: -zoomed .TP \fB\-zoomed\fR . Requests that the window should be maximized. This is the same as \fBwm state -zoomed\fR on Windows and Mac OS X. +zoomed\fR on Windows and macOS. .PP On X11, changes to window attributes are performed asynchronously. Querying the value of an attribute returns the current state, which will not be the same as the value most recently set if the window manager has not yet processed the request or if it does not support the attribute. @@ -590,11 +590,11 @@ most modern window managers support. A \fBwm iconbitmap\fR may exist simultaneously. It is recommended to use not more than 2 icons, placing the larger icon first. This command also sets the panel icon for the application if the window manager or desktop environment supports it. .PP -On Macintosh, the first image called is loaded into an OSX-native icon +On Macintosh, the first image called is loaded into an OS-native icon format, and becomes the application icon in dialogs, the Dock, and other contexts. At the script level the command will accept only the first image passed in the parameters as support for multiple sizes/resolutions on macOS is outside Tk's scope. Developers should use the largest icon they can support @@ -819,12 +819,12 @@ .TP \fBwm state \fIwindow\fR ?newstate? . If \fInewstate\fR is specified, the window will be set to the new state, otherwise it returns the current state of \fIwindow\fR: either -\fBnormal\fR, \fBiconic\fR, \fBwithdrawn\fR, \fBicon\fR, or (Windows and Mac -OS X only) \fBzoomed\fR. +\fBnormal\fR, \fBiconic\fR, \fBwithdrawn\fR, \fBicon\fR, or (Windows and macOS +only) \fBzoomed\fR. The difference between \fBiconic\fR and \fBicon\fR is that \fBiconic\fR refers to a window that has been iconified (e.g., with the \fBwm iconify\fR command) while \fBicon\fR refers to a window whose only purpose is to serve as the icon for some other window (via the \fBwm iconwindow\fR command). The \fBicon\fR state cannot be set. Index: generic/ks_names.h ================================================================== --- generic/ks_names.h +++ generic/ks_names.h @@ -21,12 +21,12 @@ { "Sys_Req", 0xFF15 }, { "Escape", 0xFF1B }, { "Multi_key", 0xFF20 }, { "Kanji", 0xFF21 }, { "Muhenkan", 0xFF22 }, -{ "Henkan", 0xFF23 }, { "Henkan_Mode", 0xFF23 }, +{ "Henkan", 0xFF23 }, { "Romaji", 0xFF24 }, { "Hiragana", 0xFF25 }, { "Katakana", 0xFF26 }, { "Hiragana_Katakana", 0xFF27 }, { "Zenkaku", 0xFF28 }, @@ -1065,12 +1065,12 @@ { "Greek_ZETA", 0x7C6 }, { "Greek_ETA", 0x7C7 }, { "Greek_THETA", 0x7C8 }, { "Greek_IOTA", 0x7C9 }, { "Greek_KAPPA", 0x7CA }, -{ "Greek_LAMBDA", 0x7CB }, { "Greek_LAMDA", 0x7CB }, +{ "Greek_LAMBDA", 0x7CB }, { "Greek_MU", 0x7CC }, { "Greek_NU", 0x7CD }, { "Greek_XI", 0x7CE }, { "Greek_OMICRON", 0x7CF }, { "Greek_PI", 0x7D0 }, @@ -1090,12 +1090,12 @@ { "Greek_zeta", 0x7E6 }, { "Greek_eta", 0x7E7 }, { "Greek_theta", 0x7E8 }, { "Greek_iota", 0x7E9 }, { "Greek_kappa", 0x7EA }, -{ "Greek_lambda", 0x7EB }, { "Greek_lamda", 0x7EB }, +{ "Greek_lambda", 0x7EB }, { "Greek_mu", 0x7EC }, { "Greek_nu", 0x7ED }, { "Greek_xi", 0x7EE }, { "Greek_omicron", 0x7EF }, { "Greek_pi", 0x7F0 }, Index: generic/tk.decls ================================================================== --- generic/tk.decls +++ generic/tk.decls @@ -144,11 +144,11 @@ void *widgRec, const char *argvName, int flags) } declare 29 { int Tk_ConfigureWidget(Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, - Tcl_Size objc, Tcl_Obj *const *objv, void *widgRec, + Tcl_Size argc, const char **argv, void *widgRec, int flags) } declare 30 { void Tk_ConfigureWindow(Tk_Window tkwin, unsigned int valueMask, XWindowChanges *valuePtr) @@ -324,19 +324,22 @@ void Tk_FreePixmap(Display *display, Pixmap pixmap) } declare 76 { void Tk_FreeTextLayout(Tk_TextLayout textLayout) } +declare 77 {deprecated {function does nothing, call can be removed}} { + void Tk_FreeXId(Display *display, XID xid) +} declare 78 { GC Tk_GCForColor(XColor *colorPtr, Drawable drawable) } declare 79 { void Tk_GeometryRequest(Tk_Window tkwin, int reqWidth, int reqHeight) } declare 80 { Tk_3DBorder Tk_Get3DBorder(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid colorName) + const char *colorName) } declare 81 { void Tk_GetAllBindings(Tcl_Interp *interp, Tk_BindingTable bindingTable, void *object) } @@ -361,11 +364,11 @@ } declare 87 { int Tk_GetCapStyle(Tcl_Interp *interp, const char *str, int *capPtr) } declare 88 { - XColor *Tk_GetColor(Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name) + XColor *Tk_GetColor(Tcl_Interp *interp, Tk_Window tkwin, const char *name) } declare 89 { XColor *Tk_GetColorByValue(Tk_Window tkwin, XColor *colorPtr) } declare 90 { @@ -372,11 +375,11 @@ Colormap Tk_GetColormap(Tcl_Interp *interp, Tk_Window tkwin, const char *str) } declare 91 { Tk_Cursor Tk_GetCursor(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid str) + const char *str) } declare 92 { Tk_Cursor Tk_GetCursorFromData(Tcl_Interp *interp, Tk_Window tkwin, const char *source, const char *mask, int width, int height, int xHot, int yHot, @@ -470,10 +473,13 @@ } declare 117 { void Tk_ImageChanged(Tk_ImageModel model, int x, int y, int width, int height, int imageWidth, int imageHeight) } +declare 118 { + int Tk_Init(Tcl_Interp *interp) +} declare 119 { Atom Tk_InternAtom(Tk_Window tkwin, const char *name) } declare 120 { int Tk_IntersectTextLayout(Tk_TextLayout layout, int x, int y, @@ -556,19 +562,36 @@ declare 143 { int Tk_ParseArgv(Tcl_Interp *interp, Tk_Window tkwin, int *argcPtr, const char **argv, const Tk_ArgvInfo *argTable, int flags) } +declare 144 {deprecated {function signature changed}} { + void Tk_PhotoPutBlock_NoComposite(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height) +} +declare 145 {deprecated {function signature changed}} { + void Tk_PhotoPutZoomedBlock_NoComposite(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int zoomX, int zoomY, + int subsampleX, int subsampleY) +} declare 146 { int Tk_PhotoGetImage(Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr) } declare 147 { void Tk_PhotoBlank(Tk_PhotoHandle handle) } +declare 148 {deprecated {function signature changed}} { + void Tk_PhotoExpand_Panic(Tk_PhotoHandle handle, int width, int height ) +} declare 149 { void Tk_PhotoGetSize(Tk_PhotoHandle handle, int *widthPtr, int *heightPtr) } +declare 150 {deprecated {function signature changed}} { + void Tk_PhotoSetSize_Panic(Tk_PhotoHandle handle, int width, int height) +} declare 151 { int Tk_PointToChar(Tk_TextLayout layout, int x, int y) } declare 152 { int Tk_PostscriptFontName(Tk_Font tkfont, Tcl_DString *dsPtr) @@ -592,10 +615,13 @@ } declare 158 { Tk_RestrictProc *Tk_RestrictEvents(Tk_RestrictProc *proc, void *arg, void **prevArgPtr) } +declare 159 { + int Tk_SafeInit(Tcl_Interp *interp) +} declare 160 { const char *Tk_SetAppName(Tk_Window tkwin, const char *name) } declare 161 { void Tk_SetBackgroundFromBorder(Tk_Window tkwin, Tk_3DBorder border) @@ -777,10 +803,14 @@ } declare 211 { int Tk_InitOptions(Tcl_Interp *interp, void *recordPtr, Tk_OptionTable optionToken, Tk_Window tkwin) } +declare 212 {nostub {Don't use this function in a stub-enabled extension}} { + void Tk_MainEx(Tcl_Size argc, char **argv, Tcl_AppInitProc *appInitProc, + Tcl_Interp *interp) +} declare 213 { void Tk_RestoreSavedOptions(Tk_SavedOptions *savePtr) } declare 214 { int Tk_SetOptions(Tcl_Interp *interp, void *recordPtr, @@ -789,10 +819,13 @@ Tk_SavedOptions *savePtr, int *maskPtr) } declare 215 { void Tk_InitConsoleChannels(Tcl_Interp *interp) } +declare 216 { + int Tk_CreateConsoleWindow(Tcl_Interp *interp) +} declare 217 { void Tk_CreateSmoothMethod(Tcl_Interp *interp, const Tk_SmoothMethod *method) } #declare 218 { # void Tk_CreateCanvasVisitor(Tcl_Interp *interp, void *typePtr) @@ -908,10 +941,21 @@ # New in 8.4a5 # declare 245 { void Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height) } +declare 246 {deprecated {function signature changed}} { + void Tk_PhotoPutBlock_Panic(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int compRule) +} +declare 247 {deprecated {function signature changed}} { + void Tk_PhotoPutZoomedBlock_Panic(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int zoomX, int zoomY, + int subsampleX, int subsampleY, int compRule) +} declare 248 { int Tk_CollapseMotionEvents(Display *display, int collapse) } # Style engine @@ -943,10 +987,16 @@ const char *Tk_NameOfStyle(Tk_Style style) } declare 257 { Tk_Style Tk_AllocStyleFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr) } +declare 258 { + Tk_Style Tk_GetStyleFromObj(Tcl_Obj *objPtr) +} +declare 259 { + void Tk_FreeStyleFromObj(Tcl_Obj *objPtr) +} declare 260 { Tk_StyledElement Tk_GetStyledElement(Tk_Style style, Tcl_Size elementId, Tk_OptionTable optionTable) } declare 261 { @@ -999,10 +1049,27 @@ # TIP #264 declare 271 { Tcl_Interp *Tk_Interp(Tk_Window tkwin) } + +# Now that the Tk 8.2 -> 8.3 transition is long past, use more conventional +# means to continue support for extensions using the USE_OLD_IMAGE to +# continue use of their string-based Tcl_ImageTypes and Tcl_PhotoImageFormats. +# +# Note that this restores the usual rules for stub compatibility. Stub-enabled +# extensions compiled against 8.5 headers and linked to the 8.5 stub library +# will produce a file [load]able into an interp with Tk 8.X, for X >= 5. +# It will *not* be [load]able into interps with Tk 8.4 (or Tk 8.2!). +# Developers who need to produce a file [load]able into legacy interps must +# build against legacy sources. +declare 272 { + void Tk_CreateOldImageType(const Tk_ImageType *typePtr) +} +declare 273 { + void Tk_CreateOldPhotoImageFormat(const Tk_PhotoImageFormat *formatPtr) +} # TIP#580 declare 274 { int Tk_AlwaysShowSelection(Tk_Window tkwin) } @@ -1086,16 +1153,31 @@ HWND Tk_GetHWND(Window window) } declare 3 win { Tk_Window Tk_HWNDToWindow(HWND hwnd) } +declare 4 win { + void Tk_PointerEvent(HWND hwnd, int x, int y) +} +declare 5 win { + int Tk_TranslateWinEvent(HWND hwnd, + UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result) +} ################################ # Aqua specific functions +# Stub removed because the function no longer exists. +#declare 3 aqua { +# void TkMacOSXInitMenus(Tcl_Interp *interp) +#} declare 4 aqua { void TkMacOSXInitAppleEvents(Tcl_Interp *interp) } +declare 5 aqua { + void TkGenWMConfigureEvent_(Tk_Window tkwin, int x, int y, int width, + int height, int flags) +} declare 6 aqua { void TkMacOSXInvalClipRgns(Tk_Window tkwin) } # Stub removed because it just returned NULL. #declare 7 aqua { Index: generic/tk.h ================================================================== --- generic/tk.h +++ generic/tk.h @@ -15,12 +15,12 @@ #ifndef _TK #define _TK #include -#if (TCL_MAJOR_VERSION < 9) && defined(TCL_MINOR_VERSION) && (TCL_MINOR_VERSION < 7) -# error Tk 9.0 must be compiled with tcl.h from Tcl 8.7 or better +#if (TCL_MAJOR_VERSION < 8) || (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 6) +# error Tk 8.7 must be compiled with tcl.h from Tcl 8.6 or better #endif #ifndef EXTERN # define EXTERN extern TCL_STORAGE_CLASS #endif @@ -53,11 +53,10 @@ * * library/tk.tcl (1 LOC patch) * unix/configure.ac (2 LOC Major, 2 LOC minor, 1 LOC patch) * win/configure.ac (as above) * README.md (sections 0 and 1) - * macosx/Tk-Common.xcconfig (not patchlevel) 1 LOC * win/README (not patchlevel) * unix/README (not patchlevel) * unix/tk.spec (1 LOC patch) * win/tcl.m4 (not patchlevel) * @@ -64,20 +63,21 @@ * You may also need to update some of these files when the numbers change for * the version of Tcl that this release of Tk is compiled against. */ #ifndef TK_MAJOR_VERSION -# define TK_MAJOR_VERSION 9 +# define TK_MAJOR_VERSION 8 #endif -#if TK_MAJOR_VERSION == 9 -# define TK_MINOR_VERSION 0 -# define TK_RELEASE_LEVEL TCL_BETA_RELEASE -# define TK_RELEASE_SERIAL 4 - -# define TK_VERSION "9.0" -# define TK_PATCH_LEVEL "9.0b4" -#endif /* TK_MAJOR_VERSION */ +#if TK_MAJOR_VERSION != 8 +# error "This header-file is for Tk 8 only" +#endif +#define TK_MINOR_VERSION 7 +#define TK_RELEASE_LEVEL TCL_BETA_RELEASE +#define TK_RELEASE_SERIAL 1 + +#define TK_VERSION "8.7" +#define TK_PATCH_LEVEL "8.7b1" /* * A special definition used to allow this header file to be included from * windows or mac resource files so that they can obtain version information. * RC_INVOKED is defined by default by the windows RC tool and manually set @@ -143,10 +143,19 @@ /* * Additional types exported to clients. */ typedef const char *Tk_Uid; + +#if (TCL_MAJOR_VERSION < 9) && (TCL_MINOR_VERSION < 7) +# ifndef Tcl_Size +# define Tcl_Size int +# endif +# define TCL_SIZE_MAX INT_MAX +# define TCL_SIZE_MODIFIER "" +# define TCL_ENCODING_PROFILE_TCL8 0x01000000 +#endif /* *---------------------------------------------------------------------- * * The enum below defines the valid types for Tk configuration options as @@ -269,10 +278,19 @@ * representation of an option. */ void *clientData; /* Arbitrary one-word value passed to the * handling procs. */ } Tk_ObjCustomOption; +/* + * Macro to use to fill in "offset" fields of the Tk_OptionSpec structure. + * Computes number of bytes from beginning of structure to a given field. + */ + +#if !defined(TK_NO_DEPRECATED) && (TK_MAJOR_VERSION < 9) && !defined(BUILD_tk) +# define Tk_Offset(type, field) ((int) offsetof(type, field)) +#endif + /* * The following two structures are used for error handling. When config * options are being modified, the old values are saved in a Tk_SavedOptions * structure. If an error occurs, then the contents of the structure can be * used to restore all of the old values. The contents of this structure are @@ -284,12 +302,12 @@ struct TkOption *optionPtr; /* Points to information that describes the * option. */ Tcl_Obj *valuePtr; /* The old value of the option, in the form of * a Tcl object; may be NULL if the value was * not saved as an object. */ -#if TCL_MAJOR_VERSION > 8 - long double internalForm; /* The old value of the option, in some +#if TCL_MAJOR_VERSION < 9 + double internalForm; /* The old value of the option, in some * internal representation such as an int or * (XColor *). Valid only if the field * optionPtr->specPtr->objOffset is -1. The * space must be large enough to accommodate a * long double, a double, a long, or a pointer; @@ -296,11 +314,11 @@ * right now it looks like a long double (i.e., 16 * bytes) is big enough. Also, using a long double * guarantees that the field is properly aligned * for storing large values. */ #else - double internalForm; + long double internalForm; #endif } Tk_SavedOption; #ifdef TCL_MEM_DEBUG # define TK_NUM_SAVED_OPTIONS 2 @@ -414,10 +432,13 @@ */ #define TK_CONFIG_COLOR_ONLY (1 << 1) #define TK_CONFIG_MONO_ONLY (1 << 2) #define TK_CONFIG_DONT_SET_DEFAULT (1 << 3) +#ifndef TK_NO_DEPRECATED +# define TK_CONFIG_OPTION_SPECIFIED (1 << 4) +#endif /* !TK_NO_DEPRECATED */ #if TCL_MAJOR_VERSION > 8 # define TK_CONFIG_NULL_OK TCL_NULL_OK #else # define TK_CONFIG_NULL_OK (1 << 0) #endif @@ -727,13 +748,13 @@ #define Tk_Screen(tkwin) \ (ScreenOfDisplay(Tk_Display(tkwin), Tk_ScreenNumber(tkwin))) #define Tk_Depth(tkwin) (((Tk_FakeWin *) (tkwin))->depth) #define Tk_Visual(tkwin) (((Tk_FakeWin *) (tkwin))->visual) #define Tk_WindowId(tkwin) (((Tk_FakeWin *) (tkwin))->window) -#define Tk_PathName(tkwin) (((Tk_FakeWin *) (tkwin))->pathName) +#define Tk_PathName(tkwin) (((Tk_FakeWin *) (tkwin))->pathName) #define Tk_Name(tkwin) (((Tk_FakeWin *) (tkwin))->nameUid) -#define Tk_Class(tkwin) (((Tk_FakeWin *) (tkwin))->classUid) +#define Tk_Class(tkwin) (((Tk_FakeWin *) (tkwin))->classUid) #define Tk_X(tkwin) (((Tk_FakeWin *) (tkwin))->changes.x) #define Tk_Y(tkwin) (((Tk_FakeWin *) (tkwin))->changes.y) #define Tk_Width(tkwin) (((Tk_FakeWin *) (tkwin))->changes.width) #define Tk_Height(tkwin) \ (((Tk_FakeWin *) (tkwin))->changes.height) @@ -755,10 +776,14 @@ (((Tk_FakeWin *) (tkwin))->flags & TK_TOP_HIERARCHY) #define Tk_IsManageable(tkwin) \ (((Tk_FakeWin *) (tkwin))->flags & TK_WM_MANAGEABLE) #define Tk_ReqWidth(tkwin) (((Tk_FakeWin *) (tkwin))->reqWidth) #define Tk_ReqHeight(tkwin) (((Tk_FakeWin *) (tkwin))->reqHeight) +#ifndef TK_NO_DEPRECATED +#define Tk_InternalBorderWidth(tkwin) \ + (((Tk_FakeWin *) (tkwin))->internalBorderLeft) +#endif /* !TK_NO_DEPRECATED */ #define Tk_InternalBorderLeft(tkwin) \ (((Tk_FakeWin *) (tkwin))->internalBorderLeft) #define Tk_InternalBorderRight(tkwin) \ (((Tk_FakeWin *) (tkwin))->internalBorderRight) #define Tk_InternalBorderTop(tkwin) \ @@ -976,11 +1001,11 @@ * x2 and y2. */ struct Tk_Item *prevPtr; /* Previous in display list of all items in * this canvas. Later items in list are drawn * just below earlier ones. */ Tk_State state; /* State of item. */ - char *reserved1; /* reserved for future use */ + void *reserved1; /* reserved for future use */ int redraw_flags; /* Some flags used in the canvas */ /* *------------------------------------------------------------------ * Starting here is additional type-specific stuff; see the declarations @@ -994,11 +1019,11 @@ /* * Flag bits for canvases (redraw_flags): * * TK_ITEM_STATE_DEPENDANT - 1 means that object needs to be redrawn if the * canvas state changes. - * TK_ITEM_DONT_REDRAW - 1 means that the object redraw is already been + * TK_ITEM_DONT_REDRAW - 1 means that the object redraw is already been * prepared, so the general canvas code doesn't * need to do that any more. */ #define TK_ITEM_STATE_DEPENDANT 1 @@ -1007,10 +1032,22 @@ /* * Records of the following type are used to describe a type of item (e.g. * lines, circles, etc.) that can form part of a canvas widget. */ +#if defined(USE_OLD_CANVAS) && TCL_MAJOR_VERSION < 9 +typedef int (Tk_ItemCreateProc)(Tcl_Interp *interp, Tk_Canvas canvas, + Tk_Item *itemPtr, Tcl_Size argc, char **argv); +typedef int (Tk_ItemConfigureProc)(Tcl_Interp *interp, Tk_Canvas canvas, + Tk_Item *itemPtr, Tcl_Size argc, char **argv, int flags); +typedef int (Tk_ItemCoordProc)(Tcl_Interp *interp, Tk_Canvas canvas, + Tk_Item *itemPtr, Tcl_Size argc, char **argv); +typedef void (Tk_ItemInsertProc)(Tk_Canvas canvas, Tk_Item *itemPtr, + int beforeThis, char *string); +typedef int (Tk_ItemIndexProc)(Tcl_Interp *interp, Tk_Canvas canvas, + Tk_Item *itemPtr, char *indexString, int *indexPtr); +#else typedef int (Tk_ItemCreateProc)(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *itemPtr, Tcl_Size objc, Tcl_Obj *const objv[]); typedef int (Tk_ItemConfigureProc)(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *itemPtr, Tcl_Size objc, Tcl_Obj *const objv[], int flags); @@ -1018,10 +1055,11 @@ Tk_Item *itemPtr, Tcl_Size objc, Tcl_Obj *const objv[]); typedef void (Tk_ItemInsertProc)(Tk_Canvas canvas, Tk_Item *itemPtr, Tcl_Size beforeThis, Tcl_Obj *string); typedef int (Tk_ItemIndexProc)(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *itemPtr, Tcl_Obj *indexString, Tcl_Size *indexPtr); +#endif /* USE_OLD_CANVAS */ typedef void (Tk_ItemDeleteProc)(Tk_Canvas canvas, Tk_Item *itemPtr, Display *display); typedef void (Tk_ItemDisplayProc)(Tk_Canvas canvas, Tk_Item *itemPtr, Display *display, Drawable dst, int x, int y, int width, int height); @@ -1066,11 +1104,13 @@ Tk_ItemDeleteProc *deleteProc; /* Procedure to delete existing item of this * type. */ Tk_ItemDisplayProc *displayProc; /* Procedure to display items of this type. */ - int flags; /* Combination of TK_ALWAYS_REDRAW/TK_MOVABLE_POINTS */ + int alwaysRedraw; /* Non-zero means displayProc should be called + * even when the item has been moved + * off-screen. */ Tk_ItemPointProc *pointProc;/* Computes distance from item to a given * point. */ Tk_ItemAreaProc *areaProc; /* Computes whether item is inside, outside, * or overlapping an area. */ Tk_ItemPostscriptProc *postscriptProc; @@ -1103,11 +1143,12 @@ char *reserved3; /* Jan Nijtmans dash patch */ char *reserved4; } Tk_ItemType; /* - * Possible flags for 'flags' field. + * Flag (used in the alwaysRedraw field) to say whether an item supports + * point-level manipulation like the line and polygon items. */ #define TK_ALWAYS_REDRAW 1 /* item should be redrawn always*/ #define TK_MOVABLE_POINTS 2 /* item supports point-level manipulation */ @@ -1195,12 +1236,12 @@ double disabledWidth; /* Width of outline. */ int offset; /* Dash offset. */ Tk_Dash dash; /* Dash pattern. */ Tk_Dash activeDash; /* Dash pattern if state is active. */ Tk_Dash disabledDash; /* Dash pattern if state is disabled. */ - void *reserved1; /* Reserved for future expansion. */ - void *reserved2; + Tcl_Obj *offsetObj; /* Dash offset. */ + void *reserved2; /* Reserved for future expansion. */ void *reserved3; Tk_TSOffset tsoffset; /* Stipple offset for outline. */ XColor *color; /* Outline color. */ XColor *activeColor; /* Outline color if state is active. */ XColor *disabledColor; /* Outline color if state is disabled. */ @@ -1218,13 +1259,19 @@ * *---------------------------------------------------------------------- */ typedef struct Tk_ImageType Tk_ImageType; +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 && defined(USE_OLD_IMAGE) +typedef int (Tk_ImageCreateProc) (Tcl_Interp *interp, char *name, Tcl_Size argc, + char **argv, Tk_ImageType *typePtr, Tk_ImageModel model, + void **clientDataPtr); +#else typedef int (Tk_ImageCreateProc) (Tcl_Interp *interp, const char *name, Tcl_Size objc, Tcl_Obj *const objv[], const Tk_ImageType *typePtr, Tk_ImageModel model, void **clientDataPtr); +#endif /* USE_OLD_IMAGE */ typedef void *(Tk_ImageGetProc) (Tk_Window tkwin, void *clientData); typedef void (Tk_ImageDisplayProc) (void *clientData, Display *display, Drawable drawable, int imageX, int imageY, int width, int height, int drawableX, int drawableY); typedef void (Tk_ImageFreeProc) (void *clientData, Display *display); @@ -1315,10 +1362,26 @@ * Procedure prototypes and structures used in reading and writing photo * images: */ typedef struct Tk_PhotoImageFormat Tk_PhotoImageFormat; +#ifdef USE_OLD_IMAGE +typedef int (Tk_ImageFileMatchProc) (Tcl_Channel chan, char *fileName, + char *formatString, int *widthPtr, int *heightPtr); +typedef int (Tk_ImageStringMatchProc) (char *string, char *formatString, + int *widthPtr, int *heightPtr); +typedef int (Tk_ImageFileReadProc) (Tcl_Interp *interp, Tcl_Channel chan, + char *fileName, char *formatString, Tk_PhotoHandle imageHandle, + int destX, int destY, int width, int height, int srcX, int srcY); +typedef int (Tk_ImageStringReadProc) (Tcl_Interp *interp, char *string, + char *formatString, Tk_PhotoHandle imageHandle, int destX, int destY, + int width, int height, int srcX, int srcY); +typedef int (Tk_ImageFileWriteProc) (Tcl_Interp *interp, char *fileName, + char *formatString, Tk_PhotoImageBlock *blockPtr); +typedef int (Tk_ImageStringWriteProc) (Tcl_Interp *interp, + Tcl_DString *dataPtr, char *formatString, Tk_PhotoImageBlock *blockPtr); +#else typedef int (Tk_ImageFileMatchProc) (Tcl_Channel chan, const char *fileName, Tcl_Obj *format, int *widthPtr, int *heightPtr, Tcl_Interp *interp); typedef int (Tk_ImageStringMatchProc) (Tcl_Obj *dataObj, Tcl_Obj *format, int *widthPtr, int *heightPtr, Tcl_Interp *interp); typedef int (Tk_ImageFileReadProc) (Tcl_Interp *interp, Tcl_Channel chan, @@ -1329,10 +1392,11 @@ int width, int height, int srcX, int srcY); typedef int (Tk_ImageFileWriteProc) (Tcl_Interp *interp, const char *fileName, Tcl_Obj *format, Tk_PhotoImageBlock *blockPtr); typedef int (Tk_ImageStringWriteProc) (Tcl_Interp *interp, Tcl_Obj *format, Tk_PhotoImageBlock *blockPtr); +#endif /* USE_OLD_IMAGE */ /* * The following alternate definitions are used with the Tk8.7 file format * supporting a metadata dict, internal dstring and close file flag */ @@ -1501,10 +1565,50 @@ * The definitions below provide backward compatibility for functions and * types that used to be in Tk but have moved to Tcl. * *---------------------------------------------------------------------- */ + +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +#define TK_READABLE TCL_READABLE +#define TK_WRITABLE TCL_WRITABLE +#define TK_EXCEPTION TCL_EXCEPTION + +#define TK_DONT_WAIT TCL_DONT_WAIT +#define TK_X_EVENTS TCL_WINDOW_EVENTS +#define TK_WINDOW_EVENTS TCL_WINDOW_EVENTS +#define TK_FILE_EVENTS TCL_FILE_EVENTS +#define TK_TIMER_EVENTS TCL_TIMER_EVENTS +#define TK_IDLE_EVENTS TCL_IDLE_EVENTS +#define TK_ALL_EVENTS TCL_ALL_EVENTS + +#define Tk_IdleProc Tcl_IdleProc +#define Tk_FileProc Tcl_FileProc +#define Tk_TimerProc Tcl_TimerProc +#define Tk_TimerToken Tcl_TimerToken + +#define Tk_BackgroundError Tcl_BackgroundError +#define Tk_CancelIdleCall Tcl_CancelIdleCall +#define Tk_CreateFileHandler Tcl_CreateFileHandler +#define Tk_CreateTimerHandler Tcl_CreateTimerHandler +#define Tk_DeleteFileHandler Tcl_DeleteFileHandler +#define Tk_DeleteTimerHandler Tcl_DeleteTimerHandler +#define Tk_DoOneEvent Tcl_DoOneEvent +#define Tk_DoWhenIdle Tcl_DoWhenIdle +#define Tk_Sleep Tcl_Sleep + +/* Additional stuff that has moved to Tcl: */ + +#define Tk_EventuallyFree Tcl_EventuallyFree +#define Tk_FreeProc Tcl_FreeProc +#define Tk_Preserve Tcl_Preserve +#define Tk_Release Tcl_Release + +/* Related to USE_OLD_IMAGE: */ + +#define Tk_InitImageArgs(interp, argc, argv) /**/ +#endif /* Removed Tk_Main, use macro instead */ #if defined(_WIN32) || defined(__CYGWIN__) #define Tk_Main(argc, argv, proc) Tk_MainEx(argc, argv, proc, \ (Tcl_FindExecutable(0), (Tcl_CreateInterp)())) @@ -1550,10 +1654,62 @@ *---------------------------------------------------------------------- */ #include "tkDecls.h" +#ifdef USE_OLD_IMAGE +#undef Tk_CreateImageType +#define Tk_CreateImageType Tk_CreateOldImageType +#undef Tk_CreatePhotoImageFormat +#define Tk_CreatePhotoImageFormat Tk_CreateOldPhotoImageFormat +#endif /* USE_OLD_IMAGE */ + +/* + *---------------------------------------------------------------------- + * + * Allow users to say that they don't want to alter their source to add extra + * arguments to Tk_PhotoPutBlock() et al. + * + * This goes after the inclusion of the stubbed-decls so that the declarations + * of what is actually there can be correct. + */ + +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +#ifdef USE_COMPOSITELESS_PHOTO_PUT_BLOCK +# ifdef Tk_PhotoPutBlock +# undef Tk_PhotoPutBlock +# endif +# define Tk_PhotoPutBlock Tk_PhotoPutBlock_NoComposite +# ifdef Tk_PhotoPutZoomedBlock +# undef Tk_PhotoPutZoomedBlock +# endif +# define Tk_PhotoPutZoomedBlock Tk_PhotoPutZoomedBlock_NoComposite +# define USE_PANIC_ON_PHOTO_ALLOC_FAILURE +#else /* !USE_COMPOSITELESS_PHOTO_PUT_BLOCK */ +# ifdef USE_PANIC_ON_PHOTO_ALLOC_FAILURE +# ifdef Tk_PhotoPutBlock +# undef Tk_PhotoPutBlock +# endif +# define Tk_PhotoPutBlock Tk_PhotoPutBlock_Panic +# ifdef Tk_PhotoPutZoomedBlock +# undef Tk_PhotoPutZoomedBlock +# endif +# define Tk_PhotoPutZoomedBlock Tk_PhotoPutZoomedBlock_Panic +# endif /* USE_PANIC_ON_PHOTO_ALLOC_FAILURE */ +#endif /* USE_COMPOSITELESS_PHOTO_PUT_BLOCK */ +#ifdef USE_PANIC_ON_PHOTO_ALLOC_FAILURE +# ifdef Tk_PhotoExpand +# undef Tk_PhotoExpand +# endif +# define Tk_PhotoExpand Tk_PhotoExpand_Panic +# ifdef Tk_PhotoSetSize +# undef Tk_PhotoSetSize +# endif +# define Tk_PhotoSetSize Tk_PhotoSetSize_Panic +#endif /* USE_PANIC_ON_PHOTO_ALLOC_FAILURE */ +#endif /* !TK_NO_DEPRECATED */ + #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT #endif /* RC_INVOKED */ Index: generic/tk3d.c ================================================================== --- generic/tk3d.c +++ generic/tk3d.c @@ -182,11 +182,11 @@ Tk_3DBorder Tk_Get3DBorder( Tcl_Interp *interp, /* Place to store an error message. */ Tk_Window tkwin, /* Token for window in which border will be * drawn. */ - Tk_Uid colorName) /* String giving name of color for window + const char *colorName) /* String giving name of color for window * background. */ { Tcl_HashEntry *hashPtr; TkBorder *borderPtr, *existingBorderPtr; int isNew; Index: generic/tkBind.c ================================================================== --- generic/tkBind.c +++ generic/tkBind.c @@ -3936,11 +3936,11 @@ } mainPtr = (TkWindow *) mainWin; if (!tkwin || mainPtr->mainPtr != ((TkWindow *) tkwin)->mainPtr) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "window id \"%s\" does not exist in this application", + "window id \"%s\" doesn't exist in this application", Tcl_GetString(objv[0]))); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "WINDOW", Tcl_GetString(objv[0]), (char *)NULL); return TCL_ERROR; } @@ -5285,11 +5285,11 @@ #ifdef REDO_KEYSYM_LOOKUP Tcl_HashEntry *hPtr; #endif /* REDO_KEYSYM_LOOKUP */ int keysym; - size_t len = Tcl_UtfToUniChar(name, &keysym); + size_t len = TkUtfToUniChar(name, &keysym); if (name[len] == '\0') { if (!Tcl_UniCharIsPrint(keysym)) { /* This form not supported */ } else if ((unsigned)(keysym - 0x21) <= 0x5D) { return (KeySym)keysym; @@ -5369,11 +5369,11 @@ } if ((keysym >= 0x1000020) && (keysym <= 0x110FFFF) && ((unsigned)(keysym - 0x100007F) > 0x20)) { char buf[10]; if (Tcl_UniCharIsPrint(keysym-0x1000000)) { - buf[Tcl_UniCharToUtf(keysym - 0x1000000, buf)] = '\0'; + buf[TkUniCharToUtf(keysym - 0x1000000, buf)] = '\0'; } else if (keysym >= 0x1010000) { snprintf(buf, sizeof(buf), "U%08X", (int)(keysym - 0x1000000)); } else { snprintf(buf, sizeof(buf), "U%04X", (int)(keysym - 0x1000000)); } Index: generic/tkButton.c ================================================================== --- generic/tkButton.c +++ generic/tkButton.c @@ -77,11 +77,11 @@ NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, TCL_INDEX_NONE, offsetof(TkButton, bitmap), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - tkDefButtonBorderWidth, offsetof(TkButton, borderWidthObj), + tkDefButtonBorderWidth, offsetof(TkButton, borderWidthPtr), offsetof(TkButton, borderWidth), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound", DEF_BUTTON_COMPOUND, TCL_INDEX_NONE, offsetof(TkButton, compound), 0, tkCompoundStrings, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", @@ -96,32 +96,32 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_BUTTON_FONT, TCL_INDEX_NONE, offsetof(TkButton, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_LABEL_FG, TCL_INDEX_NONE, offsetof(TkButton, normalFg), 0, 0, 0}, {TK_OPTION_STRING, "-height", "height", "Height", - DEF_BUTTON_HEIGHT, offsetof(TkButton, heightObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_HEIGHT, offsetof(TkButton, heightPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_BORDER, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_BUTTON_HIGHLIGHT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkButton, highlightBorder), 0, DEF_BUTTON_HIGHLIGHT_BG_MONO, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_BUTTON_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkButton, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", tkDefLabelHighlightWidth, - offsetof(TkButton, highlightWidthObj), + offsetof(TkButton, highlightWidthPtr), offsetof(TkButton, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-image", "image", "Image", DEF_BUTTON_IMAGE, offsetof(TkButton, imagePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_BUTTON_JUSTIFY, TCL_INDEX_NONE, offsetof(TkButton, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - tkDefLabelPadx, offsetof(TkButton, padXObj), + tkDefLabelPadx, offsetof(TkButton, padXPtr), offsetof(TkButton, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - tkDefLabelPady, offsetof(TkButton, padYObj), + tkDefLabelPady, offsetof(TkButton, padYPtr), offsetof(TkButton, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_LABCHKRAD_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, relief), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_BUTTON_STATE, TCL_INDEX_NONE, offsetof(TkButton, state), @@ -135,13 +135,13 @@ DEF_BUTTON_TEXT_VARIABLE, offsetof(TkButton, textVarNamePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_INDEX, "-underline", "underline", "Underline", TK_OPTION_UNDERLINE_DEF(TkButton, underline), 0}, {TK_OPTION_STRING, "-width", "width", "Width", - DEF_BUTTON_WIDTH, offsetof(TkButton, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_WIDTH, offsetof(TkButton, widthPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-wraplength", "wrapLength", "WrapLength", - DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthObj), + DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthPtr), offsetof(TkButton, wrapLength), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0} }; static const Tk_OptionSpec buttonOptionSpecs[] = { @@ -162,11 +162,11 @@ NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, TCL_INDEX_NONE, offsetof(TkButton, bitmap), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - tkDefButtonBorderWidth, offsetof(TkButton, borderWidthObj), + tkDefButtonBorderWidth, offsetof(TkButton, borderWidthPtr), offsetof(TkButton, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-command", "command", "Command", DEF_BUTTON_COMMAND, offsetof(TkButton, commandPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound", @@ -187,21 +187,21 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_BUTTON_FONT, TCL_INDEX_NONE, offsetof(TkButton, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_BUTTON_FG, TCL_INDEX_NONE, offsetof(TkButton, normalFg), 0, 0, 0}, {TK_OPTION_STRING, "-height", "height", "Height", - DEF_BUTTON_HEIGHT, offsetof(TkButton, heightObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_HEIGHT, offsetof(TkButton, heightPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_BORDER, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_BUTTON_HIGHLIGHT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkButton, highlightBorder), 0, DEF_BUTTON_HIGHLIGHT_BG_MONO, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_BUTTON_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkButton, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", tkDefButtonHighlightWidth, - offsetof(TkButton, highlightWidthObj), + offsetof(TkButton, highlightWidthPtr), offsetof(TkButton, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-image", "image", "Image", DEF_BUTTON_IMAGE, offsetof(TkButton, imagePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", @@ -208,14 +208,14 @@ DEF_BUTTON_JUSTIFY, TCL_INDEX_NONE, offsetof(TkButton, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_RELIEF, "-overrelief", "overRelief", "OverRelief", DEF_BUTTON_OVER_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, overRelief), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - tkDefButtonPadx, offsetof(TkButton, padXObj), + tkDefButtonPadx, offsetof(TkButton, padXPtr), offsetof(TkButton, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - tkDefButtonPady, offsetof(TkButton, padYObj), + tkDefButtonPady, offsetof(TkButton, padYPtr), offsetof(TkButton, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_BUTTON_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, relief), 0, 0, 0}, {TK_OPTION_INT, "-repeatdelay", "repeatDelay", "RepeatDelay", @@ -236,13 +236,13 @@ DEF_BUTTON_TEXT_VARIABLE, offsetof(TkButton, textVarNamePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_INDEX, "-underline", "underline", "Underline", TK_OPTION_UNDERLINE_DEF(TkButton, underline), 0}, {TK_OPTION_STRING, "-width", "width", "Width", - DEF_BUTTON_WIDTH, offsetof(TkButton, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_WIDTH, offsetof(TkButton, widthPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-wraplength", "wrapLength", "WrapLength", - DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthObj), + DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthPtr), offsetof(TkButton, wrapLength), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; static const Tk_OptionSpec checkbuttonOptionSpecs[] = { @@ -263,11 +263,11 @@ NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, TCL_INDEX_NONE, offsetof(TkButton, bitmap), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - tkDefButtonBorderWidth, offsetof(TkButton, borderWidthObj), + tkDefButtonBorderWidth, offsetof(TkButton, borderWidthPtr), offsetof(TkButton, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-command", "command", "Command", DEF_BUTTON_COMMAND, offsetof(TkButton, commandPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound", @@ -285,21 +285,21 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_BUTTON_FONT, TCL_INDEX_NONE, offsetof(TkButton, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_CHKRAD_FG, TCL_INDEX_NONE, offsetof(TkButton, normalFg), 0, 0, 0}, {TK_OPTION_STRING, "-height", "height", "Height", - DEF_BUTTON_HEIGHT, offsetof(TkButton, heightObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_HEIGHT, offsetof(TkButton, heightPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_BORDER, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_BUTTON_HIGHLIGHT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkButton, highlightBorder), 0, DEF_BUTTON_HIGHLIGHT_BG_MONO, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_BUTTON_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkButton, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", tkDefButtonHighlightWidth, - offsetof(TkButton, highlightWidthObj), + offsetof(TkButton, highlightWidthPtr), offsetof(TkButton, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-image", "image", "Image", DEF_BUTTON_IMAGE, offsetof(TkButton, imagePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-indicatoron", "indicatorOn", "IndicatorOn", @@ -314,14 +314,14 @@ DEF_BUTTON_ON_VALUE, offsetof(TkButton, onValuePtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_RELIEF, "-overrelief", "overRelief", "OverRelief", DEF_BUTTON_OVER_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, overRelief), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - tkDefLabelPadx, offsetof(TkButton, padXObj), + tkDefLabelPadx, offsetof(TkButton, padXPtr), offsetof(TkButton, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - tkDefLabelPady, offsetof(TkButton, padYObj), + tkDefLabelPady, offsetof(TkButton, padYPtr), offsetof(TkButton, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_LABCHKRAD_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectcolor", "selectColor", "Background", DEF_BUTTON_SELECT_COLOR, TCL_INDEX_NONE, offsetof(TkButton, selectBorder), @@ -349,13 +349,13 @@ TK_OPTION_UNDERLINE_DEF(TkButton, underline), 0}, {TK_OPTION_STRING, "-variable", "variable", "Variable", DEF_CHECKBUTTON_VARIABLE, offsetof(TkButton, selVarNamePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-width", "width", "Width", - DEF_BUTTON_WIDTH, offsetof(TkButton, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_WIDTH, offsetof(TkButton, widthPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-wraplength", "wrapLength", "WrapLength", - DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthObj), + DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthPtr), offsetof(TkButton, wrapLength), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; static const Tk_OptionSpec radiobuttonOptionSpecs[] = { @@ -376,11 +376,11 @@ NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, TCL_INDEX_NONE, offsetof(TkButton, bitmap), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - tkDefButtonBorderWidth, offsetof(TkButton, borderWidthObj), + tkDefButtonBorderWidth, offsetof(TkButton, borderWidthPtr), offsetof(TkButton, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-command", "command", "Command", DEF_BUTTON_COMMAND, offsetof(TkButton, commandPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound", @@ -398,21 +398,21 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_BUTTON_FONT, TCL_INDEX_NONE, offsetof(TkButton, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_CHKRAD_FG, TCL_INDEX_NONE, offsetof(TkButton, normalFg), 0, 0, 0}, {TK_OPTION_STRING, "-height", "height", "Height", - DEF_BUTTON_HEIGHT, offsetof(TkButton, heightObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_HEIGHT, offsetof(TkButton, heightPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_BORDER, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_BUTTON_HIGHLIGHT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkButton, highlightBorder), 0, DEF_BUTTON_HIGHLIGHT_BG_MONO, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_BUTTON_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkButton, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", tkDefButtonHighlightWidth, - offsetof(TkButton, highlightWidthObj), + offsetof(TkButton, highlightWidthPtr), offsetof(TkButton, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-image", "image", "Image", DEF_BUTTON_IMAGE, offsetof(TkButton, imagePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-indicatoron", "indicatorOn", "IndicatorOn", @@ -424,14 +424,14 @@ DEF_BUTTON_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, offRelief), 0, 0, 0}, {TK_OPTION_RELIEF, "-overrelief", "overRelief", "OverRelief", DEF_BUTTON_OVER_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, overRelief), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - tkDefLabelPadx, offsetof(TkButton, padXObj), + tkDefLabelPadx, offsetof(TkButton, padXPtr), offsetof(TkButton, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - tkDefLabelPady, offsetof(TkButton, padYObj), + tkDefLabelPady, offsetof(TkButton, padYPtr), offsetof(TkButton, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_LABCHKRAD_RELIEF, TCL_INDEX_NONE, offsetof(TkButton, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectcolor", "selectColor", "Background", DEF_BUTTON_SELECT_COLOR, TCL_INDEX_NONE, offsetof(TkButton, selectBorder), @@ -461,13 +461,13 @@ DEF_BUTTON_VALUE, offsetof(TkButton, onValuePtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-variable", "variable", "Variable", DEF_RADIOBUTTON_VARIABLE, offsetof(TkButton, selVarNamePtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-width", "width", "Width", - DEF_BUTTON_WIDTH, offsetof(TkButton, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_BUTTON_WIDTH, offsetof(TkButton, widthPtr), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-wraplength", "wrapLength", "WrapLength", - DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthObj), + DEF_BUTTON_WRAP_LENGTH, offsetof(TkButton, wrapLengthPtr), offsetof(TkButton, wrapLength), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; /* @@ -685,14 +685,14 @@ butPtr->tristateImagePtr = NULL; butPtr->tristateImage = NULL; butPtr->state = STATE_NORMAL; butPtr->normalBorder = NULL; butPtr->activeBorder = NULL; - butPtr->borderWidthObj = NULL; + butPtr->borderWidthPtr = NULL; butPtr->borderWidth = 0; butPtr->relief = TK_RELIEF_FLAT; - butPtr->highlightWidthObj = NULL; + butPtr->highlightWidthPtr = NULL; butPtr->highlightWidth = 0; butPtr->highlightBorder = NULL; butPtr->highlightColorPtr = NULL; butPtr->inset = 0; butPtr->tkfont = NULL; @@ -703,19 +703,19 @@ butPtr->activeTextGC = NULL; butPtr->disabledGC = NULL; butPtr->stippleGC = NULL; butPtr->gray = None; butPtr->copyGC = NULL; - butPtr->widthObj = NULL; + butPtr->widthPtr = NULL; butPtr->width = 0; - butPtr->heightObj = NULL; + butPtr->heightPtr = NULL; butPtr->height = 0; - butPtr->wrapLengthObj = NULL; + butPtr->wrapLengthPtr = NULL; butPtr->wrapLength = 0; - butPtr->padXObj = NULL; + butPtr->padXPtr = NULL; butPtr->padX = 0; - butPtr->padYObj = NULL; + butPtr->padYPtr = NULL; butPtr->padY = 0; butPtr->anchor = TK_ANCHOR_CENTER; butPtr->justify = TK_JUSTIFY_CENTER; butPtr->indicatorOn = 0; butPtr->selectBorder = NULL; @@ -1097,37 +1097,37 @@ } else { Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->normalBorder); } if (butPtr->wrapLength < 0) { butPtr->wrapLength = 0; - Tcl_DecrRefCount(butPtr->wrapLengthObj); - butPtr->wrapLengthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(butPtr->wrapLengthObj); + Tcl_DecrRefCount(butPtr->wrapLengthPtr); + butPtr->wrapLengthPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->wrapLengthPtr); } if (butPtr->borderWidth < 0) { butPtr->borderWidth = 0; - Tcl_DecrRefCount(butPtr->borderWidthObj); - butPtr->borderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(butPtr->borderWidthObj); + Tcl_DecrRefCount(butPtr->borderWidthPtr); + butPtr->borderWidthPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->borderWidthPtr); } if (butPtr->highlightWidth < 0) { butPtr->highlightWidth = 0; - Tcl_DecrRefCount(butPtr->highlightWidthObj); - butPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(butPtr->highlightWidthObj); + Tcl_DecrRefCount(butPtr->highlightWidthPtr); + butPtr->highlightWidthPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->highlightWidthPtr); } if (butPtr->padX < 0) { butPtr->padX = 0; - Tcl_DecrRefCount(butPtr->padXObj); - butPtr->padXObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(butPtr->padXObj); + Tcl_DecrRefCount(butPtr->padXPtr); + butPtr->padXPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->padXPtr); } if (butPtr->padY < 0) { butPtr->padY = 0; - Tcl_DecrRefCount(butPtr->padYObj); - butPtr->padYObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(butPtr->padYObj); + Tcl_DecrRefCount(butPtr->padYPtr); + butPtr->padYPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->padYPtr); } if (butPtr->type >= TYPE_CHECK_BUTTON) { Tcl_Obj *valuePtr, *namePtr; @@ -1271,17 +1271,17 @@ if ((butPtr->bitmap != None) || (butPtr->imagePtr != NULL)) { /* * The button must display the contents of an image or bitmap. */ - if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->widthObj, + if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->widthPtr, &butPtr->width) != TCL_OK) { widthError: Tcl_AddErrorInfo(interp, "\n (processing \"-width\" option)"); continue; } - if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->heightObj, + if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->heightPtr, &butPtr->height) != TCL_OK) { heightError: Tcl_AddErrorInfo(interp, "\n (processing \"-height\" option)"); continue; } @@ -1288,15 +1288,15 @@ } else { /* * The button displays an ordinary text string. */ - if (Tcl_GetIntFromObj(interp, butPtr->widthObj, &butPtr->width) + if (Tcl_GetIntFromObj(interp, butPtr->widthPtr, &butPtr->width) != TCL_OK) { goto widthError; } - if (Tcl_GetIntFromObj(interp, butPtr->heightObj, &butPtr->height) + if (Tcl_GetIntFromObj(interp, butPtr->heightPtr, &butPtr->height) != TCL_OK) { goto heightError; } } break; @@ -1479,19 +1479,19 @@ } else if (eventPtr->type == DestroyNotify) { DestroyButton(butPtr); } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { butPtr->flags |= GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (butPtr->highlightWidth > 0) { goto redraw; } } } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { butPtr->flags &= ~GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (butPtr->highlightWidth > 0) { goto redraw; } } } Index: generic/tkButton.h ================================================================== --- generic/tkButton.h +++ generic/tkButton.h @@ -108,12 +108,14 @@ * color for background (and border) when * window isn't active. */ Tk_3DBorder activeBorder; /* Value of -activebackground option: this is * the color used to draw 3-D border and * background when widget is active. */ - Tcl_Obj *borderWidthObj; /* Value of -borderWidth option: specifies + Tcl_Obj *borderWidthPtr; /* Value of -borderWidth option: specifies * width of border in pixels. */ + int borderWidth; /* Integer value corresponding to + * borderWidthPtr. Always >= 0. */ int relief; /* Value of -relief option: specifies 3-d * effect for border, such as * TK_RELIEF_RAISED. */ int overRelief; /* Value of -overrelief option: specifies a * 3-d effect for the border, such as @@ -122,14 +124,16 @@ int offRelief; /* Value of -offrelief option: specifies a 3-d * effect for the border, such as * TK_RELIEF_RAISED, to be used when a * checkbutton or radiobutton without * indicator is off. */ - Tcl_Obj *highlightWidthObj; /* Value of -highlightthickness option: + Tcl_Obj *highlightWidthPtr; /* Value of -highlightthickness option: * specifies width in pixels of highlight to * draw around widget when it has the focus. * <= 0 means don't draw a highlight. */ + int highlightWidth; /* Integer value corresponding to + * highlightWidthPtr. Always >= 0. */ Tk_3DBorder highlightBorder;/* Value of -highlightbackground option: * specifies background with which to draw 3-D * default ring and focus highlight area when * highlight is off. */ XColor *highlightColorPtr; /* Value of -highlightcolor option: specifies @@ -160,24 +164,30 @@ * images when disabled. */ Pixmap gray; /* Pixmap for displaying disabled text if * disabledFg is NULL. */ GC copyGC; /* Used for copying information from an * off-screen pixmap to the screen. */ - Tcl_Obj *widthObj; /* Value of -width option. */ - Tcl_Obj *heightObj; /* Value of -height option. */ - Tcl_Obj *wrapLengthObj; /* Value of -wraplength option: specifies line + Tcl_Obj *widthPtr; /* Value of -width option. */ + int width; /* Integer value corresponding to widthPtr. */ + Tcl_Obj *heightPtr; /* Value of -height option. */ + int height; /* Integer value corresponding to heightPtr. */ + Tcl_Obj *wrapLengthPtr; /* Value of -wraplength option: specifies line * length (in pixels) at which to wrap onto * next line. <= 0 means don't wrap except at * newlines. */ - Tcl_Obj *padXObj; /* Value of -padx option: specifies how many + int wrapLength; /* Integer value corresponding to + * wrapLengthPtr. */ + Tcl_Obj *padXPtr; /* Value of -padx option: specifies how many * pixels of extra space to leave on left and * right of text. Ignored for bitmaps and * images. */ - Tcl_Obj *padYObj; /* Value of -padx option: specifies how many + int padX; /* Integer value corresponding to padXPtr. */ + Tcl_Obj *padYPtr; /* Value of -padx option: specifies how many * pixels of extra space to leave above and * below text. Ignored for bitmaps and * images. */ + int padY; /* Integer value corresponding to padYPtr. */ Tk_Anchor anchor; /* Value of -anchor option: specifies where * text/bitmap should be displayed inside * button region. */ Tk_Justify justify; /* Value of -justify option: specifies how to * align lines of multi-line text. */ @@ -243,16 +253,10 @@ int repeatInterval; /* Value of -repeatinterval option; specifies * the number of ms between auto-repeat * invocataions of the button command. */ int flags; /* Various flags; see below for * definitions. */ -#ifdef BUILD_tk - int padX, padY; - int borderWidth; - int highlightWidth; - int width, height, wrapLength; -#endif } TkButton; /* * Possible "type" values for buttons. These are the kinds of widgets * supported by this file. The ordering of the type numbers is significant: Index: generic/tkCanvArc.c ================================================================== --- generic/tkCanvArc.c +++ generic/tkCanvArc.c @@ -232,11 +232,11 @@ configSpecs, /* configSpecs */ ConfigureArc, /* configureProc */ ArcCoords, /* coordProc */ DeleteArc, /* deleteProc */ DisplayArc, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ ArcToPoint, /* pointProc */ ArcToArea, /* areaProc */ ArcToPostscript, /* postscriptProc */ ScaleArc, /* scaleProc */ TranslateArc, /* translateProc */ @@ -450,11 +450,11 @@ Pixmap stipple; Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, arcPtr, flags)) { + (const char **) objv, (char *) arcPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } state = itemPtr->state; Index: generic/tkCanvBmap.c ================================================================== --- generic/tkCanvBmap.c +++ generic/tkCanvBmap.c @@ -126,11 +126,11 @@ configSpecs, /* configSpecs */ ConfigureBitmap, /* configureProc */ BitmapCoords, /* coordProc */ DeleteBitmap, /* deleteProc */ DisplayBitmap, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ BitmapToPoint, /* pointProc */ BitmapToArea, /* areaProc */ BitmapToPostscript, /* postscriptProc */ ScaleBitmap, /* scaleProc */ TranslateBitmap, /* translateProc */ @@ -322,11 +322,11 @@ Pixmap bitmap; Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, bmapPtr, flags)) { + (const char **) objv, (char *) bmapPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * A few of the options require additional processing, such as those that Index: generic/tkCanvImg.c ================================================================== --- generic/tkCanvImg.c +++ generic/tkCanvImg.c @@ -22,16 +22,15 @@ * types. MUST BE FIRST IN STRUCTURE. */ Tk_Canvas canvas; /* Canvas containing the image. */ double x, y; /* Coordinates of positioning point for * image. */ Tk_Anchor anchor; /* Where to anchor image relative to (x,y). */ - char *imageString; /* String describing -image option - * (malloc-ed). NULL means no image right - * now. */ - char *activeImageString; /* String describing -activeimage option. + Tcl_Obj *imageObj; /* -image option. + * NULL means no image right now. */ + Tcl_Obj *activeImageObj; /* -activeimage option. * NULL means no image right now. */ - char *disabledImageString; /* String describing -disabledimage option. + Tcl_Obj *disabledImageObj; /* -disabledimage option. * NULL means no image right now. */ Tk_Image image; /* Image to display in window, or NULL if no * image at present. */ Tk_Image activeImage; /* Image to display in window, or NULL if no * image at present. */ @@ -50,17 +49,17 @@ Tk_CanvasTagsParseProc, Tk_CanvasTagsPrintProc, NULL }; static const Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_STRING, "-activeimage", NULL, NULL, - NULL, offsetof(ImageItem, activeImageString), TK_CONFIG_NULL_OK, NULL}, + NULL, offsetof(ImageItem, activeImageObj), TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_ANCHOR, "-anchor", NULL, NULL, "center", offsetof(ImageItem, anchor), TK_CONFIG_DONT_SET_DEFAULT, NULL}, {TK_CONFIG_STRING, "-disabledimage", NULL, NULL, - NULL, offsetof(ImageItem, disabledImageString), TK_CONFIG_NULL_OK, NULL}, + NULL, offsetof(ImageItem, disabledImageObj), TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_STRING, "-image", NULL, NULL, - NULL, offsetof(ImageItem, imageString), TK_CONFIG_NULL_OK, NULL}, + NULL, offsetof(ImageItem, imageObj), TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_CUSTOM, "-state", NULL, NULL, NULL, offsetof(Tk_Item, state), TK_CONFIG_NULL_OK, &stateOption}, {TK_CONFIG_CUSTOM, "-tags", NULL, NULL, NULL, 0, TK_CONFIG_NULL_OK, &tagsOption}, {TK_CONFIG_END, NULL, NULL, NULL, NULL, 0, 0, NULL} @@ -114,11 +113,11 @@ configSpecs, /* configSpecs */ ConfigureImage, /* configureProc */ ImageCoords, /* coordProc */ DeleteImage, /* deleteProc */ DisplayImage, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ ImageToPoint, /* pointProc */ ImageToArea, /* areaProc */ ImageToPostscript, /* postscriptProc */ ScaleImage, /* scaleProc */ TranslateImage, /* translateProc */ @@ -171,13 +170,13 @@ * Initialize item's record. */ imgPtr->canvas = canvas; imgPtr->anchor = TK_ANCHOR_CENTER; - imgPtr->imageString = NULL; - imgPtr->activeImageString = NULL; - imgPtr->disabledImageString = NULL; + imgPtr->imageObj = NULL; + imgPtr->activeImageObj = NULL; + imgPtr->disabledImageObj = NULL; imgPtr->image = NULL; imgPtr->activeImage = NULL; imgPtr->disabledImage = NULL; /* @@ -300,11 +299,11 @@ Tk_Window tkwin; Tk_Image image; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, imgPtr, flags)) { + (const char **)objv, (char *)imgPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * Create the image. Save the old image around and don't free it until @@ -311,17 +310,17 @@ * after the new one is allocated. This keeps the reference count from * going to zero so the image doesn't have to be recreated if it hasn't * changed. */ - if (imgPtr->activeImageString != NULL) { + if (imgPtr->activeImageObj != NULL) { itemPtr->redraw_flags |= TK_ITEM_STATE_DEPENDANT; } else { itemPtr->redraw_flags &= ~TK_ITEM_STATE_DEPENDANT; } - if (imgPtr->imageString != NULL) { - image = Tk_GetImage(interp, tkwin, imgPtr->imageString, + if (imgPtr->imageObj != NULL) { + image = Tk_GetImage(interp, tkwin, Tcl_GetString(imgPtr->imageObj), ImageChangedProc, imgPtr); if (image == NULL) { return TCL_ERROR; } } else { @@ -329,12 +328,12 @@ } if (imgPtr->image != NULL) { Tk_FreeImage(imgPtr->image); } imgPtr->image = image; - if (imgPtr->activeImageString != NULL) { - image = Tk_GetImage(interp, tkwin, imgPtr->activeImageString, + if (imgPtr->activeImageObj != NULL) { + image = Tk_GetImage(interp, tkwin, Tcl_GetString(imgPtr->activeImageObj), ImageChangedProc, imgPtr); if (image == NULL) { return TCL_ERROR; } } else { @@ -342,12 +341,12 @@ } if (imgPtr->activeImage != NULL) { Tk_FreeImage(imgPtr->activeImage); } imgPtr->activeImage = image; - if (imgPtr->disabledImageString != NULL) { - image = Tk_GetImage(interp, tkwin, imgPtr->disabledImageString, + if (imgPtr->disabledImageObj != NULL) { + image = Tk_GetImage(interp, tkwin, Tcl_GetString(imgPtr->disabledImageObj), ImageChangedProc, imgPtr); if (image == NULL) { return TCL_ERROR; } } else { @@ -384,18 +383,18 @@ Tk_Item *itemPtr, /* Item that is being deleted. */ TCL_UNUSED(Display *)) /* Display containing window for canvas. */ { ImageItem *imgPtr = (ImageItem *) itemPtr; - if (imgPtr->imageString != NULL) { - ckfree(imgPtr->imageString); - } - if (imgPtr->activeImageString != NULL) { - ckfree(imgPtr->activeImageString); - } - if (imgPtr->disabledImageString != NULL) { - ckfree(imgPtr->disabledImageString); + if (imgPtr->imageObj != NULL) { + Tcl_DecrRefCount(imgPtr->imageObj); + } + if (imgPtr->activeImageObj != NULL) { + Tcl_DecrRefCount(imgPtr->activeImageObj); + } + if (imgPtr->disabledImageObj != NULL) { + Tcl_DecrRefCount(imgPtr->disabledImageObj); } if (imgPtr->image != NULL) { Tk_FreeImage(imgPtr->image); } if (imgPtr->activeImage != NULL) { @@ -524,21 +523,20 @@ static void DisplayImage( Tk_Canvas canvas, /* Canvas that contains item. */ Tk_Item *itemPtr, /* Item to be displayed. */ - Display *display, /* Display on which to draw item. */ + TCL_UNUSED(Display *), /* Display on which to draw item. */ Drawable drawable, /* Pixmap or window in which to draw item. */ int x, int y, int width, int height) /* Describes region of canvas that must be * redisplayed (not used). */ { ImageItem *imgPtr = (ImageItem *) itemPtr; short drawableX, drawableY; Tk_Image image; Tk_State state = itemPtr->state; - (void)display; if (state == TK_STATE_NULL) { state = Canvas(canvas)->canvas_state; } Index: generic/tkCanvLine.c ================================================================== --- generic/tkCanvLine.c +++ generic/tkCanvLine.c @@ -232,11 +232,11 @@ configSpecs, /* configSpecs */ ConfigureLine, /* configureProc */ LineCoords, /* coordProc */ DeleteLine, /* deleteProc */ DisplayLine, /* displayProc */ - TK_MOVABLE_POINTS, /* flags */ + TK_CONFIG_OBJS | TK_MOVABLE_POINTS, /* flags */ LineToPoint, /* pointProc */ LineToArea, /* areaProc */ LineToPostscript, /* postscriptProc */ ScaleLine, /* scaleProc */ TranslateLine, /* translateProc */ @@ -483,11 +483,11 @@ Tk_Window tkwin; Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, linePtr, flags)) { + (const char **)objv, (char *)linePtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * A few of the options require additional processing, such as graphics Index: generic/tkCanvPoly.c ================================================================== --- generic/tkCanvPoly.c +++ generic/tkCanvPoly.c @@ -197,11 +197,11 @@ configSpecs, /* configSpecs */ ConfigurePolygon, /* configureProc */ PolygonCoords, /* coordProc */ DeletePolygon, /* deleteProc */ DisplayPolygon, /* displayProc */ - TK_MOVABLE_POINTS, /* flags */ + TK_CONFIG_OBJS | TK_MOVABLE_POINTS, /* flags */ PolygonToPoint, /* pointProc */ PolygonToArea, /* areaProc */ PolygonToPostscript, /* postscriptProc */ ScalePolygon, /* scaleProc */ TranslatePolygon, /* translateProc */ @@ -444,11 +444,11 @@ Pixmap stipple; Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, polyPtr, flags)) { + (const char **) objv, (char *) polyPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * A few of the options require additional processing, such as graphics Index: generic/tkCanvPs.c ================================================================== --- generic/tkCanvPs.c +++ generic/tkCanvPs.c @@ -42,37 +42,34 @@ typedef struct TkPostscriptInfo { int x, y, width, height; /* Area to print, in canvas pixel * coordinates. */ int x2, y2; /* x+width and y+height. */ - char *pageXString; /* String value of "-pagex" option or NULL. */ - char *pageYString; /* String value of "-pagey" option or NULL. */ + Tcl_Obj *pageXObj; /* Value of "-pagex" option or NULL. */ + Tcl_Obj *pageYObj; /* Value of "-pagey" option or NULL. */ double pageX, pageY; /* Postscript coordinates (in points) * corresponding to pageXString and * pageYString. Don't forget that y-values * grow upwards for Postscript! */ - char *pageWidthString; /* Printed width of output. */ - char *pageHeightString; /* Printed height of output. */ + Tcl_Obj *pageWidthObj; /* Printed width of output. */ + Tcl_Obj *pageHeightObj; /* Printed height of output. */ double scale; /* Scale factor for conversion: each pixel * maps into this many points. */ Tk_Anchor pageAnchor; /* How to anchor bbox on Postscript page. */ int rotate; /* Non-zero means output should be rotated on * page (landscape mode). */ - char *fontVar; /* If non-NULL, gives name of global variable - * containing font mapping information. - * Malloc'ed. */ - char *colorVar; /* If non-NULL, give name of global variable - * containing color mapping information. - * Malloc'ed. */ - char *colorMode; /* Mode for handling colors: "monochrome", - * "gray", or "color". Malloc'ed. */ + Tcl_Obj *fontVarObj; /* If non-NULL, gives name of global variable + * containing font mapping information. */ + Tcl_Obj *colorVarObj; /* If non-NULL, give name of global variable + * containing color mapping information. */ + Tcl_Obj *colorModeObj; /* Mode for handling colors: "monochrome", + * "gray", or "color". */ int colorLevel; /* Numeric value corresponding to colorMode: 0 * for mono, 1 for gray, 2 for color. */ - char *fileName; /* Name of file in which to write Postscript; - * NULL means return Postscript info as - * result. Malloc'ed. */ - char *channelName; /* If -channel is specified, the name of the + Tcl_Obj *fileNameObj; /* Name of file in which to write Postscript; + * NULL means return Postscript info as result. */ + Tcl_Obj *channelNameObj; /* If -channel is specified, the name of the * channel to use. */ Tcl_Channel chan; /* Open channel corresponding to fileName. */ Tcl_HashTable fontTable; /* Hash table containing names of all font * families used in output. The hash table * values are not used. */ @@ -92,31 +89,31 @@ * canvas "postscript" command and fill in TkPostscriptInfo structures. */ static const Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_STRING, "-colormap", NULL, NULL, - "", offsetof(TkPostscriptInfo, colorVar), 0, NULL}, + "", offsetof(TkPostscriptInfo, colorVarObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-colormode", NULL, NULL, - "", offsetof(TkPostscriptInfo, colorMode), 0, NULL}, + "", offsetof(TkPostscriptInfo, colorModeObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-file", NULL, NULL, - "", offsetof(TkPostscriptInfo, fileName), 0, NULL}, + "", offsetof(TkPostscriptInfo, fileNameObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-channel", NULL, NULL, - "", offsetof(TkPostscriptInfo, channelName), 0, NULL}, + "", offsetof(TkPostscriptInfo, channelNameObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-fontmap", NULL, NULL, - "", offsetof(TkPostscriptInfo, fontVar), 0, NULL}, + "", offsetof(TkPostscriptInfo, fontVarObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_PIXELS, "-height", NULL, NULL, "", offsetof(TkPostscriptInfo, height), 0, NULL}, {TK_CONFIG_ANCHOR, "-pageanchor", NULL, NULL, "", offsetof(TkPostscriptInfo, pageAnchor), 0, NULL}, {TK_CONFIG_STRING, "-pageheight", NULL, NULL, - "", offsetof(TkPostscriptInfo, pageHeightString), 0, NULL}, + "", offsetof(TkPostscriptInfo, pageHeightObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-pagewidth", NULL, NULL, - "", offsetof(TkPostscriptInfo, pageWidthString), 0, NULL}, + "", offsetof(TkPostscriptInfo, pageWidthObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-pagex", NULL, NULL, - "", offsetof(TkPostscriptInfo, pageXString), 0, NULL}, + "", offsetof(TkPostscriptInfo, pageXObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-pagey", NULL, NULL, - "", offsetof(TkPostscriptInfo, pageYString), 0, NULL}, + "", offsetof(TkPostscriptInfo, pageYObj), TK_CONFIG_OBJS, NULL}, {TK_CONFIG_BOOLEAN, "-prolog", NULL, NULL, "", offsetof(TkPostscriptInfo, prolog), 0, NULL}, {TK_CONFIG_BOOLEAN, "-rotate", NULL, NULL, "", offsetof(TkPostscriptInfo, rotate), 0, NULL}, {TK_CONFIG_PIXELS, "-width", NULL, NULL, @@ -131,11 +128,11 @@ /* * Forward declarations for functions defined later in this file: */ static int GetPostscriptPoints(Tcl_Interp *interp, - char *string, double *doublePtr); + Tcl_Obj *value, double *doublePtr); static void PostscriptBitmap(Tk_Window tkwin, Pixmap bitmap, int startX, int startY, int width, int height, Tcl_Obj *psObj); static inline Tcl_Obj * GetPostscriptBuffer(Tcl_Interp *interp); @@ -214,32 +211,32 @@ canvasPtr->psInfo = (Tk_PostscriptInfo) psInfoPtr; psInfo.x = canvasPtr->xOrigin; psInfo.y = canvasPtr->yOrigin; psInfo.width = -1; psInfo.height = -1; - psInfo.pageXString = NULL; - psInfo.pageYString = NULL; + psInfo.pageXObj = NULL; + psInfo.pageYObj = NULL; psInfo.pageX = 72*4.25; psInfo.pageY = 72*5.5; - psInfo.pageWidthString = NULL; - psInfo.pageHeightString = NULL; + psInfo.pageWidthObj = NULL; + psInfo.pageHeightObj = NULL; psInfo.scale = 1.0; psInfo.pageAnchor = TK_ANCHOR_CENTER; psInfo.rotate = 0; - psInfo.fontVar = NULL; - psInfo.colorVar = NULL; - psInfo.colorMode = NULL; + psInfo.fontVarObj = NULL; + psInfo.colorVarObj = NULL; + psInfo.colorModeObj = NULL; psInfo.colorLevel = 0; - psInfo.fileName = NULL; - psInfo.channelName = NULL; + psInfo.fileNameObj = NULL; + psInfo.channelNameObj = NULL; psInfo.chan = NULL; psInfo.prepass = 0; psInfo.prolog = 1; psInfo.tkwin = tkwin; Tcl_InitHashTable(&psInfo.fontTable, TCL_STRING_KEYS); - result = Tk_ConfigureWidget(interp, tkwin, configSpecs, objc-2, objv+2, - &psInfo, TK_CONFIG_ARGV_ONLY); + result = Tk_ConfigureWidget(interp, tkwin, configSpecs, objc-2, (const char **)objv+2, + (char *)&psInfo, TK_CONFIG_ARGV_ONLY|TK_CONFIG_OBJS); if (result != TCL_OK) { goto cleanup; } if (psInfo.width == -1) { @@ -249,30 +246,30 @@ psInfo.height = Tk_Height(tkwin); } psInfo.x2 = psInfo.x + psInfo.width; psInfo.y2 = psInfo.y + psInfo.height; - if (psInfo.pageXString != NULL) { - if (GetPostscriptPoints(interp, psInfo.pageXString, + if (psInfo.pageXObj != NULL) { + if (GetPostscriptPoints(interp, psInfo.pageXObj, &psInfo.pageX) != TCL_OK) { goto cleanup; } } - if (psInfo.pageYString != NULL) { - if (GetPostscriptPoints(interp, psInfo.pageYString, + if (psInfo.pageYObj != NULL) { + if (GetPostscriptPoints(interp, psInfo.pageYObj, &psInfo.pageY) != TCL_OK) { goto cleanup; } } - if (psInfo.pageWidthString != NULL) { - if (GetPostscriptPoints(interp, psInfo.pageWidthString, + if (psInfo.pageWidthObj != NULL) { + if (GetPostscriptPoints(interp, psInfo.pageWidthObj, &psInfo.scale) != TCL_OK) { goto cleanup; } psInfo.scale /= psInfo.width; - } else if (psInfo.pageHeightString != NULL) { - if (GetPostscriptPoints(interp, psInfo.pageHeightString, + } else if (psInfo.pageHeightObj != NULL) { + if (GetPostscriptPoints(interp, psInfo.pageHeightObj, &psInfo.scale) != TCL_OK) { goto cleanup; } psInfo.scale /= psInfo.height; } else { @@ -308,36 +305,36 @@ default: deltaY = -psInfo.height/2; break; } - if (psInfo.colorMode == NULL) { + if (psInfo.colorModeObj == NULL) { psInfo.colorLevel = 2; } else { - length = strlen(psInfo.colorMode); - if (strncmp(psInfo.colorMode, "monochrome", length) == 0) { + length = strlen(Tcl_GetString(psInfo.colorModeObj)); + if (strncmp(Tcl_GetString(psInfo.colorModeObj), "monochrome", length) == 0) { psInfo.colorLevel = 0; - } else if (strncmp(psInfo.colorMode, "gray", length) == 0) { + } else if (strncmp(Tcl_GetString(psInfo.colorModeObj), "gray", length) == 0) { psInfo.colorLevel = 1; - } else if (strncmp(psInfo.colorMode, "color", length) == 0) { + } else if (strncmp(Tcl_GetString(psInfo.colorModeObj), "color", length) == 0) { psInfo.colorLevel = 2; } else { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad color mode \"%s\": must be monochrome, gray, or color", - psInfo.colorMode)); + Tcl_GetString(psInfo.colorModeObj))); Tcl_SetErrorCode(interp, "TK", "CANVAS", "PS", "COLORMODE", (char *)NULL); result = TCL_ERROR; goto cleanup; } } - if (psInfo.fileName != NULL) { + if (psInfo.fileNameObj != NULL) { /* * Check that -file and -channel are not both specified. */ - if (psInfo.channelName != NULL) { + if (psInfo.channelNameObj != NULL) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "can't specify both -file and -channel", TCL_INDEX_NONE)); Tcl_SetErrorCode(interp, "TK", "CANVAS", "PS", "USAGE", (char *)NULL); result = TCL_ERROR; goto cleanup; @@ -354,11 +351,11 @@ Tcl_SetErrorCode(interp, "TK", "SAFE", "PS_FILE", (char *)NULL); result = TCL_ERROR; goto cleanup; } - p = Tcl_TranslateFileName(interp, psInfo.fileName, &buffer); + p = Tcl_TranslateFileName(interp, Tcl_GetString(psInfo.fileNameObj), &buffer); if (p == NULL) { goto cleanup; } psInfo.chan = Tcl_OpenFileChannel(interp, p, "w", 0666); Tcl_DStringFree(&buffer); @@ -365,27 +362,27 @@ if (psInfo.chan == NULL) { goto cleanup; } } - if (psInfo.channelName != NULL) { + if (psInfo.channelNameObj != NULL) { int mode; /* * Check that the channel is found in this interpreter and that it is * open for writing. */ - psInfo.chan = Tcl_GetChannel(interp, psInfo.channelName, &mode); + psInfo.chan = Tcl_GetChannel(interp, Tcl_GetString(psInfo.channelNameObj), &mode); if (psInfo.chan == NULL) { result = TCL_ERROR; goto cleanup; } if (!(mode & TCL_WRITABLE)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "channel \"%s\" wasn't opened for writing", - psInfo.channelName)); + Tcl_GetString(psInfo.channelNameObj))); Tcl_SetErrorCode(interp, "TK", "CANVAS", "PS", "UNWRITABLE", (char *)NULL); result = TCL_ERROR; goto cleanup; } } @@ -617,39 +614,39 @@ /* * Clean up psInfo to release malloc'ed stuff. */ cleanup: - if (psInfo.pageXString != NULL) { - ckfree(psInfo.pageXString); - } - if (psInfo.pageYString != NULL) { - ckfree(psInfo.pageYString); - } - if (psInfo.pageWidthString != NULL) { - ckfree(psInfo.pageWidthString); - } - if (psInfo.pageHeightString != NULL) { - ckfree(psInfo.pageHeightString); - } - if (psInfo.fontVar != NULL) { - ckfree(psInfo.fontVar); - } - if (psInfo.colorVar != NULL) { - ckfree(psInfo.colorVar); - } - if (psInfo.colorMode != NULL) { - ckfree(psInfo.colorMode); - } - if (psInfo.fileName != NULL) { - ckfree(psInfo.fileName); - } - if ((psInfo.chan != NULL) && (psInfo.channelName == NULL)) { + if (psInfo.pageXObj != NULL) { + Tcl_DecrRefCount(psInfo.pageXObj); + } + if (psInfo.pageYObj != NULL) { + Tcl_DecrRefCount(psInfo.pageYObj); + } + if (psInfo.pageWidthObj != NULL) { + Tcl_DecrRefCount(psInfo.pageWidthObj); + } + if (psInfo.pageHeightObj != NULL) { + Tcl_DecrRefCount(psInfo.pageHeightObj); + } + if (psInfo.fontVarObj != NULL) { + Tcl_DecrRefCount(psInfo.fontVarObj); + } + if (psInfo.colorVarObj != NULL) { + Tcl_DecrRefCount(psInfo.colorVarObj); + } + if (psInfo.colorModeObj != NULL) { + Tcl_DecrRefCount(psInfo.colorModeObj); + } + if (psInfo.fileNameObj != NULL) { + Tcl_DecrRefCount(psInfo.fileNameObj); + } + if ((psInfo.chan != NULL) && (psInfo.channelNameObj == NULL)) { Tcl_Close(interp, psInfo.chan); } - if (psInfo.channelName != NULL) { - ckfree(psInfo.channelName); + if (psInfo.channelNameObj != NULL) { + Tcl_DecrRefCount(psInfo.channelNameObj); } Tcl_DeleteHashTable(&psInfo.fontTable); canvasPtr->psInfo = (Tk_PostscriptInfo) oldInfoPtr; Tcl_DecrRefCount(preambleObj); Tcl_DecrRefCount(psObj); @@ -706,12 +703,12 @@ /* * If there is a color map defined, then look up the color's name in the * map and use the Postscript commands found there, if there are any. */ - if (psInfoPtr->colorVar != NULL) { - const char *cmdString = Tcl_GetVar2(interp, psInfoPtr->colorVar, + if (psInfoPtr->colorVarObj != NULL) { + const char *cmdString = Tcl_GetVar2(interp, Tcl_GetString(psInfoPtr->colorVarObj), Tk_NameOfColor(colorPtr), 0); if (cmdString != NULL) { Tcl_AppendPrintfToObj(GetPostscriptBuffer(interp), "%s\n", cmdString); @@ -778,16 +775,16 @@ * First, look up the font's name in the font map, if there is one. If * there is an entry for this font, it consists of a list containing font * name and size. Use this information. */ - if (psInfoPtr->fontVar != NULL) { + if (psInfoPtr->fontVarObj != NULL) { const char *name = Tk_NameOfFont(tkfont); Tcl_Obj **objv; Tcl_Size objc; double size; - Tcl_Obj *list = Tcl_GetVar2Ex(interp, psInfoPtr->fontVar, name, 0); + Tcl_Obj *list = Tcl_GetVar2Ex(interp, Tcl_GetString(psInfoPtr->fontVarObj), name, 0); if (list != NULL) { if (Tcl_ListObjGetElements(interp, list, &objc, &objv) != TCL_OK || objc != 2 || (fontname = Tcl_GetString(objv[0]))[0] == '\0' @@ -1099,18 +1096,18 @@ */ static int GetPostscriptPoints( Tcl_Interp *interp, /* Use this for error reporting. */ - char *string, /* String describing a screen distance. */ + Tcl_Obj *value, /* Describing a screen distance. */ double *doublePtr) /* Place to store converted result. */ { - const char *rest; + const char *rest, *string = Tcl_GetString(value); double d; Tcl_DString ds; - if (Tcl_GetDouble(NULL, string, &d) == TCL_OK) { + if (Tcl_GetDoubleFromObj(NULL, value, &d) == TCL_OK) { *doublePtr = d; return TCL_OK; } rest = string + strlen(string); while ((rest > string) && isspace(UCHAR(rest[-1]))) { Index: generic/tkCanvText.c ================================================================== --- generic/tkCanvText.c +++ generic/tkCanvText.c @@ -148,11 +148,15 @@ { int underline = *(int *)(widgRec + offset); char *p; if (underline == INT_MIN) { +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + p = (char *)"-1"; +#else p = (char *)""; +#endif *freeProcPtr = TCL_STATIC; return p; } else if (underline == INT_MAX) { p = (char *)"end+1"; *freeProcPtr = TCL_STATIC; @@ -270,11 +274,11 @@ configSpecs, /* configSpecs */ ConfigureText, /* configureProc */ TextCoords, /* coordProc */ DeleteText, /* deleteProc */ DisplayCanvText, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ TextToPoint, /* pointProc */ TextToArea, /* areaProc */ TextToPostscript, /* postscriptProc */ ScaleText, /* scaleProc */ TranslateText, /* translateProc */ @@ -492,11 +496,11 @@ Pixmap stipple; Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, textPtr, flags)) { + (const char **) objv, (char *) textPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * A few of the options require additional processing, such as graphics @@ -588,11 +592,11 @@ * If the text was changed, move the selection and insertion indices to * keep them inside the item. */ textPtr->numBytes = strlen(textPtr->text); - textPtr->numChars = Tcl_NumUtfChars(textPtr->text, textPtr->numBytes); + textPtr->numChars = TkNumUtfChars(textPtr->text, textPtr->numBytes); if (textInfoPtr->selItemPtr == itemPtr) { if (textInfoPtr->selectFirst >= textPtr->numChars) { textInfoPtr->selItemPtr = NULL; } else { @@ -1113,11 +1117,11 @@ strcpy(newStr + byteIndex, string); strcpy(newStr + byteIndex + byteCount, text + byteIndex); ckfree(text); textPtr->text = newStr; - charsAdded = Tcl_NumUtfChars(string, byteCount); + charsAdded = TkNumUtfChars(string, byteCount); textPtr->numChars += charsAdded; textPtr->numBytes += byteCount; /* * Inserting characters invalidates indices such as those for the @@ -1183,12 +1187,12 @@ if (first > last) { return; } charsRemoved = last + 1 - first; - byteIndex = Tcl_UtfAtIndex(text, first) - text; - byteCount = Tcl_UtfAtIndex(text + byteIndex, charsRemoved) + byteIndex = TkUtfAtIndex(text, first) - text; + byteCount = TkUtfAtIndex(text + byteIndex, charsRemoved) - (text + byteIndex); newStr = (char *)ckalloc(textPtr->numBytes + 1 - byteCount); memcpy(newStr, text, byteIndex); strcpy(newStr + byteIndex, text + byteIndex + byteCount); @@ -1606,12 +1610,12 @@ if ((textInfoPtr->selectFirst < 0) || (textInfoPtr->selectFirst > textInfoPtr->selectLast)) { return 0; } text = textPtr->text; - selStart = Tcl_UtfAtIndex(text, textInfoPtr->selectFirst); - selEnd = Tcl_UtfAtIndex(selStart, + selStart = TkUtfAtIndex(text, textInfoPtr->selectFirst); + selEnd = TkUtfAtIndex(selStart, textInfoPtr->selectLast + 1 - textInfoPtr->selectFirst); if (selEnd <= selStart + offset) { return 0; } byteCount = selEnd - selStart - offset; Index: generic/tkCanvUtil.c ================================================================== --- generic/tkCanvUtil.c +++ generic/tkCanvUtil.c @@ -969,10 +969,13 @@ outline->gc = NULL; outline->width = 1.0; outline->activeWidth = 0.0; outline->disabledWidth = 0.0; outline->offset = 0; + outline->offsetObj = NULL; + outline->reserved2 = NULL; + outline->reserved3 = NULL; outline->dash.number = 0; outline->activeDash.number = 0; outline->disabledDash.number = 0; outline->tsoffset.flags = 0; outline->tsoffset.xoffset = 0; @@ -1138,10 +1141,14 @@ mask |= GCStipple|GCFillStyle; } } if (mask && (dash->number != 0)) { gcValues->line_style = LineOnOffDash; + if (outline->offsetObj && Tk_GetPixelsFromObj(NULL, Canvas(canvas)->tkwin, + outline->offsetObj, &outline->offset) != TCL_OK) { + outline->offset = 0; + } gcValues->dash_offset = outline->offset; if ((unsigned int)ABS(dash->number) > sizeof(char *)) { gcValues->dashes = dash->pattern.pt[0]; } else if (dash->number != 0) { gcValues->dashes = dash->pattern.array[0]; @@ -1186,10 +1193,14 @@ width = outline->width; if (width < 1.0) { width = 1.0; } + if (outline->offsetObj && Tk_GetPixelsFromObj(NULL, Canvas(canvas)->tkwin, + outline->offsetObj, &outline->offset) != TCL_OK) { + outline->offset = 0; + } dash = &(outline->dash); color = outline->color; stipple = outline->stipple; if (state == TK_STATE_NULL) { state = Canvas(canvas)->canvas_state; @@ -1303,10 +1314,14 @@ Tk_State state = item->state; width = outline->width; if (width < 1.0) { width = 1.0; + } + if (outline->offsetObj && Tk_GetPixelsFromObj(NULL, Canvas(canvas)->tkwin, + outline->offsetObj, &outline->offset) != TCL_OK) { + outline->offset = 0; } dash = &(outline->dash); color = outline->color; stipple = outline->stipple; if (state == TK_STATE_NULL) { @@ -1428,10 +1443,14 @@ if (outline->disabledStipple != None) { stipple = outline->disabledStipple; } } + if (outline->offsetObj && Tk_GetPixelsFromObj(NULL, Canvas(canvas)->tkwin, + outline->offsetObj, &outline->offset) != TCL_OK) { + outline->offset = 0; + } Tcl_AppendPrintfToObj(psObj, "%.15g setlinewidth\n", width); ptr = ((unsigned) ABS(dash->number) > sizeof(char *)) ? dash->pattern.pt : dash->pattern.array; Tcl_AppendToObj(psObj, "[", TCL_INDEX_NONE); Index: generic/tkCanvWind.c ================================================================== --- generic/tkCanvWind.c +++ generic/tkCanvWind.c @@ -118,11 +118,11 @@ configSpecs, /* configSpecs */ ConfigureWinItem, /* configureProc */ WinItemCoords, /* coordProc */ DeleteWinItem, /* deleteProc */ DisplayWinItem, /* displayProc */ - TK_ALWAYS_REDRAW, /* flags */ + TK_ALWAYS_REDRAW|TK_CONFIG_OBJS, /* flags */ WinItemToPoint, /* pointProc */ WinItemToArea, /* areaProc */ WinItemToPostscript, /* postscriptProc */ ScaleWinItem, /* scaleProc */ TranslateWinItem, /* translateProc */ @@ -314,11 +314,11 @@ Tk_Window canvasTkwin; oldWindow = winItemPtr->tkwin; canvasTkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, canvasTkwin, configSpecs, objc, - objv, winItemPtr, flags)) { + (const char **) objv, (char *) winItemPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } /* * A few of the options require additional processing. Index: generic/tkCanvas.c ================================================================== --- generic/tkCanvas.c +++ generic/tkCanvas.c @@ -136,12 +136,12 @@ offsetof(TkCanvas, tsoffset),TK_CONFIG_DONT_SET_DEFAULT, &offsetOption}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_CANVAS_RELIEF, offsetof(TkCanvas, relief), 0, NULL}, {TK_CONFIG_STRING, "-scrollregion", "scrollRegion", "ScrollRegion", - DEF_CANVAS_SCROLL_REGION, offsetof(TkCanvas, regionString), - TK_CONFIG_NULL_OK, NULL}, + DEF_CANVAS_SCROLL_REGION, offsetof(TkCanvas, regionObj), + TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_CANVAS_SELECT_COLOR, offsetof(TkCanvas, textInfo.selBorder), TK_CONFIG_COLOR_ONLY, NULL}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_CANVAS_SELECT_MONO, offsetof(TkCanvas, textInfo.selBorder), @@ -160,24 +160,24 @@ TK_CONFIG_MONO_ONLY|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_CUSTOM, "-state", "state", "State", "normal", offsetof(TkCanvas, canvas_state), TK_CONFIG_DONT_SET_DEFAULT, &stateOption}, {TK_CONFIG_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_CANVAS_TAKE_FOCUS, offsetof(TkCanvas, takeFocus), - TK_CONFIG_NULL_OK, NULL}, + DEF_CANVAS_TAKE_FOCUS, offsetof(TkCanvas, takeFocusObj), + TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_CANVAS_WIDTH, offsetof(TkCanvas, width), 0, NULL}, {TK_CONFIG_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", - DEF_CANVAS_X_SCROLL_CMD, offsetof(TkCanvas, xScrollCmd), - TK_CONFIG_NULL_OK, NULL}, + DEF_CANVAS_X_SCROLL_CMD, offsetof(TkCanvas, xScrollCmdObj), + TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_PIXELS, "-xscrollincrement", "xScrollIncrement", "ScrollIncrement", DEF_CANVAS_X_SCROLL_INCREMENT, offsetof(TkCanvas, xScrollIncrement), 0, NULL}, {TK_CONFIG_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand", - DEF_CANVAS_Y_SCROLL_CMD, offsetof(TkCanvas, yScrollCmd), - TK_CONFIG_NULL_OK, NULL}, + DEF_CANVAS_Y_SCROLL_CMD, offsetof(TkCanvas, yScrollCmdObj), + TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_PIXELS, "-yscrollincrement", "yScrollIncrement", "ScrollIncrement", DEF_CANVAS_Y_SCROLL_INCREMENT, offsetof(TkCanvas, yScrollIncrement), 0, NULL}, {TK_CONFIG_END, NULL, NULL, NULL, NULL, 0, 0, NULL} @@ -258,10 +258,13 @@ Tcl_Obj *newTagObj, Tcl_Size first, TagSearch **searchPtrPtr); static int FindArea(Tcl_Interp *interp, TkCanvas *canvasPtr, Tcl_Obj *const *objv, Tk_Uid uid, int enclosed); static double GridAlign(double coord, double spacing); +#if !defined(TK_NO_DEPRECATED) && (TK_MAJOR_VERSION < 9) +static const char** TkGetStringsFromObjs(Tcl_Size objc, Tcl_Obj *const *objv); +#endif static void InitCanvas(void); static void PickCurrentItem(TkCanvas *canvasPtr, XEvent *eventPtr); static Tcl_Obj * ScrollFractions(int screen1, int screen2, int object1, int object2); static int RelinkItems(TkCanvas *canvasPtr, Tcl_Obj *tag, @@ -323,11 +326,11 @@ static inline int AlwaysRedraw( Tk_Item *itemPtr) { - return itemPtr->typePtr->flags & TK_ALWAYS_REDRAW; + return itemPtr->typePtr->alwaysRedraw & 1; } static inline int ItemConfigure( TkCanvas *canvasPtr, @@ -334,13 +337,29 @@ Tk_Item *itemPtr, Tcl_Size objc, Tcl_Obj *const objv[]) { Tcl_Interp *interp = canvasPtr->interp; + int result; - return itemPtr->typePtr->configProc(interp, (Tk_Canvas) canvasPtr, - itemPtr, objc, objv, TK_CONFIG_ARGV_ONLY); + if (itemPtr->typePtr->alwaysRedraw & TK_CONFIG_OBJS) { + result = itemPtr->typePtr->configProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, objc, objv, TK_CONFIG_ARGV_ONLY); + } else { +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#else + const char **args = TkGetStringsFromObjs(objc, objv); + + result = itemPtr->typePtr->configProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, objc, (Tcl_Obj **) args, TK_CONFIG_ARGV_ONLY); + if (args != NULL) { + ckfree(args); + } +#endif + } + return result; } static inline int ItemConfigInfo( TkCanvas *canvasPtr, @@ -373,13 +392,25 @@ Tcl_Interp *interp = canvasPtr->interp; int result; if (itemPtr->typePtr->coordProc == NULL) { result = TCL_OK; - } else { + } else if (itemPtr->typePtr->alwaysRedraw & TK_CONFIG_OBJS) { result = itemPtr->typePtr->coordProc(interp, (Tk_Canvas) canvasPtr, itemPtr, objc, objv); + } else { +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#else + const char **args = TkGetStringsFromObjs(objc, objv); + + result = itemPtr->typePtr->coordProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, objc, (Tcl_Obj **) args); + if (args != NULL) { + ckfree(args); + } +#endif } return result; } static inline int @@ -389,13 +420,29 @@ * set by this point. */ Tcl_Size objc, Tcl_Obj *const objv[]) { Tcl_Interp *interp = canvasPtr->interp; + int result; - return itemPtr->typePtr->createProc(interp, (Tk_Canvas) canvasPtr, + if (itemPtr->typePtr->alwaysRedraw & TK_CONFIG_OBJS) { + result = itemPtr->typePtr->createProc(interp, (Tk_Canvas) canvasPtr, itemPtr, objc-3, objv+3); + } else { +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#else + const char **args = TkGetStringsFromObjs(objc-3, objv+3); + + result = itemPtr->typePtr->createProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, objc-3, (Tcl_Obj **) args); + if (args != NULL) { + ckfree(args); + } +#endif + } + return result; } static inline void ItemCursor( TkCanvas *canvasPtr, @@ -445,24 +492,42 @@ { Tcl_Interp *interp = canvasPtr->interp; if (itemPtr->typePtr->indexProc == NULL) { return TCL_OK; + } else if (itemPtr->typePtr->alwaysRedraw & TK_CONFIG_OBJS) { + return itemPtr->typePtr->indexProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, objPtr, indexPtr); + } else { +#if defined(TK_NO_DEPRECATED) + Tcl_AppendResult(interp, "Flag TK_CONFIG_OBJS is mandatory", (char *)NULL); + return TCL_ERROR; +#else + return itemPtr->typePtr->indexProc(interp, (Tk_Canvas) canvasPtr, + itemPtr, (Tcl_Obj *) Tcl_GetString(objPtr), indexPtr); +#endif } - return itemPtr->typePtr->indexProc(interp, (Tk_Canvas) canvasPtr, - itemPtr, objPtr, indexPtr); } static inline void ItemInsert( TkCanvas *canvasPtr, Tk_Item *itemPtr, int beforeThis, Tcl_Obj *toInsert) { - itemPtr->typePtr->insertProc((Tk_Canvas) canvasPtr, itemPtr, - beforeThis, toInsert); + if (itemPtr->typePtr->alwaysRedraw & TK_CONFIG_OBJS) { + itemPtr->typePtr->insertProc((Tk_Canvas) canvasPtr, itemPtr, + beforeThis, toInsert); + } else { +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#else + itemPtr->typePtr->insertProc((Tk_Canvas) canvasPtr, itemPtr, + beforeThis, (Tcl_Obj *) Tcl_GetString(toInsert)); +#endif + } } static inline int ItemOverlap( TkCanvas *canvasPtr, @@ -714,27 +779,27 @@ canvasPtr->closeEnough = 0.0; canvasPtr->pickEvent.type = LeaveNotify; canvasPtr->pickEvent.xcrossing.x = 0; canvasPtr->pickEvent.xcrossing.y = 0; canvasPtr->state = 0; - canvasPtr->xScrollCmd = NULL; - canvasPtr->yScrollCmd = NULL; + canvasPtr->xScrollCmdObj = NULL; + canvasPtr->yScrollCmdObj = NULL; canvasPtr->scrollX1 = 0; canvasPtr->scrollY1 = 0; canvasPtr->scrollX2 = 0; canvasPtr->scrollY2 = 0; - canvasPtr->regionString = NULL; + canvasPtr->regionObj = NULL; canvasPtr->xScrollIncrement = 0; canvasPtr->yScrollIncrement = 0; canvasPtr->scanX = 0; canvasPtr->scanXOrigin = 0; canvasPtr->scanY = 0; canvasPtr->scanYOrigin = 0; canvasPtr->hotPtr = NULL; canvasPtr->hotPrevPtr = NULL; canvasPtr->cursor = NULL; - canvasPtr->takeFocus = NULL; + canvasPtr->takeFocusObj = NULL; canvasPtr->pixelsPerMM = WidthOfScreen(Tk_Screen(newWin)); canvasPtr->pixelsPerMM /= WidthMMOfScreen(Tk_Screen(newWin)); canvasPtr->flags = 0; canvasPtr->nextId = 1; canvasPtr->psInfo = NULL; @@ -1165,11 +1230,11 @@ * support the same semantics of index, dChars and insert methods * as lines and canvases. */ if (itemPtr == NULL || - !(itemPtr->typePtr->flags & TK_MOVABLE_POINTS)) { + !(itemPtr->typePtr->alwaysRedraw & TK_MOVABLE_POINTS)) { continue; } result = ItemIndex(canvasPtr, itemPtr, objv[3], &index); if (result != TCL_OK) { @@ -2052,18 +2117,18 @@ + (int) (fraction * (canvasPtr->scrollX2 - canvasPtr->scrollX1) + 0.5); break; case TK_SCROLL_PAGES: newX = (int) (canvasPtr->xOrigin + count * .9 - * (Tk_Width(canvasPtr->tkwin) - 2*canvasPtr->inset)); + * (Tk_Width(canvasPtr->tkwin) - 2 * canvasPtr->inset)); break; case TK_SCROLL_UNITS: if (canvasPtr->xScrollIncrement > 0) { - newX = canvasPtr->xOrigin + count*canvasPtr->xScrollIncrement; + newX = canvasPtr->xOrigin + count * canvasPtr->xScrollIncrement; } else { newX = (int) (canvasPtr->xOrigin + count * .1 - * (Tk_Width(canvasPtr->tkwin) - 2*canvasPtr->inset)); + * (Tk_Width(canvasPtr->tkwin) - 2 * canvasPtr->inset)); } break; default: result = TCL_ERROR; goto done; @@ -2092,18 +2157,18 @@ newY = canvasPtr->scrollY1 - canvasPtr->inset + (int) ( fraction*(canvasPtr->scrollY2-canvasPtr->scrollY1) + 0.5); break; case TK_SCROLL_PAGES: newY = (int) (canvasPtr->yOrigin + count * .9 - * (Tk_Height(canvasPtr->tkwin) - 2*canvasPtr->inset)); + * (Tk_Height(canvasPtr->tkwin) - 2 * canvasPtr->inset)); break; case TK_SCROLL_UNITS: if (canvasPtr->yScrollIncrement > 0) { - newY = canvasPtr->yOrigin + count*canvasPtr->yScrollIncrement; + newY = canvasPtr->yOrigin + count * canvasPtr->yScrollIncrement; } else { newY = (int) (canvasPtr->yOrigin + count * .1 - * (Tk_Height(canvasPtr->tkwin) - 2*canvasPtr->inset)); + * (Tk_Height(canvasPtr->tkwin) - 2 * canvasPtr->inset)); } break; default: result = TCL_ERROR; goto done; @@ -2259,12 +2324,12 @@ XGCValues gcValues; GC newGC; Tk_State old_canvas_state=canvasPtr->canvas_state; if (Tk_ConfigureWidget(interp, canvasPtr->tkwin, configSpecs, - objc, objv, canvasPtr, - flags) != TCL_OK) { + objc, (const char **) objv, (char *) canvasPtr, + flags|TK_CONFIG_OBJS) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the background @@ -2271,14 +2336,38 @@ * from a 3-D border and creating a GC for copying bits to the screen. */ Tk_SetBackgroundFromBorder(canvasPtr->tkwin, canvasPtr->bgBorder); + if (canvasPtr->borderWidth < 0) { + canvasPtr->borderWidth = 0; + } + if (canvasPtr->height < 0) { + canvasPtr->height = 0; + } if (canvasPtr->highlightWidth < 0) { canvasPtr->highlightWidth = 0; } + if (canvasPtr->width < 0) { + canvasPtr->width = 0; + } + if (canvasPtr->xScrollIncrement < 0) { + canvasPtr->xScrollIncrement = 0; + } + if (canvasPtr->yScrollIncrement < 0) { + canvasPtr->yScrollIncrement = 0; + } canvasPtr->inset = canvasPtr->borderWidth + canvasPtr->highlightWidth; + if (canvasPtr->textInfo.insertBorderWidth < 0) { + canvasPtr->textInfo.insertBorderWidth = 0; + } + if (canvasPtr->textInfo.insertWidth < 0) { + canvasPtr->textInfo.insertWidth = 0; + } + if (canvasPtr->textInfo.selBorderWidth < 0) { + canvasPtr->textInfo.selBorderWidth = 0; + } gcValues.function = GXcopy; gcValues.graphics_exposures = False; gcValues.foreground = Tk_3DBorderColor(canvasPtr->bgBorder)->pixel; newGC = Tk_GetGC(canvasPtr->tkwin, @@ -2311,12 +2400,12 @@ /* * Reset the desired dimensions for the window. */ - Tk_GeometryRequest(canvasPtr->tkwin, canvasPtr->width + 2*canvasPtr->inset, - canvasPtr->height + 2*canvasPtr->inset); + Tk_GeometryRequest(canvasPtr->tkwin, canvasPtr->width + 2 * canvasPtr->inset, + canvasPtr->height + 2 * canvasPtr->inset); /* * Restart the cursor timing sequence in case the on-time or off-time just * changed. */ @@ -2331,26 +2420,26 @@ canvasPtr->scrollX1 = 0; canvasPtr->scrollY1 = 0; canvasPtr->scrollX2 = 0; canvasPtr->scrollY2 = 0; - if (canvasPtr->regionString != NULL) { + if (canvasPtr->regionObj != NULL) { Tcl_Size argc2; const char **argv2; - if (Tcl_SplitList(canvasPtr->interp, canvasPtr->regionString, + if (Tcl_SplitList(canvasPtr->interp, Tcl_GetString(canvasPtr->regionObj), &argc2, &argv2) != TCL_OK) { return TCL_ERROR; } if (argc2 != 4) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad scrollRegion \"%s\"", canvasPtr->regionString)); + "bad scrollRegion \"%s\"", Tcl_GetString(canvasPtr->regionObj))); Tcl_SetErrorCode(interp, "TK", "CANVAS", "SCROLL_REGION", (char *)NULL); badRegion: - ckfree(canvasPtr->regionString); + Tcl_DecrRefCount(canvasPtr->regionObj); ckfree(argv2); - canvasPtr->regionString = NULL; + canvasPtr->regionObj = NULL; return TCL_ERROR; } if ((Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, argv2[0], &canvasPtr->scrollX1) != TCL_OK) || (Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, @@ -2366,18 +2455,18 @@ flags = canvasPtr->tsoffset.flags; if (flags & TK_OFFSET_LEFT) { canvasPtr->tsoffset.xoffset = 0; } else if (flags & TK_OFFSET_CENTER) { - canvasPtr->tsoffset.xoffset = canvasPtr->width/2; + canvasPtr->tsoffset.xoffset = canvasPtr->width / 2; } else if (flags & TK_OFFSET_RIGHT) { canvasPtr->tsoffset.xoffset = canvasPtr->width; } if (flags & TK_OFFSET_TOP) { canvasPtr->tsoffset.yoffset = 0; } else if (flags & TK_OFFSET_MIDDLE) { - canvasPtr->tsoffset.yoffset = canvasPtr->height/2; + canvasPtr->tsoffset.yoffset = canvasPtr->height / 2; } else if (flags & TK_OFFSET_BOTTOM) { canvasPtr->tsoffset.yoffset = canvasPtr->height; } /* @@ -2990,18 +3079,35 @@ TkCanvas *canvasPtr = (TkCanvas *)clientData; Tk_Window tkwin = canvasPtr->tkwin; Tk_Item *itemPtr; Pixmap pixmap; int screenX1, screenX2, screenY1, screenY2, width, height; +#ifdef MAC_OSX_TK + TkWindow *winPtr; + MacDrawable *macWin; +#endif if (canvasPtr->tkwin == NULL) { return; } if (!Tk_IsMapped(tkwin)) { goto done; } + +#ifdef MAC_OSX_TK + /* + * If drawing is disabled, all we need to do is + * clear the REDRAW_PENDING flag. + */ + winPtr = (TkWindow *)(canvasPtr->tkwin); + macWin = winPtr->privatePtr; + if (macWin && (macWin->flags & TK_DO_NOT_DRAW)){ + canvasPtr->flags &= ~REDRAW_PENDING; + return; + } +#endif /* * Choose a new current item if that is needed (this could cause event * handlers to be invoked). */ @@ -3173,12 +3279,12 @@ canvasPtr->flags &= ~REDRAW_BORDERS; if (canvasPtr->borderWidth > 0) { Tk_Draw3DRectangle(tkwin, Tk_WindowId(tkwin), canvasPtr->bgBorder, canvasPtr->highlightWidth, canvasPtr->highlightWidth, - Tk_Width(tkwin) - 2*canvasPtr->highlightWidth, - Tk_Height(tkwin) - 2*canvasPtr->highlightWidth, + Tk_Width(tkwin) - 2 * canvasPtr->highlightWidth, + Tk_Height(tkwin) - 2 * canvasPtr->highlightWidth, canvasPtr->borderWidth, canvasPtr->relief); } if (canvasPtr->highlightWidth > 0) { GC fgGC, bgGC; @@ -3281,12 +3387,12 @@ } else if (eventPtr->type == UnmapNotify) { Tk_Item *itemPtr; /* * Special hack: if the canvas is unmapped, then must notify all items - * with flag TK_ALWAYS_REDRAW set, so that they know that they are no - * longer displayed. + * with "alwaysRedraw" set, so that they know that they are no longer + * displayed. */ for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if (AlwaysRedraw(itemPtr)) { @@ -5824,27 +5930,27 @@ { int result; Tcl_Interp *interp; int xOrigin, yOrigin, inset, width, height; int scrollX1, scrollX2, scrollY1, scrollY2; - char *xScrollCmd, *yScrollCmd; + Tcl_Obj *xScrollCmdObj, *yScrollCmdObj; Tcl_DString buf; /* * Preserve the relevant values from the canvasPtr, because it might be * deleted as part of either of the two calls to Tcl_EvalEx below. */ interp = canvasPtr->interp; Tcl_Preserve(interp); - xScrollCmd = canvasPtr->xScrollCmd; - if (xScrollCmd != NULL) { - Tcl_Preserve(xScrollCmd); + xScrollCmdObj = canvasPtr->xScrollCmdObj; + if (xScrollCmdObj != NULL) { + Tcl_IncrRefCount(xScrollCmdObj); } - yScrollCmd = canvasPtr->yScrollCmd; - if (yScrollCmd != NULL) { - Tcl_Preserve(yScrollCmd); + yScrollCmdObj = canvasPtr->yScrollCmdObj; + if (yScrollCmdObj != NULL) { + Tcl_IncrRefCount(yScrollCmdObj); } xOrigin = canvasPtr->xOrigin; yOrigin = canvasPtr->yOrigin; inset = canvasPtr->inset; width = Tk_Width(canvasPtr->tkwin); @@ -5852,44 +5958,44 @@ scrollX1 = canvasPtr->scrollX1; scrollX2 = canvasPtr->scrollX2; scrollY1 = canvasPtr->scrollY1; scrollY2 = canvasPtr->scrollY2; canvasPtr->flags &= ~UPDATE_SCROLLBARS; - if (canvasPtr->xScrollCmd != NULL) { + if (canvasPtr->xScrollCmdObj != NULL) { Tcl_Obj *fractions = ScrollFractions(xOrigin + inset, xOrigin + width - inset, scrollX1, scrollX2); Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, xScrollCmd, TCL_INDEX_NONE); + Tcl_DStringAppend(&buf, Tcl_GetString(xScrollCmdObj), TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, Tcl_GetString(fractions), TCL_INDEX_NONE); result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); Tcl_DStringFree(&buf); Tcl_DecrRefCount(fractions); if (result != TCL_OK) { Tcl_BackgroundException(interp, result); } Tcl_ResetResult(interp); - Tcl_Release(xScrollCmd); + Tcl_DecrRefCount(xScrollCmdObj); } - if (yScrollCmd != NULL) { + if (yScrollCmdObj != NULL) { Tcl_Obj *fractions = ScrollFractions(yOrigin + inset, yOrigin + height - inset, scrollY1, scrollY2); Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, yScrollCmd, TCL_INDEX_NONE); + Tcl_DStringAppend(&buf, Tcl_GetString(yScrollCmdObj), TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, Tcl_GetString(fractions), TCL_INDEX_NONE); result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); Tcl_DStringFree(&buf); Tcl_DecrRefCount(fractions); if (result != TCL_OK) { Tcl_BackgroundException(interp, result); } Tcl_ResetResult(interp); - Tcl_Release(yScrollCmd); + Tcl_DecrRefCount(yScrollCmdObj); } Tcl_Release(interp); } /* @@ -5960,11 +6066,11 @@ * the scrollregion (but don't move it so much that the other side sticks * out now). If scroll increments are in effect, be sure to adjust only by * full increments. */ - if ((canvasPtr->confine) && (canvasPtr->regionString != NULL)) { + if ((canvasPtr->confine) && (canvasPtr->regionObj != NULL)) { left = xOrigin + canvasPtr->inset - canvasPtr->scrollX1; right = canvasPtr->scrollX2 - (xOrigin + Tk_Width(canvasPtr->tkwin) - canvasPtr->inset); top = yOrigin + canvasPtr->inset - canvasPtr->scrollY1; bottom = canvasPtr->scrollY2 @@ -6019,11 +6125,47 @@ Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin, canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin), canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)); } + +/* + *---------------------------------------------------------------------- + * + * TkGetStringsFromObjs -- + * + * Results: + * Converts object list into string list. + * + * Side effects: + * Memory is allocated for the objv array, which must be freed using + * ckfree() when no longer needed. + * + *---------------------------------------------------------------------- + */ + +#if !defined(TK_NO_DEPRECATED) && (TK_MAJOR_VERSION < 9) +static const char ** +TkGetStringsFromObjs( + Tcl_Size objc, + Tcl_Obj *const objv[]) +{ + Tcl_Size i; + const char **argv; + if (objc <= 0) { + return NULL; + } + argv = (const char **)ckalloc((objc+1) * sizeof(char *)); + for (i = 0; i < objc; i++) { + argv[i] = Tcl_GetString(objv[i]); + } + argv[objc] = 0; + return argv; +} +#endif + /* *-------------------------------------------------------------- * * Tk_CanvasPsColor -- * Index: generic/tkCanvas.h ================================================================== --- generic/tkCanvas.h +++ generic/tkCanvas.h @@ -153,24 +153,24 @@ /* * Information used for managing scrollbars: */ - char *xScrollCmd; /* Command prefix for communicating with + Tcl_Obj *xScrollCmdObj; /* Command prefix for communicating with * horizontal scrollbar. NULL means no - * horizontal scrollbar. Malloc'ed. */ - char *yScrollCmd; /* Command prefix for communicating with + * horizontal scrollbar. */ + Tcl_Obj *yScrollCmdObj; /* Command prefix for communicating with * vertical scrollbar. NULL means no vertical - * scrollbar. Malloc'ed. */ + * scrollbar. */ int scrollX1, scrollY1, scrollX2, scrollY2; /* These four coordinates define the region * that is the 100% area for scrolling (i.e. * these numbers determine the size and * location of the sliders on scrollbars). * Units are pixels in canvas coords. */ - char *regionString; /* The option string from which scrollX1 etc. - * are derived. Malloc'ed. */ + Tcl_Obj *regionObj; /* The option string from which scrollX1 etc. + * are derived. */ int xScrollIncrement; /* If >0, defines a grid for horizontal * scrolling. This is the size of the "unit", * and the left edge of the screen will always * lie on an even unit boundary. */ int yScrollIncrement; /* If >0, defines a grid for horizontal @@ -205,13 +205,13 @@ /* * Miscellaneous information: */ Tk_Cursor cursor; /* Current cursor for window, or NULL. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ double pixelsPerMM; /* Scale factor between MM and pixels; used * when converting coordinates. */ int flags; /* Various flags; see below for * definitions. */ Tcl_Size nextId; /* Number to use as id for next item created Index: generic/tkCmds.c ================================================================== --- generic/tkCmds.c +++ generic/tkCmds.c @@ -98,11 +98,11 @@ static const char *const bellOptions[] = { "-displayof", "-nice", NULL }; enum options { TK_BELL_DISPLAYOF, TK_BELL_NICE }; Tk_Window tkwin = (Tk_Window)clientData; - Tcl_Size i; + int i; int index, nice = 0; Tk_ErrorHandler handler; if (objc > 4) { wrongArgs: @@ -454,11 +454,11 @@ /* * Names starting with "." are malloced rather than Uids, so they * have to be freed. */ - ckfree((void *)p); + ckfree((char *)p); } } ckfree(winPtr->tagPtr); winPtr->numTags = 0; winPtr->tagPtr = NULL; @@ -488,11 +488,11 @@ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Tk_Window window; Tk_Window tkwin = (Tk_Window)clientData; - Tcl_Size i; + int i; for (i = 1; i < objc; i++) { window = Tk_NameToWindow(interp, Tcl_GetString(objv[i]), tkwin); if (window == NULL) { Tcl_ResetResult(interp); @@ -1300,11 +1300,11 @@ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int index, x, y, width, height, useX, useY, c_class; - Tcl_Size skip; + int skip; const char *string; TkWindow *winPtr; Tk_Window tkwin = (Tk_Window)clientData; static const TkStateMap visualMap[] = { @@ -1676,11 +1676,11 @@ } winPtr = (TkWindow *) Tk_IdToWindow(Tk_Display(tkwin), id); if ((winPtr == NULL) || (winPtr->mainPtr != ((TkWindow *) tkwin)->mainPtr)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "window id \"%s\" does not exist in this application", + "window id \"%s\" doesn't exist in this application", string)); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "WINDOW", string, (char *)NULL); return TCL_ERROR; } @@ -1774,15 +1774,15 @@ */ { Colormap temp = Tk_Colormap(tkwin); Tk_Colormap(tkwin) = TK_DYNAMIC_COLORMAP; - colorPtr = Tk_GetColor(interp, tkwin, Tcl_GetString(objv[3])); + colorPtr = Tk_AllocColorFromObj(interp, tkwin, objv[3]); Tk_Colormap(tkwin) = temp; } #else - colorPtr = Tk_GetColor(interp, tkwin, Tcl_GetString(objv[3])); + colorPtr = Tk_AllocColorFromObj(interp, tkwin, objv[3]); #endif if (colorPtr == NULL) { return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_ObjPrintf("%d %d %d", Index: generic/tkColor.c ================================================================== --- generic/tkColor.c +++ generic/tkColor.c @@ -115,11 +115,10 @@ if (tkColPtr->resourceRefCount == 0) { /* * This is a stale reference: it refers to a TkColor that's no * longer in use. Clear the reference. */ - FreeColorObj(objPtr); tkColPtr = NULL; } else if ((Tk_Screen(tkwin) == tkColPtr->screen) && (Tk_Colormap(tkwin) == tkColPtr->colormap)) { tkColPtr->resourceRefCount++; @@ -127,11 +126,11 @@ } } /* * The object didn't point to the TkColor that we wanted. Search the list - * of TkColors with the same name to see if one of the other TkColors is + * of TkColors with the same name to see if one of the saved TkColors is * the right one. */ if (tkColPtr != NULL) { TkColor *firstColorPtr = (TkColor *)Tcl_GetHashValue(tkColPtr->hashPtr); @@ -151,13 +150,14 @@ /* * Still no luck. Call Tk_GetColor to allocate a new TkColor object. */ - tkColPtr = (TkColor *) Tk_GetColor(interp, tkwin, Tcl_GetString(objPtr)); + tkColPtr = (TkColor *)Tk_GetColor(interp, tkwin, Tcl_GetString(objPtr)); objPtr->internalRep.twoPtrValue.ptr1 = tkColPtr; if (tkColPtr != NULL) { + /* The resourceRefCount is incremented by Tk_GetColor. */ tkColPtr->objRefCount++; } return (XColor *) tkColPtr; } @@ -188,11 +188,11 @@ XColor * Tk_GetColor( Tcl_Interp *interp, /* Place to leave error message if color can't * be found. */ Tk_Window tkwin, /* Window in which color will be used. */ - Tk_Uid name) /* Name of color to be allocated (in form + const char *name) /* Name of color to be allocated (in form * suitable for passing to XParseColor). */ { Tcl_HashEntry *nameHashPtr; int isNew; TkColor *tkColPtr; Index: generic/tkConsole.c ================================================================== --- generic/tkConsole.c +++ generic/tkConsole.c @@ -220,11 +220,11 @@ /* * Ensure that we are getting a compatible version of Tcl. */ - if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) { + if (Tcl_InitStubs(interp, "8.6-", 0) == NULL) { return; } consoleInitPtr = (int *)Tcl_GetThreadData(&consoleInitKey, (int) sizeof(int)); if (*consoleInitPtr) { @@ -439,11 +439,11 @@ ConsoleEventProc, info); info->refCount++; } Tcl_Preserve(consoleInterp); - result = Tcl_EvalEx(consoleInterp, "source $tk_library/console.tcl", + result = Tcl_EvalEx(consoleInterp, "source -encoding utf-8 $tk_library/console.tcl", TCL_INDEX_NONE, TCL_EVAL_GLOBAL); if (result == TCL_ERROR) { Tcl_SetReturnOptions(interp, Tcl_GetReturnOptions(consoleInterp, result)); Tcl_SetObjResult(interp, Tcl_GetObjResult(consoleInterp)); Index: generic/tkCursor.c ================================================================== --- generic/tkCursor.c +++ generic/tkCursor.c @@ -188,11 +188,11 @@ Tk_Cursor Tk_GetCursor( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ Tk_Window tkwin, /* Window in which cursor will be used. */ - Tk_Uid string) /* Description of cursor. See manual entry for + const char *string) /* Description of cursor. See manual entry for * details on legal syntax. */ { TkCursor *cursorPtr = TkcGetCursor(interp, tkwin, string); if (cursorPtr == NULL) { Index: generic/tkDList.h ================================================================== --- generic/tkDList.h +++ generic/tkDList.h @@ -438,11 +438,11 @@ __TK_DLIST_UNUSED \ static void \ LT##_Free(struct ElemType *elem) \ { \ LT##_Remove(elem); \ - ckfree((void *)elem); \ + ckfree((void *) elem); \ } \ \ __TK_DLIST_UNUSED \ static void \ LT##_RemoveHead(LT *head) \ @@ -506,11 +506,11 @@ struct ElemType *p; \ struct ElemType *next; \ assert(head); \ for (p = head->first; p; p = next) { \ next = LT##_Next(p); \ - ckfree((void *)p); \ + ckfree((void *) p); \ } \ LT##_Init(head); \ } \ \ __TK_DLIST_UNUSED \ Index: generic/tkDecls.h ================================================================== --- generic/tkDecls.h +++ generic/tkDecls.h @@ -140,11 +140,11 @@ void *widgRec, const char *argvName, int flags); /* 29 */ EXTERN int Tk_ConfigureWidget(Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, - Tcl_Size objc, Tcl_Obj *const *objv, + Tcl_Size argc, const char **argv, void *widgRec, int flags); /* 30 */ EXTERN void Tk_ConfigureWindow(Tk_Window tkwin, unsigned int valueMask, XWindowChanges *valuePtr); @@ -286,19 +286,21 @@ int needFlags); /* 75 */ EXTERN void Tk_FreePixmap(Display *display, Pixmap pixmap); /* 76 */ EXTERN void Tk_FreeTextLayout(Tk_TextLayout textLayout); -/* Slot 77 is reserved */ +/* 77 */ +TK_DEPRECATED("function does nothing, call can be removed") +void Tk_FreeXId(Display *display, XID xid); /* 78 */ EXTERN GC Tk_GCForColor(XColor *colorPtr, Drawable drawable); /* 79 */ EXTERN void Tk_GeometryRequest(Tk_Window tkwin, int reqWidth, int reqHeight); /* 80 */ EXTERN Tk_3DBorder Tk_Get3DBorder(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid colorName); + const char *colorName); /* 81 */ EXTERN void Tk_GetAllBindings(Tcl_Interp *interp, Tk_BindingTable bindingTable, void *object); /* 82 */ EXTERN int Tk_GetAnchor(Tcl_Interp *interp, const char *str, @@ -319,19 +321,19 @@ /* 87 */ EXTERN int Tk_GetCapStyle(Tcl_Interp *interp, const char *str, int *capPtr); /* 88 */ EXTERN XColor * Tk_GetColor(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid name); + const char *name); /* 89 */ EXTERN XColor * Tk_GetColorByValue(Tk_Window tkwin, XColor *colorPtr); /* 90 */ EXTERN Colormap Tk_GetColormap(Tcl_Interp *interp, Tk_Window tkwin, const char *str); /* 91 */ EXTERN Tk_Cursor Tk_GetCursor(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid str); + const char *str); /* 92 */ EXTERN Tk_Cursor Tk_GetCursorFromData(Tcl_Interp *interp, Tk_Window tkwin, const char *source, const char *mask, int width, int height, int xHot, int yHot, Tk_Uid fg, Tk_Uid bg); @@ -409,11 +411,12 @@ EXTERN Tk_Window Tk_IdToWindow(Display *display, Window window); /* 117 */ EXTERN void Tk_ImageChanged(Tk_ImageModel model, int x, int y, int width, int height, int imageWidth, int imageHeight); -/* Slot 118 is reserved */ +/* 118 */ +EXTERN int Tk_Init(Tcl_Interp *interp); /* 119 */ EXTERN Atom Tk_InternAtom(Tk_Window tkwin, const char *name); /* 120 */ EXTERN int Tk_IntersectTextLayout(Tk_TextLayout layout, int x, int y, int width, int height); @@ -471,22 +474,38 @@ Tk_LostSelProc *proc, void *clientData); /* 143 */ EXTERN int Tk_ParseArgv(Tcl_Interp *interp, Tk_Window tkwin, int *argcPtr, const char **argv, const Tk_ArgvInfo *argTable, int flags); -/* Slot 144 is reserved */ -/* Slot 145 is reserved */ +/* 144 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoPutBlock_NoComposite(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height); +/* 145 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoPutZoomedBlock_NoComposite( + Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int zoomX, int zoomY, + int subsampleX, int subsampleY); /* 146 */ EXTERN int Tk_PhotoGetImage(Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr); /* 147 */ EXTERN void Tk_PhotoBlank(Tk_PhotoHandle handle); -/* Slot 148 is reserved */ +/* 148 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoExpand_Panic(Tk_PhotoHandle handle, + int width, int height); /* 149 */ EXTERN void Tk_PhotoGetSize(Tk_PhotoHandle handle, int *widthPtr, int *heightPtr); -/* Slot 150 is reserved */ +/* 150 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoSetSize_Panic(Tk_PhotoHandle handle, + int width, int height); /* 151 */ EXTERN int Tk_PointToChar(Tk_TextLayout layout, int x, int y); /* 152 */ EXTERN int Tk_PostscriptFontName(Tk_Font tkfont, Tcl_DString *dsPtr); @@ -508,11 +527,12 @@ EXTERN int Tk_RestackWindow(Tk_Window tkwin, int aboveBelow, Tk_Window other); /* 158 */ EXTERN Tk_RestrictProc * Tk_RestrictEvents(Tk_RestrictProc *proc, void *arg, void **prevArgPtr); -/* Slot 159 is reserved */ +/* 159 */ +EXTERN int Tk_SafeInit(Tcl_Interp *interp); /* 160 */ EXTERN const char * Tk_SetAppName(Tk_Window tkwin, const char *name); /* 161 */ EXTERN void Tk_SetBackgroundFromBorder(Tk_Window tkwin, Tk_3DBorder border); @@ -657,21 +677,25 @@ Tcl_Size objc, Tcl_Obj *const objv[], double *dblPtr, int *intPtr); /* 211 */ EXTERN int Tk_InitOptions(Tcl_Interp *interp, void *recordPtr, Tk_OptionTable optionToken, Tk_Window tkwin); -/* Slot 212 is reserved */ +/* 212 */ +EXTERN void Tk_MainEx(Tcl_Size argc, char **argv, + Tcl_AppInitProc *appInitProc, + Tcl_Interp *interp); /* 213 */ EXTERN void Tk_RestoreSavedOptions(Tk_SavedOptions *savePtr); /* 214 */ EXTERN int Tk_SetOptions(Tcl_Interp *interp, void *recordPtr, Tk_OptionTable optionTable, Tcl_Size objc, Tcl_Obj *const objv[], Tk_Window tkwin, Tk_SavedOptions *savePtr, int *maskPtr); /* 215 */ EXTERN void Tk_InitConsoleChannels(Tcl_Interp *interp); -/* Slot 216 is reserved */ +/* 216 */ +EXTERN int Tk_CreateConsoleWindow(Tcl_Interp *interp); /* 217 */ EXTERN void Tk_CreateSmoothMethod(Tcl_Interp *interp, const Tk_SmoothMethod *method); /* Slot 218 is reserved */ /* Slot 219 is reserved */ @@ -759,12 +783,21 @@ EXTERN void Tk_SetMinimumRequestSize(Tk_Window tkwin, int minWidth, int minHeight); /* 245 */ EXTERN void Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height); -/* Slot 246 is reserved */ -/* Slot 247 is reserved */ +/* 246 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoPutBlock_Panic(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int compRule); +/* 247 */ +TK_DEPRECATED("function signature changed") +void Tk_PhotoPutZoomedBlock_Panic(Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, int x, int y, + int width, int height, int zoomX, int zoomY, + int subsampleX, int subsampleY, int compRule); /* 248 */ EXTERN int Tk_CollapseMotionEvents(Display *display, int collapse); /* 249 */ EXTERN Tk_StyleEngine Tk_RegisterStyleEngine(const char *name, @@ -786,12 +819,14 @@ /* 256 */ EXTERN const char * Tk_NameOfStyle(Tk_Style style); /* 257 */ EXTERN Tk_Style Tk_AllocStyleFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr); -/* Slot 258 is reserved */ -/* Slot 259 is reserved */ +/* 258 */ +EXTERN Tk_Style Tk_GetStyleFromObj(Tcl_Obj *objPtr); +/* 259 */ +EXTERN void Tk_FreeStyleFromObj(Tcl_Obj *objPtr); /* 260 */ EXTERN Tk_StyledElement Tk_GetStyledElement(Tk_Style style, Tcl_Size elementId, Tk_OptionTable optionTable); /* 261 */ @@ -835,12 +870,15 @@ EXTERN long Tk_GetUserInactiveTime(Display *dpy); /* 270 */ EXTERN void Tk_ResetUserInactiveTime(Display *dpy); /* 271 */ EXTERN Tcl_Interp * Tk_Interp(Tk_Window tkwin); -/* Slot 272 is reserved */ -/* Slot 273 is reserved */ +/* 272 */ +EXTERN void Tk_CreateOldImageType(const Tk_ImageType *typePtr); +/* 273 */ +EXTERN void Tk_CreateOldPhotoImageFormat( + const Tk_PhotoImageFormat *formatPtr); /* 274 */ EXTERN int Tk_AlwaysShowSelection(Tk_Window tkwin); /* 275 */ EXTERN unsigned Tk_GetButtonMask(unsigned button); /* 276 */ @@ -926,11 +964,11 @@ void (*tk_ClearSelection) (Tk_Window tkwin, Atom selection); /* 24 */ int (*tk_ClipboardAppend) (Tcl_Interp *interp, Tk_Window tkwin, Atom target, Atom format, const char *buffer); /* 25 */ int (*tk_ClipboardClear) (Tcl_Interp *interp, Tk_Window tkwin); /* 26 */ int (*tk_ConfigureInfo) (Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, void *widgRec, const char *argvName, int flags); /* 27 */ int (*tk_ConfigureValue) (Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, void *widgRec, const char *argvName, int flags); /* 28 */ - int (*tk_ConfigureWidget) (Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, Tcl_Size objc, Tcl_Obj *const *objv, void *widgRec, int flags); /* 29 */ + int (*tk_ConfigureWidget) (Tcl_Interp *interp, Tk_Window tkwin, const Tk_ConfigSpec *specs, Tcl_Size argc, const char **argv, void *widgRec, int flags); /* 29 */ void (*tk_ConfigureWindow) (Tk_Window tkwin, unsigned int valueMask, XWindowChanges *valuePtr); /* 30 */ Tk_TextLayout (*tk_ComputeTextLayout) (Tk_Font font, const char *str, Tcl_Size numChars, int wrapLength, Tk_Justify justify, int flags, int *widthPtr, int *heightPtr); /* 31 */ Tk_Window (*tk_CoordsToWindow) (int rootX, int rootY, Tk_Window tkwin); /* 32 */ unsigned long (*tk_CreateBinding) (Tcl_Interp *interp, Tk_BindingTable bindingTable, void *object, const char *eventStr, const char *script, int append); /* 33 */ Tk_BindingTable (*tk_CreateBindingTable) (Tcl_Interp *interp); /* 34 */ @@ -974,25 +1012,25 @@ void (*tk_FreeGC) (Display *display, GC gc); /* 72 */ void (*tk_FreeImage) (Tk_Image image); /* 73 */ void (*tk_FreeOptions) (const Tk_ConfigSpec *specs, void *widgRec, Display *display, int needFlags); /* 74 */ void (*tk_FreePixmap) (Display *display, Pixmap pixmap); /* 75 */ void (*tk_FreeTextLayout) (Tk_TextLayout textLayout); /* 76 */ - void (*reserved77)(void); + TCL_DEPRECATED_API("function does nothing, call can be removed") void (*tk_FreeXId) (Display *display, XID xid); /* 77 */ GC (*tk_GCForColor) (XColor *colorPtr, Drawable drawable); /* 78 */ void (*tk_GeometryRequest) (Tk_Window tkwin, int reqWidth, int reqHeight); /* 79 */ - Tk_3DBorder (*tk_Get3DBorder) (Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid colorName); /* 80 */ + Tk_3DBorder (*tk_Get3DBorder) (Tcl_Interp *interp, Tk_Window tkwin, const char *colorName); /* 80 */ void (*tk_GetAllBindings) (Tcl_Interp *interp, Tk_BindingTable bindingTable, void *object); /* 81 */ int (*tk_GetAnchor) (Tcl_Interp *interp, const char *str, Tk_Anchor *anchorPtr); /* 82 */ const char * (*tk_GetAtomName) (Tk_Window tkwin, Atom atom); /* 83 */ const char * (*tk_GetBinding) (Tcl_Interp *interp, Tk_BindingTable bindingTable, void *object, const char *eventStr); /* 84 */ Pixmap (*tk_GetBitmap) (Tcl_Interp *interp, Tk_Window tkwin, const char *str); /* 85 */ Pixmap (*tk_GetBitmapFromData) (Tcl_Interp *interp, Tk_Window tkwin, const void *source, int width, int height); /* 86 */ int (*tk_GetCapStyle) (Tcl_Interp *interp, const char *str, int *capPtr); /* 87 */ - XColor * (*tk_GetColor) (Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name); /* 88 */ + XColor * (*tk_GetColor) (Tcl_Interp *interp, Tk_Window tkwin, const char *name); /* 88 */ XColor * (*tk_GetColorByValue) (Tk_Window tkwin, XColor *colorPtr); /* 89 */ Colormap (*tk_GetColormap) (Tcl_Interp *interp, Tk_Window tkwin, const char *str); /* 90 */ - Tk_Cursor (*tk_GetCursor) (Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid str); /* 91 */ + Tk_Cursor (*tk_GetCursor) (Tcl_Interp *interp, Tk_Window tkwin, const char *str); /* 91 */ Tk_Cursor (*tk_GetCursorFromData) (Tcl_Interp *interp, Tk_Window tkwin, const char *source, const char *mask, int width, int height, int xHot, int yHot, Tk_Uid fg, Tk_Uid bg); /* 92 */ Tk_Font (*tk_GetFont) (Tcl_Interp *interp, Tk_Window tkwin, const char *str); /* 93 */ Tk_Font (*tk_GetFontFromObj) (Tk_Window tkwin, Tcl_Obj *objPtr); /* 94 */ void (*tk_GetFontMetrics) (Tk_Font font, Tk_FontMetrics *fmPtr); /* 95 */ GC (*tk_GetGC) (Tk_Window tkwin, unsigned long valueMask, XGCValues *valuePtr); /* 96 */ @@ -1015,11 +1053,11 @@ void (*tk_GetVRootGeometry) (Tk_Window tkwin, int *xPtr, int *yPtr, int *widthPtr, int *heightPtr); /* 113 */ int (*tk_Grab) (Tcl_Interp *interp, Tk_Window tkwin, int grabGlobal); /* 114 */ void (*tk_HandleEvent) (XEvent *eventPtr); /* 115 */ Tk_Window (*tk_IdToWindow) (Display *display, Window window); /* 116 */ void (*tk_ImageChanged) (Tk_ImageModel model, int x, int y, int width, int height, int imageWidth, int imageHeight); /* 117 */ - void (*reserved118)(void); + int (*tk_Init) (Tcl_Interp *interp); /* 118 */ Atom (*tk_InternAtom) (Tk_Window tkwin, const char *name); /* 119 */ int (*tk_IntersectTextLayout) (Tk_TextLayout layout, int x, int y, int width, int height); /* 120 */ void (*tk_MaintainGeometry) (Tk_Window window, Tk_Window container, int x, int y, int width, int height); /* 121 */ Tk_Window (*tk_MainWindow) (Tcl_Interp *interp); /* 122 */ void (*tk_MakeWindowExist) (Tk_Window tkwin); /* 123 */ @@ -1041,26 +1079,26 @@ const char * (*tk_NameOfJustify) (Tk_Justify justify); /* 139 */ const char * (*tk_NameOfRelief) (int relief); /* 140 */ Tk_Window (*tk_NameToWindow) (Tcl_Interp *interp, const char *pathName, Tk_Window tkwin); /* 141 */ void (*tk_OwnSelection) (Tk_Window tkwin, Atom selection, Tk_LostSelProc *proc, void *clientData); /* 142 */ int (*tk_ParseArgv) (Tcl_Interp *interp, Tk_Window tkwin, int *argcPtr, const char **argv, const Tk_ArgvInfo *argTable, int flags); /* 143 */ - void (*reserved144)(void); - void (*reserved145)(void); + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoPutBlock_NoComposite) (Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, int x, int y, int width, int height); /* 144 */ + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoPutZoomedBlock_NoComposite) (Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, int x, int y, int width, int height, int zoomX, int zoomY, int subsampleX, int subsampleY); /* 145 */ int (*tk_PhotoGetImage) (Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr); /* 146 */ void (*tk_PhotoBlank) (Tk_PhotoHandle handle); /* 147 */ - void (*reserved148)(void); + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoExpand_Panic) (Tk_PhotoHandle handle, int width, int height); /* 148 */ void (*tk_PhotoGetSize) (Tk_PhotoHandle handle, int *widthPtr, int *heightPtr); /* 149 */ - void (*reserved150)(void); + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoSetSize_Panic) (Tk_PhotoHandle handle, int width, int height); /* 150 */ int (*tk_PointToChar) (Tk_TextLayout layout, int x, int y); /* 151 */ int (*tk_PostscriptFontName) (Tk_Font tkfont, Tcl_DString *dsPtr); /* 152 */ void (*tk_PreserveColormap) (Display *display, Colormap colormap); /* 153 */ void (*tk_QueueWindowEvent) (XEvent *eventPtr, Tcl_QueuePosition position); /* 154 */ void (*tk_RedrawImage) (Tk_Image image, int imageX, int imageY, int width, int height, Drawable drawable, int drawableX, int drawableY); /* 155 */ void (*tk_ResizeWindow) (Tk_Window tkwin, int width, int height); /* 156 */ int (*tk_RestackWindow) (Tk_Window tkwin, int aboveBelow, Tk_Window other); /* 157 */ Tk_RestrictProc * (*tk_RestrictEvents) (Tk_RestrictProc *proc, void *arg, void **prevArgPtr); /* 158 */ - void (*reserved159)(void); + int (*tk_SafeInit) (Tcl_Interp *interp); /* 159 */ const char * (*tk_SetAppName) (Tk_Window tkwin, const char *name); /* 160 */ void (*tk_SetBackgroundFromBorder) (Tk_Window tkwin, Tk_3DBorder border); /* 161 */ void (*tk_SetClass) (Tk_Window tkwin, const char *className); /* 162 */ void (*tk_SetGrid) (Tk_Window tkwin, int reqWidth, int reqHeight, int gridWidth, int gridHeight); /* 163 */ void (*tk_SetInternalBorder) (Tk_Window tkwin, int width); /* 164 */ @@ -1109,15 +1147,15 @@ int (*tk_GetMMFromObj) (Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj *objPtr, double *doublePtr); /* 207 */ int (*tk_GetPixelsFromObj) (Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj *objPtr, int *intPtr); /* 208 */ int (*tk_GetReliefFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *resultPtr); /* 209 */ int (*tk_GetScrollInfoObj) (Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[], double *dblPtr, int *intPtr); /* 210 */ int (*tk_InitOptions) (Tcl_Interp *interp, void *recordPtr, Tk_OptionTable optionToken, Tk_Window tkwin); /* 211 */ - void (*reserved212)(void); + TCL_DEPRECATED_API("Don't use this function in a stub-enabled extension") void (*tk_MainEx) (Tcl_Size argc, char **argv, Tcl_AppInitProc *appInitProc, Tcl_Interp *interp); /* 212 */ void (*tk_RestoreSavedOptions) (Tk_SavedOptions *savePtr); /* 213 */ int (*tk_SetOptions) (Tcl_Interp *interp, void *recordPtr, Tk_OptionTable optionTable, Tcl_Size objc, Tcl_Obj *const objv[], Tk_Window tkwin, Tk_SavedOptions *savePtr, int *maskPtr); /* 214 */ void (*tk_InitConsoleChannels) (Tcl_Interp *interp); /* 215 */ - void (*reserved216)(void); + int (*tk_CreateConsoleWindow) (Tcl_Interp *interp); /* 216 */ void (*tk_CreateSmoothMethod) (Tcl_Interp *interp, const Tk_SmoothMethod *method); /* 217 */ void (*reserved218)(void); void (*reserved219)(void); int (*tk_GetDash) (Tcl_Interp *interp, const char *value, Tk_Dash *dash); /* 220 */ void (*tk_CreateOutline) (Tk_Outline *outline); /* 221 */ @@ -1143,12 +1181,12 @@ Tk_Window (*tk_CreateAnonymousWindow) (Tcl_Interp *interp, Tk_Window parent, const char *screenName); /* 241 */ void (*tk_SetClassProcs) (Tk_Window tkwin, const Tk_ClassProcs *procs, void *instanceData); /* 242 */ void (*tk_SetInternalBorderEx) (Tk_Window tkwin, int left, int right, int top, int bottom); /* 243 */ void (*tk_SetMinimumRequestSize) (Tk_Window tkwin, int minWidth, int minHeight); /* 244 */ void (*tk_SetCaretPos) (Tk_Window tkwin, int x, int y, int height); /* 245 */ - void (*reserved246)(void); - void (*reserved247)(void); + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoPutBlock_Panic) (Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, int x, int y, int width, int height, int compRule); /* 246 */ + TCL_DEPRECATED_API("function signature changed") void (*tk_PhotoPutZoomedBlock_Panic) (Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, int x, int y, int width, int height, int zoomX, int zoomY, int subsampleX, int subsampleY, int compRule); /* 247 */ int (*tk_CollapseMotionEvents) (Display *display, int collapse); /* 248 */ Tk_StyleEngine (*tk_RegisterStyleEngine) (const char *name, Tk_StyleEngine parent); /* 249 */ Tk_StyleEngine (*tk_GetStyleEngine) (const char *name); /* 250 */ int (*tk_RegisterStyledElement) (Tk_StyleEngine engine, Tk_ElementSpec *templatePtr); /* 251 */ int (*tk_GetElementId) (const char *name); /* 252 */ @@ -1155,12 +1193,12 @@ Tk_Style (*tk_CreateStyle) (const char *name, Tk_StyleEngine engine, void *clientData); /* 253 */ Tk_Style (*tk_GetStyle) (Tcl_Interp *interp, const char *name); /* 254 */ void (*tk_FreeStyle) (Tk_Style style); /* 255 */ const char * (*tk_NameOfStyle) (Tk_Style style); /* 256 */ Tk_Style (*tk_AllocStyleFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr); /* 257 */ - void (*reserved258)(void); - void (*reserved259)(void); + Tk_Style (*tk_GetStyleFromObj) (Tcl_Obj *objPtr); /* 258 */ + void (*tk_FreeStyleFromObj) (Tcl_Obj *objPtr); /* 259 */ Tk_StyledElement (*tk_GetStyledElement) (Tk_Style style, Tcl_Size elementId, Tk_OptionTable optionTable); /* 260 */ void (*tk_GetElementSize) (Tk_Style style, Tk_StyledElement element, void *recordPtr, Tk_Window tkwin, int width, int height, int inner, int *widthPtr, int *heightPtr); /* 261 */ void (*tk_GetElementBox) (Tk_Style style, Tk_StyledElement element, void *recordPtr, Tk_Window tkwin, int x, int y, int width, int height, int inner, int *xPtr, int *yPtr, int *widthPtr, int *heightPtr); /* 262 */ int (*tk_GetElementBorderWidth) (Tk_Style style, Tk_StyledElement element, void *recordPtr, Tk_Window tkwin); /* 263 */ void (*tk_DrawElement) (Tk_Style style, Tk_StyledElement element, void *recordPtr, Tk_Window tkwin, Drawable d, int x, int y, int width, int height, int state); /* 264 */ @@ -1169,12 +1207,12 @@ int (*tk_PhotoPutZoomedBlock) (Tcl_Interp *interp, Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, int x, int y, int width, int height, int zoomX, int zoomY, int subsampleX, int subsampleY, int compRule); /* 267 */ int (*tk_PhotoSetSize) (Tcl_Interp *interp, Tk_PhotoHandle handle, int width, int height); /* 268 */ long (*tk_GetUserInactiveTime) (Display *dpy); /* 269 */ void (*tk_ResetUserInactiveTime) (Display *dpy); /* 270 */ Tcl_Interp * (*tk_Interp) (Tk_Window tkwin); /* 271 */ - void (*reserved272)(void); - void (*reserved273)(void); + void (*tk_CreateOldImageType) (const Tk_ImageType *typePtr); /* 272 */ + void (*tk_CreateOldPhotoImageFormat) (const Tk_PhotoImageFormat *formatPtr); /* 273 */ int (*tk_AlwaysShowSelection) (Tk_Window tkwin); /* 274 */ unsigned (*tk_GetButtonMask) (unsigned button); /* 275 */ int (*tk_GetDoublePixelsFromObj) (Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj *objPtr, double *doublePtr); /* 276 */ Tcl_Obj * (*tk_NewWindowObj) (Tk_Window tkwin); /* 277 */ void (*tk_SendVirtualEvent) (Tk_Window tkwin, const char *eventName, Tcl_Obj *detail); /* 278 */ @@ -1356,11 +1394,12 @@ (tkStubsPtr->tk_FreeOptions) /* 74 */ #define Tk_FreePixmap \ (tkStubsPtr->tk_FreePixmap) /* 75 */ #define Tk_FreeTextLayout \ (tkStubsPtr->tk_FreeTextLayout) /* 76 */ -/* Slot 77 is reserved */ +#define Tk_FreeXId \ + (tkStubsPtr->tk_FreeXId) /* 77 */ #define Tk_GCForColor \ (tkStubsPtr->tk_GCForColor) /* 78 */ #define Tk_GeometryRequest \ (tkStubsPtr->tk_GeometryRequest) /* 79 */ #define Tk_Get3DBorder \ @@ -1437,11 +1476,12 @@ (tkStubsPtr->tk_HandleEvent) /* 115 */ #define Tk_IdToWindow \ (tkStubsPtr->tk_IdToWindow) /* 116 */ #define Tk_ImageChanged \ (tkStubsPtr->tk_ImageChanged) /* 117 */ -/* Slot 118 is reserved */ +#define Tk_Init \ + (tkStubsPtr->tk_Init) /* 118 */ #define Tk_InternAtom \ (tkStubsPtr->tk_InternAtom) /* 119 */ #define Tk_IntersectTextLayout \ (tkStubsPtr->tk_IntersectTextLayout) /* 120 */ #define Tk_MaintainGeometry \ @@ -1488,20 +1528,24 @@ (tkStubsPtr->tk_NameToWindow) /* 141 */ #define Tk_OwnSelection \ (tkStubsPtr->tk_OwnSelection) /* 142 */ #define Tk_ParseArgv \ (tkStubsPtr->tk_ParseArgv) /* 143 */ -/* Slot 144 is reserved */ -/* Slot 145 is reserved */ +#define Tk_PhotoPutBlock_NoComposite \ + (tkStubsPtr->tk_PhotoPutBlock_NoComposite) /* 144 */ +#define Tk_PhotoPutZoomedBlock_NoComposite \ + (tkStubsPtr->tk_PhotoPutZoomedBlock_NoComposite) /* 145 */ #define Tk_PhotoGetImage \ (tkStubsPtr->tk_PhotoGetImage) /* 146 */ #define Tk_PhotoBlank \ (tkStubsPtr->tk_PhotoBlank) /* 147 */ -/* Slot 148 is reserved */ +#define Tk_PhotoExpand_Panic \ + (tkStubsPtr->tk_PhotoExpand_Panic) /* 148 */ #define Tk_PhotoGetSize \ (tkStubsPtr->tk_PhotoGetSize) /* 149 */ -/* Slot 150 is reserved */ +#define Tk_PhotoSetSize_Panic \ + (tkStubsPtr->tk_PhotoSetSize_Panic) /* 150 */ #define Tk_PointToChar \ (tkStubsPtr->tk_PointToChar) /* 151 */ #define Tk_PostscriptFontName \ (tkStubsPtr->tk_PostscriptFontName) /* 152 */ #define Tk_PreserveColormap \ @@ -1514,11 +1558,12 @@ (tkStubsPtr->tk_ResizeWindow) /* 156 */ #define Tk_RestackWindow \ (tkStubsPtr->tk_RestackWindow) /* 157 */ #define Tk_RestrictEvents \ (tkStubsPtr->tk_RestrictEvents) /* 158 */ -/* Slot 159 is reserved */ +#define Tk_SafeInit \ + (tkStubsPtr->tk_SafeInit) /* 159 */ #define Tk_SetAppName \ (tkStubsPtr->tk_SetAppName) /* 160 */ #define Tk_SetBackgroundFromBorder \ (tkStubsPtr->tk_SetBackgroundFromBorder) /* 161 */ #define Tk_SetClass \ @@ -1619,18 +1664,20 @@ (tkStubsPtr->tk_GetReliefFromObj) /* 209 */ #define Tk_GetScrollInfoObj \ (tkStubsPtr->tk_GetScrollInfoObj) /* 210 */ #define Tk_InitOptions \ (tkStubsPtr->tk_InitOptions) /* 211 */ -/* Slot 212 is reserved */ +#define Tk_MainEx \ + (tkStubsPtr->tk_MainEx) /* 212 */ #define Tk_RestoreSavedOptions \ (tkStubsPtr->tk_RestoreSavedOptions) /* 213 */ #define Tk_SetOptions \ (tkStubsPtr->tk_SetOptions) /* 214 */ #define Tk_InitConsoleChannels \ (tkStubsPtr->tk_InitConsoleChannels) /* 215 */ -/* Slot 216 is reserved */ +#define Tk_CreateConsoleWindow \ + (tkStubsPtr->tk_CreateConsoleWindow) /* 216 */ #define Tk_CreateSmoothMethod \ (tkStubsPtr->tk_CreateSmoothMethod) /* 217 */ /* Slot 218 is reserved */ /* Slot 219 is reserved */ #define Tk_GetDash \ @@ -1683,12 +1730,14 @@ (tkStubsPtr->tk_SetInternalBorderEx) /* 243 */ #define Tk_SetMinimumRequestSize \ (tkStubsPtr->tk_SetMinimumRequestSize) /* 244 */ #define Tk_SetCaretPos \ (tkStubsPtr->tk_SetCaretPos) /* 245 */ -/* Slot 246 is reserved */ -/* Slot 247 is reserved */ +#define Tk_PhotoPutBlock_Panic \ + (tkStubsPtr->tk_PhotoPutBlock_Panic) /* 246 */ +#define Tk_PhotoPutZoomedBlock_Panic \ + (tkStubsPtr->tk_PhotoPutZoomedBlock_Panic) /* 247 */ #define Tk_CollapseMotionEvents \ (tkStubsPtr->tk_CollapseMotionEvents) /* 248 */ #define Tk_RegisterStyleEngine \ (tkStubsPtr->tk_RegisterStyleEngine) /* 249 */ #define Tk_GetStyleEngine \ @@ -1705,12 +1754,14 @@ (tkStubsPtr->tk_FreeStyle) /* 255 */ #define Tk_NameOfStyle \ (tkStubsPtr->tk_NameOfStyle) /* 256 */ #define Tk_AllocStyleFromObj \ (tkStubsPtr->tk_AllocStyleFromObj) /* 257 */ -/* Slot 258 is reserved */ -/* Slot 259 is reserved */ +#define Tk_GetStyleFromObj \ + (tkStubsPtr->tk_GetStyleFromObj) /* 258 */ +#define Tk_FreeStyleFromObj \ + (tkStubsPtr->tk_FreeStyleFromObj) /* 259 */ #define Tk_GetStyledElement \ (tkStubsPtr->tk_GetStyledElement) /* 260 */ #define Tk_GetElementSize \ (tkStubsPtr->tk_GetElementSize) /* 261 */ #define Tk_GetElementBox \ @@ -1731,12 +1782,14 @@ (tkStubsPtr->tk_GetUserInactiveTime) /* 269 */ #define Tk_ResetUserInactiveTime \ (tkStubsPtr->tk_ResetUserInactiveTime) /* 270 */ #define Tk_Interp \ (tkStubsPtr->tk_Interp) /* 271 */ -/* Slot 272 is reserved */ -/* Slot 273 is reserved */ +#define Tk_CreateOldImageType \ + (tkStubsPtr->tk_CreateOldImageType) /* 272 */ +#define Tk_CreateOldPhotoImageFormat \ + (tkStubsPtr->tk_CreateOldPhotoImageFormat) /* 273 */ #define Tk_AlwaysShowSelection \ (tkStubsPtr->tk_AlwaysShowSelection) /* 274 */ #define Tk_GetButtonMask \ (tkStubsPtr->tk_GetButtonMask) /* 275 */ #define Tk_GetDoublePixelsFromObj \ @@ -1772,36 +1825,46 @@ #endif /* defined(USE_TK_STUBS) */ /* !END!: Do not edit above this line. */ +/* Functions that don't belong in the stub table */ +#undef Tk_MainEx +#undef Tk_Init +#undef Tk_SafeInit +#undef Tk_CreateConsoleWindow + +#undef Tk_FreeXId +#define Tk_FreeXId(display,xid) +#undef Tk_GetStyleFromObj +#undef Tk_FreeStyleFromObj +#define Tk_GetStyleFromObj(obj) Tk_AllocStyleFromObj(NULL, obj) +#define Tk_FreeStyleFromObj(obj) /* no-op */ #define Tk_GetImageMasterData Tk_GetImageModelData #ifndef MAC_OSX_TK # undef Tk_ClipDrawableToRect #endif -EXTERN void Tk_MainEx(Tcl_Size argc, char **argv, - Tcl_AppInitProc *appInitProc, Tcl_Interp *interp); #if defined(_WIN32) && defined(UNICODE) # define Tk_MainEx Tk_MainExW EXTERN void Tk_MainExW(Tcl_Size argc, wchar_t **argv, Tcl_AppInitProc *appInitProc, Tcl_Interp *interp); #endif -EXTERN int Tk_Init(Tcl_Interp *interp); -EXTERN int Tk_SafeInit(Tcl_Interp *interp); -EXTERN int Tk_CreateConsoleWindow(Tcl_Interp *interp); - -#if TK_MAJOR_VERSION < 9 -/* Restore 8.x signature of Tk_ConfigureWidget, but panic if TK_CONFIG_OBJS flag is not set */ -#undef Tk_ConfigureWidget -#define Tk_ConfigureWidget(interp, tkwin, specs, argc, argv, widgRec, flags) \ - ((int (*)(Tcl_Interp *, Tk_Window, const Tk_ConfigSpec *, \ - int, const char **, char *, int))(void *)(tkStubsPtr->tk_ConfigureWidget)) \ - (((flags & TK_CONFIG_OBJS) ? interp : (Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory in Tk_ConfigureWidget"), \ - NULL)), tkwin, specs, argc, argv, widgRec, flags) -#endif + + +#if defined(TK_NO_DEPRECATED) || TCL_MAJOR_VERSION > 8 +#undef Tk_PhotoPutBlock_NoComposite +#undef Tk_PhotoPutZoomedBlock_NoComposite +#undef Tk_PhotoExpand_Panic +#undef Tk_PhotoPutBlock_Panic +#undef Tk_PhotoPutZoomedBlock_Panic +#undef Tk_PhotoSetSize_Panic +#undef Tk_CreateOldPhotoImageFormat +#endif /* TK_NO_DEPRECATED */ #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT + +#undef TkUnusedStubEntry #endif /* _TKDECLS */ Index: generic/tkEntry.c ================================================================== --- generic/tkEntry.c +++ generic/tkEntry.c @@ -72,11 +72,11 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_ENTRY_BORDER_WIDTH, offsetof(Entry, borderWidthObj), offsetof(Entry, borderWidth), 0, 0, 0}, + DEF_ENTRY_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Entry, borderWidth), 0, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_ENTRY_CURSOR, TCL_INDEX_NONE, offsetof(Entry, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BORDER, "-disabledbackground", "disabledBackground", "DisabledBackground", DEF_ENTRY_DISABLED_BG_COLOR, TCL_INDEX_NONE, @@ -98,34 +98,34 @@ "HighlightBackground", DEF_ENTRY_HIGHLIGHT_BG, TCL_INDEX_NONE, offsetof(Entry, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_ENTRY_HIGHLIGHT, TCL_INDEX_NONE, offsetof(Entry, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_ENTRY_HIGHLIGHT_WIDTH, offsetof(Entry, highlightWidthObj), + "HighlightThickness", DEF_ENTRY_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, offsetof(Entry, highlightWidth), 0, 0, 0}, {TK_OPTION_BORDER, "-insertbackground", "insertBackground", "Foreground", DEF_ENTRY_INSERT_BG, TCL_INDEX_NONE, offsetof(Entry, insertBorder), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertborderwidth", "insertBorderWidth", - "BorderWidth", DEF_ENTRY_INSERT_BD_COLOR, offsetof(Entry, insertBorderWidthObj), + "BorderWidth", DEF_ENTRY_INSERT_BD_COLOR, TCL_INDEX_NONE, offsetof(Entry, insertBorderWidth), 0, DEF_ENTRY_INSERT_BD_MONO, 0}, {TK_OPTION_INT, "-insertofftime", "insertOffTime", "OffTime", DEF_ENTRY_INSERT_OFF_TIME, TCL_INDEX_NONE, offsetof(Entry, insertOffTime), 0, 0, 0}, {TK_OPTION_INT, "-insertontime", "insertOnTime", "OnTime", DEF_ENTRY_INSERT_ON_TIME, TCL_INDEX_NONE, offsetof(Entry, insertOnTime), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertwidth", "insertWidth", "InsertWidth", - DEF_ENTRY_INSERT_WIDTH, offsetof(Entry, insertWidthObj), offsetof(Entry, insertWidth), 0, 0, 0}, + DEF_ENTRY_INSERT_WIDTH, TCL_INDEX_NONE, offsetof(Entry, insertWidth), 0, 0, 0}, {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", - DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), + DEF_ENTRY_INVALIDCMD, offsetof(Entry, invalidCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", - DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), + DEF_ENTRY_PLACEHOLDER, offsetof(Entry, placeholderObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_BORDER, "-readonlybackground", "readonlyBackground", @@ -136,39 +136,39 @@ DEF_ENTRY_RELIEF, TCL_INDEX_NONE, offsetof(Entry, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_ENTRY_SELECT_COLOR, TCL_INDEX_NONE, offsetof(Entry, selBorder), 0, DEF_ENTRY_SELECT_MONO, 0}, {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth", - "BorderWidth", DEF_ENTRY_SELECT_BD_COLOR, offsetof(Entry, selBorderWidthObj), + "BorderWidth", DEF_ENTRY_SELECT_BD_COLOR, TCL_INDEX_NONE, offsetof(Entry, selBorderWidth), 0, DEF_ENTRY_SELECT_BD_MONO, 0}, {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background", DEF_ENTRY_SELECT_FG_COLOR, TCL_INDEX_NONE, offsetof(Entry, selFgColorPtr), TK_OPTION_NULL_OK, DEF_ENTRY_SELECT_FG_MONO, 0}, {TK_OPTION_STRING, "-show", "show", "Show", - DEF_ENTRY_SHOW, TCL_INDEX_NONE, offsetof(Entry, showChar), + DEF_ENTRY_SHOW, offsetof(Entry, showCharObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_ENTRY_STATE, TCL_INDEX_NONE, offsetof(Entry, state), 0, stateStrings, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_ENTRY_TAKE_FOCUS, TCL_INDEX_NONE, offsetof(Entry, takeFocus), + DEF_ENTRY_TAKE_FOCUS, offsetof(Entry, takeFocusObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-textvariable", "textVariable", "Variable", - DEF_ENTRY_TEXT_VARIABLE, TCL_INDEX_NONE, offsetof(Entry, textVarName), + DEF_ENTRY_TEXT_VARIABLE, offsetof(Entry, textVarNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-validate", "validate", "Validate", DEF_ENTRY_VALIDATE, TCL_INDEX_NONE, offsetof(Entry, validate), 0, validateStrings, 0}, {TK_OPTION_STRING, "-validatecommand", "validateCommand","ValidateCommand", - NULL, TCL_INDEX_NONE, offsetof(Entry, validateCmd), TK_OPTION_NULL_OK, 0, 0}, + NULL, offsetof(Entry, validateCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-vcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-validatecommand", 0}, {TK_OPTION_INT, "-width", "width", "Width", DEF_ENTRY_WIDTH, TCL_INDEX_NONE, offsetof(Entry, prefWidth), 0, 0, 0}, {TK_OPTION_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", - DEF_ENTRY_SCROLL_COMMAND, TCL_INDEX_NONE, offsetof(Entry, scrollCmd), + DEF_ENTRY_SCROLL_COMMAND, offsetof(Entry, scrollCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; /* @@ -198,11 +198,11 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_ENTRY_BORDER_WIDTH, offsetof(Entry, borderWidthObj), offsetof(Entry, borderWidth), 0, 0, 0}, + DEF_ENTRY_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Entry, borderWidth), 0, 0, 0}, {TK_OPTION_BORDER, "-buttonbackground", "buttonBackground", "Background", DEF_BUTTON_BG_COLOR, TCL_INDEX_NONE, offsetof(Spinbox, buttonBorder), 0, DEF_BUTTON_BG_MONO, 0}, {TK_OPTION_CURSOR, "-buttoncursor", "buttonCursor", "Cursor", DEF_BUTTON_CURSOR, TCL_INDEX_NONE, offsetof(Spinbox, bCursor), @@ -210,11 +210,11 @@ {TK_OPTION_RELIEF, "-buttondownrelief", "buttonDownRelief", "Relief", DEF_BUTTON_RELIEF, TCL_INDEX_NONE, offsetof(Spinbox, bdRelief), 0, 0, 0}, {TK_OPTION_RELIEF, "-buttonuprelief", "buttonUpRelief", "Relief", DEF_BUTTON_RELIEF, TCL_INDEX_NONE, offsetof(Spinbox, buRelief), 0, 0, 0}, {TK_OPTION_STRING, "-command", "command", "Command", - DEF_SPINBOX_CMD, TCL_INDEX_NONE, offsetof(Spinbox, command), + DEF_SPINBOX_CMD, offsetof(Spinbox, commandObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_ENTRY_CURSOR, TCL_INDEX_NONE, offsetof(Entry, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BORDER, "-disabledbackground", "disabledBackground", @@ -232,46 +232,46 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_ENTRY_FONT, TCL_INDEX_NONE, offsetof(Entry, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_ENTRY_FG, TCL_INDEX_NONE, offsetof(Entry, fgColorPtr), 0, 0, 0}, {TK_OPTION_STRING, "-format", "format", "Format", - DEF_SPINBOX_FORMAT, TCL_INDEX_NONE, offsetof(Spinbox, reqFormat), + DEF_SPINBOX_FORMAT, offsetof(Spinbox, reqFormatObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_DOUBLE, "-from", "from", "From", DEF_SPINBOX_FROM, TCL_INDEX_NONE, offsetof(Spinbox, fromValue), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_ENTRY_HIGHLIGHT_BG, TCL_INDEX_NONE, offsetof(Entry, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_ENTRY_HIGHLIGHT, TCL_INDEX_NONE, offsetof(Entry, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_ENTRY_HIGHLIGHT_WIDTH, offsetof(Entry, highlightWidthObj), + "HighlightThickness", DEF_ENTRY_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, offsetof(Entry, highlightWidth), 0, 0, 0}, {TK_OPTION_DOUBLE, "-increment", "increment", "Increment", DEF_SPINBOX_INCREMENT, TCL_INDEX_NONE, offsetof(Spinbox, increment), 0, 0, 0}, {TK_OPTION_BORDER, "-insertbackground", "insertBackground", "Foreground", DEF_ENTRY_INSERT_BG, TCL_INDEX_NONE, offsetof(Entry, insertBorder), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertborderwidth", "insertBorderWidth", - "BorderWidth", DEF_ENTRY_INSERT_BD_COLOR, offsetof(Entry, insertBorderWidthObj), + "BorderWidth", DEF_ENTRY_INSERT_BD_COLOR, TCL_INDEX_NONE, offsetof(Entry, insertBorderWidth), 0, DEF_ENTRY_INSERT_BD_MONO, 0}, {TK_OPTION_INT, "-insertofftime", "insertOffTime", "OffTime", DEF_ENTRY_INSERT_OFF_TIME, TCL_INDEX_NONE, offsetof(Entry, insertOffTime), 0, 0, 0}, {TK_OPTION_INT, "-insertontime", "insertOnTime", "OnTime", DEF_ENTRY_INSERT_ON_TIME, TCL_INDEX_NONE, offsetof(Entry, insertOnTime), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertwidth", "insertWidth", "InsertWidth", - DEF_ENTRY_INSERT_WIDTH, offsetof(Entry, insertWidthObj), offsetof(Entry, insertWidth), 0, 0, 0}, + DEF_ENTRY_INSERT_WIDTH, TCL_INDEX_NONE, offsetof(Entry, insertWidth), 0, 0, 0}, {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", - DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), + DEF_ENTRY_INVALIDCMD, offsetof(Entry, invalidCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", - DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), + DEF_ENTRY_PLACEHOLDER, offsetof(Entry, placeholderObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", @@ -288,32 +288,32 @@ 0, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_ENTRY_SELECT_COLOR, TCL_INDEX_NONE, offsetof(Entry, selBorder), 0, DEF_ENTRY_SELECT_MONO, 0}, {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth", - "BorderWidth", DEF_ENTRY_SELECT_BD_COLOR, offsetof(Entry, selBorderWidthObj), + "BorderWidth", DEF_ENTRY_SELECT_BD_COLOR, TCL_INDEX_NONE, offsetof(Entry, selBorderWidth), 0, DEF_ENTRY_SELECT_BD_MONO, 0}, {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background", DEF_ENTRY_SELECT_FG_COLOR, TCL_INDEX_NONE, offsetof(Entry, selFgColorPtr), TK_OPTION_NULL_OK, DEF_ENTRY_SELECT_FG_MONO, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_ENTRY_STATE, TCL_INDEX_NONE, offsetof(Entry, state), 0, stateStrings, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_ENTRY_TAKE_FOCUS, TCL_INDEX_NONE, offsetof(Entry, takeFocus), + DEF_ENTRY_TAKE_FOCUS, offsetof(Entry, takeFocusObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-textvariable", "textVariable", "Variable", - DEF_ENTRY_TEXT_VARIABLE, TCL_INDEX_NONE, offsetof(Entry, textVarName), + DEF_ENTRY_TEXT_VARIABLE, offsetof(Entry, textVarNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_DOUBLE, "-to", "to", "To", DEF_SPINBOX_TO, TCL_INDEX_NONE, offsetof(Spinbox, toValue), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-validate", "validate", "Validate", DEF_ENTRY_VALIDATE, TCL_INDEX_NONE, offsetof(Entry, validate), 0, validateStrings, 0}, {TK_OPTION_STRING, "-validatecommand", "validateCommand","ValidateCommand", - NULL, TCL_INDEX_NONE, offsetof(Entry, validateCmd), TK_OPTION_NULL_OK, 0, 0}, + NULL, offsetof(Entry, validateCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-values", "values", "Values", DEF_SPINBOX_VALUES, TCL_INDEX_NONE, offsetof(Spinbox, valueStr), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-vcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-validatecommand", 0}, @@ -320,11 +320,11 @@ {TK_OPTION_INT, "-width", "width", "Width", DEF_ENTRY_WIDTH, TCL_INDEX_NONE, offsetof(Entry, prefWidth), 0, 0, 0}, {TK_OPTION_BOOLEAN, "-wrap", "wrap", "Wrap", DEF_SPINBOX_WRAP, TCL_INDEX_NONE, offsetof(Spinbox, wrap), 0, 0, 0}, {TK_OPTION_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", - DEF_ENTRY_SCROLL_COMMAND, TCL_INDEX_NONE, offsetof(Entry, scrollCmd), + DEF_ENTRY_SCROLL_COMMAND, offsetof(Entry, scrollCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; /* @@ -1046,12 +1046,12 @@ * Free up all the stuff that requires special handling, then let * Tk_FreeOptions handle all the standard option-related stuff. */ ckfree((void *)entryPtr->string); - if (entryPtr->textVarName != NULL) { - Tcl_UntraceVar2(entryPtr->interp, entryPtr->textVarName, + if (entryPtr->textVarNameObj != NULL) { + Tcl_UntraceVar2(entryPtr->interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, entryPtr); entryPtr->flags &= ~ENTRY_VAR_TRACED; } if (entryPtr->textGC != NULL) { @@ -1117,11 +1117,11 @@ Tcl_Obj *errorResult = NULL; Spinbox *sbPtr = (Spinbox *) entryPtr; /* Only used when this widget is of type * TK_SPINBOX */ char *oldValues = NULL; - char *oldFormat = NULL; + Tcl_Obj *oldFormat = NULL; int error; int oldExport = 0; int valuesChanged = 0; double oldFrom = 0.0; double oldTo = 0.0; @@ -1130,13 +1130,13 @@ /* * Eliminate any existing trace on a variable monitored by the entry. */ - if ((entryPtr->textVarName != NULL) + if ((entryPtr->textVarNameObj != NULL) && (entryPtr->flags & ENTRY_VAR_TRACED)) { - Tcl_UntraceVar2(interp, entryPtr->textVarName, NULL, + Tcl_UntraceVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, entryPtr); entryPtr->flags &= ~ENTRY_VAR_TRACED; } @@ -1146,11 +1146,11 @@ */ oldExport = (entryPtr->exportSelection) && (!Tcl_IsSafe(entryPtr->interp)); if (entryPtr->type == TK_SPINBOX) { oldValues = sbPtr->valueStr; - oldFormat = sbPtr->reqFormat; + oldFormat = sbPtr->reqFormatObj; oldFrom = sbPtr->fromValue; oldTo = sbPtr->toValue; } for (error = 0; error <= 1; error++) { @@ -1190,37 +1190,22 @@ } Tk_SetBackgroundFromBorder(entryPtr->tkwin, border); if (entryPtr->borderWidth < 0) { entryPtr->borderWidth = 0; - Tcl_DecrRefCount(entryPtr->borderWidthObj); - entryPtr->borderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(entryPtr->borderWidthObj); } if (entryPtr->highlightWidth < 0) { entryPtr->highlightWidth = 0; - Tcl_DecrRefCount(entryPtr->highlightWidthObj); - entryPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(entryPtr->highlightWidthObj); } if (entryPtr->insertBorderWidth < 0) { entryPtr->insertBorderWidth = 0; - Tcl_DecrRefCount(entryPtr->insertBorderWidthObj); - entryPtr->insertBorderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(entryPtr->insertBorderWidthObj); } if (entryPtr->insertWidth < 0) { entryPtr->insertWidth = 0; - Tcl_DecrRefCount(entryPtr->insertWidthObj); - entryPtr->insertWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(entryPtr->insertWidthObj); } if (entryPtr->selBorderWidth < 0) { entryPtr->selBorderWidth = 0; - Tcl_DecrRefCount(entryPtr->selBorderWidthObj); - entryPtr->selBorderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(entryPtr->selBorderWidthObj); } if (entryPtr->type == TK_SPINBOX) { if (sbPtr->fromValue > sbPtr->toValue) { /* @@ -1231,27 +1216,27 @@ sbPtr->fromValue = sbPtr->toValue; sbPtr->toValue = tmpFromTo; } - if (sbPtr->reqFormat && (oldFormat != sbPtr->reqFormat)) { + if (sbPtr->reqFormatObj && (oldFormat != sbPtr->reqFormatObj)) { /* * Make sure that the given format is somewhat correct, and * calculate the minimum space we'll need for the values as * strings. */ int min, max; size_t formatLen; - char fbuf[4], *fmt = sbPtr->reqFormat; + char fbuf[4], *fmt = Tcl_GetString(sbPtr->reqFormatObj); formatLen = strlen(fmt); if ((fmt[0] != '%') || (fmt[formatLen-1] != 'f')) { badFormatOpt: Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad spinbox format specifier \"%s\"", - sbPtr->reqFormat)); + Tcl_GetString(sbPtr->reqFormatObj))); Tcl_SetErrorCode(interp, "TK", "SPINBOX", "FORMAT_SANITY", NULL); continue; } if ((sscanf(fmt, "%%%d.%d%[f]", &min, &max, fbuf) == 3) @@ -1351,14 +1336,14 @@ /* * If the entry is tied to the value of a variable, create the variable if * it doesn't exist, and set the entry's value from the variable's value. */ - if (entryPtr->textVarName != NULL) { + if (entryPtr->textVarNameObj != NULL) { const char *value; - value = Tcl_GetVar2(interp, entryPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { /* * Since any trace on the textvariable was eliminated above, * the only possible reason for EntryValueChanged to return @@ -1429,13 +1414,13 @@ /* * Set up a trace on the variable's value after we've possibly constrained * the value according to new -from/-to values. */ - if ((entryPtr->textVarName != NULL) + if ((entryPtr->textVarNameObj != NULL) && !(entryPtr->flags & ENTRY_VAR_TRACED)) { - code = Tcl_TraceVar2(interp, entryPtr->textVarName, + code = Tcl_TraceVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, entryPtr); if (code != TCL_OK) { return TCL_ERROR; } @@ -2010,11 +1995,11 @@ /* * If we're displaying a special character instead of the value of the * entry, recompute the displayString. */ - if (entryPtr->showChar != NULL) { + if (entryPtr->showCharObj != NULL) { int ch; char buf[6]; int size; /* @@ -2022,12 +2007,12 @@ * the display string. If we didn't do this, then two malformed * characters might end up looking like one valid UTF character in the * resulting string. */ - Tcl_UtfToUniChar(entryPtr->showChar, &ch); - size = Tcl_UniCharToUtf(ch, buf); + TkUtfToUniChar(Tcl_GetString(entryPtr->showCharObj), &ch); + size = TkUniCharToUtf(ch, buf); entryPtr->numDisplayBytes = entryPtr->numChars * size; p = (char *)ckalloc(entryPtr->numDisplayBytes + 1); entryPtr->displayString = p; @@ -2042,14 +2027,14 @@ * Only the placeholderX and placeholderLeftIndex value is needed. * We use the same font so we can use the layoutY value from below. */ Tk_FreeTextLayout(entryPtr->placeholderLayout); - if (entryPtr->placeholderString) { - entryPtr->placeholderChars = strlen(entryPtr->placeholderString); + if (entryPtr->placeholderObj) { + entryPtr->placeholderChars = strlen(Tcl_GetString(entryPtr->placeholderObj)); entryPtr->placeholderLayout = Tk_ComputeTextLayout(entryPtr->tkfont, - entryPtr->placeholderString, entryPtr->placeholderChars, 0, + Tcl_GetString(entryPtr->placeholderObj), entryPtr->placeholderChars, 0, entryPtr->justify, TK_IGNORE_NEWLINES, &totalLength, NULL); overflow = totalLength - (Tk_Width(entryPtr->tkwin) - 2*entryPtr->inset - entryPtr->xWidth); if (overflow <= 0) { entryPtr->placeholderLeftIndex = 0; @@ -2083,11 +2068,11 @@ entryPtr->placeholderX = entryPtr->inset -rightX; } } else { entryPtr->placeholderChars = 0; entryPtr->placeholderLayout = Tk_ComputeTextLayout(entryPtr->tkfont, - entryPtr->placeholderString, 0, 0, + (entryPtr->placeholderObj ? Tcl_GetString(entryPtr->placeholderObj) : NULL), 0, 0, entryPtr->justify, TK_IGNORE_NEWLINES, NULL, NULL); entryPtr->placeholderX = entryPtr->inset; } Tk_FreeTextLayout(entryPtr->textLayout); @@ -2188,11 +2173,11 @@ size_t byteIndex, byteCount, newByteCount, oldChars, charsAdded; const char *string; char *newStr; string = entryPtr->string; - byteIndex = Tcl_UtfAtIndex(string, index) - string; + byteIndex = TkUtfAtIndex(string, index) - string; byteCount = strlen(value); if (byteCount == 0) { return TCL_OK; } @@ -2221,11 +2206,11 @@ * context. The actual number of characters added is how many characters * are in the string now minus the number that used to be there. */ oldChars = entryPtr->numChars; - entryPtr->numChars = Tcl_NumUtfChars(newStr, TCL_INDEX_NONE); + entryPtr->numChars = TkNumUtfChars(newStr, TCL_INDEX_NONE); charsAdded = entryPtr->numChars - oldChars; entryPtr->numBytes += byteCount; if (entryPtr->displayString == string) { entryPtr->displayString = newStr; @@ -2292,12 +2277,12 @@ if ((int)count <= 0) { return TCL_OK; } string = entryPtr->string; - byteIndex = Tcl_UtfAtIndex(string, index) - string; - byteCount = Tcl_UtfAtIndex(string + byteIndex, count) - (string+byteIndex); + byteIndex = TkUtfAtIndex(string, index) - string; + byteCount = TkUtfAtIndex(string + byteIndex, count) - (string+byteIndex); newByteCount = entryPtr->numBytes + 1 - byteCount; newStr = (char *)ckalloc(newByteCount); memcpy(newStr, string, (size_t) byteIndex); strcpy(newStr + byteIndex, string + byteIndex + byteCount); @@ -2401,14 +2386,14 @@ { if (newValue != NULL) { EntrySetValue(entryPtr, newValue); } - if (entryPtr->textVarName == NULL) { + if (entryPtr->textVarNameObj == NULL) { newValue = NULL; } else { - newValue = Tcl_SetVar2(entryPtr->interp, entryPtr->textVarName, + newValue = Tcl_SetVar2(entryPtr->interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, entryPtr->string, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG); } if ((newValue != NULL) && (strcmp(newValue, entryPtr->string) != 0)) { /* @@ -2436,11 +2421,11 @@ * Another possibility is that the textvariable is in a namespace that * does not (yet) exist. * Signal this error. */ - if ((entryPtr->textVarName != NULL) && (newValue == NULL)) { + if ((entryPtr->textVarNameObj != NULL) && (newValue == NULL)) { return TCL_ERROR; } return TCL_OK; } @@ -2521,11 +2506,11 @@ strcpy(tmp, value); entryPtr->string = tmp; } entryPtr->numBytes = valueLen; - entryPtr->numChars = Tcl_NumUtfChars(value, valueLen); + entryPtr->numChars = TkNumUtfChars(value, valueLen); if (entryPtr->displayString == oldSource) { entryPtr->displayString = entryPtr->string; entryPtr->numDisplayBytes = entryPtr->numBytes; } @@ -2951,12 +2936,12 @@ if ((entryPtr->selectFirst < 0) || (!entryPtr->exportSelection) || Tcl_IsSafe(entryPtr->interp)) { return -1; } string = entryPtr->displayString; - selStart = Tcl_UtfAtIndex(string, entryPtr->selectFirst); - selEnd = Tcl_UtfAtIndex(selStart, + selStart = TkUtfAtIndex(string, entryPtr->selectFirst); + selEnd = TkUtfAtIndex(selStart, entryPtr->selectLast - entryPtr->selectFirst); if (selEnd <= selStart + offset) { return 0; } byteCount = selEnd - selStart - offset; @@ -3126,21 +3111,21 @@ int code; double first, last; Tcl_Interp *interp; Tcl_DString buf; - if (entryPtr->scrollCmd == NULL) { + if (entryPtr->scrollCmdObj == NULL) { return; } interp = entryPtr->interp; Tcl_Preserve(interp); EntryVisibleRange(entryPtr, &first, &last); Tcl_PrintDouble(NULL, first, firstStr); Tcl_PrintDouble(NULL, last, lastStr); Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, entryPtr->scrollCmd, TCL_INDEX_NONE); + Tcl_DStringAppend(&buf, Tcl_GetString(entryPtr->scrollCmdObj), TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, firstStr, TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, lastStr, TCL_INDEX_NONE); code = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); @@ -3285,16 +3270,16 @@ * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { - if (!Tcl_InterpDeleted(interp) && entryPtr->textVarName) { + if (!Tcl_InterpDeleted(interp) && entryPtr->textVarNameObj) { void *probe = NULL; do { probe = Tcl_VarTraceInfo(interp, - entryPtr->textVarName, + Tcl_GetString(entryPtr->textVarNameObj), TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, probe); if (probe == entryPtr) { break; } @@ -3306,13 +3291,13 @@ * the cause of this unset trace. Instead some outdated * former variable must be, and we should ignore it. */ return NULL; } - Tcl_SetVar2(interp, entryPtr->textVarName, NULL, + Tcl_SetVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, entryPtr->string, TCL_GLOBAL_ONLY); - Tcl_TraceVar2(interp, entryPtr->textVarName, NULL, + Tcl_TraceVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, clientData); entryPtr->flags |= ENTRY_VAR_TRACED; } return NULL; @@ -3322,11 +3307,11 @@ * Update the entry's text with the value of the variable, unless the * entry already has that value (this happens when the variable changes * value because we changed it because someone typed in the entry). */ - value = Tcl_GetVar2(interp, entryPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(entryPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { value = ""; } EntrySetValue(entryPtr, value); return NULL; @@ -3424,11 +3409,11 @@ { int code, varValidate = (entryPtr->flags & VALIDATE_VAR); char *p; Tcl_DString script; - if (entryPtr->validateCmd == NULL || + if (entryPtr->validateCmdObj == NULL || entryPtr->validate == VALIDATE_NONE) { if (entryPtr->flags & VALIDATING) { entryPtr->flags |= VALIDATE_ABORT; } return (varValidate ? TCL_ERROR : TCL_OK); @@ -3451,11 +3436,11 @@ /* * Now form command string and run through the -validatecommand */ Tcl_DStringInit(&script); - ExpandPercents(entryPtr, entryPtr->validateCmd, + ExpandPercents(entryPtr, (entryPtr->validateCmdObj ? Tcl_GetString(entryPtr->validateCmdObj) : NULL), change, newValue, index, type, &script); Tcl_DStringAppend(&script, "", 1); p = Tcl_DStringValue(&script); code = EntryValidate(entryPtr, p); @@ -3499,15 +3484,15 @@ * manipulation which the setting of the var will later wipe anyway. */ if (varValidate) { entryPtr->validate = VALIDATE_NONE; - } else if (entryPtr->invalidCmd != NULL) { + } else if (entryPtr->invalidCmdObj != NULL) { int result; Tcl_DStringInit(&script); - ExpandPercents(entryPtr, entryPtr->invalidCmd, + ExpandPercents(entryPtr, Tcl_GetString(entryPtr->invalidCmdObj), change, newValue, index, type, &script); Tcl_DStringAppend(&script, "", 1); p = Tcl_DStringValue(&script); result = Tcl_EvalEx(entryPtr->interp, p, TCL_INDEX_NONE, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT); @@ -3604,11 +3589,11 @@ * There's a percent sequence here. Process it. */ before++; /* skip over % */ if (*before != '\0') { - before += Tcl_UtfToUniChar(before, &ch); + before += TkUtfToUniChar(before, &ch); } else { ch = '%'; } if (type == VALIDATE_BUTTON) { /* @@ -3624,11 +3609,11 @@ break; case 'W': /* widget name */ string = Tk_PathName(entryPtr->tkwin); break; default: - length = Tcl_UniCharToUtf(ch, numStorage); + length = TkUniCharToUtf(ch, numStorage); numStorage[length] = '\0'; string = numStorage; break; } } else { @@ -3684,11 +3669,11 @@ break; case 'W': /* widget name */ string = Tk_PathName(entryPtr->tkwin); break; default: - length = Tcl_UniCharToUtf(ch, numStorage); + length = TkUniCharToUtf(ch, numStorage); numStorage[length] = '\0'; string = numStorage; break; } } @@ -4532,13 +4517,13 @@ } if (code != TCL_OK) { return TCL_ERROR; } - if (sbPtr->command != NULL) { + if (sbPtr->commandObj != NULL) { Tcl_DStringInit(&script); - ExpandPercents(entryPtr, sbPtr->command, type, "", 0, + ExpandPercents(entryPtr, Tcl_GetString(sbPtr->commandObj), type, "", 0, VALIDATE_BUTTON, &script); Tcl_DStringAppend(&script, "", 1); code = Tcl_EvalEx(interp, Tcl_DStringValue(&script), TCL_INDEX_NONE, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT); @@ -4591,12 +4576,12 @@ /* * Compute the displacement from the decimal of the most significant digit * required for any number in the dial's range. */ - if (sbPtr->reqFormat) { - sbPtr->valueFormat = sbPtr->reqFormat; + if (sbPtr->reqFormatObj) { + sbPtr->valueFormat = Tcl_GetString(sbPtr->reqFormatObj); return TCL_OK; } maxValue = fabs(sbPtr->fromValue); x = fabs(sbPtr->toValue); Index: generic/tkEntry.h ================================================================== --- generic/tkEntry.h +++ generic/tkEntry.h @@ -79,70 +79,56 @@ * in disabled state, plus used for * background. */ Tk_3DBorder readonlyBorder; /* Used for drawing border around whole window * in readonly state, plus used for * background. */ - Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */ + int borderWidth; /* Width of 3-D border around window. */ Tk_Cursor cursor; /* Current cursor for window, or NULL. */ int exportSelection; /* Non-zero means tie internal entry selection * to X selection. */ Tk_Font tkfont; /* Information about text font, or NULL. */ XColor *fgColorPtr; /* Text color in normal mode. */ XColor *dfgColorPtr; /* Text color in disabled mode. */ XColor *highlightBgColorPtr;/* Color for drawing traversal highlight area * when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around + int highlightWidth; /* Width in pixels of highlight to draw around * widget when it has the focus. <= 0 means * don't draw a highlight. */ Tk_3DBorder insertBorder; /* Used to draw vertical bar for insertion * cursor. */ - Tcl_Obj *insertBorderWidthObj; /* Width of 3-D border around insert cursor. */ + int insertBorderWidth; /* Width of 3-D border around insert cursor. */ int insertOffTime; /* Number of milliseconds cursor should spend * in "off" state for each blink. */ int insertOnTime; /* Number of milliseconds cursor should spend * in "on" state for each blink. */ - Tcl_Obj *insertWidthObj; /* Total width of insert cursor. */ + int insertWidth; /* Total width of insert cursor. */ Tk_Justify justify; /* Justification to use for text within * window. */ int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ Tk_3DBorder selBorder; /* Border and background for selected * characters. */ - Tcl_Obj *selBorderWidthObj; /* Width of border around selection. */ + int selBorderWidth; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected text. */ int state; /* Normal or disabled. Entry is read-only when * disabled. */ - char *textVarName; /* Name of variable (malloc'ed) or NULL. If + Tcl_Obj *textVarNameObj; /* Name of variable (malloc'ed) or NULL. If * non-NULL, entry's string tracks the * contents of this variable and vice * versa. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ int prefWidth; /* Desired width of window, measured in * average characters. */ - char *scrollCmd; /* Command prefix for communicating with - * scrollbar(s). Malloc'ed. NULL means no - * command to issue. */ - char *showChar; /* Value of -show option. If non-NULL, first + Tcl_Obj *scrollCmdObj; /* Command prefix for communicating with + * scrollbar(s). NULL means no command to issue. */ + Tcl_Obj *showCharObj; /* Value of -show option. If non-NULL, first * character is used for displaying all - * characters in entry. Malloc'ed. This is + * characters in entry. This is * only used by the Entry widget. */ - /* - * Fields used in displaying help text if entry value is empty - */ - - Tk_TextLayout placeholderLayout;/* Cached placeholder text layout information. */ - char *placeholderString; /* String value of placeholder. */ - Tcl_Size placeholderChars; /* Number of chars in placeholder. */ - XColor *placeholderColorPtr;/* Color value of placeholder foreground. */ - GC placeholderGC; /* For drawing placeholder text. */ - int placeholderX; /* Origin for layout. */ - int placeholderLeftIndex; /* Character index of left-most character - * visible in window. */ - /* * Fields whose values are derived from the current values of the * configuration settings above. */ @@ -179,22 +165,26 @@ * spinboxes for button space. */ int flags; /* Miscellaneous flags; see below for * definitions. */ int validate; /* Non-zero means try to validate */ - char *validateCmd; /* Command prefix to use when invoking - * validate command. NULL means don't invoke - * commands. Malloc'ed. */ - char *invalidCmd; /* Command called when a validation returns 0 + Tcl_Obj *validateCmdObj; /* Command prefix to use when invoking + * validate command. NULL means don't invoke commands. */ + Tcl_Obj *invalidCmdObj; /* Command called when a validation returns 0 * (successfully fails), defaults to {}. */ -#ifdef BUILD_tk - int borderWidth; - int highlightWidth; - int insertWidth; - int insertBorderWidth; - int selBorderWidth; -#endif + /* + * Fields used in displaying help text if entry value is empty + */ + + Tk_TextLayout placeholderLayout;/* Cached placeholder text layout information. */ + Tcl_Obj *placeholderObj; /* String value of placeholder. */ + Tcl_Size placeholderChars; /* Number of chars in placeholder. */ + XColor *placeholderColorPtr;/* Color value of placeholder foreground. */ + GC placeholderGC; /* For drawing placeholder text. */ + int placeholderX; /* Origin for layout. */ + int placeholderLeftIndex; /* Character index of left-most character + * visible in window. */ } Entry; /* * A data structure of the following type is kept for each spinbox widget * managed by this file: @@ -213,11 +203,11 @@ * buttons. */ Tk_3DBorder buttonBorder; /* Used for drawing border around buttons. */ Tk_Cursor bCursor; /* cursor for buttons, or NULL. */ int bdRelief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ int buRelief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ - char *command; /* Command to invoke for spin buttons. NULL + Tcl_Obj *commandObj; /* Command to invoke for spin buttons. NULL * means no command to issue. */ /* * Spinbox specific fields for use with configuration settings above. */ @@ -235,11 +225,11 @@ * dial */ double increment; /* If > 0, all values are rounded to an even * multiple of this value. */ char *formatBuf; /* string into which to format value. * Malloc'ed. */ - char *reqFormat; /* Snprintf conversion specifier used for the + Tcl_Obj *reqFormatObj; /* Snprintf conversion specifier used for the * value that the users requests. Malloc'ed */ char *valueFormat; /* Snprintf conversion specifier used for the * value. */ char digitFormat[16]; /* Snprintf conversion specifier computed from * digits and other information; used for the Index: generic/tkError.c ================================================================== --- generic/tkError.c +++ generic/tkError.c @@ -150,10 +150,15 @@ TkErrorHandler *errorPtr = (TkErrorHandler *) handler; TkDisplay *dispPtr = errorPtr->dispPtr; errorPtr->lastRequest = NextRequest(dispPtr->display) - 1; + /* + * Ensure that no user callback for this handler is invoked any further. + */ + errorPtr->errorProc = NULL; + /* * Every once-in-a-while, cleanup handlers that are no longer active. We * probably won't be able to free the handler that was just deleted (need * to wait for any outstanding requests to be processed by server), but * there may be previously-deleted handlers that are now ready for garbage Index: generic/tkFont.c ================================================================== --- generic/tkFont.c +++ generic/tkFont.c @@ -574,11 +574,11 @@ * The 'charPtr' arg must be a single Unicode. */ if (charPtr != NULL) { const char *string = Tcl_GetString(charPtr); - size_t len = Tcl_UtfToUniChar(string, &uniChar); + size_t len = TkUtfToUniChar(string, &uniChar); if (len != (size_t)charPtr->length) { resultPtr = Tcl_NewStringObj( "expected a single character but got \"", TCL_INDEX_NONE); Tcl_AppendLimitedToObj(resultPtr, string, @@ -884,10 +884,21 @@ static void TheWorldHasChanged( void *clientData) /* Info about application's fonts. */ { TkFontInfo *fiPtr = (TkFontInfo *)clientData; + + /* + * On macOS it is catastrophic to recompute all widgets while the + * [NSView drawRect] method is drawing. The best that we can do in + * that situation is to abort the recomputation and hope for the best. + * This is ignored on other platforms. + */ + + if (TkpWillDrawWidget(NULL)) { + return; + } fiPtr->updatePending = 0; RecomputeWidgets(fiPtr->mainPtr->winPtr); } @@ -1731,18 +1742,18 @@ for (; *src != '\0'; ) { while (isspace(UCHAR(*src))) { /* INTL: ISO space */ src++; upper = 1; } - src += Tcl_UtfToUniChar(src, &ch); + src += TkUtfToUniChar(src, &ch); if (upper) { ch = Tcl_UniCharToUpper(ch); upper = 0; } else { ch = Tcl_UniCharToLower(ch); } - dest += Tcl_UniCharToUtf(ch, dest); + dest += TkUniCharToUtf(ch, dest); } *dest = '\0'; Tcl_DStringSetLength(dsPtr, dest - Tcl_DStringValue(dsPtr)); family = Tcl_DStringValue(dsPtr) + len; } @@ -1999,11 +2010,11 @@ fmPtr = &fontPtr->fm; height = fmPtr->ascent + fmPtr->descent; if (numChars < 0) { - numChars = Tcl_NumUtfChars(string, TCL_INDEX_NONE); + numChars = TkNumUtfChars(string, TCL_INDEX_NONE); } if (wrapLength == 0) { wrapLength = -1; } @@ -2022,11 +2033,11 @@ * Divide the string up into simple strings and measure each string. */ curX = 0; - endp = Tcl_UtfAtIndex(string, numChars); + endp = TkUtfAtIndex(string, numChars); special = string; flags &= TK_IGNORE_TABS | TK_IGNORE_NEWLINES; flags |= TK_WHOLE_WORDS | TK_AT_LEAST_ONE; for (start = string; start < endp; ) { @@ -2139,11 +2150,11 @@ bytesThisChunk = start - end; if (bytesThisChunk > 0) { bytesThisChunk = Tk_MeasureChars(tkfont, end, bytesThisChunk, -1, 0, &chunkPtr->totalWidth); chunkPtr->numBytes += bytesThisChunk; - chunkPtr->numChars += Tcl_NumUtfChars(end, bytesThisChunk); + chunkPtr->numChars += TkNumUtfChars(end, bytesThisChunk); chunkPtr->totalWidth += curX; } } wrapLine: @@ -2331,18 +2342,18 @@ if (firstChar <= 0) { drawX = 0; firstChar = 0; firstByte = chunkPtr->start; } else { - firstByte = Tcl_UtfAtIndex(chunkPtr->start, firstChar); + firstByte = TkUtfAtIndex(chunkPtr->start, firstChar); Tk_MeasureChars(layoutPtr->tkfont, chunkPtr->start, firstByte - chunkPtr->start, -1, 0, &drawX); } if (lastChar < numDisplayChars) { numDisplayChars = lastChar; } - lastByte = Tcl_UtfAtIndex(chunkPtr->start, numDisplayChars); + lastByte = TkUtfAtIndex(chunkPtr->start, numDisplayChars); #ifdef TK_DRAW_IN_CONTEXT TkpDrawCharsInContext(display, drawable, gc, layoutPtr->tkfont, chunkPtr->start, chunkPtr->numBytes, firstByte - chunkPtr->start, lastByte - firstByte, x+chunkPtr->x, y+chunkPtr->y); @@ -2401,18 +2412,18 @@ if (firstChar <= 0) { drawX = 0; firstChar = 0; firstByte = chunkPtr->start; } else { - firstByte = Tcl_UtfAtIndex(chunkPtr->start, firstChar); + firstByte = TkUtfAtIndex(chunkPtr->start, firstChar); Tk_MeasureChars(layoutPtr->tkfont, chunkPtr->start, firstByte - chunkPtr->start, -1, 0, &drawX); } if (lastChar < numDisplayChars) { numDisplayChars = lastChar; } - lastByte = Tcl_UtfAtIndex(chunkPtr->start, numDisplayChars); + lastByte = TkUtfAtIndex(chunkPtr->start, numDisplayChars); #ifdef TK_DRAW_IN_CONTEXT dx = cosA * (chunkPtr->x) + sinA * (chunkPtr->y); dy = -sinA * (chunkPtr->x) + cosA * (chunkPtr->y); if (angle == 0.0) { TkpDrawCharsInContext(display, drawable, gc, @@ -2661,11 +2672,11 @@ return numChars; } n = Tk_MeasureChars((Tk_Font) fontPtr, chunkPtr->start, chunkPtr->numBytes, x - chunkPtr->x, 0, &dummy); - return numChars + Tcl_NumUtfChars(chunkPtr->start, n); + return numChars + TkNumUtfChars(chunkPtr->start, n); } numChars += chunkPtr->numChars; lastPtr = chunkPtr; chunkPtr++; i++; @@ -2770,19 +2781,19 @@ x = chunkPtr->x; w = chunkPtr->totalWidth; goto check; } } else if (index < chunkPtr->numChars) { - end = Tcl_UtfAtIndex(chunkPtr->start, index); + end = TkUtfAtIndex(chunkPtr->start, index); if (xPtr != NULL) { Tk_MeasureChars(tkfont, chunkPtr->start, end - chunkPtr->start, -1, 0, &x); x += chunkPtr->x; } if (widthPtr != NULL) { int ch; - Tk_MeasureChars(tkfont, end, Tcl_UtfToUniChar(end, &ch), -1, 0, &w); + Tk_MeasureChars(tkfont, end, TkUtfToUniChar(end, &ch), -1, 0, &w); } goto check; } index -= chunkPtr->numChars; chunkPtr++; @@ -3324,11 +3335,11 @@ * from the standard set defined by Adobe. The rest get punted. * Eventually this should be revised to handle more sophsticiated * international postscript fonts. */ - p += Tcl_UtfToUniChar(p, &ch); + p += TkUtfToUniChar(p, &ch); if ((ch == '(') || (ch == ')') || (ch == '\\') || (ch < 0x20)) { /* * Tricky point: the "03" is necessary in the snprintf below, * so that a full three digits of octal are always generated. * Without the "03", a number following this sequence could be @@ -3845,11 +3856,11 @@ layoutPtr = (TextLayout *)ckrealloc(layoutPtr, s); *layoutPtrPtr = layoutPtr; *maxPtr = maxChunks; } - numChars = Tcl_NumUtfChars(start, numBytes); + numChars = TkNumUtfChars(start, numBytes); chunkPtr = &layoutPtr->chunks[layoutPtr->numChunks]; chunkPtr->start = start; chunkPtr->numBytes = numBytes; chunkPtr->numChars = numChars; chunkPtr->numDisplayChars = numChars; Index: generic/tkFrame.c ================================================================== --- generic/tkFrame.c +++ generic/tkFrame.c @@ -39,53 +39,49 @@ Tcl_Interp *interp; /* Interpreter associated with widget. Used to * delete widget command. */ Tcl_Command widgetCmd; /* Token for frame's widget command. */ Tk_OptionTable optionTable; /* Table that defines configuration options * available for this widget. */ - char *className; /* Class name for widget (from configuration - * option). Malloc-ed. */ + Tcl_Obj *classNameObj; /* Class name for widget (from configuration + * option). May be NULL. */ int type; /* Type of widget, such as TYPE_FRAME. */ - char *screenName; /* Screen on which widget is created. Non-null - * only for top-levels. Malloc-ed, may be - * NULL. */ - char *visualName; /* Textual description of visual for window, - * from -visual option. Malloc-ed, may be - * NULL. */ - char *colormapName; /* Textual description of colormap for window, - * from -colormap option. Malloc-ed, may be - * NULL. */ - char *menuName; /* Textual description of menu to use for + Tcl_Obj *screenNameObj; /* Screen on which widget is created. Non-null + * only for top-levels. May be NULL. */ + Tcl_Obj *visualNameObj; /* Textual description of visual for window, + * from -visual option. May be NULL. */ + Tcl_Obj *colormapNameObj; /* Textual description of colormap for window, + * from -colormap option. May be NULL. */ + Tcl_Obj *menuNameObj; /* Textual description of menu to use for * menubar. Malloc-ed, may be NULL. */ Colormap colormap; /* If not None, identifies a colormap * allocated for this window, which must be * freed when the window is deleted. */ Tk_3DBorder border; /* Structure used to draw 3-D border and * background. NULL means no background or * border. */ - Tcl_Obj *borderWidthObj; /* Width of 3-D border (if any). */ + int borderWidth; /* Width of 3-D border (if any). */ int relief; /* 3-d effect: TK_RELIEF_RAISED etc. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around + int highlightWidth; /* Width in pixels of highlight to draw around * widget when it has the focus. 0 means don't * draw a highlight. */ XColor *highlightBgColorPtr; /* Color for drawing traversal highlight area * when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ - Tcl_Obj *widthObj; /* Width to request for window. <= 0 means + int width; /* Width to request for window. <= 0 means * don't request any size. */ - Tcl_Obj *heightObj; /* Height to request for window. <= 0 means + int height; /* Height to request for window. <= 0 means * don't request any size. */ Tk_Cursor cursor; /* Current cursor for window, or None. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ int isContainer; /* 1 means this window is a container, 0 means * that it isn't. */ - char *useThis; /* If the window is embedded, this points to + Tcl_Obj *useThisObj; /* If the window is embedded, this points to * the name of the window in which it is - * embedded (malloc'ed). For non-embedded - * windows this is NULL. */ + * embedded. For non-embedded windows this is NULL. */ int flags; /* Various flags; see below for * definitions. */ Tcl_Obj *padXObj; /* Value of -padx option: specifies how many * pixels of extra space to leave on left and * right of child area. */ @@ -185,11 +181,11 @@ DEF_FRAME_BG_COLOR, TCL_INDEX_NONE, offsetof(Frame, border), TK_OPTION_NULL_OK, DEF_FRAME_BG_MONO, 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_STRING, "-colormap", "colormap", "Colormap", - DEF_FRAME_COLORMAP, TCL_INDEX_NONE, offsetof(Frame, colormapName), + DEF_FRAME_COLORMAP, offsetof(Frame, colormapNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, /* * Having -container is useless in a labelframe since a container has * no border. It should be deprecated. */ @@ -197,32 +193,32 @@ DEF_FRAME_CONTAINER, TCL_INDEX_NONE, offsetof(Frame, isContainer), 0, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_FRAME_CURSOR, TCL_INDEX_NONE, offsetof(Frame, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-height", "height", "Height", - DEF_FRAME_HEIGHT, offsetof(Frame, heightObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_FRAME_HEIGHT, TCL_INDEX_NONE, offsetof(Frame, height), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_FRAME_HIGHLIGHT_BG, TCL_INDEX_NONE, offsetof(Frame, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_FRAME_HIGHLIGHT, TCL_INDEX_NONE, offsetof(Frame, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_FRAME_HIGHLIGHT_WIDTH, offsetof(Frame, highlightWidthObj), - TCL_INDEX_NONE, 0, 0, 0}, + "HighlightThickness", DEF_FRAME_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, + offsetof(Frame, highlightWidth), 0, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", DEF_FRAME_PADX, offsetof(Frame, padXObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", DEF_FRAME_PADY, offsetof(Frame, padYObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_FRAME_TAKE_FOCUS, TCL_INDEX_NONE, offsetof(Frame, takeFocus), + DEF_FRAME_TAKE_FOCUS, offsetof(Frame, takeFocusObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-visual", "visual", "Visual", - DEF_FRAME_VISUAL, TCL_INDEX_NONE, offsetof(Frame, visualName), + DEF_FRAME_VISUAL, offsetof(Frame, visualNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-width", "width", "Width", - DEF_FRAME_WIDTH, offsetof(Frame, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_FRAME_WIDTH, TCL_INDEX_NONE, offsetof(Frame, width), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0} }; static const Tk_OptionSpec frameOptSpec[] = { {TK_OPTION_STRING, "-backgroundimage", "backgroundImage", "BackgroundImage", @@ -231,13 +227,13 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bgimg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-backgroundimage", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_FRAME_BORDER_WIDTH, offsetof(Frame, borderWidthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_FRAME_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Frame, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-class", "class", "Class", - DEF_FRAME_CLASS, TCL_INDEX_NONE, offsetof(Frame, className), 0, 0, 0}, + DEF_FRAME_CLASS, offsetof(Frame, classNameObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_FRAME_RELIEF, TCL_INDEX_NONE, offsetof(Frame, relief), 0, 0, 0}, {TK_OPTION_BOOLEAN, "-tile", "tile", "Tile", DEF_FRAME_BG_TILE, TCL_INDEX_NONE, offsetof(Frame, tile), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, @@ -251,38 +247,38 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bgimg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-backgroundimage", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_FRAME_BORDER_WIDTH, offsetof(Frame, borderWidthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_FRAME_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Frame, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-class", "class", "Class", - DEF_TOPLEVEL_CLASS, TCL_INDEX_NONE, offsetof(Frame, className), 0, 0, 0}, + DEF_TOPLEVEL_CLASS, offsetof(Frame, classNameObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-menu", "menu", "Menu", - DEF_TOPLEVEL_MENU, TCL_INDEX_NONE, offsetof(Frame, menuName), + DEF_TOPLEVEL_MENU, offsetof(Frame, menuNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_FRAME_RELIEF, TCL_INDEX_NONE, offsetof(Frame, relief), 0, 0, 0}, {TK_OPTION_STRING, "-screen", "screen", "Screen", - DEF_TOPLEVEL_SCREEN, TCL_INDEX_NONE, offsetof(Frame, screenName), + DEF_TOPLEVEL_SCREEN, offsetof(Frame, screenNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-tile", "tile", "Tile", DEF_FRAME_BG_TILE, TCL_INDEX_NONE, offsetof(Frame, tile), 0, 0, 0}, {TK_OPTION_STRING, "-use", "use", "Use", - DEF_TOPLEVEL_USE, TCL_INDEX_NONE, offsetof(Frame, useThis), + DEF_TOPLEVEL_USE, offsetof(Frame, useThisObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, commonOptSpec, 0} }; static const Tk_OptionSpec labelframeOptSpec[] = { {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_LABELFRAME_BORDER_WIDTH, offsetof(Frame, borderWidthObj), TCL_INDEX_NONE, + DEF_LABELFRAME_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Frame, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-class", "class", "Class", - DEF_LABELFRAME_CLASS, TCL_INDEX_NONE, offsetof(Frame, className), 0, 0, 0}, + DEF_LABELFRAME_CLASS, offsetof(Frame, classNameObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_SYNONYM, "-fg", "foreground", NULL, NULL, 0, TCL_INDEX_NONE, 0, "-foreground", 0}, {TK_OPTION_FONT, "-font", "font", "Font", DEF_LABELFRAME_FONT, TCL_INDEX_NONE, offsetof(Labelframe, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", @@ -323,10 +319,13 @@ */ static void ComputeFrameGeometry(Frame *framePtr); static int ConfigureFrame(Tcl_Interp *interp, Frame *framePtr, Tcl_Size objc, Tcl_Obj *const objv[]); +static int CreateFrame(void *clientData, Tcl_Interp *interp, + Tcl_Size objc, Tcl_Obj *const objv[], + int type, const char *appName); static Tcl_FreeProc DestroyFrame; static void DestroyFramePartly(Frame *framePtr); static void DisplayFrame(void *clientData); static void DrawFrameBackground(Tk_Window tkwin, Pixmap pixmap, int highlightWidth, int borderWidth, @@ -394,31 +393,31 @@ void *clientData, /* Either NULL or pointer to option table. */ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - return TkCreateFrame(clientData, interp, objc, objv, TYPE_FRAME, NULL); + return CreateFrame(clientData, interp, objc, objv, TYPE_FRAME, NULL); } int Tk_ToplevelObjCmd( void *clientData, /* Either NULL or pointer to option table. */ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - return TkCreateFrame(clientData, interp, objc, objv, TYPE_TOPLEVEL, NULL); + return CreateFrame(clientData, interp, objc, objv, TYPE_TOPLEVEL, NULL); } int Tk_LabelframeObjCmd( void *clientData, /* Either NULL or pointer to option table. */ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - return TkCreateFrame(clientData, interp, objc, objv, TYPE_LABELFRAME, NULL); + return CreateFrame(clientData, interp, objc, objv, TYPE_LABELFRAME, NULL); } /* *-------------------------------------------------------------- * @@ -438,10 +437,64 @@ *-------------------------------------------------------------- */ int TkCreateFrame( + void *clientData, /* Either NULL or pointer to option table. */ + Tcl_Interp *interp, /* Current interpreter. */ + Tcl_Size argc, /* Number of arguments. */ + const char *const *argv, /* Argument strings. */ + int toplevel, /* Non-zero means create a toplevel window, + * zero means create a frame. */ + const char *appName) /* Should only be non-NULL if there is no main + * window associated with the interpreter. + * Gives the base name to use for the new + * application. */ +{ + int result; + Tcl_Size i; + Tcl_Obj **objv = (Tcl_Obj **)ckalloc((argc+1) * sizeof(Tcl_Obj **)); + + for (i=0; iflags |= TK_WM_MANAGEABLE; + ((TkWindow *)newWin)->flags |= TK_WM_MANAGEABLE; if (className == NULL) { className = Tk_GetOption(newWin, "class", "Class"); if (className == NULL) { className = classNames[type]; @@ -655,11 +708,11 @@ != TCL_OK) || (ConfigureFrame(interp, framePtr, objc-2, objv+2) != TCL_OK)) { goto error; } if (framePtr->isContainer) { - if (framePtr->useThis != NULL) { + if (framePtr->useThisObj != NULL) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "windows cannot have both the -use and the -container" " option set", TCL_INDEX_NONE)); Tcl_SetErrorCode(interp, "TK", "FRAME", "CONTAINMENT", NULL); goto error; @@ -922,36 +975,33 @@ * already have values for some fields. */ Tcl_Size objc, /* Number of valid entries in objv. */ Tcl_Obj *const objv[]) /* Arguments. */ { Tk_SavedOptions savedOptions; - char *oldMenuName; + Tcl_Obj *oldMenuNameObj; Tk_Window oldWindow = NULL; Labelframe *labelframePtr = (Labelframe *) framePtr; Tk_Image image = NULL; - int padX, padY, width, height; - int borderWidth, highlightWidth; + int padX, padY; /* * Need the old menubar name for the menu code to delete it. */ - if (framePtr->menuName == NULL) { - oldMenuName = NULL; - } else { - oldMenuName = (char *)ckalloc(strlen(framePtr->menuName) + 1); - strcpy(oldMenuName, framePtr->menuName); + oldMenuNameObj = framePtr->menuNameObj; + if (oldMenuNameObj) { + Tcl_IncrRefCount(oldMenuNameObj); } if (framePtr->type == TYPE_LABELFRAME) { oldWindow = labelframePtr->labelWin; } if (Tk_SetOptions(interp, framePtr, framePtr->optionTable, objc, objv, framePtr->tkwin, &savedOptions, NULL) != TCL_OK) { - if (oldMenuName != NULL) { - ckfree(oldMenuName); + if (oldMenuNameObj != NULL) { + Tcl_DecrRefCount(oldMenuNameObj); } return TCL_ERROR; } if (framePtr->bgimgPtr) { @@ -971,52 +1021,40 @@ /* * A few of the options require additional processing. */ - if ((((oldMenuName == NULL) && (framePtr->menuName != NULL)) - || ((oldMenuName != NULL) && (framePtr->menuName == NULL)) - || ((oldMenuName != NULL) && (framePtr->menuName != NULL) - && strcmp(oldMenuName, framePtr->menuName) != 0)) + if ((((oldMenuNameObj == NULL) && (framePtr->menuNameObj != NULL)) + || ((oldMenuNameObj != NULL) && (framePtr->menuNameObj == NULL)) + || ((oldMenuNameObj != NULL) && (framePtr->menuNameObj != NULL) + && strcmp(Tcl_GetString(oldMenuNameObj), Tcl_GetString(framePtr->menuNameObj)) != 0)) && framePtr->type == TYPE_TOPLEVEL) { - Tk_SetWindowMenubar(interp, framePtr->tkwin, oldMenuName, - framePtr->menuName); + Tk_SetWindowMenubar(interp, framePtr->tkwin, (oldMenuNameObj ? Tcl_GetString(oldMenuNameObj) : NULL), + (framePtr->menuNameObj ? Tcl_GetString(framePtr->menuNameObj) : NULL)); } - if (oldMenuName != NULL) { - ckfree(oldMenuName); + if (oldMenuNameObj != NULL) { + Tcl_DecrRefCount(oldMenuNameObj); } if (framePtr->border != NULL) { Tk_SetBackgroundFromBorder(framePtr->tkwin, framePtr->border); } else { Tk_SetWindowBackgroundPixmap(framePtr->tkwin, None); } - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->widthObj, &width); - if (width < 0) { - Tcl_DecrRefCount(framePtr->widthObj); - framePtr->widthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(framePtr->widthObj); - } - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->heightObj, &height); - if (height < 0) { - Tcl_DecrRefCount(framePtr->heightObj); - framePtr->heightObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(framePtr->heightObj); - } - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth); - if (borderWidth < 0) { - Tcl_DecrRefCount(framePtr->borderWidthObj); - framePtr->borderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(framePtr->borderWidthObj); - } - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth < 0) { - Tcl_DecrRefCount(framePtr->highlightWidthObj); - framePtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(framePtr->highlightWidthObj); + if (framePtr->width < 0) { + framePtr->width = 0; + } + if (framePtr->height < 0) { + framePtr->height = 0; + } + if (framePtr->borderWidth < 0) { + framePtr->borderWidth = 0; + } + if (framePtr->highlightWidth < 0) { + framePtr->highlightWidth = 0; } Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->padXObj, &padX); if (padX < 0) { Tcl_DecrRefCount(framePtr->padXObj); framePtr->padXObj = Tcl_NewIntObj(0); @@ -1126,12 +1164,11 @@ XGCValues gcValues; GC gc; int anyTextLabel, anyWindowLabel; int bWidthLeft, bWidthRight, bWidthTop, bWidthBottom; const char *labelText; - int padX, padY, width, height; - int borderWidth, highlightWidth; + int padX, padY; anyTextLabel = (framePtr->type == TYPE_LABELFRAME) && (labelframePtr->textPtr != NULL) && (labelframePtr->labelWin == NULL); anyWindowLabel = (framePtr->type == TYPE_LABELFRAME) && @@ -1143,11 +1180,10 @@ if (framePtr->copyGC != NULL) { Tk_FreeGC(framePtr->display, framePtr->copyGC); } framePtr->copyGC = gc; #endif /* TK_NO_DOUBLE_BUFFERING */ - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth); if (framePtr->type == TYPE_LABELFRAME) { /* * The textGC is needed even in the labelWin case, so it's always * created for a labelframe. @@ -1191,31 +1227,29 @@ * thick borders. */ if ((labelframePtr->labelAnchor >= LABELANCHOR_N) && (labelframePtr->labelAnchor <= LABELANCHOR_SW)) { - if (labelframePtr->labelReqHeight < borderWidth) { - labelframePtr->labelReqHeight = borderWidth; + if (labelframePtr->labelReqHeight < framePtr->borderWidth) { + labelframePtr->labelReqHeight = framePtr->borderWidth; } } else { - if (labelframePtr->labelReqWidth < borderWidth) { - labelframePtr->labelReqWidth = borderWidth; + if (labelframePtr->labelReqWidth < framePtr->borderWidth) { + labelframePtr->labelReqWidth = framePtr->borderWidth; } } } /* * Calculate individual border widths. */ + + bWidthBottom = bWidthTop = bWidthRight = bWidthLeft = + framePtr->borderWidth + framePtr->highlightWidth; Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->padXObj, &padX); Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->padYObj, &padY); - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - - bWidthBottom = bWidthTop = bWidthRight = bWidthLeft = - borderWidth + highlightWidth; - bWidthLeft += padX; bWidthRight += padX; bWidthTop += padY; bWidthBottom += padY; @@ -1222,24 +1256,24 @@ if (anyTextLabel || anyWindowLabel) { switch (labelframePtr->labelAnchor) { case LABELANCHOR_E: case LABELANCHOR_EN: case LABELANCHOR_ES: - bWidthRight += labelframePtr->labelReqWidth - borderWidth; + bWidthRight += labelframePtr->labelReqWidth - framePtr->borderWidth; break; case LABELANCHOR_N: case LABELANCHOR_NE: case LABELANCHOR_NW: - bWidthTop += labelframePtr->labelReqHeight - borderWidth; + bWidthTop += labelframePtr->labelReqHeight - framePtr->borderWidth; break; case LABELANCHOR_S: case LABELANCHOR_SE: case LABELANCHOR_SW: - bWidthBottom += labelframePtr->labelReqHeight - borderWidth; + bWidthBottom += labelframePtr->labelReqHeight - framePtr->borderWidth; break; default: - bWidthLeft += labelframePtr->labelReqWidth - borderWidth; + bWidthLeft += labelframePtr->labelReqWidth - framePtr->borderWidth; break; } } Tk_SetInternalBorderEx(tkwin, bWidthLeft, bWidthRight, bWidthTop, @@ -1252,31 +1286,29 @@ */ if (framePtr->type == TYPE_LABELFRAME) { int minwidth = labelframePtr->labelReqWidth; int minheight = labelframePtr->labelReqHeight; - int padding = highlightWidth; + int padding = framePtr->highlightWidth; - if (borderWidth > 0) { - padding += borderWidth + LABELMARGIN; + if (framePtr->borderWidth > 0) { + padding += framePtr->borderWidth + LABELMARGIN; } padding *= 2; if ((labelframePtr->labelAnchor >= LABELANCHOR_N) && (labelframePtr->labelAnchor <= LABELANCHOR_SW)) { minwidth += padding; - minheight += borderWidth + highlightWidth; + minheight += framePtr->borderWidth + framePtr->highlightWidth; } else { minheight += padding; - minwidth += borderWidth + highlightWidth; + minwidth += framePtr->borderWidth + framePtr->highlightWidth; } Tk_SetMinimumRequestSize(tkwin, minwidth, minheight); } - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->widthObj, &width); - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->heightObj, &height); - if ((width > 0) || (height > 0)) { - Tk_GeometryRequest(tkwin, width, height); + if ((framePtr->width > 0) || (framePtr->height > 0)) { + Tk_GeometryRequest(tkwin, framePtr->width, framePtr->height); } if (Tk_IsMapped(tkwin)) { if (!(framePtr->flags & REDRAW_PENDING)) { Tcl_DoWhenIdle(DisplayFrame, framePtr); @@ -1308,11 +1340,10 @@ Frame *framePtr) /* Information about widget. */ { int otherWidth, otherHeight, otherWidthT, otherHeightT, padding; int maxWidth, maxHeight; Tk_Window tkwin; - int borderWidth, highlightWidth; Labelframe *labelframePtr = (Labelframe *) framePtr; /* * We have nothing to do here unless there is a label. */ @@ -1331,15 +1362,13 @@ */ labelframePtr->labelBox.width = labelframePtr->labelReqWidth; labelframePtr->labelBox.height = labelframePtr->labelReqHeight; - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - padding = highlightWidth; - if (borderWidth > 0) { - padding += borderWidth + LABELMARGIN; + padding = framePtr->highlightWidth; + if (framePtr->borderWidth > 0) { + padding += framePtr->borderWidth + LABELMARGIN; } padding *= 2; maxHeight = Tk_Height(tkwin); maxWidth = Tk_Width(tkwin); @@ -1371,11 +1400,11 @@ otherWidth = Tk_Width(tkwin) - labelframePtr->labelBox.width; otherHeight = Tk_Height(tkwin) - labelframePtr->labelBox.height; otherWidthT = Tk_Width(tkwin) - labelframePtr->labelReqWidth; otherHeightT = Tk_Height(tkwin) - labelframePtr->labelReqHeight; - padding = highlightWidth; + padding = framePtr->highlightWidth; switch (labelframePtr->labelAnchor) { case LABELANCHOR_E: case LABELANCHOR_EN: case LABELANCHOR_ES: @@ -1398,12 +1427,12 @@ labelframePtr->labelTextX = padding; labelframePtr->labelBox.x = padding; break; } - if (borderWidth > 0) { - padding += borderWidth + LABELMARGIN; + if (framePtr->borderWidth > 0) { + padding += framePtr->borderWidth + LABELMARGIN; } switch (labelframePtr->labelAnchor) { case LABELANCHOR_NW: case LABELANCHOR_SW: @@ -1460,11 +1489,10 @@ Frame *framePtr = (Frame *)clientData; Tk_Window tkwin = framePtr->tkwin; int bdX1, bdY1, bdX2, bdY2; Pixmap pixmap; Bool useClipping = False; - int borderWidth, highlightWidth; framePtr->flags &= ~REDRAW_PENDING; if ((framePtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } @@ -1471,24 +1499,22 @@ /* * Highlight shall always be drawn if it exists, so do that first. */ - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - - if (highlightWidth > 0) { + if (framePtr->highlightWidth > 0) { GC fgGC, bgGC; bgGC = Tk_GCForColor(framePtr->highlightBgColorPtr, Tk_WindowId(tkwin)); if (framePtr->flags & GOT_FOCUS) { fgGC = Tk_GCForColor(framePtr->highlightColorPtr, Tk_WindowId(tkwin)); - Tk_DrawHighlightBorder(tkwin, fgGC, bgGC, highlightWidth, + Tk_DrawHighlightBorder(tkwin, fgGC, bgGC, framePtr->highlightWidth, Tk_WindowId(tkwin)); } else { - Tk_DrawHighlightBorder(tkwin, bgGC, bgGC, highlightWidth, + Tk_DrawHighlightBorder(tkwin, bgGC, bgGC, framePtr->highlightWidth, Tk_WindowId(tkwin)); } } /* @@ -1516,23 +1542,22 @@ #else pixmap = Tk_WindowId(tkwin); Tk_ClipDrawableToRect(Tk_Display(tkwin), pixmap, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin)); #endif /* TK_NO_DOUBLE_BUFFERING */ - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth); if (framePtr->type != TYPE_LABELFRAME) { /* * Pass to platform specific draw function. In general, it just draws * a simple rectangle, but it may "theme" the background. */ noLabel: - TkpDrawFrameEx(tkwin, pixmap, framePtr->border, highlightWidth, - borderWidth, framePtr->relief); + TkpDrawFrameEx(tkwin, pixmap, framePtr->border, framePtr->highlightWidth, + framePtr->borderWidth, framePtr->relief); if (framePtr->bgimg) { - DrawFrameBackground(tkwin, pixmap, highlightWidth, borderWidth, + DrawFrameBackground(tkwin, pixmap, framePtr->highlightWidth, framePtr->borderWidth, framePtr->bgimg, framePtr->tile); } } else { Labelframe *labelframePtr = (Labelframe *) framePtr; @@ -1550,46 +1575,46 @@ /* * Calculate how the label affects the border's position. */ - bdX1 = bdY1 = highlightWidth; - bdX2 = Tk_Width(tkwin) - highlightWidth; - bdY2 = Tk_Height(tkwin) - highlightWidth; + bdX1 = bdY1 = framePtr->highlightWidth; + bdX2 = Tk_Width(tkwin) - framePtr->highlightWidth; + bdY2 = Tk_Height(tkwin) - framePtr->highlightWidth; switch (labelframePtr->labelAnchor) { case LABELANCHOR_E: case LABELANCHOR_EN: case LABELANCHOR_ES: - bdX2 -= (labelframePtr->labelBox.width-borderWidth) / 2; + bdX2 -= (labelframePtr->labelBox.width - framePtr->borderWidth) / 2; break; case LABELANCHOR_N: case LABELANCHOR_NE: case LABELANCHOR_NW: /* * Since the glyphs of the text tend to be in the lower part we * favor a lower border position by rounding up. */ - bdY1 += (labelframePtr->labelBox.height-borderWidth+1)/2; + bdY1 += (labelframePtr->labelBox.height - framePtr->borderWidth+1)/2; break; case LABELANCHOR_S: case LABELANCHOR_SE: case LABELANCHOR_SW: - bdY2 -= (labelframePtr->labelBox.height-borderWidth) / 2; + bdY2 -= (labelframePtr->labelBox.height - framePtr->borderWidth) / 2; break; default: - bdX1 += (labelframePtr->labelBox.width-borderWidth) / 2; + bdX1 += (labelframePtr->labelBox.width - framePtr->borderWidth) / 2; break; } /* * Draw border */ Tk_Draw3DRectangle(tkwin, pixmap, framePtr->border, bdX1, bdY1, - bdX2 - bdX1, bdY2 - bdY1, borderWidth, + bdX2 - bdX1, bdY2 - bdY1, framePtr->borderWidth, framePtr->relief); if (labelframePtr->labelWin == NULL) { /* * Clear behind the label @@ -1656,14 +1681,14 @@ * Everything's been redisplayed; now copy the pixmap onto the screen and * free up the pixmap. */ XCopyArea(framePtr->display, pixmap, Tk_WindowId(tkwin), - framePtr->copyGC, highlightWidth, highlightWidth, - (unsigned) (Tk_Width(tkwin) - 2 * highlightWidth), - (unsigned) (Tk_Height(tkwin) - 2 * highlightWidth), - highlightWidth, highlightWidth); + framePtr->copyGC, framePtr->highlightWidth, framePtr->highlightWidth, + (unsigned) (Tk_Width(tkwin) - 2 * framePtr->highlightWidth), + (unsigned) (Tk_Height(tkwin) - 2 * framePtr->highlightWidth), + framePtr->highlightWidth, framePtr->highlightWidth); Tk_FreePixmap(framePtr->display, pixmap); #endif /* TK_NO_DOUBLE_BUFFERING */ } /* @@ -1729,15 +1754,15 @@ goto redraw; } else if (eventPtr->type == ConfigureNotify) { ComputeFrameGeometry(framePtr); goto redraw; } else if (eventPtr->type == DestroyNotify) { - if (framePtr->menuName != NULL) { + if (framePtr->menuNameObj != NULL) { Tk_SetWindowMenubar(framePtr->interp, framePtr->tkwin, - framePtr->menuName, NULL); - ckfree(framePtr->menuName); - framePtr->menuName = NULL; + Tcl_GetString(framePtr->menuNameObj), NULL); + Tcl_DecrRefCount(framePtr->menuNameObj); + framePtr->menuNameObj = NULL; } if (framePtr->tkwin != NULL) { /* * If this window is a container, then this event could be coming * from the embedded application, in which case Tk_DestroyWindow @@ -1766,29 +1791,25 @@ } Tcl_CancelIdleCall(MapFrame, framePtr); Tcl_EventuallyFree(framePtr, DestroyFrame); } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { - int highlightWidth; framePtr->flags |= GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (framePtr->highlightWidth > 0) { goto redraw; } } } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { - int highlightWidth; framePtr->flags &= ~GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (framePtr->highlightWidth > 0) { goto redraw; } } } else if (eventPtr->type == ActivateNotify) { - Tk_SetMainMenubar(framePtr->interp, framePtr->tkwin, - framePtr->menuName); + Tk_SetMainMenubar(framePtr->interp, framePtr->tkwin, + (framePtr->menuNameObj ? Tcl_GetString(framePtr->menuNameObj) : NULL)); } return; redraw: if ((framePtr->tkwin != NULL) && !(framePtr->flags & REDRAW_PENDING)) { @@ -1820,15 +1841,15 @@ void *clientData) /* Pointer to widget record for widget. */ { Frame *framePtr = (Frame *)clientData; Tk_Window tkwin = framePtr->tkwin; - if (framePtr->menuName != NULL) { + if (framePtr->menuNameObj != NULL) { Tk_SetWindowMenubar(framePtr->interp, framePtr->tkwin, - framePtr->menuName, NULL); - ckfree(framePtr->menuName); - framePtr->menuName = NULL; + Tcl_GetString(framePtr->menuNameObj), NULL); + Tcl_DecrRefCount(framePtr->menuNameObj); + framePtr->menuNameObj = NULL; } /* * This function could be invoked either because the window was destroyed * and the command was then deleted (in which case tkwin is NULL) or @@ -1920,20 +1941,20 @@ void TkInstallFrameMenu( Tk_Window tkwin) /* The window that was just created. */ { - TkWindow *winPtr = (TkWindow *) tkwin; + TkWindow *winPtr = (TkWindow *)tkwin; if (winPtr->mainPtr != NULL) { Frame *framePtr = (Frame *)winPtr->instanceData; if (framePtr == NULL) { Tcl_Panic("TkInstallFrameMenu couldn't get frame pointer"); } TkpMenuNotifyToplevelCreate(winPtr->mainPtr->interp, - framePtr->menuName); + (framePtr->menuNameObj ? Tcl_GetString(framePtr->menuNameObj) : NULL)); } } /* *-------------------------------------------------------------- @@ -2018,11 +2039,11 @@ *-------------------------------------------------------------- */ static void FrameLostContentProc( - void *clientData, /* Frame structure for content window window that was + void *clientData, /* Frame structure for content window that was * stolen away. */ TCL_UNUSED(Tk_Window)) /* Tk's handle for the content window window. */ { Frame *framePtr = (Frame *)clientData; Labelframe *labelframePtr = (Labelframe *)clientData; @@ -2046,19 +2067,19 @@ void TkMapTopFrame( Tk_Window tkwin) { - Frame *framePtr = (Frame *)((TkWindow *) tkwin)->instanceData; + Frame *framePtr = (Frame *)((TkWindow *)tkwin)->instanceData; Tk_OptionTable optionTable; if (Tk_IsTopLevel(tkwin) && framePtr->type == TYPE_FRAME) { framePtr->type = TYPE_TOPLEVEL; Tcl_DoWhenIdle(MapFrame, framePtr); - if (framePtr->menuName != NULL) { + if (framePtr->menuNameObj != NULL) { Tk_SetWindowMenubar(framePtr->interp, framePtr->tkwin, NULL, - framePtr->menuName); + Tcl_GetString(framePtr->menuNameObj)); } } else if (!Tk_IsTopLevel(tkwin) && framePtr->type == TYPE_TOPLEVEL) { framePtr->type = TYPE_FRAME; } else { /* Index: generic/tkGrid.c ================================================================== --- generic/tkGrid.c +++ generic/tkGrid.c @@ -456,11 +456,13 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } if (objc == 3) { gridPtr = containerPtr->containerDataPtr; Tcl_SetObjResult(interp, Tcl_NewStringObj( Tk_NameOfAnchor(gridPtr?gridPtr->anchor:GRID_DEFAULT_ANCHOR), @@ -529,11 +531,13 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } if (objc >= 5) { if (Tcl_GetIntFromObj(interp, objv[3], &column) != TCL_OK) { return TCL_ERROR; } @@ -653,11 +657,13 @@ for (i = 2; i < objc; i++) { if (TkGetWindowFromObj(interp, tkwin, objv[i], &content) != TCL_OK) { return TCL_ERROR; } - contentPtr = GetGrid(content); + if (!(contentPtr = GetGrid(content))) { + continue; + } if (contentPtr->containerPtr != NULL) { /* * For "forget", reset all the settings to their defaults */ @@ -743,11 +749,13 @@ return TCL_ERROR; } if (TkGetWindowFromObj(interp, tkwin, objv[2], &content) != TCL_OK) { return TCL_ERROR; } - contentPtr = GetGrid(content); + if (!(contentPtr = GetGrid(content))) { + return TCL_OK; + } if (contentPtr->containerPtr == NULL) { Tcl_ResetResult(interp); return TCL_OK; } @@ -818,11 +826,13 @@ } if (Tk_GetPixelsFromObj(interp, container, objv[4], &y) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } if (containerPtr->containerDataPtr == NULL) { Tcl_SetObjResult(interp, NewPairObj(-1, TCL_INDEX_NONE)); return TCL_OK; } gridPtr = containerPtr->containerDataPtr; @@ -899,11 +909,13 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } if (objc == 3) { Tcl_SetObjResult(interp, Tcl_NewBooleanObj(!(containerPtr->flags & DONT_PROPAGATE))); return TCL_OK; } @@ -1021,11 +1033,13 @@ Tcl_SetErrorCode(interp, "TK", "GRID", "NO_INDEX", (char *)NULL); Tcl_DecrRefCount(listCopy); return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } first = 0; last = 0; if ((objc == 4) || (objc == 5)) { if (lObjc != 1) { @@ -1137,11 +1151,13 @@ == TCL_OK) { /* * Is it gridded in this container? */ - contentPtr = GetGrid(content); + if (!(contentPtr = GetGrid(content))) { + continue; + } if (contentPtr->containerPtr != containerPtr) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "the window \"%s\" is not managed by \"%s\"", Tcl_GetString(lObjv[j]), Tcl_GetString(objv[2]))); Tcl_SetErrorCode(interp, "TK", "GRID", "NOT_MANAGED", (char *)NULL); @@ -1320,11 +1336,13 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } if (containerPtr->containerDataPtr != NULL) { SetGridSize(containerPtr); gridPtr = containerPtr->containerDataPtr; Tcl_SetObjResult(interp, NewPairObj( @@ -1399,11 +1417,13 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(container); + if (!(containerPtr = GetGrid(container))) { + return TCL_OK; + } res = Tcl_NewListObj(0, NULL); for (contentPtr = containerPtr->contentPtr; contentPtr != NULL; contentPtr = contentPtr->nextPtr) { if ((column >= 0) && (contentPtr->column > column @@ -2415,15 +2435,16 @@ *---------------------------------------------------------------------- * * GetGrid -- * * This internal procedure is used to locate a Grid structure for a given - * window, creating one if one doesn't exist already. + * window, creating one if one doesn't exist already, except if the window + * is already dead. * * Results: * The return value is a pointer to the Grid structure corresponding to - * tkwin. + * tkwin, or NULL when tkwin is already dead. * * Side effects: * A new grid structure may be created. If so, then a callback is set up * to clean things up when the window is deleted. * @@ -2437,10 +2458,14 @@ { Gridder *gridPtr; Tcl_HashEntry *hPtr; int isNew; TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; + + if (((TkWindow *) tkwin)->flags & TK_ALREADY_DEAD) { + return NULL; + } if (!dispPtr->gridInit) { Tcl_InitHashTable(&dispPtr->gridHashTable, TCL_ONE_WORD_KEYS); dispPtr->gridInit = 1; } @@ -2477,11 +2502,10 @@ gridPtr->abortPtr = NULL; gridPtr->flags = 0; gridPtr->sticky = 0; gridPtr->size = 0; gridPtr->in = NULL; - gridPtr->containerDataPtr = NULL; Tcl_SetHashValue(hPtr, gridPtr); Tk_CreateEventHandler(tkwin, StructureNotifyMask, GridStructureProc, gridPtr); return gridPtr; } @@ -3010,23 +3034,29 @@ * Is there any saved -in from a removed content? * If there is, it becomes default for -in. * If the stored container does not exist, just ignore it. */ - contentPtr = GetGrid(content); + if (!(contentPtr = GetGrid(content))) { + continue; + } if (contentPtr->in != NULL) { if (TkGetWindowFromObj(interp, content, contentPtr->in, &parent) == TCL_OK) { - containerPtr = GetGrid(parent); + if (!(containerPtr = GetGrid(parent))) { + continue; + } InitContainerData(containerPtr); } } } if (containerPtr == NULL) { parent = Tk_Parent(content); if (parent != NULL) { - containerPtr = GetGrid(parent); + if (!(containerPtr = GetGrid(parent))) { + continue; + } InitContainerData(containerPtr); } } numWindows++; continue; @@ -3091,11 +3121,13 @@ if (index == CONF_IN) { if (TkGetWindowFromObj(interp, tkwin, objv[i+1], &other) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetGrid(other); + if (!(containerPtr = GetGrid(other))) { + continue; + } InitContainerData(containerPtr); } else if (index == CONF_ROW) { if (Tcl_GetIntFromObj(interp, objv[i+1], &tmp) != TCL_OK || tmp < 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( @@ -3168,11 +3200,13 @@ "can't manage \"%s\": it's a top-level window", Tcl_GetString(objv[j]))); Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "TOPLEVEL", (char *)NULL); return TCL_ERROR; } - contentPtr = GetGrid(content); + if (!(contentPtr = GetGrid(content))) { + continue; + } /* * The following statement is taken from tkPack.c: * * "If the content isn't currently managed, reset all of its @@ -3227,11 +3261,13 @@ "window can't be managed in itself", TCL_INDEX_NONE)); Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "SELF", (char *)NULL); return TCL_ERROR; } positionGiven = 1; - containerPtr = GetGrid(other); + if (!(containerPtr = GetGrid(other))) { + continue; + } InitContainerData(containerPtr); break; case CONF_STICKY: { int sticky = StringToSticky(Tcl_GetString(objv[i+1])); @@ -3334,11 +3370,13 @@ * 2) the parent of the first content. */ parent = Tk_Parent(content); if (containerPtr == NULL) { - containerPtr = GetGrid(parent); + if (!(containerPtr = GetGrid(parent))) { + continue; + } InitContainerData(containerPtr); } if (contentPtr->containerPtr != NULL && contentPtr->containerPtr != containerPtr) { if (contentPtr->containerPtr->tkwin != Tk_Parent(contentPtr->tkwin)) { @@ -3493,11 +3531,13 @@ if (lastWindow == NULL) { lastRow = defaultRow - 1; lastColumn = 0; } else { other = Tk_NameToWindow(interp, lastWindow, tkwin); - otherPtr = GetGrid(other); + if (!(otherPtr = GetGrid(other))) { + continue; + } lastRow = otherPtr->row + otherPtr->numRows - 2; lastColumn = otherPtr->column + otherPtr->numCols; } lastColumn += numSkip; Index: generic/tkIcu.c ================================================================== --- generic/tkIcu.c +++ generic/tkIcu.c @@ -90,11 +90,11 @@ } Tcl_DStringInit(&ds); str = Tcl_GetStringFromObj(objv[1], &len); Tcl_UtfToChar16DString(str, len, &ds); len = Tcl_DStringLength(&ds)/2; - Tcl_Size ulen = Tcl_GetCharLength(objv[1]); + Tcl_Size ulen = TkGetCharLength(objv[1]); if (TkGetIntForIndex(objv[2], ulen-1, 0, &idx) != TCL_OK) { Tcl_DStringFree(&ds); Tcl_SetObjResult(interp, Tcl_ObjPrintf("bad index \"%s\": must be integer?[+-]integer?, end?[+-]integer?, or \"\"", Tcl_GetString(objv[2]))); Tcl_SetErrorCode(interp, "TK", "ICU", "INDEX", (char *)NULL); return TCL_ERROR; Index: generic/tkImage.c ================================================================== --- generic/tkImage.c +++ generic/tkImage.c @@ -129,11 +129,11 @@ } /* *---------------------------------------------------------------------- * - * Tk_CreateImageType -- + * Tk_CreateOldImageType, Tk_CreateImageType -- * * This function is invoked by an image manager to tell Tk about a new * kind of image and the functions that manage the new type. The function * is typically invoked during Tcl_AppInit. * @@ -144,10 +144,31 @@ * The new image type is entered into a table used in the "image create" * command. * *---------------------------------------------------------------------- */ + +void +Tk_CreateOldImageType( + const Tk_ImageType *typePtr) + /* Structure describing the type. All of the + * fields except "nextPtr" must be filled in + * by caller. */ +{ + Tk_ImageType *copyPtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + + if (!tsdPtr->initialized) { + tsdPtr->initialized = 1; + Tcl_CreateThreadExitHandler(ImageTypeThreadExitProc, NULL); + } + copyPtr = (Tk_ImageType *)ckalloc(sizeof(Tk_ImageType)); + *copyPtr = *typePtr; + copyPtr->nextPtr = tsdPtr->oldImageTypeList; + tsdPtr->oldImageTypeList = copyPtr; +} void Tk_CreateImageType( const Tk_ImageType *typePtr) /* Structure describing the type. All of the @@ -256,11 +277,11 @@ } } } if (typePtr == NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "image type \"%s\" does not exist", arg)); + "image type \"%s\" doesn't exist", arg)); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "IMAGE_TYPE", arg, (char *)NULL); return TCL_ERROR; } /* @@ -487,11 +508,11 @@ break; } return TCL_OK; alreadyDeleted: - Tcl_SetObjResult(interp, Tcl_ObjPrintf("image \"%s\" does not exist",arg)); + Tcl_SetObjResult(interp, Tcl_ObjPrintf("image \"%s\" doesn't exist",arg)); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "IMAGE", arg, (char *)NULL); return TCL_ERROR; } /* @@ -633,11 +654,11 @@ return (Tk_Image) imagePtr; noSuchImage: if (interp) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "image \"%s\" does not exist", name)); + "image \"%s\" doesn't exist", name)); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "IMAGE", name, (char *)NULL); } return NULL; } Index: generic/tkImgBmap.c ================================================================== --- generic/tkImgBmap.c +++ generic/tkImgBmap.c @@ -238,11 +238,11 @@ { BitmapInstance *instancePtr; int maskWidth, maskHeight, dummy1, dummy2; if (Tk_ConfigureWidget(modelPtr->interp, Tk_MainWindow(modelPtr->interp), - configSpecs, objc, objv, modelPtr, flags) != TCL_OK) { + configSpecs, objc, (const char **)objv, (char *)modelPtr, flags|TK_CONFIG_OBJS) != TCL_OK) { return TCL_ERROR; } /* * Parse the bitmap and/or mask to create binary data. Make sure that the Index: generic/tkImgPhoto.c ================================================================== --- generic/tkImgPhoto.c +++ generic/tkImgPhoto.c @@ -137,10 +137,15 @@ typedef struct { Tk_PhotoImageFormat *formatList; /* Pointer to the first in the list of known * photo image formats.*/ +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + Tk_PhotoImageFormat *oldFormatList; + /* Pointer to the first in the list of known + * photo image formats.*/ +#endif Tk_PhotoImageFormatVersion3 *formatListVersion3; /* Pointer to the first in the list of known * photo image formats in Version3 format.*/ int initialized; /* Set to 1 if we've initialized the * structure. */ @@ -160,21 +165,21 @@ * Information used for parsing configuration specifications: */ static const Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_STRING, "-data", NULL, NULL, - NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK, NULL}, + NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK|TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-file", NULL, NULL, - NULL, offsetof(PhotoModel, fileString), TK_CONFIG_NULL_OK, NULL}, + NULL, offsetof(PhotoModel, fileObj), TK_CONFIG_NULL_OK|TK_CONFIG_OBJS, NULL}, {TK_CONFIG_STRING, "-format", NULL, NULL, - NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK, NULL}, + NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK|TK_CONFIG_OBJS, NULL}, {TK_CONFIG_DOUBLE, "-gamma", NULL, NULL, DEF_PHOTO_GAMMA, offsetof(PhotoModel, gamma), 0, NULL}, {TK_CONFIG_INT, "-height", NULL, NULL, DEF_PHOTO_HEIGHT, offsetof(PhotoModel, userHeight), 0, NULL}, {TK_CONFIG_STRING, "-metadata", NULL, NULL, - NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK, NULL}, + NULL, TCL_INDEX_NONE, TK_CONFIG_NULL_OK|TK_CONFIG_OBJS, NULL}, {TK_CONFIG_UID, "-palette", NULL, NULL, DEF_PHOTO_PALETTE, offsetof(PhotoModel, palette), 0, NULL}, {TK_CONFIG_INT, "-width", NULL, NULL, DEF_PHOTO_WIDTH, offsetof(PhotoModel, userWidth), 0, NULL}, {TK_CONFIG_END, NULL, NULL, NULL, NULL, 0, 0, NULL} @@ -240,10 +245,17 @@ Tk_PhotoImageFormat *freePtr; Tk_PhotoImageFormatVersion3 *freePtrVersion3; ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + while (tsdPtr->oldFormatList != NULL) { + freePtr = tsdPtr->oldFormatList; + tsdPtr->oldFormatList = tsdPtr->oldFormatList->nextPtr; + ckfree(freePtr); + } +#endif while (tsdPtr->formatList != NULL) { freePtr = tsdPtr->formatList; tsdPtr->formatList = tsdPtr->formatList->nextPtr; ckfree((void *)freePtr->name); ckfree(freePtr); @@ -257,11 +269,11 @@ } /* *---------------------------------------------------------------------- * - * Tk_CreatePhotoImageFormat, + * Tk_CreateOldPhotoImageFormat, Tk_CreatePhotoImageFormat, * Tk_CreatePhotoImageFormatVersion3 -- * * This function is invoked by an image file handler to register a new * photo image format and the functions that handle the new format. The * function is typically invoked during Tcl_AppInit. @@ -273,10 +285,33 @@ * The new image file format is entered into a table used in the photo * image "read" and "write" subcommands. * *---------------------------------------------------------------------- */ + +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +void +Tk_CreateOldPhotoImageFormat( + const Tk_PhotoImageFormat *formatPtr) + /* Structure describing the format. All of the + * fields except "nextPtr" must be filled in + * by caller. */ +{ + Tk_PhotoImageFormat *copyPtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) + Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); + + if (!tsdPtr->initialized) { + tsdPtr->initialized = 1; + Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL); + } + copyPtr = (Tk_PhotoImageFormat *)ckalloc(sizeof(Tk_PhotoImageFormat)); + *copyPtr = *formatPtr; + copyPtr->nextPtr = tsdPtr->oldFormatList; + tsdPtr->oldFormatList = copyPtr; +} +#endif void Tk_CreatePhotoImageFormat( const Tk_PhotoImageFormat *formatPtr) /* Structure describing the format. All of the @@ -291,10 +326,16 @@ tsdPtr->initialized = 1; Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL); } copyPtr = (Tk_PhotoImageFormat *)ckalloc(sizeof(Tk_PhotoImageFormat)); *copyPtr = *formatPtr; +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + if (isupper((unsigned char) *formatPtr->name)) { + copyPtr->nextPtr = tsdPtr->oldFormatList; + tsdPtr->oldFormatList = copyPtr; + } else +#endif { /* for compatibility with aMSN: make a copy of formatPtr->name */ char *name = (char *)ckalloc(strlen(formatPtr->name) + 1); strcpy(name, formatPtr->name); copyPtr->name = name; @@ -471,12 +512,12 @@ Tcl_WrongNumArgs(interp, 2, objv, "option"); return TCL_ERROR; } arg = Tcl_GetStringFromObj(objv[2], &length); if (strncmp(arg,"-data", length) == 0) { - if (modelPtr->dataString) { - Tcl_SetObjResult(interp, modelPtr->dataString); + if (modelPtr->dataObj) { + Tcl_SetObjResult(interp, modelPtr->dataObj); } } else if (strncmp(arg,"-format", length) == 0) { if (modelPtr->format) { Tcl_SetObjResult(interp, modelPtr->format); } @@ -504,12 +545,12 @@ if (result != TCL_OK) { return result; } obj = Tcl_NewObj(); subobj = Tcl_NewStringObj("-data {} {} {}", 14); - if (modelPtr->dataString) { - Tcl_ListObjAppendElement(NULL, subobj, modelPtr->dataString); + if (modelPtr->dataObj) { + Tcl_ListObjAppendElement(NULL, subobj, modelPtr->dataObj); } else { Tcl_AppendStringsToObj(subobj, " {}", (char *)NULL); } Tcl_ListObjAppendElement(interp, obj, subobj); subobj = Tcl_NewStringObj("-format {} {} {}", 16); @@ -533,17 +574,17 @@ } else if (objc == 3) { const char *arg = Tcl_GetStringFromObj(objv[2], &length); if (length > 1 && !strncmp(arg, "-data", length)) { Tcl_AppendResult(interp, "-data {} {} {}", (char *)NULL); - if (modelPtr->dataString) { + if (modelPtr->dataObj) { /* * TODO: Modifying result is bad! */ Tcl_ListObjAppendElement(NULL, Tcl_GetObjResult(interp), - modelPtr->dataString); + modelPtr->dataObj); } else { Tcl_AppendResult(interp, " {}", (char *)NULL); } return TCL_OK; } else if (length > 1 && @@ -793,10 +834,27 @@ stringWriteProc = imageFormat->stringWriteProc; break; } } } +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + if (stringWriteProc == NULL) { + oldformat = 1; + for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL; + imageFormat = imageFormat->nextPtr) { + if ((strncasecmp(Tcl_GetString(options.format), + imageFormat->name, + strlen(imageFormat->name)) == 0)) { + matched = 1; + if (imageFormat->stringWriteProc != NULL) { + stringWriteProc = imageFormat->stringWriteProc; + break; + } + } + } + } +#endif if (stringWriteProc == NULL) { oldformat = 0; for (imageFormatVersion3 = tsdPtr->formatListVersion3; imageFormatVersion3 != NULL; imageFormatVersion3 = imageFormatVersion3->nextPtr) { @@ -1448,10 +1506,26 @@ if (imageFormat->fileWriteProc != NULL) { break; } } } +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + if (imageFormat == NULL) { + oldformat = 1; + for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL; + imageFormat = imageFormat->nextPtr) { + if ((fmtString == NULL) + || (strncasecmp(fmtString, imageFormat->name, + strlen(imageFormat->name)) == 0)) { + matched = 1; + if (imageFormat->fileWriteProc != NULL) { + break; + } + } + } + } +#endif if (imageFormat == NULL) { oldformat = 0; for (imageFormatVersion3 = tsdPtr->formatListVersion3; imageFormatVersion3 != NULL; imageFormatVersion3 = imageFormatVersion3->nextPtr) { @@ -1666,12 +1740,12 @@ if (index + 1 >= objc) { goto oneValueRequired; } *optIndexPtr = ++index; - optPtr->background = Tk_GetColor(interp, Tk_MainWindow(interp), - Tcl_GetString(objv[index])); + optPtr->background = Tk_AllocColorFromObj(interp, Tk_MainWindow(interp), + objv[index]); if (!optPtr->background) { return TCL_ERROR; } } else if (bit == OPT_FORMAT) { /* @@ -1888,11 +1962,12 @@ Tcl_Obj *const objv[], /* Pairs of configuration options for image. */ int flags) /* Flags to pass to Tk_ConfigureWidget, such * as TK_CONFIG_ARGV_ONLY. */ { PhotoInstance *instancePtr; - const char *oldFileString, *oldPaletteString; + Tcl_Obj *oldFileObj; + const char *oldPaletteString; Tcl_Obj *oldData, *data = NULL, *oldFormat, *format = NULL, *metadataInObj = NULL, *metadataOutObj = NULL; Tcl_Obj *tempdata, *tempformat; Tcl_Size i, length; int result, imageWidth, imageHeight, oldformat; @@ -1946,13 +2021,13 @@ * if the user specifies them anew. IMPORTANT: if the format changes we * have to interpret "-file" and "-data" again as well! It might be that * the format string influences how "-data" or "-file" is interpreted. */ - oldFileString = modelPtr->fileString; - if (oldFileString == NULL) { - oldData = modelPtr->dataString; + oldFileObj = modelPtr->fileObj; + if (oldFileObj == NULL) { + oldData = modelPtr->dataObj; if (oldData != NULL) { Tcl_IncrRefCount(oldData); } } else { oldData = NULL; @@ -1967,21 +2042,21 @@ /* * Process the configuration options specified. */ if (Tk_ConfigureWidget(interp, Tk_MainWindow(interp), configSpecs, - objc, objv, modelPtr, flags) != TCL_OK) { + objc, (const char **)objv, (char *)modelPtr, flags|TK_CONFIG_OBJS) != TCL_OK) { goto errorExit; } /* * Regard the empty string for -file, -data, -format or -metadata as the null value. */ - if ((modelPtr->fileString != NULL) && (modelPtr->fileString[0] == 0)) { - ckfree(modelPtr->fileString); - modelPtr->fileString = NULL; + if ((modelPtr->fileObj != NULL) && (Tcl_GetString(modelPtr->fileObj)[0] == 0)) { + Tcl_DecrRefCount(modelPtr->fileObj); + modelPtr->fileObj = NULL; } if (data) { /* * Force into ByteArray format, which most (all) image handlers will * use anyway. Empty length means ignore the -data option. @@ -1992,14 +2067,14 @@ if (bytesize) { Tcl_IncrRefCount(data); } else { data = NULL; } - if (modelPtr->dataString) { - Tcl_DecrRefCount(modelPtr->dataString); + if (modelPtr->dataObj) { + Tcl_DecrRefCount(modelPtr->dataObj); } - modelPtr->dataString = data; + modelPtr->dataObj = data; } if (format) { /* * Stringify to ignore -format "". It may come in as a list or other * object. @@ -2058,12 +2133,12 @@ /* * Read in the image from the file or string if the user has specified the * -file or -data option. */ - if ((modelPtr->fileString != NULL) - && ((modelPtr->fileString != oldFileString) + if ((modelPtr->fileObj != NULL) + && ((modelPtr->fileObj != oldFileObj) || (modelPtr->format != oldFormat))) { /* * Prevent file system access in a safe interpreter. */ @@ -2074,11 +2149,11 @@ -1)); Tcl_SetErrorCode(interp, "TK", "SAFE", "PHOTO_FILE", (char *)NULL); goto errorExit; } - chan = Tcl_OpenFileChannel(interp, modelPtr->fileString, "r", 0); + chan = Tcl_OpenFileChannel(interp, Tcl_GetString(modelPtr->fileObj), "rb", 0); if (chan == NULL) { goto errorExit; } /* @@ -2086,13 +2161,11 @@ */ metadataOutObj = Tcl_NewDictObj(); Tcl_IncrRefCount(metadataOutObj); - if ((Tcl_SetChannelOption(interp, chan, "-translation", "binary") - != TCL_OK) || - (MatchFileFormat(interp, chan, modelPtr->fileString, + if ((MatchFileFormat(interp, chan, (modelPtr->fileObj ? Tcl_GetString(modelPtr->fileObj) : NULL), modelPtr->format, modelPtr->metadata, metadataOutObj, &imageFormat, &imageFormatVersion3, &imageWidth, &imageHeight, &oldformat) != TCL_OK)) { Tcl_Close(NULL, chan); goto errorExit; @@ -2109,16 +2182,16 @@ if (oldformat && tempformat) { tempformat = (Tcl_Obj *) Tcl_GetString(tempformat); } if (imageFormat != NULL) { result = imageFormat->fileReadProc(interp, chan, - modelPtr->fileString, tempformat, + (modelPtr->fileObj ? Tcl_GetString(modelPtr->fileObj) : NULL), tempformat, (Tk_PhotoHandle) modelPtr, 0, 0, imageWidth, imageHeight, 0, 0); } else { result = imageFormatVersion3->fileReadProc(interp, chan, - modelPtr->fileString, tempformat, modelPtr->metadata, + (modelPtr->fileObj ? Tcl_GetString(modelPtr->fileObj) : NULL), tempformat, modelPtr->metadata, (Tk_PhotoHandle) modelPtr, 0, 0, imageWidth, imageHeight, 0, 0, metadataOutObj); } @@ -2129,22 +2202,22 @@ Tcl_ResetResult(interp); modelPtr->flags |= IMAGE_CHANGED; } - if ((modelPtr->fileString == NULL) && (modelPtr->dataString != NULL) - && ((modelPtr->dataString != oldData) + if ((modelPtr->fileObj == NULL) && (modelPtr->dataObj != NULL) + && ((modelPtr->dataObj != oldData) || (modelPtr->format != oldFormat))) { /* * Flag that we want the metadata result dict */ metadataOutObj = Tcl_NewDictObj(); Tcl_IncrRefCount(metadataOutObj); - if (MatchStringFormat(interp, modelPtr->dataString, + if (MatchStringFormat(interp, modelPtr->dataObj, modelPtr->format, modelPtr->metadata, metadataOutObj, &imageFormat, &imageFormatVersion3, &imageWidth, &imageHeight, &oldformat) != TCL_OK) { goto errorExit; } @@ -2153,11 +2226,11 @@ TK_PHOTO_ALLOC_FAILURE_MESSAGE, TCL_INDEX_NONE)); Tcl_SetErrorCode(interp, "TK", "MALLOC", (char *)NULL); goto errorExit; } tempformat = modelPtr->format; - tempdata = modelPtr->dataString; + tempdata = modelPtr->dataObj; if (oldformat) { if (tempformat) { tempformat = (Tcl_Obj *) Tcl_GetString(tempformat); } tempdata = (Tcl_Obj *) Tcl_GetString(tempdata); @@ -2369,12 +2442,12 @@ ckfree(modelPtr->pix32); } if (modelPtr->validRegion != NULL) { TkDestroyRegion(modelPtr->validRegion); } - if (modelPtr->dataString != NULL) { - Tcl_DecrRefCount(modelPtr->dataString); + if (modelPtr->dataObj != NULL) { + Tcl_DecrRefCount(modelPtr->dataObj); } if (modelPtr->format != NULL) { Tcl_DecrRefCount(modelPtr->format); } if (modelPtr->metadata != NULL) { @@ -2694,10 +2767,46 @@ } break; } } } +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +if (formatPtr == NULL) { + useoldformat = 1; + for (formatPtr = tsdPtr->oldFormatList; formatPtr != NULL; + formatPtr = formatPtr->nextPtr) { + if (formatString != NULL) { + if (strncasecmp(formatString, + formatPtr->name, strlen(formatPtr->name)) != 0) { + continue; + } + matched = 1; + if (formatPtr->fileMatchProc == NULL) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "-file option isn't supported for %s images", + formatString)); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "PHOTO", + "NOT_FILE_FORMAT", (char *)NULL); + return TCL_ERROR; + } + } + if (formatPtr->fileMatchProc != NULL) { + (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET); + if (formatPtr->fileMatchProc(chan, fileName, (Tcl_Obj *) + formatString, widthPtr, heightPtr, interp)) { + if (*widthPtr < 1) { + *widthPtr = 1; + } + if (*heightPtr < 1) { + *heightPtr = 1; + } + break; + } + } + } + } +#endif /* * For old and not version 3 format, exit now with success */ @@ -2890,10 +2999,42 @@ && formatPtr->stringMatchProc(data, formatObj, widthPtr, heightPtr, interp)) { break; } } + +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + if (formatPtr == NULL) { + useoldformat = 1; + for (formatPtr = tsdPtr->oldFormatList; formatPtr != NULL; + formatPtr = formatPtr->nextPtr) { + if (formatObj != NULL) { + if (strncasecmp(formatString, + formatPtr->name, strlen(formatPtr->name)) != 0) { + continue; + } + matched = 1; + if (formatPtr->stringMatchProc == NULL) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "-data option isn't supported for %s images", + formatString)); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "PHOTO", + "NOT_DATA_FORMAT", (char *)NULL); + return TCL_ERROR; + } + } + if ((formatPtr->stringMatchProc != NULL) + && (formatPtr->stringReadProc != NULL) + && formatPtr->stringMatchProc( + (Tcl_Obj *) Tcl_GetString(data), + (Tcl_Obj *) formatString, + widthPtr, heightPtr, interp)) { + break; + } + } + } +#endif if (formatPtr == NULL) { useoldformat = 0; for (formatVersion3Ptr = tsdPtr->formatListVersion3; formatVersion3Ptr != NULL; @@ -4378,13 +4519,114 @@ block.pixelPtr += y * block.pitch + x * block.pixelSize; return Tk_PostscriptPhoto(interp, &block, psInfo, width, height); } +/* + *---------------------------------------------------------------------- + * + * Tk_PhotoPutBlock_NoComposite, Tk_PhotoPutZoomedBlock_NoComposite -- + * + * These backward-compatibility functions just exist to fill slots in stubs + * table. For the behaviour of *_NoComposite, refer to the corresponding + * function without the extra suffix, except that the compositing rule is + * always "overlay" and the function always panics on memory-allocation + * failure. + * + *---------------------------------------------------------------------- + */ +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +void +Tk_PhotoPutBlock_NoComposite( + Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, + int x, int y, int width, int height) +{ + if (Tk_PhotoPutBlock(NULL, handle, blockPtr, x, y, width, height, + TK_PHOTO_COMPOSITE_OVERLAY) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} + +void +Tk_PhotoPutZoomedBlock_NoComposite( + Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, + int x, int y, int width, int height, + int zoomX, int zoomY, int subsampleX, int subsampleY) +{ + if (Tk_PhotoPutZoomedBlock(NULL, handle, blockPtr, x, y, width, height, + zoomX, zoomY, subsampleX, subsampleY, + TK_PHOTO_COMPOSITE_OVERLAY) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tk_PhotoExpand_Panic, Tk_PhotoPutBlock_Panic, + * Tk_PhotoPutZoomedBlock_Panic, Tk_PhotoSetSize_Panic + * + * Backward compatibility functions for preserving the old behaviour (i.e. + * panic on memory allocation failure) so that extensions do not need to be + * significantly updated to take account of TIP #116. These call the new + * interface (i.e. the interface without the extra suffix), but panic if an + * error condition is returned. + * + *---------------------------------------------------------------------- + */ + +void +Tk_PhotoExpand_Panic( + Tk_PhotoHandle handle, + int width, int height) +{ + if (Tk_PhotoExpand(NULL, handle, width, height) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} + +void +Tk_PhotoPutBlock_Panic( + Tk_PhotoHandle handle, + Tk_PhotoImageBlock *blockPtr, + int x, int y, int width, int height, int compRule) +{ + if (Tk_PhotoPutBlock(NULL, handle, blockPtr, x, y, width, height, + compRule) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} + +void +Tk_PhotoPutZoomedBlock_Panic( + Tk_PhotoHandle handle, Tk_PhotoImageBlock *blockPtr, + int x, int y, int width, int height, + int zoomX, int zoomY, int subsampleX, int subsampleY, + int compRule) +{ + if (Tk_PhotoPutZoomedBlock(NULL, handle, blockPtr, x, y, width, height, + zoomX, zoomY, subsampleX, subsampleY, compRule) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} + +void +Tk_PhotoSetSize_Panic( + Tk_PhotoHandle handle, + int width, int height) +{ + if (Tk_PhotoSetSize(NULL, handle, width, height) != TCL_OK) { + Tcl_Panic(TK_PHOTO_ALLOC_FAILURE_MESSAGE); + } +} +#endif /* TK_NO_DEPRECATED */ + /* * Local Variables: * mode: c * c-basic-offset: 4 * fill-column: 78 * tab-width: 8 * End: */ Index: generic/tkImgPhoto.h ================================================================== --- generic/tkImgPhoto.h +++ generic/tkImgPhoto.h @@ -153,12 +153,12 @@ int width, height; /* Dimensions of image. */ int userWidth, userHeight; /* User-declared image dimensions. */ Tk_Uid palette; /* User-specified default palette for * instances of this image. */ double gamma; /* Display gamma value to correct for. */ - char *fileString; /* Name of file to read into image. */ - Tcl_Obj *dataString; /* Object to use as contents of image. */ + Tcl_Obj *fileObj; /* Name of file to read into image. */ + Tcl_Obj *dataObj; /* Object to use as contents of image. */ Tcl_Obj *format; /* User-specified format of data in image file * or string value. */ Tcl_Obj *metadata; /* User-specified metadata dict or read from * image file */ unsigned char *pix32; /* Local storage for 32-bit image. */ Index: generic/tkInt.decls ================================================================== --- generic/tkInt.decls +++ generic/tkInt.decls @@ -66,11 +66,11 @@ const char *source, const char *mask, int width, int height, int xHot, int yHot, XColor fg, XColor bg) } declare 13 { int TkCreateFrame(void *clientData, Tcl_Interp *interp, - Tcl_Size objc, Tcl_Obj *const objv[], int type, const char *appName) + Tcl_Size argc, const char *const *argv, int toplevel, const char *appName) } declare 14 { Tk_Window TkCreateMainWindow(Tcl_Interp *interp, const char *screenName, const char *baseName) } @@ -224,10 +224,13 @@ void TkpDisplayWarning(const char *msg, const char *title) } declare 59 { void TkpGetAppName(Tcl_Interp *interp, Tcl_DString *name) } +declare 60 {deprecated {renamed to Tk_GetOtherWindow}} { + TkWindow *TkpGetOtherWindow(TkWindow *winPtr) +} declare 61 { TkWindow *TkpGetWrapperWindow(TkWindow *winPtr) } declare 62 { int TkpInit(Tcl_Interp *interp) @@ -234,13 +237,19 @@ } declare 63 { void TkpInitializeMenuBindings(Tcl_Interp *interp, Tk_BindingTable bindingTable) } +declare 64 {deprecated {renamed to Tk_MakeContainer}} { + void TkpMakeContainer(Tk_Window tkwin) +} declare 65 { void TkpMakeMenuWindow(Tk_Window tkwin, int transient) } +declare 66 {deprecated {renamed to Tk_MakeWindow}} { + Window TkpMakeWindow(TkWindow *winPtr, Window parent) +} declare 67 { void TkpMenuNotifyToplevelCreate(Tcl_Interp *interp, const char *menuName) } declare 68 { TkDisplay *TkpOpenDisplay(const char *display_name) @@ -258,10 +267,19 @@ int TkPositionInTree(TkWindow *winPtr, TkWindow *treePtr) } declare 73 { void TkpRedirectKeyEvent(TkWindow *winPtr, XEvent *eventPtr) } +declare 74 {deprecated {renamed to Tk_SetMainMenubar}} { + void TkpSetMainMenubar(Tcl_Interp *interp, Tk_Window tkwin, const char *menuName) +} +declare 75 {deprecated {renamed to Tk_UseWindow}} { + int TkpUseWindow(Tcl_Interp *interp, Tk_Window tkwin, const char *string) +} +# +# Slot 76 unused (WAS: TkpWindowWasRecentlyDeleted) +# declare 77 { void TkQueueEventForAllChildren(TkWindow *winPtr, XEvent *eventPtr) } declare 78 { int TkReadBitmapFile(Display *display, Drawable d, const char *filename, @@ -282,10 +300,20 @@ void TkSelInit(Tk_Window tkwin) } declare 83 { void TkSelPropProc(XEvent *eventPtr) } + +# Exported publically as Tk_SetClassProcs in 8.4a2 +#declare 84 { +# void TkSetClassProcs(Tk_Window tkwin, +# TkClassProcs *procs, void *instanceData) +#} +declare 85 {deprecated {renamed to Tk_SetWindowMenubar}} { + void TkSetWindowMenuBar(Tcl_Interp *interp, Tk_Window tkwin, + const char *oldMenuName, const char *menuName) +} declare 86 { KeySym TkStringToKeysym(const char *name) } declare 87 { int TkThickPolyLineToArea(double *coordPtr, int numPoints, @@ -364,10 +392,14 @@ const char *TkpGetString(TkWindow *winPtr, XEvent *eventPtr, Tcl_DString *dsPtr) } declare 110 { void TkpGetSubFonts(Tcl_Interp *interp, Tk_Font tkfont) } +declare 111 {deprecated {renamed to Tk_GetSystemDefault}} { + Tcl_Obj *TkpGetSystemDefault(Tk_Window tkwin, + const char *dbName, const char *className) +} declare 112 { void TkpMenuThreadInit(void) } declare 113 { int XClipBox(Region rgn, XRectangle *rect_return) @@ -390,19 +422,23 @@ } declare 119 { int XUnionRectWithRegion(XRectangle *rect, Region src, Region dr_return) } -declare 121 { +declare 121 aqua { Pixmap TkpCreateNativeBitmap(Display *display, const void *source) } -declare 122 { +declare 122 aqua { void TkpDefineNativeBitmaps(void) } -declare 124 { +declare 124 aqua { Pixmap TkpGetNativeAppBitmap(Display *display, const char *name, int *width, int *height) +} +declare 135 {deprecated {renamed to Tk_DrawHighlightBorder}} { + void TkpDrawHighlightBorder(Tk_Window tkwin, GC fgGC, GC bgGC, + int highlightWidth, Drawable drawable) } declare 136 { void TkSetFocusWin(TkWindow *winPtr, int force) } declare 137 { @@ -628,37 +664,62 @@ void TkCreateXEventSource(void) } declare 2 x11 { void TkGenerateActivateEvents(TkWindow *winPtr, int active) } +declare 3 x11 { + int TkpCmapStressed(Tk_Window tkwin, Colormap colormap) +} +declare 4 x11 { + void TkpSync(Display *display) +} +declare 5 x11 { + Window TkUnixContainerId(TkWindow *winPtr) +} declare 6 x11 { + int TkUnixDoOneXEvent(Tcl_Time *timePtr) +} +declare 7 x11 { + void TkUnixSetMenubar(Tk_Window tkwin, Tk_Window menubar) +} +declare 8 x11 { int TkpScanWindowId(Tcl_Interp *interp, const char *string, Window *idPtr) } declare 9 x11 { + void TkWmCleanup(TkDisplay *dispPtr) +} +declare 10 x11 { + void TkSendCleanup(TkDisplay *dispPtr) +} +declare 12 x11 { int TkpWmSetState(TkWindow *winPtr, int state) } # only needed by tktest: +declare 13 x11 { + int TkpTestsendCmd_(void *clientData, Tcl_Interp *interp, Tcl_Size objc, + Tcl_Obj *const objv[]) +} declare 38 x11 { - int TkpCmapStressed(Tk_Window tkwin, Colormap colormap) + int TkpCmapStressed_(Tk_Window tkwin, Colormap colormap) } declare 39 x11 { - void TkpSync(Display *display) + void TkpSync_(Display *display) } declare 40 x11 { - Window TkUnixContainerId(TkWindow *winPtr) + Window TkUnixContainerId_(TkWindow *winPtr) } declare 41 x11 { - int TkUnixDoOneXEvent(Tcl_Time *timePtr) + int TkUnixDoOneXEvent_(Tcl_Time *timePtr) } declare 42 x11 { - void TkUnixSetMenubar(Tk_Window tkwin, Tk_Window menubar) + void TkUnixSetMenubar_(Tk_Window tkwin, Tk_Window menubar) } declare 43 x11 { - void TkWmCleanup(TkDisplay *dispPtr) + void TkWmCleanup_(TkDisplay *dispPtr) } declare 44 x11 { - void TkSendCleanup(TkDisplay *dispPtr) + void TkSendCleanup_(TkDisplay *dispPtr) } # only needed by tktest: declare 45 x11 { int TkpTestsendCmd(void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) @@ -666,11 +727,11 @@ ################################ # Windows specific functions declare 0 win { - void TkCreateXEventSource(void) + char *TkAlignImageData(XImage *image, int alignment, int bitOrder) } declare 2 win { void TkGenerateActivateEvents(TkWindow *winPtr, int active) } declare 3 win { @@ -769,11 +830,11 @@ declare 32 win { Tcl_Obj *TkWinGetMenuSystemDefault(Tk_Window tkwin, const char *dbName, const char *className) } declare 33 win { - char *TkAlignImageData(XImage *image, int alignment, int bitOrder) + int TkWinGetPlatformId(void) } # new for 8.4.1 declare 34 win { @@ -788,10 +849,14 @@ declare 36 win { LRESULT __stdcall TkWinChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } +# new for 8.4.20+/8.5.12+, Cygwin only +declare 37 win { + void TkCreateXEventSource(void) +} declare 38 win { int TkpCmapStressed(Tk_Window tkwin, Colormap colormap) } declare 39 win { void TkpSync(Display *display) @@ -821,30 +886,30 @@ } ################################ # Aqua specific functions -declare 1 aqua { - void TkAboutDlg(void) +declare 0 aqua { + void TkGenerateActivateEvents(TkWindow *winPtr, int active) } declare 2 aqua { - void TkGenerateActivateEvents(TkWindow *winPtr, int active) + void TkGenerateActivateEvents_(TkWindow *winPtr, int active) } declare 3 aqua { - unsigned long TkpGetMS(void) + void TkPointerDeadWindow(TkWindow *winPtr) } declare 4 aqua { - void TkPointerDeadWindow(TkWindow *winPtr) + void TkpSetCapture(TkWindow *winPtr) } declare 5 aqua { void TkpSetCursor(TkpCursor cursor) } declare 6 aqua { - int TkpScanWindowId(Tcl_Interp *interp, const char *string, Window *idPtr) + void TkpWmSetState(TkWindow *winPtr, int state) } declare 7 aqua { - int TkpWmSetState(TkWindow *winPtr, int state) + void TkAboutDlg(void) } declare 8 aqua { unsigned int TkMacOSXButtonKeyState(void) } declare 9 aqua { @@ -851,13 +916,14 @@ void TkMacOSXClearMenubarActive(void) } declare 10 aqua { int TkMacOSXDispatchMenuEvent(int menuID, int index) } -declare 11 aqua { - void TkpSetCapture(TkWindow *winPtr) -} +# Now a static function +# declare 11 aqua { +# void TkMacOSXInstallCursor(int resizeOverride) +# } declare 12 aqua { void TkMacOSXHandleTearoffMenu(void) } declare 14 aqua { int TkMacOSXDoHLEvent(void *theEvent) @@ -870,37 +936,61 @@ } declare 18 aqua { void TkMacOSXHandleMenuSelect(short theMenu, unsigned short theItem, int optionKeyPressed) } + +# removed duplicates from tkPlat table(tk.decls) +#declare 19 aqua { +# void TkMacOSXInitAppleEvents(Tcl_Interp *interp) +#} +# +#declare 20 aqua { +# void TkMacOSXInitMenus(Tcl_Interp *interp) +#} + declare 21 aqua { void TkMacOSXInvalidateWindow(MacDrawable *macWin, int flag) } +declare 22 aqua { + int TkMacOSXIsCharacterMissing(Tk_Font tkfont, unsigned int searchChar) +} declare 23 aqua { void TkMacOSXMakeRealWindowExist(TkWindow *winPtr) } declare 24 aqua { void *TkMacOSXMakeStippleMap(Drawable d1, Drawable d2) } declare 25 aqua { void TkMacOSXMenuClick(void) } +# The corresponding Unregister was not a stub, and this should be static. +#declare 26 aqua { +# void TkMacOSXRegisterOffScreenWindow(Window window, void *portPtr) +#} declare 27 aqua { int TkMacOSXResizable(TkWindow *winPtr) } declare 28 aqua { void TkMacOSXSetHelpMenuItemCount(void) } declare 29 aqua { void TkMacOSXSetScrollbarGrow(TkWindow *winPtr, int flag) } +declare 30 aqua { + void TkMacOSXSetUpClippingRgn(Drawable drawable) +} declare 31 aqua { void TkMacOSXSetUpGraphicsPort(GC gc, void *destPort) } declare 32 aqua { void TkMacOSXUpdateClipRgn(TkWindow *winPtr) } +# This was not implemented. Perhaps meant to be OffScreen ? +#declare 33 aqua { +# void TkMacOSXUnregisterMacWindow(void *portPtr) +#} declare 34 aqua { int TkMacOSXUseMenuID(short macID) } declare 35 aqua { Region TkMacOSXVisableClipRgn(TkWindow *winPtr) @@ -946,17 +1036,23 @@ int TkGenerateButtonEvent(int x, int y, Window window, unsigned int state) } declare 51 aqua { void TkGenWMDestroyEvent(Tk_Window tkwin) } -# -# Slot 52 unused (WAS: TkMacOSXSetDrawingEnabled) -# -# Made public as Tk_MacOSXGetNSWindowForDrawable -#declare 54 aqua { -# void *TkMacOSXDrawable(Drawable drawable) -#} +declare 52 aqua { + void TkMacOSXSetDrawingEnabled(TkWindow *winPtr, int flag) +} +declare 53 aqua { + unsigned long TkpGetMS(void) +} +# For Canvas3d, requested by Sean Woods +declare 54 aqua { + void *TkMacOSXDrawable(Drawable drawable) +} +declare 55 aqua { + int TkpScanWindowId(Tcl_Interp *interp, const char *string, Window *idPtr) +} ############################################################################## # Define the platform specific internal Xlib interfaces. These functions are # only available on the designated platform. @@ -1496,354 +1592,352 @@ } declare 6 macosx { Colormap XCreateColormap(Display *d, Window w, Visual *v, int i) } declare 7 macosx { - Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2, - XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2) + GContext XGContextFromGC(GC g) } +# second parameter was of type KeyCode declare 8 macosx { - Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2, - unsigned int ui1, unsigned int ui2, XColor _Xconst *x1, - XColor _Xconst *x2) + KeySym XKeycodeToKeysym(Display *d, unsigned int k, int i) } declare 9 macosx { - GContext XGContextFromGC(GC g) + KeySym XStringToKeysym(_Xconst char *c) } declare 10 macosx { - XHostAddress *XListHosts(Display *d, int *i, Bool *b) + Window XRootWindow(Display *d, int i) } -# second parameter was of type KeyCode declare 11 macosx { - KeySym XKeycodeToKeysym(Display *d, unsigned int k, int i) + XErrorHandler XSetErrorHandler(XErrorHandler x) } declare 12 macosx { - KeySym XStringToKeysym(_Xconst char *c) + Status XAllocColor(Display *d, Colormap c, XColor *xp) } declare 13 macosx { - Window XRootWindow(Display *d, int i) -} -declare 14 macosx { - XErrorHandler XSetErrorHandler(XErrorHandler x) -} -declare 15 macosx { - Status XIconifyWindow(Display *d, Window w, int i) -} -declare 16 macosx { - Status XWithdrawWindow(Display *d, Window w, int i) -} -declare 17 macosx { - Status XGetWMColormapWindows(Display *d, Window w, Window **wpp, int *ip) -} -declare 18 macosx { - Status XAllocColor(Display *d, Colormap c, XColor *xp) -} -declare 19 macosx { int XBell(Display *d, int i) } -declare 20 macosx { +declare 14 macosx { int XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3) } -declare 21 macosx { +declare 15 macosx { int XChangeWindowAttributes(Display *d, Window w, unsigned long ul, XSetWindowAttributes *x) } -declare 22 macosx { - int XClearWindow(Display *d, Window w) -} -declare 23 macosx { +declare 16 macosx { int XConfigureWindow(Display *d, Window w, unsigned int i, XWindowChanges *x) } -declare 24 macosx { +declare 17 macosx { int XCopyArea(Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4) } -declare 25 macosx { +declare 18 macosx { int XCopyPlane(Display *d, Drawable dr1, Drawable dr2, GC g, int i1, - int i2, unsigned int ui1, unsigned int ui2, - int i3, int i4, unsigned long ul) + int i2, unsigned int ui1, + unsigned int ui2, int i3, int i4, unsigned long ul) } -declare 26 macosx { +declare 19 macosx { Pixmap XCreateBitmapFromData(Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height) } -declare 27 macosx { +declare 20 macosx { int XDefineCursor(Display *d, Window w, Cursor c) } -declare 28 macosx { - int XDeleteProperty(Display *d, Window w, Atom a) -} -declare 29 macosx { +declare 21 macosx { int XDestroyWindow(Display *d, Window w) } -declare 30 macosx { +declare 22 macosx { int XDrawArc(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4) } -declare 31 macosx { +declare 23 macosx { int XDrawLines(Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2) } -declare 32 macosx { +declare 24 macosx { int XDrawRectangle(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2) } -declare 33 macosx { +declare 25 macosx { int XFillArc(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4) } -declare 34 macosx { +declare 26 macosx { int XFillPolygon(Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3) } -declare 35 macosx { +declare 27 macosx { int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i) } -declare 36 macosx { - int XForceScreenSaver(Display *d, int i) -} -declare 37 macosx { +declare 28 macosx { int XFreeColormap(Display *d, Colormap c) } -declare 38 macosx { +declare 29 macosx { int XFreeColors(Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul) } -declare 39 macosx { - int XFreeCursor(Display *d, Cursor c) -} -declare 40 macosx { +declare 30 macosx { int XFreeModifiermap(XModifierKeymap *x) } -declare 41 macosx { +declare 31 macosx { Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4) } -declare 42 macosx { - int XGetInputFocus(Display *d, Window *w, int *i) -} -declare 43 macosx { +declare 32 macosx { int XGetWindowProperty(Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp) } -declare 44 macosx { - Status XGetWindowAttributes(Display *d, Window w, XWindowAttributes *x) -} -declare 45 macosx { +declare 33 macosx { int XGrabKeyboard(Display *d, Window w, Bool b, int i1, int i2, Time t) } -declare 46 macosx { +declare 34 macosx { int XGrabPointer(Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t) } -declare 47 macosx { +declare 35 macosx { KeyCode XKeysymToKeycode(Display *d, KeySym k) } -declare 48 macosx { - Status XLookupColor(Display *d, Colormap c1, _Xconst char *c2, - XColor *x1, XColor *x2) -} -declare 49 macosx { +declare 36 macosx { int XMapWindow(Display *d, Window w) } -declare 50 macosx { +declare 37 macosx { int XMoveResizeWindow(Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2) } -declare 51 macosx { +declare 38 macosx { int XMoveWindow(Display *d, Window w, int i1, int i2) } -declare 52 macosx { - int XNextEvent(Display *d, XEvent *x) -} -declare 53 macosx { - int XPutBackEvent(Display *d, XEvent *x) -} -declare 54 macosx { - int XQueryColors(Display *d, Colormap c, XColor *x, int i) -} -declare 55 macosx { +declare 39 macosx { Bool XQueryPointer(Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui) } -declare 56 macosx { - Status XQueryTree(Display *d, Window w1, Window *w2, Window *w3, - Window **w4, unsigned int *ui) -} -declare 57 macosx { +declare 40 macosx { int XRaiseWindow(Display *d, Window w) } -declare 58 macosx { +declare 41 macosx { int XRefreshKeyboardMapping(XMappingEvent *x) } -declare 59 macosx { +declare 42 macosx { int XResizeWindow(Display *d, Window w, unsigned int ui1, unsigned int ui2) } -declare 60 macosx { +declare 43 macosx { int XSelectInput(Display *d, Window w, long l) } -declare 61 macosx { +declare 44 macosx { Status XSendEvent(Display *d, Window w, Bool b, long l, XEvent *x) } -declare 62 macosx { - int XSetCommand(Display *d, Window w, char **c, int i) -} -declare 63 macosx { +declare 45 macosx { int XSetIconName(Display *d, Window w, _Xconst char *c) } -declare 64 macosx { +declare 46 macosx { int XSetInputFocus(Display *d, Window w, int i, Time t) } -declare 65 macosx { +declare 47 macosx { int XSetSelectionOwner(Display *d, Atom a, Window w, Time t) } -declare 66 macosx { +declare 48 macosx { int XSetWindowBackground(Display *d, Window w, unsigned long ul) } -declare 67 macosx { +declare 49 macosx { int XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p) } -declare 68 macosx { +declare 50 macosx { int XSetWindowBorder(Display *d, Window w, unsigned long ul) } -declare 69 macosx { +declare 51 macosx { int XSetWindowBorderPixmap(Display *d, Window w, Pixmap p) } -declare 70 macosx { +declare 52 macosx { int XSetWindowBorderWidth(Display *d, Window w, unsigned int ui) } -declare 71 macosx { +declare 53 macosx { int XSetWindowColormap(Display *d, Window w, Colormap c) } -declare 72 macosx { - Bool XTranslateCoordinates(Display *d, Window w1, Window w2, int i1, - int i2, int *i3, int *i4, Window *w3) -} -declare 73 macosx { +declare 54 macosx { int XUngrabKeyboard(Display *d, Time t) } -declare 74 macosx { +declare 55 macosx { int XUngrabPointer(Display *d, Time t) } -declare 75 macosx { +declare 56 macosx { int XUnmapWindow(Display *d, Window w) } -declare 76 macosx { - int XWindowEvent(Display *d, Window w, long l, XEvent *x) -} -declare 77 macosx { - void XDestroyIC(XIC x) -} -declare 78 macosx { - Bool XFilterEvent(XEvent *x, Window w) -} -declare 79 macosx { - int XmbLookupString(XIC xi, XKeyPressedEvent *xk, char *c, int i, - KeySym *k, Status *s) -} -declare 80 macosx { +declare 57 macosx { int TkPutImage(unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height) } -declare 81 macosx { - int XSetClipRectangles(Display *display, GC gc, int clip_x_origin, - int clip_y_origin, XRectangle rectangles[], int n, int ordering) -} -declare 82 macosx { +declare 58 macosx { Status XParseColor(Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr) } -declare 83 macosx { +declare 59 macosx { GC XCreateGC(Display *display, Drawable d, unsigned long valuemask, XGCValues *values) } -declare 84 macosx { +declare 60 macosx { int XFreeGC(Display *display, GC gc) } -declare 85 macosx { +declare 61 macosx { Atom XInternAtom(Display *display, _Xconst char *atom_name, Bool only_if_exists) } -declare 86 macosx { +declare 62 macosx { int XSetBackground(Display *display, GC gc, unsigned long foreground) } -declare 87 macosx { +declare 63 macosx { int XSetForeground(Display *display, GC gc, unsigned long foreground) } -declare 88 macosx { +declare 64 macosx { int XSetClipMask(Display *display, GC gc, Pixmap pixmap) } -declare 89 macosx { +declare 65 macosx { int XSetClipOrigin(Display *display, GC gc, int clip_x_origin, int clip_y_origin) } -declare 90 macosx { +declare 66 macosx { int XSetTSOrigin(Display *display, GC gc, int ts_x_origin, int ts_y_origin) } -declare 91 macosx { +declare 67 macosx { int XChangeGC(Display *d, GC gc, unsigned long mask, XGCValues *values) } -declare 92 macosx { +declare 68 macosx { int XSetFont(Display *display, GC gc, Font font) } -declare 93 macosx { +declare 69 macosx { int XSetArcMode(Display *display, GC gc, int arc_mode) } -declare 94 macosx { +declare 70 macosx { int XSetStipple(Display *display, GC gc, Pixmap stipple) } -declare 95 macosx { +declare 71 macosx { int XSetFillRule(Display *display, GC gc, int fill_rule) } -declare 96 macosx { +declare 72 macosx { int XSetFillStyle(Display *display, GC gc, int fill_style) } -declare 97 macosx { +declare 73 macosx { int XSetFunction(Display *display, GC gc, int function) } -declare 98 macosx { +declare 74 macosx { int XSetLineAttributes(Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style) } -declare 99 macosx { +declare 75 macosx { int _XInitImageFuncPtrs(XImage *image) } -declare 100 macosx { +declare 76 macosx { XIC XCreateIC(XIM xim, ...) } -declare 101 macosx { +declare 77 macosx { XVisualInfo *XGetVisualInfo(Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return) } -declare 102 macosx { +declare 78 macosx { void XSetWMClientMachine(Display *display, Window w, XTextProperty *text_prop) } -declare 103 macosx { +declare 79 macosx { Status XStringListToTextProperty(char **list, int count, XTextProperty *text_prop_return) } -declare 104 macosx { +declare 80 macosx { + int XDrawSegments(Display *display, Drawable d, GC gc, + XSegment *segments, int nsegments) +} +declare 81 macosx { + int XForceScreenSaver(Display *display, int mode) +} +declare 82 macosx { int XDrawLine(Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2) } -declare 105 macosx { - int XWarpPointer(Display *d, Window s, Window dw, int sx, int sy, - unsigned int sw, unsigned int sh, int dx, int dy) -} -declare 106 macosx { +declare 83 macosx { int XFillRectangle(Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height) } - -# New in Tk 8.6 +declare 84 macosx { + int XClearWindow(Display *d, Window w) +} +declare 85 macosx { + int XDrawPoint(Display *display, Drawable d, GC gc, int x, int y) +} +declare 86 macosx { + int XDrawPoints(Display *display, Drawable d, GC gc, XPoint *points, + int npoints, int mode) +} +declare 87 macosx { + int XWarpPointer(Display *display, Window src_w, Window dest_w, + int src_x, int src_y, unsigned int src_width, + unsigned int src_height, int dest_x, int dest_y) +} +declare 88 macosx { + int XQueryColor(Display *display, Colormap colormap, XColor *def_in_out) +} +declare 89 macosx { + int XQueryColors(Display *display, Colormap colormap, + XColor *defs_in_out, int ncolors) +} +declare 90 macosx { + Status XQueryTree(Display *d, Window w1, Window *w2, Window *w3, + Window **w4, unsigned int *ui) +} +declare 91 macosx { + int XSync(Display *display, Bool discard) +} +declare 92 macosx { + Bool XTranslateCoordinates(Display *d, Window w1, Window w2, int i1, + int i2, int *i3, int *i4, Window *w3) +} +declare 93 macosx { + int XDeleteProperty(Display *d, Window w, Atom a) +} +declare 94 macosx { + int XFreeCursor(Display *d, Cursor c) +} +declare 95 macosx { + int XGetInputFocus(Display *d, Window *w, int *i) +} +declare 96 macosx { + int XmbLookupString(XIC xi, XKeyPressedEvent *xk, char *c, int i, + KeySym *k, Status *s) +} +declare 97 macosx { + int XNextEvent(Display *d, XEvent *x) +} +declare 98 macosx { + int XPutBackEvent(Display *d, XEvent *x) +} +declare 99 macosx { + int XSetCommand(Display *d, Window w, char **c, int i) +} +declare 100 macosx { + int XWindowEvent(Display *d, Window w, long l, XEvent *x) +} +declare 101 macosx { + Status XGetWindowAttributes(Display *d, Window w, XWindowAttributes *x) +} +declare 102 macosx { + Status XGetWMColormapWindows(Display *d, Window w, Window **wpp, int *ip) +} +declare 103 macosx { + Status XIconifyWindow(Display *d, Window w, int i) +} +declare 104 macosx { + Status XWithdrawWindow(Display *d, Window w, int i) +} +declare 105 macosx { + XHostAddress *XListHosts(Display *d, int *i, Bool *b) +} +declare 106 macosx { + int XSetClipRectangles(Display *display, GC gc, int clip_x_origin, + int clip_y_origin, XRectangle rectangles[], int n, int ordering) +} declare 107 macosx { int XFlush(Display *display) } declare 108 macosx { int XGrabServer(Display *display) @@ -1859,34 +1953,29 @@ } declare 112 macosx { XAfterFunction XSynchronize(Display *display, Bool onoff) } declare 113 macosx { - int XSync(Display *display, Bool discard) + Status XLookupColor(Display *d, Colormap c1, _Xconst char *c2, + XColor *x1, XColor *x2) } declare 114 macosx { VisualID XVisualIDFromVisual(Visual *visual) } - -# For tktreectrl declare 120 macosx { int XOffsetRegion(Region rgn, int dx, int dy) } declare 121 macosx { int XUnionRegion(Region srca, Region srcb, Region dr_return) } - -# For 3dcanvas declare 122 macosx { Window XCreateWindow(Display *display, Window parent, int x, int y, unsigned int width, unsigned int height, unsigned int border_width, int depth, unsigned int clazz, Visual *visual, unsigned long value_mask, XSetWindowAttributes *attributes) } - -# Various, e.g. for stub-enabled BLT declare 129 macosx { int XLowerWindow(Display *d, Window w) } declare 130 macosx { int XFillArcs(Display *d, Drawable dr, GC gc, XArc *a, int n) @@ -1895,19 +1984,10 @@ int XDrawArcs(Display *d, Drawable dr, GC gc, XArc *a, int n) } declare 132 macosx { int XDrawRectangles(Display *d, Drawable dr, GC gc, XRectangle *r, int n) } -declare 133 macosx { - int XDrawSegments(Display *d, Drawable dr, GC gc, XSegment *s, int n) -} -declare 134 macosx { - int XDrawPoint(Display *d, Drawable dr, GC gc, int x, int y) -} -declare 135 macosx { - int XDrawPoints(Display *d, Drawable dr, GC gc, XPoint *p, int n, int m) -} declare 136 macosx { int XReparentWindow(Display *d, Window w, Window p, int x, int y) } declare 137 macosx { int XPutImage(Display *d, Drawable dr, GC gc, XImage *im, @@ -1918,11 +1998,10 @@ Region XPolygonRegion(XPoint *pts, int n, int rule) } declare 139 macosx { int XPointInRegion(Region rgn, int x, int y) } -# For XIM declare 140 macosx { XVaNestedList XVaCreateNestedList(int dummy, ...) } declare 141 macosx { char *XSetICValues(XIC xic, ...) @@ -1931,10 +2010,22 @@ char *XGetICValues(XIC xic, ...) } declare 143 macosx { void XSetICFocus(XIC xic) } +declare 144 macosx { + void XDestroyIC(XIC xic) +} +declare 145 macosx { + Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2, + XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2) +} +declare 146 macosx { + Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2, + unsigned int ui1, unsigned int ui2, XColor _Xconst *x1, + XColor _Xconst *x2) +} declare 147 macosx { void XFreeFontSet(Display *display, XFontSet fontset) } declare 148 macosx { int XCloseIM(XIM im) Index: generic/tkInt.h ================================================================== --- generic/tkInt.h +++ generic/tkInt.h @@ -72,18 +72,57 @@ # define TCL_UNUSED(T) T JOIN(dummy, __LINE__) __attribute__((unused)) # else # define TCL_UNUSED(T) T JOIN(dummy, __LINE__) # endif #endif + +#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 7) +# define Tcl_WCharToUtfDString ((char * (*)(const WCHAR *, int, Tcl_DString *))Tcl_UniCharToUtfDString) +# define Tcl_UtfToWCharDString ((WCHAR * (*)(const char *, int, Tcl_DString *))Tcl_UtfToUniCharDString) +# define Tcl_Char16ToUtfDString Tcl_UniCharToUtfDString +# define Tcl_UtfToChar16DString Tcl_UtfToUniCharDString +# define TCL_COMBINE 0 +#endif + +/* Make available UTF-32 versions of the API, even though we compile with TCL_UTF_MAX=3 */ +#if TCL_MAJOR_VERSION > 8 +# define TkUtfToUniChar (tclStubsPtr->tcl_UtfToUniChar) /* 646 */ +# define TkUniCharToUtf (tclStubsPtr->tcl_UniCharToUtf) /* 324 (without TCL_COMBINE) */ +# define TkNumUtfChars (tclStubsPtr->tcl_NumUtfChars) /* 669 */ +# define TkGetCharLength (tclStubsPtr->tcl_GetCharLength) /* 670 */ +# define TkUtfAtIndex (tclStubsPtr->tcl_UtfAtIndex) /* 671 */ +#else + MODULE_SCOPE Tcl_Size TkUtfToUniChar(const char *, int *); + MODULE_SCOPE Tcl_Size TkUniCharToUtf(int, char *); +# ifdef USE_TCL_STUBS +# define TkNumUtfChars (((&tclStubsPtr->tcl_PkgProvideEx)[631]) ? \ + ((Tcl_Size (*)(const char *, Tcl_Size))(void *)((&tclStubsPtr->tcl_PkgProvideEx)[669])) \ + : (tclStubsPtr->tcl_NumUtfChars) /* 312 */) +# define TkGetCharLength (((&tclStubsPtr->tcl_PkgProvideEx)[631]) ? \ + ((Tcl_Size (*)(Tcl_Obj *))(void *)((&tclStubsPtr->tcl_PkgProvideEx)[670])) \ + : (tclStubsPtr->tcl_GetCharLength) /* 380 */) +# define TkUtfAtIndex (((&tclStubsPtr->tcl_PkgProvideEx)[631]) ? \ + ((const char *(*)(const char *, Tcl_Size))(void *)((&tclStubsPtr->tcl_PkgProvideEx)[671])) \ + : (tclStubsPtr->tcl_UtfAtIndex) /* 325 */) +# else +# define TkNumUtfChars TclNumUtfChars +# define TkGetCharLength TclGetCharLength +# define TkUtfAtIndex TclUtfAtIndex +# endif +#endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) # define TKFLEXARRAY #elif defined(__GNUC__) && (__GNUC__ > 2) # define TKFLEXARRAY 0 #else # define TKFLEXARRAY 1 #endif + +#if !defined(Tcl_GetParent) && (TCL_MAJOR_VERSION < 9) && (TCL_MINOR_VERSION < 7) +# define Tcl_GetParent Tcl_GetMaster +#endif /* * Macros used to cast between pointers and integers (e.g. when storing an int * in ClientData), on 64-bit architectures they avoid gcc warning about "cast * to/from pointer from/to integer of different size". @@ -543,10 +582,25 @@ Tcl_Size refCount; /* Reference count of how many Tk applications * are using this display. Used to clean up * the display when we no longer have any Tk * applications using it. */ + /* + * The following field were all added for Tk8.3 + */ + +#if TCL_MAJOR_VERSION < 9 +#if !defined(TK_NO_DEPRECATED) + int mouseButtonState; /* Current mouse button state for this + * display. NOT USED as of 8.6.10 */ + Window mouseButtonWindow; /* Window the button state was set in, added + * in Tk 8.4. */ +#else + int notused1; + XID notused2; +#endif /* !TK_NO_DEPRECATED */ +#endif Tk_Window warpWindow; Tk_Window warpMainwin; /* For finding the root window for warping * purposes. */ int warpX; int warpY; @@ -938,10 +992,22 @@ #define TK_MAKE_MENU_TEAROFF 0 /* Only non-transient case. */ #define TK_MAKE_MENU_POPUP 1 #define TK_MAKE_MENU_DROPDOWN 2 +/* See TIP #494 */ +#ifndef TCL_IO_FAILURE +# define TCL_IO_FAILURE (-1) +#endif +/* See TIP #537 */ +#ifndef TCL_INDEX_NONE +# define TCL_INDEX_NONE (-1) +#endif +#ifndef TCL_INDEX_END +# define TCL_INDEX_END ((Tcl_Size)-2) +#endif + /* * The following structure is used with TkMakeEnsemble to create ensemble * commands and optionally to create sub-ensembles. */ @@ -1066,10 +1132,17 @@ typedef struct { Tcl_ObjType objType; size_t version; } TkObjType; + +#ifndef TCL_OBJTYPE_V0 +# define TCL_OBJTYPE_V0 /* just empty */ +#endif +#ifndef TCL_OBJTYPE_V1 +# define TCL_OBJTYPE_V1(lengthProc) /* just empty */ +#endif MODULE_SCOPE const TkObjType tkBorderObjType; MODULE_SCOPE const TkObjType tkBitmapObjType; MODULE_SCOPE const TkObjType tkColorObjType; MODULE_SCOPE const TkObjType tkCursorObjType; @@ -1280,17 +1353,25 @@ void *clientData); MODULE_SCOPE void TkInitEmbeddedConfigurationInformation( Tcl_Interp *interp); MODULE_SCOPE void TkDoWarpWrtWin(TkDisplay *dispPtr); MODULE_SCOPE void TkpWarpPointer(TkDisplay *dispPtr); +MODULE_SCOPE int TkListCreateFrame(void *clientData, + Tcl_Interp *interp, Tcl_Obj *listObj, + int toplevel, Tcl_Obj *nameObj); MODULE_SCOPE void TkRotatePoint(double originX, double originY, double sine, double cosine, double *xPtr, double *yPtr); MODULE_SCOPE int TkGetIntForIndex(Tcl_Obj *, Tcl_Size, int lastOK, Tcl_Size*); -#define TkNewIndexObj(value) (((Tcl_Size)(value) == TCL_INDEX_NONE) ? Tcl_NewObj() : Tcl_NewWideIntObj((Tcl_WideInt)(value))) -#define TK_OPTION_UNDERLINE_DEF(type, field) NULL, TCL_INDEX_NONE, offsetof(type, field), TK_OPTION_NULL_OK, NULL +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) +# define TkNewIndexObj(value) Tcl_NewWideIntObj((Tcl_WideInt)(value + 1) - 1) +# define TK_OPTION_UNDERLINE_DEF(type, field) "-1", TCL_INDEX_NONE, offsetof(type, field), 0, NULL +#else +# define TkNewIndexObj(value) (((Tcl_Size)(value) == TCL_INDEX_NONE) ? Tcl_NewObj() : Tcl_NewWideIntObj((Tcl_WideInt)(value))) +# define TK_OPTION_UNDERLINE_DEF(type, field) NULL, TCL_INDEX_NONE, offsetof(type, field), TK_OPTION_NULL_OK, NULL +#endif #ifdef _WIN32 #define TkParseColor XParseColor #else @@ -1328,11 +1409,11 @@ #if !defined(__cplusplus) && !defined(c_plusplus) # define c_class class #endif -#if defined(_WIN32) && !defined(STATIC_BUILD) && (TCL_MAJOR_VERSION < 9) && defined(TCL_MINOR_VERSION) +#if defined(_WIN32) && !defined(STATIC_BUILD) && TCL_MAJOR_VERSION < 9 # define tcl_CreateFileHandler reserved9 #endif MODULE_SCOPE void Icu_Init(Tcl_Interp* interp); @@ -1344,10 +1425,11 @@ /* * For Tktest. */ MODULE_SCOPE Tcl_ObjCmdProc SquareObjCmd; +MODULE_SCOPE int TkOldTestInit(Tcl_Interp *interp); #if !(defined(_WIN32) || defined(MAC_OSX_TK)) #define TkplatformtestInit(x) TCL_OK #else MODULE_SCOPE int TkplatformtestInit(Tcl_Interp *interp); #endif Index: generic/tkIntDecls.h ================================================================== --- generic/tkIntDecls.h +++ generic/tkIntDecls.h @@ -78,12 +78,12 @@ const char *source, const char *mask, int width, int height, int xHot, int yHot, XColor fg, XColor bg); /* 13 */ EXTERN int TkCreateFrame(void *clientData, Tcl_Interp *interp, - Tcl_Size objc, Tcl_Obj *const objv[], - int type, const char *appName); + Tcl_Size argc, const char *const *argv, + int toplevel, const char *appName); /* 14 */ EXTERN Tk_Window TkCreateMainWindow(Tcl_Interp *interp, const char *screenName, const char *baseName); /* 15 */ EXTERN Time TkCurrentTime(TkDisplay *dispPtr); @@ -200,22 +200,28 @@ EXTERN void TkpClaimFocus(TkWindow *topLevelPtr, int force); /* 58 */ EXTERN void TkpDisplayWarning(const char *msg, const char *title); /* 59 */ EXTERN void TkpGetAppName(Tcl_Interp *interp, Tcl_DString *name); -/* Slot 60 is reserved */ +/* 60 */ +TK_DEPRECATED("renamed to Tk_GetOtherWindow") +TkWindow * TkpGetOtherWindow(TkWindow *winPtr); /* 61 */ EXTERN TkWindow * TkpGetWrapperWindow(TkWindow *winPtr); /* 62 */ EXTERN int TkpInit(Tcl_Interp *interp); /* 63 */ EXTERN void TkpInitializeMenuBindings(Tcl_Interp *interp, Tk_BindingTable bindingTable); -/* Slot 64 is reserved */ +/* 64 */ +TK_DEPRECATED("renamed to Tk_MakeContainer") +void TkpMakeContainer(Tk_Window tkwin); /* 65 */ EXTERN void TkpMakeMenuWindow(Tk_Window tkwin, int transient); -/* Slot 66 is reserved */ +/* 66 */ +TK_DEPRECATED("renamed to Tk_MakeWindow") +Window TkpMakeWindow(TkWindow *winPtr, Window parent); /* 67 */ EXTERN void TkpMenuNotifyToplevelCreate(Tcl_Interp *interp, const char *menuName); /* 68 */ EXTERN TkDisplay * TkpOpenDisplay(const char *display_name); @@ -230,12 +236,18 @@ /* 72 */ EXTERN int TkPositionInTree(TkWindow *winPtr, TkWindow *treePtr); /* 73 */ EXTERN void TkpRedirectKeyEvent(TkWindow *winPtr, XEvent *eventPtr); -/* Slot 74 is reserved */ -/* Slot 75 is reserved */ +/* 74 */ +TK_DEPRECATED("renamed to Tk_SetMainMenubar") +void TkpSetMainMenubar(Tcl_Interp *interp, + Tk_Window tkwin, const char *menuName); +/* 75 */ +TK_DEPRECATED("renamed to Tk_UseWindow") +int TkpUseWindow(Tcl_Interp *interp, Tk_Window tkwin, + const char *string); /* Slot 76 is reserved */ /* 77 */ EXTERN void TkQueueEventForAllChildren(TkWindow *winPtr, XEvent *eventPtr); /* 78 */ @@ -256,11 +268,15 @@ /* 82 */ EXTERN void TkSelInit(Tk_Window tkwin); /* 83 */ EXTERN void TkSelPropProc(XEvent *eventPtr); /* Slot 84 is reserved */ -/* Slot 85 is reserved */ +/* 85 */ +TK_DEPRECATED("renamed to Tk_SetWindowMenubar") +void TkSetWindowMenuBar(Tcl_Interp *interp, + Tk_Window tkwin, const char *oldMenuName, + const char *menuName); /* 86 */ EXTERN KeySym TkStringToKeysym(const char *name); /* 87 */ EXTERN int TkThickPolyLineToArea(double *coordPtr, int numPoints, double width, int capStyle, @@ -317,11 +333,14 @@ /* 109 */ EXTERN const char * TkpGetString(TkWindow *winPtr, XEvent *eventPtr, Tcl_DString *dsPtr); /* 110 */ EXTERN void TkpGetSubFonts(Tcl_Interp *interp, Tk_Font tkfont); -/* Slot 111 is reserved */ +/* 111 */ +TK_DEPRECATED("renamed to Tk_GetSystemDefault") +Tcl_Obj * TkpGetSystemDefault(Tk_Window tkwin, + const char *dbName, const char *className); /* 112 */ EXTERN void TkpMenuThreadInit(void); /* 113 */ EXTERN int XClipBox(Region rgn, XRectangle *rect_return); /* 114 */ @@ -338,19 +357,25 @@ EXTERN int XSetRegion(Display *display, GC gc, Region rgn); /* 119 */ EXTERN int XUnionRectWithRegion(XRectangle *rect, Region src, Region dr_return); /* Slot 120 is reserved */ +#ifdef MAC_OSX_TK /* AQUA */ /* 121 */ EXTERN Pixmap TkpCreateNativeBitmap(Display *display, const void *source); +#endif /* AQUA */ +#ifdef MAC_OSX_TK /* AQUA */ /* 122 */ EXTERN void TkpDefineNativeBitmaps(void); +#endif /* AQUA */ /* Slot 123 is reserved */ +#ifdef MAC_OSX_TK /* AQUA */ /* 124 */ EXTERN Pixmap TkpGetNativeAppBitmap(Display *display, const char *name, int *width, int *height); +#endif /* AQUA */ /* Slot 125 is reserved */ /* Slot 126 is reserved */ /* Slot 127 is reserved */ /* Slot 128 is reserved */ /* Slot 129 is reserved */ @@ -357,11 +382,15 @@ /* Slot 130 is reserved */ /* Slot 131 is reserved */ /* Slot 132 is reserved */ /* Slot 133 is reserved */ /* Slot 134 is reserved */ -/* Slot 135 is reserved */ +/* 135 */ +TK_DEPRECATED("renamed to Tk_DrawHighlightBorder") +void TkpDrawHighlightBorder(Tk_Window tkwin, GC fgGC, + GC bgGC, int highlightWidth, + Drawable drawable); /* 136 */ EXTERN void TkSetFocusWin(TkWindow *winPtr, int force); /* 137 */ EXTERN void TkpSetKeycodeAndState(Tk_Window tkwin, KeySym keySym, XEvent *eventPtr); @@ -561,11 +590,11 @@ int (*tkClipInit) (Tcl_Interp *interp, TkDisplay *dispPtr); /* 8 */ void (*tkComputeAnchor) (Tk_Anchor anchor, Tk_Window tkwin, int padX, int padY, int innerWidth, int innerHeight, int *xPtr, int *yPtr); /* 9 */ void (*reserved10)(void); void (*reserved11)(void); TkCursor * (*tkCreateCursorFromData) (Tk_Window tkwin, const char *source, const char *mask, int width, int height, int xHot, int yHot, XColor fg, XColor bg); /* 12 */ - int (*tkCreateFrame) (void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[], int type, const char *appName); /* 13 */ + int (*tkCreateFrame) (void *clientData, Tcl_Interp *interp, Tcl_Size argc, const char *const *argv, int toplevel, const char *appName); /* 13 */ Tk_Window (*tkCreateMainWindow) (Tcl_Interp *interp, const char *screenName, const char *baseName); /* 14 */ Time (*tkCurrentTime) (TkDisplay *dispPtr); /* 15 */ void (*tkDeleteAllImages) (TkMainInfo *mainPtr); /* 16 */ void (*tkDoConfigureNotify) (TkWindow *winPtr); /* 17 */ void (*tkDrawInsetFocusHighlight) (Tk_Window tkwin, GC gc, int width, Drawable drawable, int padding); /* 18 */ @@ -608,36 +637,36 @@ int (*tkpChangeFocus) (TkWindow *winPtr, int force); /* 55 */ void (*tkpCloseDisplay) (TkDisplay *dispPtr); /* 56 */ void (*tkpClaimFocus) (TkWindow *topLevelPtr, int force); /* 57 */ void (*tkpDisplayWarning) (const char *msg, const char *title); /* 58 */ void (*tkpGetAppName) (Tcl_Interp *interp, Tcl_DString *name); /* 59 */ - void (*reserved60)(void); + TCL_DEPRECATED_API("renamed to Tk_GetOtherWindow") TkWindow * (*tkpGetOtherWindow) (TkWindow *winPtr); /* 60 */ TkWindow * (*tkpGetWrapperWindow) (TkWindow *winPtr); /* 61 */ int (*tkpInit) (Tcl_Interp *interp); /* 62 */ void (*tkpInitializeMenuBindings) (Tcl_Interp *interp, Tk_BindingTable bindingTable); /* 63 */ - void (*reserved64)(void); + TCL_DEPRECATED_API("renamed to Tk_MakeContainer") void (*tkpMakeContainer) (Tk_Window tkwin); /* 64 */ void (*tkpMakeMenuWindow) (Tk_Window tkwin, int transient); /* 65 */ - void (*reserved66)(void); + TCL_DEPRECATED_API("renamed to Tk_MakeWindow") Window (*tkpMakeWindow) (TkWindow *winPtr, Window parent); /* 66 */ void (*tkpMenuNotifyToplevelCreate) (Tcl_Interp *interp, const char *menuName); /* 67 */ TkDisplay * (*tkpOpenDisplay) (const char *display_name); /* 68 */ int (*tkPointerEvent) (XEvent *eventPtr, TkWindow *winPtr); /* 69 */ int (*tkPolygonToArea) (double *polyPtr, int numPoints, double *rectPtr); /* 70 */ double (*tkPolygonToPoint) (double *polyPtr, int numPoints, double *pointPtr); /* 71 */ int (*tkPositionInTree) (TkWindow *winPtr, TkWindow *treePtr); /* 72 */ void (*tkpRedirectKeyEvent) (TkWindow *winPtr, XEvent *eventPtr); /* 73 */ - void (*reserved74)(void); - void (*reserved75)(void); + TCL_DEPRECATED_API("renamed to Tk_SetMainMenubar") void (*tkpSetMainMenubar) (Tcl_Interp *interp, Tk_Window tkwin, const char *menuName); /* 74 */ + TCL_DEPRECATED_API("renamed to Tk_UseWindow") int (*tkpUseWindow) (Tcl_Interp *interp, Tk_Window tkwin, const char *string); /* 75 */ void (*reserved76)(void); void (*tkQueueEventForAllChildren) (TkWindow *winPtr, XEvent *eventPtr); /* 77 */ int (*tkReadBitmapFile) (Display *display, Drawable d, const char *filename, unsigned int *width_return, unsigned int *height_return, Pixmap *bitmap_return, int *x_hot_return, int *y_hot_return); /* 78 */ int (*tkScrollWindow) (Tk_Window tkwin, GC gc, int x, int y, int width, int height, int dx, int dy, Region damageRgn); /* 79 */ void (*tkSelDeadWindow) (TkWindow *winPtr); /* 80 */ void (*tkSelEventProc) (Tk_Window tkwin, XEvent *eventPtr); /* 81 */ void (*tkSelInit) (Tk_Window tkwin); /* 82 */ void (*tkSelPropProc) (XEvent *eventPtr); /* 83 */ void (*reserved84)(void); - void (*reserved85)(void); + TCL_DEPRECATED_API("renamed to Tk_SetWindowMenubar") void (*tkSetWindowMenuBar) (Tcl_Interp *interp, Tk_Window tkwin, const char *oldMenuName, const char *menuName); /* 85 */ KeySym (*tkStringToKeysym) (const char *name); /* 86 */ int (*tkThickPolyLineToArea) (double *coordPtr, int numPoints, double width, int capStyle, int joinStyle, double *rectPtr); /* 87 */ void (*tkWmAddToColormapWindows) (TkWindow *winPtr); /* 88 */ void (*tkWmDeadWindow) (TkWindow *winPtr); /* 89 */ TkWindow * (*tkWmFocusToplevel) (TkWindow *winPtr); /* 90 */ @@ -659,24 +688,57 @@ TkDisplay * (*tkGetDisplayList) (void); /* 106 */ TkMainInfo * (*tkGetMainInfoList) (void); /* 107 */ int (*tkGetWindowFromObj) (Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj *objPtr, Tk_Window *windowPtr); /* 108 */ const char * (*tkpGetString) (TkWindow *winPtr, XEvent *eventPtr, Tcl_DString *dsPtr); /* 109 */ void (*tkpGetSubFonts) (Tcl_Interp *interp, Tk_Font tkfont); /* 110 */ - void (*reserved111)(void); + TCL_DEPRECATED_API("renamed to Tk_GetSystemDefault") Tcl_Obj * (*tkpGetSystemDefault) (Tk_Window tkwin, const char *dbName, const char *className); /* 111 */ void (*tkpMenuThreadInit) (void); /* 112 */ int (*xClipBox) (Region rgn, XRectangle *rect_return); /* 113 */ Region (*xCreateRegion) (void); /* 114 */ int (*xDestroyRegion) (Region rgn); /* 115 */ int (*xIntersectRegion) (Region sra, Region srcb, Region dr_return); /* 116 */ int (*xRectInRegion) (Region rgn, int x, int y, unsigned int width, unsigned int height); /* 117 */ int (*xSetRegion) (Display *display, GC gc, Region rgn); /* 118 */ int (*xUnionRectWithRegion) (XRectangle *rect, Region src, Region dr_return); /* 119 */ void (*reserved120)(void); +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + void (*reserved121)(void); +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + void (*reserved121)(void); +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + void (*reserved121)(void); /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ Pixmap (*tkpCreateNativeBitmap) (Display *display, const void *source); /* 121 */ +#endif /* AQUA */ +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + void (*reserved122)(void); +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + void (*reserved122)(void); +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + void (*reserved122)(void); /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ void (*tkpDefineNativeBitmaps) (void); /* 122 */ +#endif /* AQUA */ void (*reserved123)(void); +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + void (*reserved124)(void); +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + void (*reserved124)(void); +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + void (*reserved124)(void); /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ Pixmap (*tkpGetNativeAppBitmap) (Display *display, const char *name, int *width, int *height); /* 124 */ +#endif /* AQUA */ void (*reserved125)(void); void (*reserved126)(void); void (*reserved127)(void); void (*reserved128)(void); void (*reserved129)(void); @@ -683,11 +745,11 @@ void (*reserved130)(void); void (*reserved131)(void); void (*reserved132)(void); void (*reserved133)(void); void (*reserved134)(void); - void (*reserved135)(void); + TCL_DEPRECATED_API("renamed to Tk_DrawHighlightBorder") void (*tkpDrawHighlightBorder) (Tk_Window tkwin, GC fgGC, GC bgGC, int highlightWidth, Drawable drawable); /* 135 */ void (*tkSetFocusWin) (TkWindow *winPtr, int force); /* 136 */ void (*tkpSetKeycodeAndState) (Tk_Window tkwin, KeySym keySym, XEvent *eventPtr); /* 137 */ KeySym (*tkpGetKeySym) (TkDisplay *dispPtr, XEvent *eventPtr); /* 138 */ void (*tkpInitKeymapInfo) (TkDisplay *dispPtr); /* 139 */ Region (*tkPhotoGetValidRegion) (Tk_PhotoHandle handle); /* 140 */ @@ -867,21 +929,24 @@ (tkIntStubsPtr->tkpClaimFocus) /* 57 */ #define TkpDisplayWarning \ (tkIntStubsPtr->tkpDisplayWarning) /* 58 */ #define TkpGetAppName \ (tkIntStubsPtr->tkpGetAppName) /* 59 */ -/* Slot 60 is reserved */ +#define TkpGetOtherWindow \ + (tkIntStubsPtr->tkpGetOtherWindow) /* 60 */ #define TkpGetWrapperWindow \ (tkIntStubsPtr->tkpGetWrapperWindow) /* 61 */ #define TkpInit \ (tkIntStubsPtr->tkpInit) /* 62 */ #define TkpInitializeMenuBindings \ (tkIntStubsPtr->tkpInitializeMenuBindings) /* 63 */ -/* Slot 64 is reserved */ +#define TkpMakeContainer \ + (tkIntStubsPtr->tkpMakeContainer) /* 64 */ #define TkpMakeMenuWindow \ (tkIntStubsPtr->tkpMakeMenuWindow) /* 65 */ -/* Slot 66 is reserved */ +#define TkpMakeWindow \ + (tkIntStubsPtr->tkpMakeWindow) /* 66 */ #define TkpMenuNotifyToplevelCreate \ (tkIntStubsPtr->tkpMenuNotifyToplevelCreate) /* 67 */ #define TkpOpenDisplay \ (tkIntStubsPtr->tkpOpenDisplay) /* 68 */ #define TkPointerEvent \ @@ -892,12 +957,14 @@ (tkIntStubsPtr->tkPolygonToPoint) /* 71 */ #define TkPositionInTree \ (tkIntStubsPtr->tkPositionInTree) /* 72 */ #define TkpRedirectKeyEvent \ (tkIntStubsPtr->tkpRedirectKeyEvent) /* 73 */ -/* Slot 74 is reserved */ -/* Slot 75 is reserved */ +#define TkpSetMainMenubar \ + (tkIntStubsPtr->tkpSetMainMenubar) /* 74 */ +#define TkpUseWindow \ + (tkIntStubsPtr->tkpUseWindow) /* 75 */ /* Slot 76 is reserved */ #define TkQueueEventForAllChildren \ (tkIntStubsPtr->tkQueueEventForAllChildren) /* 77 */ #define TkReadBitmapFile \ (tkIntStubsPtr->tkReadBitmapFile) /* 78 */ @@ -910,11 +977,12 @@ #define TkSelInit \ (tkIntStubsPtr->tkSelInit) /* 82 */ #define TkSelPropProc \ (tkIntStubsPtr->tkSelPropProc) /* 83 */ /* Slot 84 is reserved */ -/* Slot 85 is reserved */ +#define TkSetWindowMenuBar \ + (tkIntStubsPtr->tkSetWindowMenuBar) /* 85 */ #define TkStringToKeysym \ (tkIntStubsPtr->tkStringToKeysym) /* 86 */ #define TkThickPolyLineToArea \ (tkIntStubsPtr->tkThickPolyLineToArea) /* 87 */ #define TkWmAddToColormapWindows \ @@ -961,11 +1029,12 @@ (tkIntStubsPtr->tkGetWindowFromObj) /* 108 */ #define TkpGetString \ (tkIntStubsPtr->tkpGetString) /* 109 */ #define TkpGetSubFonts \ (tkIntStubsPtr->tkpGetSubFonts) /* 110 */ -/* Slot 111 is reserved */ +#define TkpGetSystemDefault \ + (tkIntStubsPtr->tkpGetSystemDefault) /* 111 */ #define TkpMenuThreadInit \ (tkIntStubsPtr->tkpMenuThreadInit) /* 112 */ #define XClipBox \ (tkIntStubsPtr->xClipBox) /* 113 */ #define XCreateRegion \ @@ -979,17 +1048,23 @@ #define XSetRegion \ (tkIntStubsPtr->xSetRegion) /* 118 */ #define XUnionRectWithRegion \ (tkIntStubsPtr->xUnionRectWithRegion) /* 119 */ /* Slot 120 is reserved */ +#ifdef MAC_OSX_TK /* AQUA */ #define TkpCreateNativeBitmap \ (tkIntStubsPtr->tkpCreateNativeBitmap) /* 121 */ +#endif /* AQUA */ +#ifdef MAC_OSX_TK /* AQUA */ #define TkpDefineNativeBitmaps \ (tkIntStubsPtr->tkpDefineNativeBitmaps) /* 122 */ +#endif /* AQUA */ /* Slot 123 is reserved */ +#ifdef MAC_OSX_TK /* AQUA */ #define TkpGetNativeAppBitmap \ (tkIntStubsPtr->tkpGetNativeAppBitmap) /* 124 */ +#endif /* AQUA */ /* Slot 125 is reserved */ /* Slot 126 is reserved */ /* Slot 127 is reserved */ /* Slot 128 is reserved */ /* Slot 129 is reserved */ @@ -996,11 +1071,12 @@ /* Slot 130 is reserved */ /* Slot 131 is reserved */ /* Slot 132 is reserved */ /* Slot 133 is reserved */ /* Slot 134 is reserved */ -/* Slot 135 is reserved */ +#define TkpDrawHighlightBorder \ + (tkIntStubsPtr->tkpDrawHighlightBorder) /* 135 */ #define TkSetFocusWin \ (tkIntStubsPtr->tkSetFocusWin) /* 136 */ #define TkpSetKeycodeAndState \ (tkIntStubsPtr->tkpSetKeycodeAndState) /* 137 */ #define TkpGetKeySym \ @@ -1107,20 +1183,42 @@ /* !END!: Do not edit above this line. */ #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT + +#undef TkpCmapStressed_ +#undef TkpSync_ +#undef TkUnixContainerId_ +#undef TkUnixDoOneXEvent_ +#undef TkUnixSetMenubar_ +#undef TkWmCleanup_ +#undef TkSendCleanup_ +#undef TkpTestsendCmd_ +#undef TkSetWindowMenuBar +#undef TkpDrawHighlightBorder +#undef TkpUseWindow +#undef TkpSetMainMenubar +#undef TkpGetOtherWindow +#undef TkpGetSystemDefault +#undef TkpMakeContainer +#undef TkpMakeWindow + +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION == 8) +# define TkSetWindowMenuBar Tk_SetWindowMenubar +# define TkpDrawHighlightBorder Tk_DrawHighlightBorder +# define TkpUseWindow Tk_UseWindow +# define TkpSetMainMenubar Tk_SetMainMenubar +# define TkpGetOtherWindow ((TkWindow *(*)(TkWindow *))(void *)Tk_GetOtherWindow) +# define TkpGetSystemDefault Tk_GetSystemDefault +# define TkpMakeContainer Tk_MakeContainer +# define TkpMakeWindow ((Window (*)(TkWindow *, Window))(void *)Tk_MakeWindow) +#endif #if !defined(MAC_OSX_TK) && !defined(USE_TK_STUBS) # undef TkpWillDrawWidget # undef TkpRedrawWidget -# undef TkpDefineNativeBitmaps -# undef TkpCreateNativeBitmap -# undef TkpGetNativeAppBitmap # define TkpWillDrawWidget(w) 0 # define TkpRedrawWidget(w) -# define TkpDefineNativeBitmaps() -# define TkpCreateNativeBitmap(display, source) None -# define TkpGetNativeAppBitmap(display, name, w, h) None #endif #endif /* _TKINTDECLS */ Index: generic/tkIntPlatDecls.h ================================================================== --- generic/tkIntPlatDecls.h +++ generic/tkIntPlatDecls.h @@ -34,11 +34,12 @@ * Exported function declarations: */ #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ /* 0 */ -EXTERN void TkCreateXEventSource(void); +EXTERN char * TkAlignImageData(XImage *image, int alignment, + int bitOrder); /* Slot 1 is reserved */ /* 2 */ EXTERN void TkGenerateActivateEvents(TkWindow *winPtr, int active); /* 3 */ @@ -111,20 +112,20 @@ EXTERN void TkWinDialogDebug(int debug); /* 32 */ EXTERN Tcl_Obj * TkWinGetMenuSystemDefault(Tk_Window tkwin, const char *dbName, const char *className); /* 33 */ -EXTERN char * TkAlignImageData(XImage *image, int alignment, - int bitOrder); +EXTERN int TkWinGetPlatformId(void); /* 34 */ EXTERN void TkWinSetHINSTANCE(HINSTANCE hInstance); /* 35 */ EXTERN int TkWinGetPlatformTheme(void); /* 36 */ EXTERN LRESULT __stdcall TkWinChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); -/* Slot 37 is reserved */ +/* 37 */ +EXTERN void TkCreateXEventSource(void); /* 38 */ EXTERN int TkpCmapStressed(Tk_Window tkwin, Colormap colormap); /* 39 */ EXTERN void TkpSync(Display *display); /* 40 */ @@ -143,35 +144,34 @@ /* Slot 46 is reserved */ /* 47 */ EXTERN Tk_Window TkpGetCapture(void); #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ -/* Slot 0 is reserved */ -/* 1 */ -EXTERN void TkAboutDlg(void); +/* 0 */ +EXTERN void TkGenerateActivateEvents(TkWindow *winPtr, + int active); +/* Slot 1 is reserved */ /* 2 */ -EXTERN void TkGenerateActivateEvents(TkWindow *winPtr, +EXTERN void TkGenerateActivateEvents_(TkWindow *winPtr, int active); /* 3 */ -EXTERN unsigned long TkpGetMS(void); +EXTERN void TkPointerDeadWindow(TkWindow *winPtr); /* 4 */ -EXTERN void TkPointerDeadWindow(TkWindow *winPtr); +EXTERN void TkpSetCapture(TkWindow *winPtr); /* 5 */ EXTERN void TkpSetCursor(TkpCursor cursor); /* 6 */ -EXTERN int TkpScanWindowId(Tcl_Interp *interp, - const char *string, Window *idPtr); +EXTERN void TkpWmSetState(TkWindow *winPtr, int state); /* 7 */ -EXTERN int TkpWmSetState(TkWindow *winPtr, int state); +EXTERN void TkAboutDlg(void); /* 8 */ EXTERN unsigned int TkMacOSXButtonKeyState(void); /* 9 */ EXTERN void TkMacOSXClearMenubarActive(void); /* 10 */ EXTERN int TkMacOSXDispatchMenuEvent(int menuID, int index); -/* 11 */ -EXTERN void TkpSetCapture(TkWindow *winPtr); +/* Slot 11 is reserved */ /* 12 */ EXTERN void TkMacOSXHandleTearoffMenu(void); /* Slot 13 is reserved */ /* 14 */ EXTERN int TkMacOSXDoHLEvent(void *theEvent); @@ -186,11 +186,13 @@ /* Slot 19 is reserved */ /* Slot 20 is reserved */ /* 21 */ EXTERN void TkMacOSXInvalidateWindow(MacDrawable *macWin, int flag); -/* Slot 22 is reserved */ +/* 22 */ +EXTERN int TkMacOSXIsCharacterMissing(Tk_Font tkfont, + unsigned int searchChar); /* 23 */ EXTERN void TkMacOSXMakeRealWindowExist(TkWindow *winPtr); /* 24 */ EXTERN void * TkMacOSXMakeStippleMap(Drawable d1, Drawable d2); /* 25 */ @@ -200,11 +202,12 @@ EXTERN int TkMacOSXResizable(TkWindow *winPtr); /* 28 */ EXTERN void TkMacOSXSetHelpMenuItemCount(void); /* 29 */ EXTERN void TkMacOSXSetScrollbarGrow(TkWindow *winPtr, int flag); -/* Slot 30 is reserved */ +/* 30 */ +EXTERN void TkMacOSXSetUpClippingRgn(Drawable drawable); /* 31 */ EXTERN void TkMacOSXSetUpGraphicsPort(GC gc, void *destPort); /* 32 */ EXTERN void TkMacOSXUpdateClipRgn(TkWindow *winPtr); /* Slot 33 is reserved */ @@ -244,33 +247,50 @@ /* 50 */ EXTERN int TkGenerateButtonEvent(int x, int y, Window window, unsigned int state); /* 51 */ EXTERN void TkGenWMDestroyEvent(Tk_Window tkwin); -/* Slot 52 is reserved */ +/* 52 */ +EXTERN void TkMacOSXSetDrawingEnabled(TkWindow *winPtr, int flag); +/* 53 */ +EXTERN unsigned long TkpGetMS(void); +/* 54 */ +EXTERN void * TkMacOSXDrawable(Drawable drawable); +/* 55 */ +EXTERN int TkpScanWindowId(Tcl_Interp *interp, + const char *string, Window *idPtr); #endif /* AQUA */ #if !(defined(_WIN32) || defined(__CYGWIN__) || defined(MAC_OSX_TK)) /* X11 */ /* 0 */ EXTERN void TkCreateXEventSource(void); /* Slot 1 is reserved */ /* 2 */ EXTERN void TkGenerateActivateEvents(TkWindow *winPtr, int active); -/* Slot 3 is reserved */ -/* Slot 4 is reserved */ -/* Slot 5 is reserved */ +/* 3 */ +EXTERN int TkpCmapStressed(Tk_Window tkwin, Colormap colormap); +/* 4 */ +EXTERN void TkpSync(Display *display); +/* 5 */ +EXTERN Window TkUnixContainerId(TkWindow *winPtr); /* 6 */ +EXTERN int TkUnixDoOneXEvent(Tcl_Time *timePtr); +/* 7 */ +EXTERN void TkUnixSetMenubar(Tk_Window tkwin, Tk_Window menubar); +/* 8 */ EXTERN int TkpScanWindowId(Tcl_Interp *interp, const char *string, Window *idPtr); -/* Slot 7 is reserved */ -/* Slot 8 is reserved */ /* 9 */ -EXTERN int TkpWmSetState(TkWindow *winPtr, int state); -/* Slot 10 is reserved */ +EXTERN void TkWmCleanup(TkDisplay *dispPtr); +/* 10 */ +EXTERN void TkSendCleanup(TkDisplay *dispPtr); /* Slot 11 is reserved */ -/* Slot 12 is reserved */ -/* Slot 13 is reserved */ +/* 12 */ +EXTERN int TkpWmSetState(TkWindow *winPtr, int state); +/* 13 */ +EXTERN int TkpTestsendCmd_(void *clientData, Tcl_Interp *interp, + Tcl_Size objc, Tcl_Obj *const objv[]); /* Slot 14 is reserved */ /* Slot 15 is reserved */ /* Slot 16 is reserved */ /* Slot 17 is reserved */ /* Slot 18 is reserved */ @@ -292,23 +312,23 @@ /* Slot 34 is reserved */ /* Slot 35 is reserved */ /* Slot 36 is reserved */ /* Slot 37 is reserved */ /* 38 */ -EXTERN int TkpCmapStressed(Tk_Window tkwin, Colormap colormap); +EXTERN int TkpCmapStressed_(Tk_Window tkwin, Colormap colormap); /* 39 */ -EXTERN void TkpSync(Display *display); +EXTERN void TkpSync_(Display *display); /* 40 */ -EXTERN Window TkUnixContainerId(TkWindow *winPtr); +EXTERN Window TkUnixContainerId_(TkWindow *winPtr); /* 41 */ -EXTERN int TkUnixDoOneXEvent(Tcl_Time *timePtr); +EXTERN int TkUnixDoOneXEvent_(Tcl_Time *timePtr); /* 42 */ -EXTERN void TkUnixSetMenubar(Tk_Window tkwin, Tk_Window menubar); +EXTERN void TkUnixSetMenubar_(Tk_Window tkwin, Tk_Window menubar); /* 43 */ -EXTERN void TkWmCleanup(TkDisplay *dispPtr); +EXTERN void TkWmCleanup_(TkDisplay *dispPtr); /* 44 */ -EXTERN void TkSendCleanup(TkDisplay *dispPtr); +EXTERN void TkSendCleanup_(TkDisplay *dispPtr); /* 45 */ EXTERN int TkpTestsendCmd(void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); #endif /* X11 */ @@ -315,11 +335,11 @@ typedef struct TkIntPlatStubs { int magic; void *hooks; #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ - void (*tkCreateXEventSource) (void); /* 0 */ + char * (*tkAlignImageData) (XImage *image, int alignment, int bitOrder); /* 0 */ void (*reserved1)(void); void (*tkGenerateActivateEvents) (TkWindow *winPtr, int active); /* 2 */ unsigned long (*tkpGetMS) (void); /* 3 */ void (*tkPointerDeadWindow) (TkWindow *winPtr); /* 4 */ void (*tkpPrintWindowId) (char *buf, Window window); /* 5 */ @@ -348,15 +368,15 @@ void (*tkWinXCleanup) (void *clientData); /* 28 */ void (*tkWinXInit) (HINSTANCE hInstance); /* 29 */ void (*tkWinSetForegroundWindow) (TkWindow *winPtr); /* 30 */ void (*tkWinDialogDebug) (int debug); /* 31 */ Tcl_Obj * (*tkWinGetMenuSystemDefault) (Tk_Window tkwin, const char *dbName, const char *className); /* 32 */ - char * (*tkAlignImageData) (XImage *image, int alignment, int bitOrder); /* 33 */ + int (*tkWinGetPlatformId) (void); /* 33 */ void (*tkWinSetHINSTANCE) (HINSTANCE hInstance); /* 34 */ int (*tkWinGetPlatformTheme) (void); /* 35 */ LRESULT (__stdcall *tkWinChildProc) (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); /* 36 */ - void (*reserved37)(void); + void (*tkCreateXEventSource) (void); /* 37 */ int (*tkpCmapStressed) (Tk_Window tkwin, Colormap colormap); /* 38 */ void (*tkpSync) (Display *display); /* 39 */ Window (*tkUnixContainerId) (TkWindow *winPtr); /* 40 */ int (*tkUnixDoOneXEvent) (Tcl_Time *timePtr); /* 41 */ void (*tkUnixSetMenubar) (Tk_Window tkwin, Tk_Window menubar); /* 42 */ @@ -365,22 +385,22 @@ int (*tkpTestsendCmd) (void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); /* 45 */ void (*reserved46)(void); Tk_Window (*tkpGetCapture) (void); /* 47 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ - void (*reserved0)(void); - void (*tkAboutDlg) (void); /* 1 */ - void (*tkGenerateActivateEvents) (TkWindow *winPtr, int active); /* 2 */ - unsigned long (*tkpGetMS) (void); /* 3 */ - void (*tkPointerDeadWindow) (TkWindow *winPtr); /* 4 */ + void (*tkGenerateActivateEvents) (TkWindow *winPtr, int active); /* 0 */ + void (*reserved1)(void); + void (*tkGenerateActivateEvents_) (TkWindow *winPtr, int active); /* 2 */ + void (*tkPointerDeadWindow) (TkWindow *winPtr); /* 3 */ + void (*tkpSetCapture) (TkWindow *winPtr); /* 4 */ void (*tkpSetCursor) (TkpCursor cursor); /* 5 */ - int (*tkpScanWindowId) (Tcl_Interp *interp, const char *string, Window *idPtr); /* 6 */ - int (*tkpWmSetState) (TkWindow *winPtr, int state); /* 7 */ + void (*tkpWmSetState) (TkWindow *winPtr, int state); /* 6 */ + void (*tkAboutDlg) (void); /* 7 */ unsigned int (*tkMacOSXButtonKeyState) (void); /* 8 */ void (*tkMacOSXClearMenubarActive) (void); /* 9 */ int (*tkMacOSXDispatchMenuEvent) (int menuID, int index); /* 10 */ - void (*tkpSetCapture) (TkWindow *winPtr); /* 11 */ + void (*reserved11)(void); void (*tkMacOSXHandleTearoffMenu) (void); /* 12 */ void (*reserved13)(void); int (*tkMacOSXDoHLEvent) (void *theEvent); /* 14 */ void (*reserved15)(void); Window (*tkMacOSXGetXWindow) (void *macWinPtr); /* 16 */ @@ -387,19 +407,19 @@ int (*tkMacOSXGrowToplevel) (void *whichWindow, XPoint start); /* 17 */ void (*tkMacOSXHandleMenuSelect) (short theMenu, unsigned short theItem, int optionKeyPressed); /* 18 */ void (*reserved19)(void); void (*reserved20)(void); void (*tkMacOSXInvalidateWindow) (MacDrawable *macWin, int flag); /* 21 */ - void (*reserved22)(void); + int (*tkMacOSXIsCharacterMissing) (Tk_Font tkfont, unsigned int searchChar); /* 22 */ void (*tkMacOSXMakeRealWindowExist) (TkWindow *winPtr); /* 23 */ void * (*tkMacOSXMakeStippleMap) (Drawable d1, Drawable d2); /* 24 */ void (*tkMacOSXMenuClick) (void); /* 25 */ void (*reserved26)(void); int (*tkMacOSXResizable) (TkWindow *winPtr); /* 27 */ void (*tkMacOSXSetHelpMenuItemCount) (void); /* 28 */ void (*tkMacOSXSetScrollbarGrow) (TkWindow *winPtr, int flag); /* 29 */ - void (*reserved30)(void); + void (*tkMacOSXSetUpClippingRgn) (Drawable drawable); /* 30 */ void (*tkMacOSXSetUpGraphicsPort) (GC gc, void *destPort); /* 31 */ void (*tkMacOSXUpdateClipRgn) (TkWindow *winPtr); /* 32 */ void (*reserved33)(void); int (*tkMacOSXUseMenuID) (short macID); /* 34 */ Region (*tkMacOSXVisableClipRgn) (TkWindow *winPtr); /* 35 */ @@ -417,27 +437,30 @@ Tk_Window (*tkpGetCapture) (void); /* 47 */ void (*reserved48)(void); Tk_Window (*tkMacOSXGetContainer) (TkWindow *winPtr); /* 49 */ int (*tkGenerateButtonEvent) (int x, int y, Window window, unsigned int state); /* 50 */ void (*tkGenWMDestroyEvent) (Tk_Window tkwin); /* 51 */ - void (*reserved52)(void); + void (*tkMacOSXSetDrawingEnabled) (TkWindow *winPtr, int flag); /* 52 */ + unsigned long (*tkpGetMS) (void); /* 53 */ + void * (*tkMacOSXDrawable) (Drawable drawable); /* 54 */ + int (*tkpScanWindowId) (Tcl_Interp *interp, const char *string, Window *idPtr); /* 55 */ #endif /* AQUA */ #if !(defined(_WIN32) || defined(__CYGWIN__) || defined(MAC_OSX_TK)) /* X11 */ void (*tkCreateXEventSource) (void); /* 0 */ void (*reserved1)(void); void (*tkGenerateActivateEvents) (TkWindow *winPtr, int active); /* 2 */ - void (*reserved3)(void); - void (*reserved4)(void); - void (*reserved5)(void); - int (*tkpScanWindowId) (Tcl_Interp *interp, const char *string, Window *idPtr); /* 6 */ - void (*reserved7)(void); - void (*reserved8)(void); - int (*tkpWmSetState) (TkWindow *winPtr, int state); /* 9 */ - void (*reserved10)(void); + int (*tkpCmapStressed) (Tk_Window tkwin, Colormap colormap); /* 3 */ + void (*tkpSync) (Display *display); /* 4 */ + Window (*tkUnixContainerId) (TkWindow *winPtr); /* 5 */ + int (*tkUnixDoOneXEvent) (Tcl_Time *timePtr); /* 6 */ + void (*tkUnixSetMenubar) (Tk_Window tkwin, Tk_Window menubar); /* 7 */ + int (*tkpScanWindowId) (Tcl_Interp *interp, const char *string, Window *idPtr); /* 8 */ + void (*tkWmCleanup) (TkDisplay *dispPtr); /* 9 */ + void (*tkSendCleanup) (TkDisplay *dispPtr); /* 10 */ void (*reserved11)(void); - void (*reserved12)(void); - void (*reserved13)(void); + int (*tkpWmSetState) (TkWindow *winPtr, int state); /* 12 */ + int (*tkpTestsendCmd_) (void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); /* 13 */ void (*reserved14)(void); void (*reserved15)(void); void (*reserved16)(void); void (*reserved17)(void); void (*reserved18)(void); @@ -458,17 +481,17 @@ void (*reserved33)(void); void (*reserved34)(void); void (*reserved35)(void); void (*reserved36)(void); void (*reserved37)(void); - int (*tkpCmapStressed) (Tk_Window tkwin, Colormap colormap); /* 38 */ - void (*tkpSync) (Display *display); /* 39 */ - Window (*tkUnixContainerId) (TkWindow *winPtr); /* 40 */ - int (*tkUnixDoOneXEvent) (Tcl_Time *timePtr); /* 41 */ - void (*tkUnixSetMenubar) (Tk_Window tkwin, Tk_Window menubar); /* 42 */ - void (*tkWmCleanup) (TkDisplay *dispPtr); /* 43 */ - void (*tkSendCleanup) (TkDisplay *dispPtr); /* 44 */ + int (*tkpCmapStressed_) (Tk_Window tkwin, Colormap colormap); /* 38 */ + void (*tkpSync_) (Display *display); /* 39 */ + Window (*tkUnixContainerId_) (TkWindow *winPtr); /* 40 */ + int (*tkUnixDoOneXEvent_) (Tcl_Time *timePtr); /* 41 */ + void (*tkUnixSetMenubar_) (Tk_Window tkwin, Tk_Window menubar); /* 42 */ + void (*tkWmCleanup_) (TkDisplay *dispPtr); /* 43 */ + void (*tkSendCleanup_) (TkDisplay *dispPtr); /* 44 */ int (*tkpTestsendCmd) (void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]); /* 45 */ #endif /* X11 */ } TkIntPlatStubs; extern const TkIntPlatStubs *tkIntPlatStubsPtr; @@ -482,12 +505,12 @@ /* * Inline function declarations: */ #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ -#define TkCreateXEventSource \ - (tkIntPlatStubsPtr->tkCreateXEventSource) /* 0 */ +#define TkAlignImageData \ + (tkIntPlatStubsPtr->tkAlignImageData) /* 0 */ /* Slot 1 is reserved */ #define TkGenerateActivateEvents \ (tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 2 */ #define TkpGetMS \ (tkIntPlatStubsPtr->tkpGetMS) /* 3 */ @@ -547,19 +570,20 @@ (tkIntPlatStubsPtr->tkWinSetForegroundWindow) /* 30 */ #define TkWinDialogDebug \ (tkIntPlatStubsPtr->tkWinDialogDebug) /* 31 */ #define TkWinGetMenuSystemDefault \ (tkIntPlatStubsPtr->tkWinGetMenuSystemDefault) /* 32 */ -#define TkAlignImageData \ - (tkIntPlatStubsPtr->tkAlignImageData) /* 33 */ +#define TkWinGetPlatformId \ + (tkIntPlatStubsPtr->tkWinGetPlatformId) /* 33 */ #define TkWinSetHINSTANCE \ (tkIntPlatStubsPtr->tkWinSetHINSTANCE) /* 34 */ #define TkWinGetPlatformTheme \ (tkIntPlatStubsPtr->tkWinGetPlatformTheme) /* 35 */ #define TkWinChildProc \ (tkIntPlatStubsPtr->tkWinChildProc) /* 36 */ -/* Slot 37 is reserved */ +#define TkCreateXEventSource \ + (tkIntPlatStubsPtr->tkCreateXEventSource) /* 37 */ #define TkpCmapStressed \ (tkIntPlatStubsPtr->tkpCmapStressed) /* 38 */ #define TkpSync \ (tkIntPlatStubsPtr->tkpSync) /* 39 */ #define TkUnixContainerId \ @@ -577,33 +601,32 @@ /* Slot 46 is reserved */ #define TkpGetCapture \ (tkIntPlatStubsPtr->tkpGetCapture) /* 47 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ -/* Slot 0 is reserved */ -#define TkAboutDlg \ - (tkIntPlatStubsPtr->tkAboutDlg) /* 1 */ #define TkGenerateActivateEvents \ - (tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 2 */ -#define TkpGetMS \ - (tkIntPlatStubsPtr->tkpGetMS) /* 3 */ + (tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 0 */ +/* Slot 1 is reserved */ +#define TkGenerateActivateEvents_ \ + (tkIntPlatStubsPtr->tkGenerateActivateEvents_) /* 2 */ #define TkPointerDeadWindow \ - (tkIntPlatStubsPtr->tkPointerDeadWindow) /* 4 */ + (tkIntPlatStubsPtr->tkPointerDeadWindow) /* 3 */ +#define TkpSetCapture \ + (tkIntPlatStubsPtr->tkpSetCapture) /* 4 */ #define TkpSetCursor \ (tkIntPlatStubsPtr->tkpSetCursor) /* 5 */ -#define TkpScanWindowId \ - (tkIntPlatStubsPtr->tkpScanWindowId) /* 6 */ #define TkpWmSetState \ - (tkIntPlatStubsPtr->tkpWmSetState) /* 7 */ + (tkIntPlatStubsPtr->tkpWmSetState) /* 6 */ +#define TkAboutDlg \ + (tkIntPlatStubsPtr->tkAboutDlg) /* 7 */ #define TkMacOSXButtonKeyState \ (tkIntPlatStubsPtr->tkMacOSXButtonKeyState) /* 8 */ #define TkMacOSXClearMenubarActive \ (tkIntPlatStubsPtr->tkMacOSXClearMenubarActive) /* 9 */ #define TkMacOSXDispatchMenuEvent \ (tkIntPlatStubsPtr->tkMacOSXDispatchMenuEvent) /* 10 */ -#define TkpSetCapture \ - (tkIntPlatStubsPtr->tkpSetCapture) /* 11 */ +/* Slot 11 is reserved */ #define TkMacOSXHandleTearoffMenu \ (tkIntPlatStubsPtr->tkMacOSXHandleTearoffMenu) /* 12 */ /* Slot 13 is reserved */ #define TkMacOSXDoHLEvent \ (tkIntPlatStubsPtr->tkMacOSXDoHLEvent) /* 14 */ @@ -616,11 +639,12 @@ (tkIntPlatStubsPtr->tkMacOSXHandleMenuSelect) /* 18 */ /* Slot 19 is reserved */ /* Slot 20 is reserved */ #define TkMacOSXInvalidateWindow \ (tkIntPlatStubsPtr->tkMacOSXInvalidateWindow) /* 21 */ -/* Slot 22 is reserved */ +#define TkMacOSXIsCharacterMissing \ + (tkIntPlatStubsPtr->tkMacOSXIsCharacterMissing) /* 22 */ #define TkMacOSXMakeRealWindowExist \ (tkIntPlatStubsPtr->tkMacOSXMakeRealWindowExist) /* 23 */ #define TkMacOSXMakeStippleMap \ (tkIntPlatStubsPtr->tkMacOSXMakeStippleMap) /* 24 */ #define TkMacOSXMenuClick \ @@ -630,11 +654,12 @@ (tkIntPlatStubsPtr->tkMacOSXResizable) /* 27 */ #define TkMacOSXSetHelpMenuItemCount \ (tkIntPlatStubsPtr->tkMacOSXSetHelpMenuItemCount) /* 28 */ #define TkMacOSXSetScrollbarGrow \ (tkIntPlatStubsPtr->tkMacOSXSetScrollbarGrow) /* 29 */ -/* Slot 30 is reserved */ +#define TkMacOSXSetUpClippingRgn \ + (tkIntPlatStubsPtr->tkMacOSXSetUpClippingRgn) /* 30 */ #define TkMacOSXSetUpGraphicsPort \ (tkIntPlatStubsPtr->tkMacOSXSetUpGraphicsPort) /* 31 */ #define TkMacOSXUpdateClipRgn \ (tkIntPlatStubsPtr->tkMacOSXUpdateClipRgn) /* 32 */ /* Slot 33 is reserved */ @@ -670,31 +695,46 @@ (tkIntPlatStubsPtr->tkMacOSXGetContainer) /* 49 */ #define TkGenerateButtonEvent \ (tkIntPlatStubsPtr->tkGenerateButtonEvent) /* 50 */ #define TkGenWMDestroyEvent \ (tkIntPlatStubsPtr->tkGenWMDestroyEvent) /* 51 */ -/* Slot 52 is reserved */ +#define TkMacOSXSetDrawingEnabled \ + (tkIntPlatStubsPtr->tkMacOSXSetDrawingEnabled) /* 52 */ +#define TkpGetMS \ + (tkIntPlatStubsPtr->tkpGetMS) /* 53 */ +#define TkMacOSXDrawable \ + (tkIntPlatStubsPtr->tkMacOSXDrawable) /* 54 */ +#define TkpScanWindowId \ + (tkIntPlatStubsPtr->tkpScanWindowId) /* 55 */ #endif /* AQUA */ #if !(defined(_WIN32) || defined(__CYGWIN__) || defined(MAC_OSX_TK)) /* X11 */ #define TkCreateXEventSource \ (tkIntPlatStubsPtr->tkCreateXEventSource) /* 0 */ /* Slot 1 is reserved */ #define TkGenerateActivateEvents \ (tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 2 */ -/* Slot 3 is reserved */ -/* Slot 4 is reserved */ -/* Slot 5 is reserved */ +#define TkpCmapStressed \ + (tkIntPlatStubsPtr->tkpCmapStressed) /* 3 */ +#define TkpSync \ + (tkIntPlatStubsPtr->tkpSync) /* 4 */ +#define TkUnixContainerId \ + (tkIntPlatStubsPtr->tkUnixContainerId) /* 5 */ +#define TkUnixDoOneXEvent \ + (tkIntPlatStubsPtr->tkUnixDoOneXEvent) /* 6 */ +#define TkUnixSetMenubar \ + (tkIntPlatStubsPtr->tkUnixSetMenubar) /* 7 */ #define TkpScanWindowId \ - (tkIntPlatStubsPtr->tkpScanWindowId) /* 6 */ -/* Slot 7 is reserved */ -/* Slot 8 is reserved */ -#define TkpWmSetState \ - (tkIntPlatStubsPtr->tkpWmSetState) /* 9 */ -/* Slot 10 is reserved */ + (tkIntPlatStubsPtr->tkpScanWindowId) /* 8 */ +#define TkWmCleanup \ + (tkIntPlatStubsPtr->tkWmCleanup) /* 9 */ +#define TkSendCleanup \ + (tkIntPlatStubsPtr->tkSendCleanup) /* 10 */ /* Slot 11 is reserved */ -/* Slot 12 is reserved */ -/* Slot 13 is reserved */ +#define TkpWmSetState \ + (tkIntPlatStubsPtr->tkpWmSetState) /* 12 */ +#define TkpTestsendCmd_ \ + (tkIntPlatStubsPtr->tkpTestsendCmd_) /* 13 */ /* Slot 14 is reserved */ /* Slot 15 is reserved */ /* Slot 16 is reserved */ /* Slot 17 is reserved */ /* Slot 18 is reserved */ @@ -715,35 +755,47 @@ /* Slot 33 is reserved */ /* Slot 34 is reserved */ /* Slot 35 is reserved */ /* Slot 36 is reserved */ /* Slot 37 is reserved */ -#define TkpCmapStressed \ - (tkIntPlatStubsPtr->tkpCmapStressed) /* 38 */ -#define TkpSync \ - (tkIntPlatStubsPtr->tkpSync) /* 39 */ -#define TkUnixContainerId \ - (tkIntPlatStubsPtr->tkUnixContainerId) /* 40 */ -#define TkUnixDoOneXEvent \ - (tkIntPlatStubsPtr->tkUnixDoOneXEvent) /* 41 */ -#define TkUnixSetMenubar \ - (tkIntPlatStubsPtr->tkUnixSetMenubar) /* 42 */ -#define TkWmCleanup \ - (tkIntPlatStubsPtr->tkWmCleanup) /* 43 */ -#define TkSendCleanup \ - (tkIntPlatStubsPtr->tkSendCleanup) /* 44 */ +#define TkpCmapStressed_ \ + (tkIntPlatStubsPtr->tkpCmapStressed_) /* 38 */ +#define TkpSync_ \ + (tkIntPlatStubsPtr->tkpSync_) /* 39 */ +#define TkUnixContainerId_ \ + (tkIntPlatStubsPtr->tkUnixContainerId_) /* 40 */ +#define TkUnixDoOneXEvent_ \ + (tkIntPlatStubsPtr->tkUnixDoOneXEvent_) /* 41 */ +#define TkUnixSetMenubar_ \ + (tkIntPlatStubsPtr->tkUnixSetMenubar_) /* 42 */ +#define TkWmCleanup_ \ + (tkIntPlatStubsPtr->tkWmCleanup_) /* 43 */ +#define TkSendCleanup_ \ + (tkIntPlatStubsPtr->tkSendCleanup_) /* 44 */ #define TkpTestsendCmd \ (tkIntPlatStubsPtr->tkpTestsendCmd) /* 45 */ #endif /* X11 */ #endif /* defined(USE_TK_STUBS) */ /* !END!: Do not edit above this line. */ -#ifndef TK_NO_DEPRECATED -# define TkMacOSXDrawable Tk_MacOSXGetNSWindowForDrawable -#endif +#undef TkpCmapStressed_ +#undef TkpSync_ +#undef TkUnixContainerId_ +#undef TkUnixDoOneXEvent_ +#undef TkUnixSetMenubar_ +#undef TkWmCleanup_ +#undef TkSendCleanup_ +#undef TkpTestsendCmd_ +#undef TkGenerateActivateEvents_ +#undef TkMacOSXSetUpClippingRgn +#undef TkMacOSXIsCharacterMissing +#define TkMacOSXIsCharacterMissing(tkfont) ((void)tkfont, 0) #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT +#undef TkWinGetPlatformId +#define TkWinGetPlatformId() (2) /* VER_PLATFORM_WIN32_NT */ + #endif /* _TKINTPLATDECLS */ Index: generic/tkIntXlibDecls.h ================================================================== --- generic/tkIntXlibDecls.h +++ generic/tkIntXlibDecls.h @@ -496,287 +496,288 @@ EXTERN char * XKeysymToString(KeySym k); /* 6 */ EXTERN Colormap XCreateColormap(Display *d, Window w, Visual *v, int i); /* 7 */ -EXTERN Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2, - XColor *x1, XColor *x2, unsigned int ui1, - unsigned int ui2); +EXTERN GContext XGContextFromGC(GC g); /* 8 */ -EXTERN Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2, - unsigned int ui1, unsigned int ui2, - XColor _Xconst *x1, XColor _Xconst *x2); +EXTERN KeySym XKeycodeToKeysym(Display *d, unsigned int k, int i); /* 9 */ -EXTERN GContext XGContextFromGC(GC g); +EXTERN KeySym XStringToKeysym(_Xconst char *c); /* 10 */ -EXTERN XHostAddress * XListHosts(Display *d, int *i, Bool *b); +EXTERN Window XRootWindow(Display *d, int i); /* 11 */ -EXTERN KeySym XKeycodeToKeysym(Display *d, unsigned int k, int i); +EXTERN XErrorHandler XSetErrorHandler(XErrorHandler x); /* 12 */ -EXTERN KeySym XStringToKeysym(_Xconst char *c); +EXTERN Status XAllocColor(Display *d, Colormap c, XColor *xp); /* 13 */ -EXTERN Window XRootWindow(Display *d, int i); -/* 14 */ -EXTERN XErrorHandler XSetErrorHandler(XErrorHandler x); -/* 15 */ -EXTERN Status XIconifyWindow(Display *d, Window w, int i); -/* 16 */ -EXTERN Status XWithdrawWindow(Display *d, Window w, int i); -/* 17 */ -EXTERN Status XGetWMColormapWindows(Display *d, Window w, - Window **wpp, int *ip); -/* 18 */ -EXTERN Status XAllocColor(Display *d, Colormap c, XColor *xp); -/* 19 */ EXTERN int XBell(Display *d, int i); -/* 20 */ +/* 14 */ EXTERN int XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3); -/* 21 */ +/* 15 */ EXTERN int XChangeWindowAttributes(Display *d, Window w, unsigned long ul, XSetWindowAttributes *x); -/* 22 */ -EXTERN int XClearWindow(Display *d, Window w); -/* 23 */ +/* 16 */ EXTERN int XConfigureWindow(Display *d, Window w, unsigned int i, XWindowChanges *x); -/* 24 */ +/* 17 */ EXTERN int XCopyArea(Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); -/* 25 */ +/* 18 */ EXTERN int XCopyPlane(Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul); -/* 26 */ +/* 19 */ EXTERN Pixmap XCreateBitmapFromData(Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height); -/* 27 */ +/* 20 */ EXTERN int XDefineCursor(Display *d, Window w, Cursor c); -/* 28 */ -EXTERN int XDeleteProperty(Display *d, Window w, Atom a); -/* 29 */ +/* 21 */ EXTERN int XDestroyWindow(Display *d, Window w); -/* 30 */ +/* 22 */ EXTERN int XDrawArc(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); -/* 31 */ +/* 23 */ EXTERN int XDrawLines(Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2); -/* 32 */ +/* 24 */ EXTERN int XDrawRectangle(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2); -/* 33 */ +/* 25 */ EXTERN int XFillArc(Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); -/* 34 */ +/* 26 */ EXTERN int XFillPolygon(Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3); -/* 35 */ +/* 27 */ EXTERN int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i); -/* 36 */ -EXTERN int XForceScreenSaver(Display *d, int i); -/* 37 */ +/* 28 */ EXTERN int XFreeColormap(Display *d, Colormap c); -/* 38 */ +/* 29 */ EXTERN int XFreeColors(Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul); -/* 39 */ -EXTERN int XFreeCursor(Display *d, Cursor c); -/* 40 */ +/* 30 */ EXTERN int XFreeModifiermap(XModifierKeymap *x); -/* 41 */ +/* 31 */ EXTERN Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4); -/* 42 */ -EXTERN int XGetInputFocus(Display *d, Window *w, int *i); -/* 43 */ +/* 32 */ EXTERN int XGetWindowProperty(Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp); -/* 44 */ -EXTERN Status XGetWindowAttributes(Display *d, Window w, - XWindowAttributes *x); -/* 45 */ +/* 33 */ EXTERN int XGrabKeyboard(Display *d, Window w, Bool b, int i1, int i2, Time t); -/* 46 */ +/* 34 */ EXTERN int XGrabPointer(Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t); -/* 47 */ +/* 35 */ EXTERN KeyCode XKeysymToKeycode(Display *d, KeySym k); -/* 48 */ -EXTERN Status XLookupColor(Display *d, Colormap c1, - _Xconst char *c2, XColor *x1, XColor *x2); -/* 49 */ +/* 36 */ EXTERN int XMapWindow(Display *d, Window w); -/* 50 */ +/* 37 */ EXTERN int XMoveResizeWindow(Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2); -/* 51 */ +/* 38 */ EXTERN int XMoveWindow(Display *d, Window w, int i1, int i2); -/* 52 */ -EXTERN int XNextEvent(Display *d, XEvent *x); -/* 53 */ -EXTERN int XPutBackEvent(Display *d, XEvent *x); -/* 54 */ -EXTERN int XQueryColors(Display *d, Colormap c, XColor *x, - int i); -/* 55 */ +/* 39 */ EXTERN Bool XQueryPointer(Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui); -/* 56 */ -EXTERN Status XQueryTree(Display *d, Window w1, Window *w2, - Window *w3, Window **w4, unsigned int *ui); -/* 57 */ +/* 40 */ EXTERN int XRaiseWindow(Display *d, Window w); -/* 58 */ +/* 41 */ EXTERN int XRefreshKeyboardMapping(XMappingEvent *x); -/* 59 */ +/* 42 */ EXTERN int XResizeWindow(Display *d, Window w, unsigned int ui1, unsigned int ui2); -/* 60 */ +/* 43 */ EXTERN int XSelectInput(Display *d, Window w, long l); -/* 61 */ +/* 44 */ EXTERN Status XSendEvent(Display *d, Window w, Bool b, long l, XEvent *x); -/* 62 */ -EXTERN int XSetCommand(Display *d, Window w, char **c, int i); -/* 63 */ +/* 45 */ EXTERN int XSetIconName(Display *d, Window w, _Xconst char *c); -/* 64 */ +/* 46 */ EXTERN int XSetInputFocus(Display *d, Window w, int i, Time t); -/* 65 */ +/* 47 */ EXTERN int XSetSelectionOwner(Display *d, Atom a, Window w, Time t); -/* 66 */ +/* 48 */ EXTERN int XSetWindowBackground(Display *d, Window w, unsigned long ul); -/* 67 */ +/* 49 */ EXTERN int XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p); -/* 68 */ +/* 50 */ EXTERN int XSetWindowBorder(Display *d, Window w, unsigned long ul); -/* 69 */ +/* 51 */ EXTERN int XSetWindowBorderPixmap(Display *d, Window w, Pixmap p); -/* 70 */ +/* 52 */ EXTERN int XSetWindowBorderWidth(Display *d, Window w, unsigned int ui); -/* 71 */ +/* 53 */ EXTERN int XSetWindowColormap(Display *d, Window w, Colormap c); -/* 72 */ -EXTERN Bool XTranslateCoordinates(Display *d, Window w1, - Window w2, int i1, int i2, int *i3, int *i4, - Window *w3); -/* 73 */ +/* 54 */ EXTERN int XUngrabKeyboard(Display *d, Time t); -/* 74 */ +/* 55 */ EXTERN int XUngrabPointer(Display *d, Time t); -/* 75 */ +/* 56 */ EXTERN int XUnmapWindow(Display *d, Window w); -/* 76 */ -EXTERN int XWindowEvent(Display *d, Window w, long l, XEvent *x); -/* 77 */ -EXTERN void XDestroyIC(XIC x); -/* 78 */ -EXTERN Bool XFilterEvent(XEvent *x, Window w); -/* 79 */ -EXTERN int XmbLookupString(XIC xi, XKeyPressedEvent *xk, - char *c, int i, KeySym *k, Status *s); -/* 80 */ +/* 57 */ EXTERN int TkPutImage(unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height); -/* 81 */ -EXTERN int XSetClipRectangles(Display *display, GC gc, - int clip_x_origin, int clip_y_origin, - XRectangle rectangles[], int n, int ordering); -/* 82 */ +/* 58 */ EXTERN Status XParseColor(Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr); -/* 83 */ +/* 59 */ EXTERN GC XCreateGC(Display *display, Drawable d, unsigned long valuemask, XGCValues *values); -/* 84 */ +/* 60 */ EXTERN int XFreeGC(Display *display, GC gc); -/* 85 */ +/* 61 */ EXTERN Atom XInternAtom(Display *display, _Xconst char *atom_name, Bool only_if_exists); -/* 86 */ +/* 62 */ EXTERN int XSetBackground(Display *display, GC gc, unsigned long foreground); -/* 87 */ +/* 63 */ EXTERN int XSetForeground(Display *display, GC gc, unsigned long foreground); -/* 88 */ +/* 64 */ EXTERN int XSetClipMask(Display *display, GC gc, Pixmap pixmap); -/* 89 */ +/* 65 */ EXTERN int XSetClipOrigin(Display *display, GC gc, int clip_x_origin, int clip_y_origin); -/* 90 */ +/* 66 */ EXTERN int XSetTSOrigin(Display *display, GC gc, int ts_x_origin, int ts_y_origin); -/* 91 */ +/* 67 */ EXTERN int XChangeGC(Display *d, GC gc, unsigned long mask, XGCValues *values); -/* 92 */ +/* 68 */ EXTERN int XSetFont(Display *display, GC gc, Font font); -/* 93 */ +/* 69 */ EXTERN int XSetArcMode(Display *display, GC gc, int arc_mode); -/* 94 */ +/* 70 */ EXTERN int XSetStipple(Display *display, GC gc, Pixmap stipple); -/* 95 */ +/* 71 */ EXTERN int XSetFillRule(Display *display, GC gc, int fill_rule); -/* 96 */ +/* 72 */ EXTERN int XSetFillStyle(Display *display, GC gc, int fill_style); -/* 97 */ +/* 73 */ EXTERN int XSetFunction(Display *display, GC gc, int function); -/* 98 */ +/* 74 */ EXTERN int XSetLineAttributes(Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style); -/* 99 */ +/* 75 */ EXTERN int _XInitImageFuncPtrs(XImage *image); -/* 100 */ +/* 76 */ EXTERN XIC XCreateIC(XIM xim, ...); -/* 101 */ +/* 77 */ EXTERN XVisualInfo * XGetVisualInfo(Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return); -/* 102 */ +/* 78 */ EXTERN void XSetWMClientMachine(Display *display, Window w, XTextProperty *text_prop); -/* 103 */ +/* 79 */ EXTERN Status XStringListToTextProperty(char **list, int count, XTextProperty *text_prop_return); -/* 104 */ +/* 80 */ +EXTERN int XDrawSegments(Display *display, Drawable d, GC gc, + XSegment *segments, int nsegments); +/* 81 */ +EXTERN int XForceScreenSaver(Display *display, int mode); +/* 82 */ EXTERN int XDrawLine(Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2); -/* 105 */ -EXTERN int XWarpPointer(Display *d, Window s, Window dw, int sx, - int sy, unsigned int sw, unsigned int sh, - int dx, int dy); -/* 106 */ +/* 83 */ EXTERN int XFillRectangle(Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height); +/* 84 */ +EXTERN int XClearWindow(Display *d, Window w); +/* 85 */ +EXTERN int XDrawPoint(Display *display, Drawable d, GC gc, + int x, int y); +/* 86 */ +EXTERN int XDrawPoints(Display *display, Drawable d, GC gc, + XPoint *points, int npoints, int mode); +/* 87 */ +EXTERN int XWarpPointer(Display *display, Window src_w, + Window dest_w, int src_x, int src_y, + unsigned int src_width, + unsigned int src_height, int dest_x, + int dest_y); +/* 88 */ +EXTERN int XQueryColor(Display *display, Colormap colormap, + XColor *def_in_out); +/* 89 */ +EXTERN int XQueryColors(Display *display, Colormap colormap, + XColor *defs_in_out, int ncolors); +/* 90 */ +EXTERN Status XQueryTree(Display *d, Window w1, Window *w2, + Window *w3, Window **w4, unsigned int *ui); +/* 91 */ +EXTERN int XSync(Display *display, Bool discard); +/* 92 */ +EXTERN Bool XTranslateCoordinates(Display *d, Window w1, + Window w2, int i1, int i2, int *i3, int *i4, + Window *w3); +/* 93 */ +EXTERN int XDeleteProperty(Display *d, Window w, Atom a); +/* 94 */ +EXTERN int XFreeCursor(Display *d, Cursor c); +/* 95 */ +EXTERN int XGetInputFocus(Display *d, Window *w, int *i); +/* 96 */ +EXTERN int XmbLookupString(XIC xi, XKeyPressedEvent *xk, + char *c, int i, KeySym *k, Status *s); +/* 97 */ +EXTERN int XNextEvent(Display *d, XEvent *x); +/* 98 */ +EXTERN int XPutBackEvent(Display *d, XEvent *x); +/* 99 */ +EXTERN int XSetCommand(Display *d, Window w, char **c, int i); +/* 100 */ +EXTERN int XWindowEvent(Display *d, Window w, long l, XEvent *x); +/* 101 */ +EXTERN Status XGetWindowAttributes(Display *d, Window w, + XWindowAttributes *x); +/* 102 */ +EXTERN Status XGetWMColormapWindows(Display *d, Window w, + Window **wpp, int *ip); +/* 103 */ +EXTERN Status XIconifyWindow(Display *d, Window w, int i); +/* 104 */ +EXTERN Status XWithdrawWindow(Display *d, Window w, int i); +/* 105 */ +EXTERN XHostAddress * XListHosts(Display *d, int *i, Bool *b); +/* 106 */ +EXTERN int XSetClipRectangles(Display *display, GC gc, + int clip_x_origin, int clip_y_origin, + XRectangle rectangles[], int n, int ordering); /* 107 */ EXTERN int XFlush(Display *display); /* 108 */ EXTERN int XGrabServer(Display *display); /* 109 */ @@ -786,11 +787,12 @@ /* 111 */ EXTERN int XNoOp(Display *display); /* 112 */ EXTERN XAfterFunction XSynchronize(Display *display, Bool onoff); /* 113 */ -EXTERN int XSync(Display *display, Bool discard); +EXTERN Status XLookupColor(Display *d, Colormap c1, + _Xconst char *c2, XColor *x1, XColor *x2); /* 114 */ EXTERN VisualID XVisualIDFromVisual(Visual *visual); /* Slot 115 is reserved */ /* Slot 116 is reserved */ /* Slot 117 is reserved */ @@ -824,19 +826,13 @@ EXTERN int XDrawArcs(Display *d, Drawable dr, GC gc, XArc *a, int n); /* 132 */ EXTERN int XDrawRectangles(Display *d, Drawable dr, GC gc, XRectangle *r, int n); -/* 133 */ -EXTERN int XDrawSegments(Display *d, Drawable dr, GC gc, - XSegment *s, int n); -/* 134 */ -EXTERN int XDrawPoint(Display *d, Drawable dr, GC gc, int x, - int y); -/* 135 */ -EXTERN int XDrawPoints(Display *d, Drawable dr, GC gc, - XPoint *p, int n, int m); +/* Slot 133 is reserved */ +/* Slot 134 is reserved */ +/* Slot 135 is reserved */ /* 136 */ EXTERN int XReparentWindow(Display *d, Window w, Window p, int x, int y); /* 137 */ EXTERN int XPutImage(Display *d, Drawable dr, GC gc, XImage *im, @@ -852,13 +848,20 @@ EXTERN char * XSetICValues(XIC xic, ...); /* 142 */ EXTERN char * XGetICValues(XIC xic, ...); /* 143 */ EXTERN void XSetICFocus(XIC xic); -/* Slot 144 is reserved */ -/* Slot 145 is reserved */ -/* Slot 146 is reserved */ +/* 144 */ +EXTERN void XDestroyIC(XIC xic); +/* 145 */ +EXTERN Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2, + XColor *x1, XColor *x2, unsigned int ui1, + unsigned int ui2); +/* 146 */ +EXTERN Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2, + unsigned int ui1, unsigned int ui2, + XColor _Xconst *x1, XColor _Xconst *x2); /* 147 */ EXTERN void XFreeFontSet(Display *display, XFontSet fontset); /* 148 */ EXTERN int XCloseIM(XIM im); /* 149 */ @@ -1068,117 +1071,117 @@ XImage * (*xCreateImage) (Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4); /* 2 */ XImage * (*xGetImage) (Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3); /* 3 */ char * (*xGetAtomName) (Display *d, Atom a); /* 4 */ char * (*xKeysymToString) (KeySym k); /* 5 */ Colormap (*xCreateColormap) (Display *d, Window w, Visual *v, int i); /* 6 */ - Cursor (*xCreatePixmapCursor) (Display *d, Pixmap p1, Pixmap p2, XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2); /* 7 */ - Cursor (*xCreateGlyphCursor) (Display *d, Font f1, Font f2, unsigned int ui1, unsigned int ui2, XColor _Xconst *x1, XColor _Xconst *x2); /* 8 */ - GContext (*xGContextFromGC) (GC g); /* 9 */ - XHostAddress * (*xListHosts) (Display *d, int *i, Bool *b); /* 10 */ - KeySym (*xKeycodeToKeysym) (Display *d, unsigned int k, int i); /* 11 */ - KeySym (*xStringToKeysym) (_Xconst char *c); /* 12 */ - Window (*xRootWindow) (Display *d, int i); /* 13 */ - XErrorHandler (*xSetErrorHandler) (XErrorHandler x); /* 14 */ - Status (*xIconifyWindow) (Display *d, Window w, int i); /* 15 */ - Status (*xWithdrawWindow) (Display *d, Window w, int i); /* 16 */ - Status (*xGetWMColormapWindows) (Display *d, Window w, Window **wpp, int *ip); /* 17 */ - Status (*xAllocColor) (Display *d, Colormap c, XColor *xp); /* 18 */ - int (*xBell) (Display *d, int i); /* 19 */ - int (*xChangeProperty) (Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3); /* 20 */ - int (*xChangeWindowAttributes) (Display *d, Window w, unsigned long ul, XSetWindowAttributes *x); /* 21 */ - int (*xClearWindow) (Display *d, Window w); /* 22 */ - int (*xConfigureWindow) (Display *d, Window w, unsigned int i, XWindowChanges *x); /* 23 */ - int (*xCopyArea) (Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 24 */ - int (*xCopyPlane) (Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul); /* 25 */ - Pixmap (*xCreateBitmapFromData) (Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height); /* 26 */ - int (*xDefineCursor) (Display *d, Window w, Cursor c); /* 27 */ - int (*xDeleteProperty) (Display *d, Window w, Atom a); /* 28 */ - int (*xDestroyWindow) (Display *d, Window w); /* 29 */ - int (*xDrawArc) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 30 */ - int (*xDrawLines) (Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2); /* 31 */ - int (*xDrawRectangle) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2); /* 32 */ - int (*xFillArc) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 33 */ - int (*xFillPolygon) (Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3); /* 34 */ - int (*xFillRectangles) (Display *d, Drawable dr, GC g, XRectangle *x, int i); /* 35 */ - int (*xForceScreenSaver) (Display *d, int i); /* 36 */ - int (*xFreeColormap) (Display *d, Colormap c); /* 37 */ - int (*xFreeColors) (Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul); /* 38 */ - int (*xFreeCursor) (Display *d, Cursor c); /* 39 */ - int (*xFreeModifiermap) (XModifierKeymap *x); /* 40 */ - Status (*xGetGeometry) (Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4); /* 41 */ - int (*xGetInputFocus) (Display *d, Window *w, int *i); /* 42 */ - int (*xGetWindowProperty) (Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp); /* 43 */ - Status (*xGetWindowAttributes) (Display *d, Window w, XWindowAttributes *x); /* 44 */ - int (*xGrabKeyboard) (Display *d, Window w, Bool b, int i1, int i2, Time t); /* 45 */ - int (*xGrabPointer) (Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t); /* 46 */ - KeyCode (*xKeysymToKeycode) (Display *d, KeySym k); /* 47 */ - Status (*xLookupColor) (Display *d, Colormap c1, _Xconst char *c2, XColor *x1, XColor *x2); /* 48 */ - int (*xMapWindow) (Display *d, Window w); /* 49 */ - int (*xMoveResizeWindow) (Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2); /* 50 */ - int (*xMoveWindow) (Display *d, Window w, int i1, int i2); /* 51 */ - int (*xNextEvent) (Display *d, XEvent *x); /* 52 */ - int (*xPutBackEvent) (Display *d, XEvent *x); /* 53 */ - int (*xQueryColors) (Display *d, Colormap c, XColor *x, int i); /* 54 */ - Bool (*xQueryPointer) (Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui); /* 55 */ - Status (*xQueryTree) (Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui); /* 56 */ - int (*xRaiseWindow) (Display *d, Window w); /* 57 */ - int (*xRefreshKeyboardMapping) (XMappingEvent *x); /* 58 */ - int (*xResizeWindow) (Display *d, Window w, unsigned int ui1, unsigned int ui2); /* 59 */ - int (*xSelectInput) (Display *d, Window w, long l); /* 60 */ - Status (*xSendEvent) (Display *d, Window w, Bool b, long l, XEvent *x); /* 61 */ - int (*xSetCommand) (Display *d, Window w, char **c, int i); /* 62 */ - int (*xSetIconName) (Display *d, Window w, _Xconst char *c); /* 63 */ - int (*xSetInputFocus) (Display *d, Window w, int i, Time t); /* 64 */ - int (*xSetSelectionOwner) (Display *d, Atom a, Window w, Time t); /* 65 */ - int (*xSetWindowBackground) (Display *d, Window w, unsigned long ul); /* 66 */ - int (*xSetWindowBackgroundPixmap) (Display *d, Window w, Pixmap p); /* 67 */ - int (*xSetWindowBorder) (Display *d, Window w, unsigned long ul); /* 68 */ - int (*xSetWindowBorderPixmap) (Display *d, Window w, Pixmap p); /* 69 */ - int (*xSetWindowBorderWidth) (Display *d, Window w, unsigned int ui); /* 70 */ - int (*xSetWindowColormap) (Display *d, Window w, Colormap c); /* 71 */ - Bool (*xTranslateCoordinates) (Display *d, Window w1, Window w2, int i1, int i2, int *i3, int *i4, Window *w3); /* 72 */ - int (*xUngrabKeyboard) (Display *d, Time t); /* 73 */ - int (*xUngrabPointer) (Display *d, Time t); /* 74 */ - int (*xUnmapWindow) (Display *d, Window w); /* 75 */ - int (*xWindowEvent) (Display *d, Window w, long l, XEvent *x); /* 76 */ - void (*xDestroyIC) (XIC x); /* 77 */ - Bool (*xFilterEvent) (XEvent *x, Window w); /* 78 */ - int (*xmbLookupString) (XIC xi, XKeyPressedEvent *xk, char *c, int i, KeySym *k, Status *s); /* 79 */ - int (*tkPutImage) (unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height); /* 80 */ - int (*xSetClipRectangles) (Display *display, GC gc, int clip_x_origin, int clip_y_origin, XRectangle rectangles[], int n, int ordering); /* 81 */ - Status (*xParseColor) (Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr); /* 82 */ - GC (*xCreateGC) (Display *display, Drawable d, unsigned long valuemask, XGCValues *values); /* 83 */ - int (*xFreeGC) (Display *display, GC gc); /* 84 */ - Atom (*xInternAtom) (Display *display, _Xconst char *atom_name, Bool only_if_exists); /* 85 */ - int (*xSetBackground) (Display *display, GC gc, unsigned long foreground); /* 86 */ - int (*xSetForeground) (Display *display, GC gc, unsigned long foreground); /* 87 */ - int (*xSetClipMask) (Display *display, GC gc, Pixmap pixmap); /* 88 */ - int (*xSetClipOrigin) (Display *display, GC gc, int clip_x_origin, int clip_y_origin); /* 89 */ - int (*xSetTSOrigin) (Display *display, GC gc, int ts_x_origin, int ts_y_origin); /* 90 */ - int (*xChangeGC) (Display *d, GC gc, unsigned long mask, XGCValues *values); /* 91 */ - int (*xSetFont) (Display *display, GC gc, Font font); /* 92 */ - int (*xSetArcMode) (Display *display, GC gc, int arc_mode); /* 93 */ - int (*xSetStipple) (Display *display, GC gc, Pixmap stipple); /* 94 */ - int (*xSetFillRule) (Display *display, GC gc, int fill_rule); /* 95 */ - int (*xSetFillStyle) (Display *display, GC gc, int fill_style); /* 96 */ - int (*xSetFunction) (Display *display, GC gc, int function); /* 97 */ - int (*xSetLineAttributes) (Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style); /* 98 */ - int (*_XInitImageFuncPtrs) (XImage *image); /* 99 */ - XIC (*xCreateIC) (XIM xim, ...); /* 100 */ - XVisualInfo * (*xGetVisualInfo) (Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return); /* 101 */ - void (*xSetWMClientMachine) (Display *display, Window w, XTextProperty *text_prop); /* 102 */ - Status (*xStringListToTextProperty) (char **list, int count, XTextProperty *text_prop_return); /* 103 */ - int (*xDrawLine) (Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2); /* 104 */ - int (*xWarpPointer) (Display *d, Window s, Window dw, int sx, int sy, unsigned int sw, unsigned int sh, int dx, int dy); /* 105 */ - int (*xFillRectangle) (Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height); /* 106 */ + GContext (*xGContextFromGC) (GC g); /* 7 */ + KeySym (*xKeycodeToKeysym) (Display *d, unsigned int k, int i); /* 8 */ + KeySym (*xStringToKeysym) (_Xconst char *c); /* 9 */ + Window (*xRootWindow) (Display *d, int i); /* 10 */ + XErrorHandler (*xSetErrorHandler) (XErrorHandler x); /* 11 */ + Status (*xAllocColor) (Display *d, Colormap c, XColor *xp); /* 12 */ + int (*xBell) (Display *d, int i); /* 13 */ + int (*xChangeProperty) (Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3); /* 14 */ + int (*xChangeWindowAttributes) (Display *d, Window w, unsigned long ul, XSetWindowAttributes *x); /* 15 */ + int (*xConfigureWindow) (Display *d, Window w, unsigned int i, XWindowChanges *x); /* 16 */ + int (*xCopyArea) (Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 17 */ + int (*xCopyPlane) (Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul); /* 18 */ + Pixmap (*xCreateBitmapFromData) (Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height); /* 19 */ + int (*xDefineCursor) (Display *d, Window w, Cursor c); /* 20 */ + int (*xDestroyWindow) (Display *d, Window w); /* 21 */ + int (*xDrawArc) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 22 */ + int (*xDrawLines) (Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2); /* 23 */ + int (*xDrawRectangle) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2); /* 24 */ + int (*xFillArc) (Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4); /* 25 */ + int (*xFillPolygon) (Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3); /* 26 */ + int (*xFillRectangles) (Display *d, Drawable dr, GC g, XRectangle *x, int i); /* 27 */ + int (*xFreeColormap) (Display *d, Colormap c); /* 28 */ + int (*xFreeColors) (Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul); /* 29 */ + int (*xFreeModifiermap) (XModifierKeymap *x); /* 30 */ + Status (*xGetGeometry) (Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4); /* 31 */ + int (*xGetWindowProperty) (Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp); /* 32 */ + int (*xGrabKeyboard) (Display *d, Window w, Bool b, int i1, int i2, Time t); /* 33 */ + int (*xGrabPointer) (Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t); /* 34 */ + KeyCode (*xKeysymToKeycode) (Display *d, KeySym k); /* 35 */ + int (*xMapWindow) (Display *d, Window w); /* 36 */ + int (*xMoveResizeWindow) (Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2); /* 37 */ + int (*xMoveWindow) (Display *d, Window w, int i1, int i2); /* 38 */ + Bool (*xQueryPointer) (Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui); /* 39 */ + int (*xRaiseWindow) (Display *d, Window w); /* 40 */ + int (*xRefreshKeyboardMapping) (XMappingEvent *x); /* 41 */ + int (*xResizeWindow) (Display *d, Window w, unsigned int ui1, unsigned int ui2); /* 42 */ + int (*xSelectInput) (Display *d, Window w, long l); /* 43 */ + Status (*xSendEvent) (Display *d, Window w, Bool b, long l, XEvent *x); /* 44 */ + int (*xSetIconName) (Display *d, Window w, _Xconst char *c); /* 45 */ + int (*xSetInputFocus) (Display *d, Window w, int i, Time t); /* 46 */ + int (*xSetSelectionOwner) (Display *d, Atom a, Window w, Time t); /* 47 */ + int (*xSetWindowBackground) (Display *d, Window w, unsigned long ul); /* 48 */ + int (*xSetWindowBackgroundPixmap) (Display *d, Window w, Pixmap p); /* 49 */ + int (*xSetWindowBorder) (Display *d, Window w, unsigned long ul); /* 50 */ + int (*xSetWindowBorderPixmap) (Display *d, Window w, Pixmap p); /* 51 */ + int (*xSetWindowBorderWidth) (Display *d, Window w, unsigned int ui); /* 52 */ + int (*xSetWindowColormap) (Display *d, Window w, Colormap c); /* 53 */ + int (*xUngrabKeyboard) (Display *d, Time t); /* 54 */ + int (*xUngrabPointer) (Display *d, Time t); /* 55 */ + int (*xUnmapWindow) (Display *d, Window w); /* 56 */ + int (*tkPutImage) (unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height); /* 57 */ + Status (*xParseColor) (Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr); /* 58 */ + GC (*xCreateGC) (Display *display, Drawable d, unsigned long valuemask, XGCValues *values); /* 59 */ + int (*xFreeGC) (Display *display, GC gc); /* 60 */ + Atom (*xInternAtom) (Display *display, _Xconst char *atom_name, Bool only_if_exists); /* 61 */ + int (*xSetBackground) (Display *display, GC gc, unsigned long foreground); /* 62 */ + int (*xSetForeground) (Display *display, GC gc, unsigned long foreground); /* 63 */ + int (*xSetClipMask) (Display *display, GC gc, Pixmap pixmap); /* 64 */ + int (*xSetClipOrigin) (Display *display, GC gc, int clip_x_origin, int clip_y_origin); /* 65 */ + int (*xSetTSOrigin) (Display *display, GC gc, int ts_x_origin, int ts_y_origin); /* 66 */ + int (*xChangeGC) (Display *d, GC gc, unsigned long mask, XGCValues *values); /* 67 */ + int (*xSetFont) (Display *display, GC gc, Font font); /* 68 */ + int (*xSetArcMode) (Display *display, GC gc, int arc_mode); /* 69 */ + int (*xSetStipple) (Display *display, GC gc, Pixmap stipple); /* 70 */ + int (*xSetFillRule) (Display *display, GC gc, int fill_rule); /* 71 */ + int (*xSetFillStyle) (Display *display, GC gc, int fill_style); /* 72 */ + int (*xSetFunction) (Display *display, GC gc, int function); /* 73 */ + int (*xSetLineAttributes) (Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style); /* 74 */ + int (*_XInitImageFuncPtrs) (XImage *image); /* 75 */ + XIC (*xCreateIC) (XIM xim, ...); /* 76 */ + XVisualInfo * (*xGetVisualInfo) (Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return); /* 77 */ + void (*xSetWMClientMachine) (Display *display, Window w, XTextProperty *text_prop); /* 78 */ + Status (*xStringListToTextProperty) (char **list, int count, XTextProperty *text_prop_return); /* 79 */ + int (*xDrawSegments) (Display *display, Drawable d, GC gc, XSegment *segments, int nsegments); /* 80 */ + int (*xForceScreenSaver) (Display *display, int mode); /* 81 */ + int (*xDrawLine) (Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2); /* 82 */ + int (*xFillRectangle) (Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height); /* 83 */ + int (*xClearWindow) (Display *d, Window w); /* 84 */ + int (*xDrawPoint) (Display *display, Drawable d, GC gc, int x, int y); /* 85 */ + int (*xDrawPoints) (Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode); /* 86 */ + int (*xWarpPointer) (Display *display, Window src_w, Window dest_w, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dest_x, int dest_y); /* 87 */ + int (*xQueryColor) (Display *display, Colormap colormap, XColor *def_in_out); /* 88 */ + int (*xQueryColors) (Display *display, Colormap colormap, XColor *defs_in_out, int ncolors); /* 89 */ + Status (*xQueryTree) (Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui); /* 90 */ + int (*xSync) (Display *display, Bool discard); /* 91 */ + Bool (*xTranslateCoordinates) (Display *d, Window w1, Window w2, int i1, int i2, int *i3, int *i4, Window *w3); /* 92 */ + int (*xDeleteProperty) (Display *d, Window w, Atom a); /* 93 */ + int (*xFreeCursor) (Display *d, Cursor c); /* 94 */ + int (*xGetInputFocus) (Display *d, Window *w, int *i); /* 95 */ + int (*xmbLookupString) (XIC xi, XKeyPressedEvent *xk, char *c, int i, KeySym *k, Status *s); /* 96 */ + int (*xNextEvent) (Display *d, XEvent *x); /* 97 */ + int (*xPutBackEvent) (Display *d, XEvent *x); /* 98 */ + int (*xSetCommand) (Display *d, Window w, char **c, int i); /* 99 */ + int (*xWindowEvent) (Display *d, Window w, long l, XEvent *x); /* 100 */ + Status (*xGetWindowAttributes) (Display *d, Window w, XWindowAttributes *x); /* 101 */ + Status (*xGetWMColormapWindows) (Display *d, Window w, Window **wpp, int *ip); /* 102 */ + Status (*xIconifyWindow) (Display *d, Window w, int i); /* 103 */ + Status (*xWithdrawWindow) (Display *d, Window w, int i); /* 104 */ + XHostAddress * (*xListHosts) (Display *d, int *i, Bool *b); /* 105 */ + int (*xSetClipRectangles) (Display *display, GC gc, int clip_x_origin, int clip_y_origin, XRectangle rectangles[], int n, int ordering); /* 106 */ int (*xFlush) (Display *display); /* 107 */ int (*xGrabServer) (Display *display); /* 108 */ int (*xUngrabServer) (Display *display); /* 109 */ int (*xFree) (void *data); /* 110 */ int (*xNoOp) (Display *display); /* 111 */ XAfterFunction (*xSynchronize) (Display *display, Bool onoff); /* 112 */ - int (*xSync) (Display *display, Bool discard); /* 113 */ + Status (*xLookupColor) (Display *d, Colormap c1, _Xconst char *c2, XColor *x1, XColor *x2); /* 113 */ VisualID (*xVisualIDFromVisual) (Visual *visual); /* 114 */ void (*reserved115)(void); void (*reserved116)(void); void (*reserved117)(void); void (*reserved118)(void); @@ -1194,24 +1197,24 @@ void (*reserved128)(void); int (*xLowerWindow) (Display *d, Window w); /* 129 */ int (*xFillArcs) (Display *d, Drawable dr, GC gc, XArc *a, int n); /* 130 */ int (*xDrawArcs) (Display *d, Drawable dr, GC gc, XArc *a, int n); /* 131 */ int (*xDrawRectangles) (Display *d, Drawable dr, GC gc, XRectangle *r, int n); /* 132 */ - int (*xDrawSegments) (Display *d, Drawable dr, GC gc, XSegment *s, int n); /* 133 */ - int (*xDrawPoint) (Display *d, Drawable dr, GC gc, int x, int y); /* 134 */ - int (*xDrawPoints) (Display *d, Drawable dr, GC gc, XPoint *p, int n, int m); /* 135 */ + void (*reserved133)(void); + void (*reserved134)(void); + void (*reserved135)(void); int (*xReparentWindow) (Display *d, Window w, Window p, int x, int y); /* 136 */ int (*xPutImage) (Display *d, Drawable dr, GC gc, XImage *im, int sx, int sy, int dx, int dy, unsigned int w, unsigned int h); /* 137 */ Region (*xPolygonRegion) (XPoint *pts, int n, int rule); /* 138 */ int (*xPointInRegion) (Region rgn, int x, int y); /* 139 */ XVaNestedList (*xVaCreateNestedList) (int dummy, ...); /* 140 */ char * (*xSetICValues) (XIC xic, ...); /* 141 */ char * (*xGetICValues) (XIC xic, ...); /* 142 */ void (*xSetICFocus) (XIC xic); /* 143 */ - void (*reserved144)(void); - void (*reserved145)(void); - void (*reserved146)(void); + void (*xDestroyIC) (XIC xic); /* 144 */ + Cursor (*xCreatePixmapCursor) (Display *d, Pixmap p1, Pixmap p2, XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2); /* 145 */ + Cursor (*xCreateGlyphCursor) (Display *d, Font f1, Font f2, unsigned int ui1, unsigned int ui2, XColor _Xconst *x1, XColor _Xconst *x2); /* 146 */ void (*xFreeFontSet) (Display *display, XFontSet fontset); /* 147 */ int (*xCloseIM) (XIM im); /* 148 */ Bool (*xRegisterIMInstantiateCallback) (Display *dpy, struct _XrmHashBucketRec *rbd, char *res_name, char *res_class, XIDProc callback, XPointer client_data); /* 149 */ Bool (*xUnregisterIMInstantiateCallback) (Display *dpy, struct _XrmHashBucketRec *rbd, char *res_name, char *res_class, XIDProc callback, XPointer client_data); /* 150 */ char * (*xSetLocaleModifiers) (const char *modifier_list); /* 151 */ @@ -1556,210 +1559,210 @@ (tkIntXlibStubsPtr->xGetAtomName) /* 4 */ #define XKeysymToString \ (tkIntXlibStubsPtr->xKeysymToString) /* 5 */ #define XCreateColormap \ (tkIntXlibStubsPtr->xCreateColormap) /* 6 */ -#define XCreatePixmapCursor \ - (tkIntXlibStubsPtr->xCreatePixmapCursor) /* 7 */ -#define XCreateGlyphCursor \ - (tkIntXlibStubsPtr->xCreateGlyphCursor) /* 8 */ #define XGContextFromGC \ - (tkIntXlibStubsPtr->xGContextFromGC) /* 9 */ -#define XListHosts \ - (tkIntXlibStubsPtr->xListHosts) /* 10 */ + (tkIntXlibStubsPtr->xGContextFromGC) /* 7 */ #define XKeycodeToKeysym \ - (tkIntXlibStubsPtr->xKeycodeToKeysym) /* 11 */ + (tkIntXlibStubsPtr->xKeycodeToKeysym) /* 8 */ #define XStringToKeysym \ - (tkIntXlibStubsPtr->xStringToKeysym) /* 12 */ + (tkIntXlibStubsPtr->xStringToKeysym) /* 9 */ #define XRootWindow \ - (tkIntXlibStubsPtr->xRootWindow) /* 13 */ + (tkIntXlibStubsPtr->xRootWindow) /* 10 */ #define XSetErrorHandler \ - (tkIntXlibStubsPtr->xSetErrorHandler) /* 14 */ -#define XIconifyWindow \ - (tkIntXlibStubsPtr->xIconifyWindow) /* 15 */ -#define XWithdrawWindow \ - (tkIntXlibStubsPtr->xWithdrawWindow) /* 16 */ -#define XGetWMColormapWindows \ - (tkIntXlibStubsPtr->xGetWMColormapWindows) /* 17 */ + (tkIntXlibStubsPtr->xSetErrorHandler) /* 11 */ #define XAllocColor \ - (tkIntXlibStubsPtr->xAllocColor) /* 18 */ + (tkIntXlibStubsPtr->xAllocColor) /* 12 */ #define XBell \ - (tkIntXlibStubsPtr->xBell) /* 19 */ + (tkIntXlibStubsPtr->xBell) /* 13 */ #define XChangeProperty \ - (tkIntXlibStubsPtr->xChangeProperty) /* 20 */ + (tkIntXlibStubsPtr->xChangeProperty) /* 14 */ #define XChangeWindowAttributes \ - (tkIntXlibStubsPtr->xChangeWindowAttributes) /* 21 */ -#define XClearWindow \ - (tkIntXlibStubsPtr->xClearWindow) /* 22 */ + (tkIntXlibStubsPtr->xChangeWindowAttributes) /* 15 */ #define XConfigureWindow \ - (tkIntXlibStubsPtr->xConfigureWindow) /* 23 */ + (tkIntXlibStubsPtr->xConfigureWindow) /* 16 */ #define XCopyArea \ - (tkIntXlibStubsPtr->xCopyArea) /* 24 */ + (tkIntXlibStubsPtr->xCopyArea) /* 17 */ #define XCopyPlane \ - (tkIntXlibStubsPtr->xCopyPlane) /* 25 */ + (tkIntXlibStubsPtr->xCopyPlane) /* 18 */ #define XCreateBitmapFromData \ - (tkIntXlibStubsPtr->xCreateBitmapFromData) /* 26 */ + (tkIntXlibStubsPtr->xCreateBitmapFromData) /* 19 */ #define XDefineCursor \ - (tkIntXlibStubsPtr->xDefineCursor) /* 27 */ -#define XDeleteProperty \ - (tkIntXlibStubsPtr->xDeleteProperty) /* 28 */ + (tkIntXlibStubsPtr->xDefineCursor) /* 20 */ #define XDestroyWindow \ - (tkIntXlibStubsPtr->xDestroyWindow) /* 29 */ + (tkIntXlibStubsPtr->xDestroyWindow) /* 21 */ #define XDrawArc \ - (tkIntXlibStubsPtr->xDrawArc) /* 30 */ + (tkIntXlibStubsPtr->xDrawArc) /* 22 */ #define XDrawLines \ - (tkIntXlibStubsPtr->xDrawLines) /* 31 */ + (tkIntXlibStubsPtr->xDrawLines) /* 23 */ #define XDrawRectangle \ - (tkIntXlibStubsPtr->xDrawRectangle) /* 32 */ + (tkIntXlibStubsPtr->xDrawRectangle) /* 24 */ #define XFillArc \ - (tkIntXlibStubsPtr->xFillArc) /* 33 */ + (tkIntXlibStubsPtr->xFillArc) /* 25 */ #define XFillPolygon \ - (tkIntXlibStubsPtr->xFillPolygon) /* 34 */ + (tkIntXlibStubsPtr->xFillPolygon) /* 26 */ #define XFillRectangles \ - (tkIntXlibStubsPtr->xFillRectangles) /* 35 */ -#define XForceScreenSaver \ - (tkIntXlibStubsPtr->xForceScreenSaver) /* 36 */ + (tkIntXlibStubsPtr->xFillRectangles) /* 27 */ #define XFreeColormap \ - (tkIntXlibStubsPtr->xFreeColormap) /* 37 */ + (tkIntXlibStubsPtr->xFreeColormap) /* 28 */ #define XFreeColors \ - (tkIntXlibStubsPtr->xFreeColors) /* 38 */ -#define XFreeCursor \ - (tkIntXlibStubsPtr->xFreeCursor) /* 39 */ + (tkIntXlibStubsPtr->xFreeColors) /* 29 */ #define XFreeModifiermap \ - (tkIntXlibStubsPtr->xFreeModifiermap) /* 40 */ + (tkIntXlibStubsPtr->xFreeModifiermap) /* 30 */ #define XGetGeometry \ - (tkIntXlibStubsPtr->xGetGeometry) /* 41 */ -#define XGetInputFocus \ - (tkIntXlibStubsPtr->xGetInputFocus) /* 42 */ + (tkIntXlibStubsPtr->xGetGeometry) /* 31 */ #define XGetWindowProperty \ - (tkIntXlibStubsPtr->xGetWindowProperty) /* 43 */ -#define XGetWindowAttributes \ - (tkIntXlibStubsPtr->xGetWindowAttributes) /* 44 */ + (tkIntXlibStubsPtr->xGetWindowProperty) /* 32 */ #define XGrabKeyboard \ - (tkIntXlibStubsPtr->xGrabKeyboard) /* 45 */ + (tkIntXlibStubsPtr->xGrabKeyboard) /* 33 */ #define XGrabPointer \ - (tkIntXlibStubsPtr->xGrabPointer) /* 46 */ + (tkIntXlibStubsPtr->xGrabPointer) /* 34 */ #define XKeysymToKeycode \ - (tkIntXlibStubsPtr->xKeysymToKeycode) /* 47 */ -#define XLookupColor \ - (tkIntXlibStubsPtr->xLookupColor) /* 48 */ + (tkIntXlibStubsPtr->xKeysymToKeycode) /* 35 */ #define XMapWindow \ - (tkIntXlibStubsPtr->xMapWindow) /* 49 */ + (tkIntXlibStubsPtr->xMapWindow) /* 36 */ #define XMoveResizeWindow \ - (tkIntXlibStubsPtr->xMoveResizeWindow) /* 50 */ + (tkIntXlibStubsPtr->xMoveResizeWindow) /* 37 */ #define XMoveWindow \ - (tkIntXlibStubsPtr->xMoveWindow) /* 51 */ -#define XNextEvent \ - (tkIntXlibStubsPtr->xNextEvent) /* 52 */ -#define XPutBackEvent \ - (tkIntXlibStubsPtr->xPutBackEvent) /* 53 */ -#define XQueryColors \ - (tkIntXlibStubsPtr->xQueryColors) /* 54 */ + (tkIntXlibStubsPtr->xMoveWindow) /* 38 */ #define XQueryPointer \ - (tkIntXlibStubsPtr->xQueryPointer) /* 55 */ -#define XQueryTree \ - (tkIntXlibStubsPtr->xQueryTree) /* 56 */ + (tkIntXlibStubsPtr->xQueryPointer) /* 39 */ #define XRaiseWindow \ - (tkIntXlibStubsPtr->xRaiseWindow) /* 57 */ + (tkIntXlibStubsPtr->xRaiseWindow) /* 40 */ #define XRefreshKeyboardMapping \ - (tkIntXlibStubsPtr->xRefreshKeyboardMapping) /* 58 */ + (tkIntXlibStubsPtr->xRefreshKeyboardMapping) /* 41 */ #define XResizeWindow \ - (tkIntXlibStubsPtr->xResizeWindow) /* 59 */ + (tkIntXlibStubsPtr->xResizeWindow) /* 42 */ #define XSelectInput \ - (tkIntXlibStubsPtr->xSelectInput) /* 60 */ + (tkIntXlibStubsPtr->xSelectInput) /* 43 */ #define XSendEvent \ - (tkIntXlibStubsPtr->xSendEvent) /* 61 */ -#define XSetCommand \ - (tkIntXlibStubsPtr->xSetCommand) /* 62 */ + (tkIntXlibStubsPtr->xSendEvent) /* 44 */ #define XSetIconName \ - (tkIntXlibStubsPtr->xSetIconName) /* 63 */ + (tkIntXlibStubsPtr->xSetIconName) /* 45 */ #define XSetInputFocus \ - (tkIntXlibStubsPtr->xSetInputFocus) /* 64 */ + (tkIntXlibStubsPtr->xSetInputFocus) /* 46 */ #define XSetSelectionOwner \ - (tkIntXlibStubsPtr->xSetSelectionOwner) /* 65 */ + (tkIntXlibStubsPtr->xSetSelectionOwner) /* 47 */ #define XSetWindowBackground \ - (tkIntXlibStubsPtr->xSetWindowBackground) /* 66 */ + (tkIntXlibStubsPtr->xSetWindowBackground) /* 48 */ #define XSetWindowBackgroundPixmap \ - (tkIntXlibStubsPtr->xSetWindowBackgroundPixmap) /* 67 */ + (tkIntXlibStubsPtr->xSetWindowBackgroundPixmap) /* 49 */ #define XSetWindowBorder \ - (tkIntXlibStubsPtr->xSetWindowBorder) /* 68 */ + (tkIntXlibStubsPtr->xSetWindowBorder) /* 50 */ #define XSetWindowBorderPixmap \ - (tkIntXlibStubsPtr->xSetWindowBorderPixmap) /* 69 */ + (tkIntXlibStubsPtr->xSetWindowBorderPixmap) /* 51 */ #define XSetWindowBorderWidth \ - (tkIntXlibStubsPtr->xSetWindowBorderWidth) /* 70 */ + (tkIntXlibStubsPtr->xSetWindowBorderWidth) /* 52 */ #define XSetWindowColormap \ - (tkIntXlibStubsPtr->xSetWindowColormap) /* 71 */ -#define XTranslateCoordinates \ - (tkIntXlibStubsPtr->xTranslateCoordinates) /* 72 */ + (tkIntXlibStubsPtr->xSetWindowColormap) /* 53 */ #define XUngrabKeyboard \ - (tkIntXlibStubsPtr->xUngrabKeyboard) /* 73 */ + (tkIntXlibStubsPtr->xUngrabKeyboard) /* 54 */ #define XUngrabPointer \ - (tkIntXlibStubsPtr->xUngrabPointer) /* 74 */ + (tkIntXlibStubsPtr->xUngrabPointer) /* 55 */ #define XUnmapWindow \ - (tkIntXlibStubsPtr->xUnmapWindow) /* 75 */ -#define XWindowEvent \ - (tkIntXlibStubsPtr->xWindowEvent) /* 76 */ -#define XDestroyIC \ - (tkIntXlibStubsPtr->xDestroyIC) /* 77 */ -#define XFilterEvent \ - (tkIntXlibStubsPtr->xFilterEvent) /* 78 */ -#define XmbLookupString \ - (tkIntXlibStubsPtr->xmbLookupString) /* 79 */ + (tkIntXlibStubsPtr->xUnmapWindow) /* 56 */ #define TkPutImage \ - (tkIntXlibStubsPtr->tkPutImage) /* 80 */ -#define XSetClipRectangles \ - (tkIntXlibStubsPtr->xSetClipRectangles) /* 81 */ + (tkIntXlibStubsPtr->tkPutImage) /* 57 */ #define XParseColor \ - (tkIntXlibStubsPtr->xParseColor) /* 82 */ + (tkIntXlibStubsPtr->xParseColor) /* 58 */ #define XCreateGC \ - (tkIntXlibStubsPtr->xCreateGC) /* 83 */ + (tkIntXlibStubsPtr->xCreateGC) /* 59 */ #define XFreeGC \ - (tkIntXlibStubsPtr->xFreeGC) /* 84 */ + (tkIntXlibStubsPtr->xFreeGC) /* 60 */ #define XInternAtom \ - (tkIntXlibStubsPtr->xInternAtom) /* 85 */ + (tkIntXlibStubsPtr->xInternAtom) /* 61 */ #define XSetBackground \ - (tkIntXlibStubsPtr->xSetBackground) /* 86 */ + (tkIntXlibStubsPtr->xSetBackground) /* 62 */ #define XSetForeground \ - (tkIntXlibStubsPtr->xSetForeground) /* 87 */ + (tkIntXlibStubsPtr->xSetForeground) /* 63 */ #define XSetClipMask \ - (tkIntXlibStubsPtr->xSetClipMask) /* 88 */ + (tkIntXlibStubsPtr->xSetClipMask) /* 64 */ #define XSetClipOrigin \ - (tkIntXlibStubsPtr->xSetClipOrigin) /* 89 */ + (tkIntXlibStubsPtr->xSetClipOrigin) /* 65 */ #define XSetTSOrigin \ - (tkIntXlibStubsPtr->xSetTSOrigin) /* 90 */ + (tkIntXlibStubsPtr->xSetTSOrigin) /* 66 */ #define XChangeGC \ - (tkIntXlibStubsPtr->xChangeGC) /* 91 */ + (tkIntXlibStubsPtr->xChangeGC) /* 67 */ #define XSetFont \ - (tkIntXlibStubsPtr->xSetFont) /* 92 */ + (tkIntXlibStubsPtr->xSetFont) /* 68 */ #define XSetArcMode \ - (tkIntXlibStubsPtr->xSetArcMode) /* 93 */ + (tkIntXlibStubsPtr->xSetArcMode) /* 69 */ #define XSetStipple \ - (tkIntXlibStubsPtr->xSetStipple) /* 94 */ + (tkIntXlibStubsPtr->xSetStipple) /* 70 */ #define XSetFillRule \ - (tkIntXlibStubsPtr->xSetFillRule) /* 95 */ + (tkIntXlibStubsPtr->xSetFillRule) /* 71 */ #define XSetFillStyle \ - (tkIntXlibStubsPtr->xSetFillStyle) /* 96 */ + (tkIntXlibStubsPtr->xSetFillStyle) /* 72 */ #define XSetFunction \ - (tkIntXlibStubsPtr->xSetFunction) /* 97 */ + (tkIntXlibStubsPtr->xSetFunction) /* 73 */ #define XSetLineAttributes \ - (tkIntXlibStubsPtr->xSetLineAttributes) /* 98 */ + (tkIntXlibStubsPtr->xSetLineAttributes) /* 74 */ #define _XInitImageFuncPtrs \ - (tkIntXlibStubsPtr->_XInitImageFuncPtrs) /* 99 */ + (tkIntXlibStubsPtr->_XInitImageFuncPtrs) /* 75 */ #define XCreateIC \ - (tkIntXlibStubsPtr->xCreateIC) /* 100 */ + (tkIntXlibStubsPtr->xCreateIC) /* 76 */ #define XGetVisualInfo \ - (tkIntXlibStubsPtr->xGetVisualInfo) /* 101 */ + (tkIntXlibStubsPtr->xGetVisualInfo) /* 77 */ #define XSetWMClientMachine \ - (tkIntXlibStubsPtr->xSetWMClientMachine) /* 102 */ + (tkIntXlibStubsPtr->xSetWMClientMachine) /* 78 */ #define XStringListToTextProperty \ - (tkIntXlibStubsPtr->xStringListToTextProperty) /* 103 */ + (tkIntXlibStubsPtr->xStringListToTextProperty) /* 79 */ +#define XDrawSegments \ + (tkIntXlibStubsPtr->xDrawSegments) /* 80 */ +#define XForceScreenSaver \ + (tkIntXlibStubsPtr->xForceScreenSaver) /* 81 */ #define XDrawLine \ - (tkIntXlibStubsPtr->xDrawLine) /* 104 */ -#define XWarpPointer \ - (tkIntXlibStubsPtr->xWarpPointer) /* 105 */ + (tkIntXlibStubsPtr->xDrawLine) /* 82 */ #define XFillRectangle \ - (tkIntXlibStubsPtr->xFillRectangle) /* 106 */ + (tkIntXlibStubsPtr->xFillRectangle) /* 83 */ +#define XClearWindow \ + (tkIntXlibStubsPtr->xClearWindow) /* 84 */ +#define XDrawPoint \ + (tkIntXlibStubsPtr->xDrawPoint) /* 85 */ +#define XDrawPoints \ + (tkIntXlibStubsPtr->xDrawPoints) /* 86 */ +#define XWarpPointer \ + (tkIntXlibStubsPtr->xWarpPointer) /* 87 */ +#define XQueryColor \ + (tkIntXlibStubsPtr->xQueryColor) /* 88 */ +#define XQueryColors \ + (tkIntXlibStubsPtr->xQueryColors) /* 89 */ +#define XQueryTree \ + (tkIntXlibStubsPtr->xQueryTree) /* 90 */ +#define XSync \ + (tkIntXlibStubsPtr->xSync) /* 91 */ +#define XTranslateCoordinates \ + (tkIntXlibStubsPtr->xTranslateCoordinates) /* 92 */ +#define XDeleteProperty \ + (tkIntXlibStubsPtr->xDeleteProperty) /* 93 */ +#define XFreeCursor \ + (tkIntXlibStubsPtr->xFreeCursor) /* 94 */ +#define XGetInputFocus \ + (tkIntXlibStubsPtr->xGetInputFocus) /* 95 */ +#define XmbLookupString \ + (tkIntXlibStubsPtr->xmbLookupString) /* 96 */ +#define XNextEvent \ + (tkIntXlibStubsPtr->xNextEvent) /* 97 */ +#define XPutBackEvent \ + (tkIntXlibStubsPtr->xPutBackEvent) /* 98 */ +#define XSetCommand \ + (tkIntXlibStubsPtr->xSetCommand) /* 99 */ +#define XWindowEvent \ + (tkIntXlibStubsPtr->xWindowEvent) /* 100 */ +#define XGetWindowAttributes \ + (tkIntXlibStubsPtr->xGetWindowAttributes) /* 101 */ +#define XGetWMColormapWindows \ + (tkIntXlibStubsPtr->xGetWMColormapWindows) /* 102 */ +#define XIconifyWindow \ + (tkIntXlibStubsPtr->xIconifyWindow) /* 103 */ +#define XWithdrawWindow \ + (tkIntXlibStubsPtr->xWithdrawWindow) /* 104 */ +#define XListHosts \ + (tkIntXlibStubsPtr->xListHosts) /* 105 */ +#define XSetClipRectangles \ + (tkIntXlibStubsPtr->xSetClipRectangles) /* 106 */ #define XFlush \ (tkIntXlibStubsPtr->xFlush) /* 107 */ #define XGrabServer \ (tkIntXlibStubsPtr->xGrabServer) /* 108 */ #define XUngrabServer \ @@ -1768,12 +1771,12 @@ (tkIntXlibStubsPtr->xFree) /* 110 */ #define XNoOp \ (tkIntXlibStubsPtr->xNoOp) /* 111 */ #define XSynchronize \ (tkIntXlibStubsPtr->xSynchronize) /* 112 */ -#define XSync \ - (tkIntXlibStubsPtr->xSync) /* 113 */ +#define XLookupColor \ + (tkIntXlibStubsPtr->xLookupColor) /* 113 */ #define XVisualIDFromVisual \ (tkIntXlibStubsPtr->xVisualIDFromVisual) /* 114 */ /* Slot 115 is reserved */ /* Slot 116 is reserved */ /* Slot 117 is reserved */ @@ -1797,16 +1800,13 @@ (tkIntXlibStubsPtr->xFillArcs) /* 130 */ #define XDrawArcs \ (tkIntXlibStubsPtr->xDrawArcs) /* 131 */ #define XDrawRectangles \ (tkIntXlibStubsPtr->xDrawRectangles) /* 132 */ -#define XDrawSegments \ - (tkIntXlibStubsPtr->xDrawSegments) /* 133 */ -#define XDrawPoint \ - (tkIntXlibStubsPtr->xDrawPoint) /* 134 */ -#define XDrawPoints \ - (tkIntXlibStubsPtr->xDrawPoints) /* 135 */ +/* Slot 133 is reserved */ +/* Slot 134 is reserved */ +/* Slot 135 is reserved */ #define XReparentWindow \ (tkIntXlibStubsPtr->xReparentWindow) /* 136 */ #define XPutImage \ (tkIntXlibStubsPtr->xPutImage) /* 137 */ #define XPolygonRegion \ @@ -1819,13 +1819,16 @@ (tkIntXlibStubsPtr->xSetICValues) /* 141 */ #define XGetICValues \ (tkIntXlibStubsPtr->xGetICValues) /* 142 */ #define XSetICFocus \ (tkIntXlibStubsPtr->xSetICFocus) /* 143 */ -/* Slot 144 is reserved */ -/* Slot 145 is reserved */ -/* Slot 146 is reserved */ +#define XDestroyIC \ + (tkIntXlibStubsPtr->xDestroyIC) /* 144 */ +#define XCreatePixmapCursor \ + (tkIntXlibStubsPtr->xCreatePixmapCursor) /* 145 */ +#define XCreateGlyphCursor \ + (tkIntXlibStubsPtr->xCreateGlyphCursor) /* 146 */ #define XFreeFontSet \ (tkIntXlibStubsPtr->xFreeFontSet) /* 147 */ #define XCloseIM \ (tkIntXlibStubsPtr->xCloseIM) /* 148 */ #define XRegisterIMInstantiateCallback \ Index: generic/tkListbox.c ================================================================== --- generic/tkListbox.c +++ generic/tkListbox.c @@ -42,11 +42,11 @@ Tk_OptionTable optionTable; /* Table that defines configuration options * available for this widget. */ Tk_OptionTable itemAttrOptionTable; /* Table that defines configuration options * available for listbox items. */ - char *listVarName; /* List variable name */ + Tcl_Obj *listVarNameObj; /* List variable name */ Tcl_Obj *listObj; /* Pointer to the list object being used */ Tcl_Size nElements; /* Holds the current count of elements */ Tcl_HashTable *selection; /* Tracks selection */ Tcl_HashTable *itemAttrTable; /* Tracks item attributes */ @@ -55,13 +55,13 @@ * Information used when displaying widget: */ Tk_3DBorder normalBorder; /* Used for drawing border around whole * window, plus used for background. */ - Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */ + int borderWidth; /* Width of 3-D border around window. */ int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around + int highlightWidth; /* Width in pixels of highlight to draw around * widget when it has the focus. <= 0 means * don't draw a highlight. */ XColor *highlightBgColorPtr; /* Color for drawing traversal highlight area * when highlight is off. */ @@ -75,11 +75,11 @@ XColor *fgColorPtr; /* Text color in normal mode. */ XColor *dfgColorPtr; /* Text color in disabled mode. */ GC textGC; /* For drawing normal text. */ Tk_3DBorder selBorder; /* Borders and backgrounds for selected * elements. */ - Tcl_Obj *selBorderWidthObj; /* Width of border around selection. */ + int selBorderWidth; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected elements. */ GC selTextGC; /* For drawing selected text. */ int width; /* Desired width of window, in characters. */ int height; /* Desired height of window, in lines. */ int lineHeight; /* Number of pixels allocated for each line in @@ -115,11 +115,11 @@ /* * Information about what's selected or active, if any. */ - Tk_Uid selectMode; /* Selection style: single, browse, multiple, + Tcl_Obj *selectModeObj; /* Selection style: single, browse, multiple, * or extended. This value isn't used in C * code, but the Tcl bindings use it. */ int numSelected; /* Number of elements currently selected. */ int selectAnchor; /* Fixed end of selection (i.e. element at * which selection was started.) */ @@ -147,27 +147,24 @@ /* * Miscellaneous information: */ Tk_Cursor cursor; /* Current cursor for window, or None. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ - char *yScrollCmd; /* Command prefix for communicating with + * scripts. May be NULL. */ + Tcl_Obj *yScrollCmdObj; /* Command prefix for communicating with * vertical scrollbar. NULL means no command - * to issue. Malloc'ed. */ - char *xScrollCmd; /* Command prefix for communicating with + * to issue. May be NULL. */ + Tcl_Obj *xScrollCmdObj; /* Command prefix for communicating with * horizontal scrollbar. NULL means no command - * to issue. Malloc'ed. */ + * to issue. May be NULL. */ int state; /* Listbox state. */ Pixmap gray; /* Pixmap for displaying disabled text. */ int flags; /* Various flag bits: see below for * definitions. */ Tk_Justify justify; /* Justification. */ -#ifdef BUILD_tk - int borderWidth, selBorderWidth, highlightWidth; -#endif } Listbox; /* * How to encode the keys for the hash tables used to store what items are * selected and what the attributes are. @@ -242,11 +239,11 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_LISTBOX_BORDER_WIDTH, offsetof(Listbox, borderWidthObj), offsetof(Listbox, borderWidth), + DEF_LISTBOX_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(Listbox, borderWidth), 0, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_LISTBOX_CURSOR, TCL_INDEX_NONE, offsetof(Listbox, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-disabledforeground", "disabledForeground", @@ -268,46 +265,46 @@ offsetof(Listbox, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_LISTBOX_HIGHLIGHT, TCL_INDEX_NONE, offsetof(Listbox, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_LISTBOX_HIGHLIGHT_WIDTH, offsetof(Listbox, highlightWidthObj), - offsetof(Listbox, highlightWidth), 0, 0, 0}, + "HighlightThickness", DEF_LISTBOX_HIGHLIGHT_WIDTH, + TCL_INDEX_NONE, offsetof(Listbox, highlightWidth), 0, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_LISTBOX_JUSTIFY, TCL_INDEX_NONE, offsetof(Listbox, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_LISTBOX_RELIEF, TCL_INDEX_NONE, offsetof(Listbox, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_LISTBOX_SELECT_COLOR, TCL_INDEX_NONE, offsetof(Listbox, selBorder), 0, DEF_LISTBOX_SELECT_MONO, 0}, {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth", - "BorderWidth", DEF_LISTBOX_SELECT_BD, offsetof(Listbox, selBorderWidthObj), + "BorderWidth", DEF_LISTBOX_SELECT_BD, TCL_INDEX_NONE, offsetof(Listbox, selBorderWidth), 0, 0, 0}, {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background", DEF_LISTBOX_SELECT_FG_COLOR, TCL_INDEX_NONE, offsetof(Listbox, selFgColorPtr), TK_OPTION_NULL_OK, DEF_LISTBOX_SELECT_FG_MONO, 0}, {TK_OPTION_STRING, "-selectmode", "selectMode", "SelectMode", - DEF_LISTBOX_SELECT_MODE, TCL_INDEX_NONE, offsetof(Listbox, selectMode), + DEF_LISTBOX_SELECT_MODE, offsetof(Listbox, selectModeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-setgrid", "setGrid", "SetGrid", DEF_LISTBOX_SET_GRID, TCL_INDEX_NONE, offsetof(Listbox, setGrid), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_LISTBOX_STATE, TCL_INDEX_NONE, offsetof(Listbox, state), 0, &tkStateStrings[1], 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_LISTBOX_TAKE_FOCUS, TCL_INDEX_NONE, offsetof(Listbox, takeFocus), + DEF_LISTBOX_TAKE_FOCUS, offsetof(Listbox, takeFocusObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_INT, "-width", "width", "Width", DEF_LISTBOX_WIDTH, TCL_INDEX_NONE, offsetof(Listbox, width), 0, 0, 0}, {TK_OPTION_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", - DEF_LISTBOX_SCROLL_COMMAND, TCL_INDEX_NONE, offsetof(Listbox, xScrollCmd), + DEF_LISTBOX_SCROLL_COMMAND, offsetof(Listbox, xScrollCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand", - DEF_LISTBOX_SCROLL_COMMAND, TCL_INDEX_NONE, offsetof(Listbox, yScrollCmd), + DEF_LISTBOX_SCROLL_COMMAND, offsetof(Listbox, yScrollCmdObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-listvariable", "listVariable", "Variable", - DEF_LISTBOX_LIST_VARIABLE, TCL_INDEX_NONE, offsetof(Listbox, listVarName), + DEF_LISTBOX_LIST_VARIABLE, offsetof(Listbox, listVarNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; /* @@ -1008,19 +1005,19 @@ diff = listPtr->topIndex - index; if (diff > 0) { if (diff <= listPtr->fullLines / 3) { ChangeListboxView(listPtr, index); } else { - ChangeListboxView(listPtr, index - (listPtr->fullLines-1)/2); + ChangeListboxView(listPtr, index - (listPtr->fullLines - 1)/2); } } else { diff = index - (listPtr->topIndex + listPtr->fullLines - 1); if (diff > 0) { if (diff <= listPtr->fullLines / 3) { ChangeListboxView(listPtr, listPtr->topIndex + diff); } else { - ChangeListboxView(listPtr, index-(listPtr->fullLines-1)/2); + ChangeListboxView(listPtr, index-(listPtr->fullLines - 1)/2); } } } result = TCL_OK; break; @@ -1114,12 +1111,12 @@ x = (listPtr->inset + listPtr->selBorderWidth) - listPtr->xOffset; } else if (listPtr->justify == TK_JUSTIFY_RIGHT) { x = Tk_Width(tkwin) - (listPtr->inset + listPtr->selBorderWidth) - pixelWidth - listPtr->xOffset + GetMaxOffset(listPtr); } else { - x = (Tk_Width(tkwin) - pixelWidth)/2 - - listPtr->xOffset + GetMaxOffset(listPtr)/2; + x = (Tk_Width(tkwin) - pixelWidth) / 2 + - listPtr->xOffset + GetMaxOffset(listPtr) / 2; } y = ((index - listPtr->topIndex)*listPtr->lineHeight) + listPtr->inset + listPtr->selBorderWidth; results[0] = Tcl_NewWideIntObj(x); results[1] = Tcl_NewWideIntObj(y); @@ -1248,11 +1245,11 @@ int index, count, windowWidth, windowUnits; int offset = 0; /* Initialized to stop gcc warnings. */ double fraction; windowWidth = Tk_Width(listPtr->tkwin) - - 2*(listPtr->inset + listPtr->selBorderWidth); + - 2 * (listPtr->inset + listPtr->selBorderWidth); if (objc == 2) { Tcl_Obj *results[2]; if (listPtr->maxWidth == 0) { results[0] = Tcl_NewDoubleObj(0.0); @@ -1454,12 +1451,12 @@ if (listPtr->listObj != NULL) { Tcl_DecrRefCount(listPtr->listObj); listPtr->listObj = NULL; } - if (listPtr->listVarName != NULL) { - Tcl_UntraceVar2(listPtr->interp, listPtr->listVarName, NULL, + if (listPtr->listVarNameObj != NULL) { + Tcl_UntraceVar2(listPtr->interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, listPtr); } /* @@ -1561,12 +1558,12 @@ Tcl_Obj *oldListObj = NULL; Tcl_Obj *errorResult = NULL; int oldExport, error; oldExport = (listPtr->exportSelection) && (!Tcl_IsSafe(listPtr->interp)); - if (listPtr->listVarName != NULL) { - Tcl_UntraceVar2(interp, listPtr->listVarName, NULL, + if (listPtr->listVarNameObj != NULL) { + Tcl_UntraceVar2(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, listPtr); } for (error = 0; error <= 1; error++) { @@ -1597,25 +1594,16 @@ Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder); if (listPtr->borderWidth < 0) { listPtr->borderWidth = 0; - Tcl_DecrRefCount(listPtr->borderWidthObj); - listPtr->borderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(listPtr->borderWidthObj); } if (listPtr->highlightWidth < 0) { listPtr->highlightWidth = 0; - Tcl_DecrRefCount(listPtr->highlightWidthObj); - listPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(listPtr->highlightWidthObj); } if (listPtr->selBorderWidth < 0) { listPtr->selBorderWidth = 0; - Tcl_DecrRefCount(listPtr->selBorderWidthObj); - listPtr->selBorderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(listPtr->selBorderWidthObj); } listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth; /* * Claim the selection if we've suddenly started exporting it and @@ -1645,18 +1633,18 @@ * * no listvar | no listvar | no special action */ oldListObj = listPtr->listObj; - if (listPtr->listVarName != NULL) { - Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, listPtr->listVarName, + if (listPtr->listVarNameObj != NULL) { + Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY); Tcl_Size dummy; if (listVarObj == NULL) { listVarObj = (oldListObj ? oldListObj : Tcl_NewObj()); - if (Tcl_SetVar2Ex(interp, listPtr->listVarName, NULL, + if (Tcl_SetVar2Ex(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, listVarObj, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG) == NULL) { continue; } } @@ -1671,11 +1659,11 @@ ": invalid -listvariable value", NULL); continue; } listPtr->listObj = listVarObj; - Tcl_TraceVar2(listPtr->interp, listPtr->listVarName, + Tcl_TraceVar2(listPtr->interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, listPtr); } else if (listPtr->listObj == NULL) { listPtr->listObj = Tcl_NewObj(); } @@ -1923,15 +1911,15 @@ if (limit >= (int)listPtr->nElements) { limit = listPtr->nElements-1; } left = right = 0; if (listPtr->xOffset > 0) { - left = listPtr->selBorderWidth+1; + left = listPtr->selBorderWidth + 1; } if ((listPtr->maxWidth - listPtr->xOffset) > (Tk_Width(listPtr->tkwin) - - 2*(listPtr->inset + listPtr->selBorderWidth))) { - right = listPtr->selBorderWidth+1; + - 2 * (listPtr->inset + listPtr->selBorderWidth))) { + right = listPtr->selBorderWidth + 1; } prevSelected = 0; for (i = listPtr->topIndex; i <= limit; i++) { int width = Tk_Width(tkwin); /* zeroth approx to silence warning */ @@ -1959,11 +1947,11 @@ /* * Selected items are drawn differently. */ gc = listPtr->selTextGC; - width = Tk_Width(tkwin) - 2*listPtr->inset; + width = Tk_Width(tkwin) - 2 * listPtr->inset; selectedBg = listPtr->selBorder; /* * If there is attribute information for this item, adjust the * drawing accordingly. @@ -2060,11 +2048,11 @@ /* * If the item has its own background color, draw it now. */ if (attrs->border != NULL) { - width = Tk_Width(tkwin) - 2*listPtr->inset; + width = Tk_Width(tkwin) - 2 * listPtr->inset; Tk_Fill3DRectangle(tkwin, pixmap, attrs->border, x, y, width, listPtr->lineHeight, 0, TK_RELIEF_FLAT); } /* @@ -2125,11 +2113,11 @@ */ x = listPtr->inset; y = (i - listPtr->topIndex) * listPtr->lineHeight + listPtr->inset; - width = Tk_Width(tkwin) - 2*listPtr->inset; + width = Tk_Width(tkwin) - 2 * listPtr->inset; TkDrawDottedRect(disp, pixmap, gc, x, y, width, listPtr->lineHeight); if (!freeGC) { @@ -2153,12 +2141,12 @@ * of the text of the listbox entries. */ Tk_Draw3DRectangle(tkwin, pixmap, listPtr->normalBorder, listPtr->highlightWidth, listPtr->highlightWidth, - Tk_Width(tkwin) - 2*listPtr->highlightWidth, - Tk_Height(tkwin) - 2*listPtr->highlightWidth, + Tk_Width(tkwin) - 2 * listPtr->highlightWidth, + Tk_Height(tkwin) - 2 * listPtr->highlightWidth, listPtr->borderWidth, listPtr->relief); if (listPtr->highlightWidth > 0) { GC fgGC, bgGC; bgGC = Tk_GCForColor(listPtr->highlightBgColorPtr, pixmap); @@ -2242,29 +2230,29 @@ } } } Tk_GetFontMetrics(listPtr->tkfont, &fm); - listPtr->lineHeight = fm.linespace + 1 + 2*listPtr->selBorderWidth; + listPtr->lineHeight = fm.linespace + 1 + 2 * listPtr->selBorderWidth; width = listPtr->width; if (width <= 0) { width = (listPtr->maxWidth + listPtr->xScrollUnit - 1) / listPtr->xScrollUnit; if (width < 1) { width = 1; } } - pixelWidth = width*listPtr->xScrollUnit + 2*listPtr->inset - + 2*listPtr->selBorderWidth; + pixelWidth = width*listPtr->xScrollUnit + 2 * listPtr->inset + + 2 * listPtr->selBorderWidth; height = listPtr->height; if (listPtr->height <= 0) { height = (int)listPtr->nElements; if (height < 1) { height = 1; } } - pixelHeight = height*listPtr->lineHeight + 2*listPtr->inset; + pixelHeight = height*listPtr->lineHeight + 2 * listPtr->inset; Tk_GeometryRequest(listPtr->tkwin, pixelWidth, pixelHeight); Tk_SetInternalBorder(listPtr->tkwin, listPtr->inset); if (updateGrid) { if (listPtr->setGrid) { Tk_SetGrid(listPtr->tkwin, width, height, listPtr->xScrollUnit, @@ -2351,12 +2339,12 @@ */ Tcl_IncrRefCount(newListObj); Tcl_DecrRefCount(listPtr->listObj); listPtr->listObj = newListObj; - if (listPtr->listVarName != NULL) { - Tcl_SetVar2Ex(listPtr->interp, listPtr->listVarName, NULL, + if (listPtr->listVarNameObj != NULL) { + Tcl_SetVar2Ex(listPtr->interp, Tcl_GetString(listPtr->listVarNameObj), NULL, listPtr->listObj, TCL_GLOBAL_ONLY); } /* * Get the new list length. @@ -2511,12 +2499,12 @@ */ Tcl_IncrRefCount(newListObj); Tcl_DecrRefCount(listPtr->listObj); listPtr->listObj = newListObj; - if (listPtr->listVarName != NULL) { - Tcl_SetVar2Ex(listPtr->interp, listPtr->listVarName, NULL, + if (listPtr->listVarNameObj != NULL) { + Tcl_SetVar2Ex(listPtr->interp, Tcl_GetString(listPtr->listVarNameObj), NULL, listPtr->listObj, TCL_GLOBAL_ONLY); } /* * Get the new list length. @@ -2609,11 +2597,11 @@ Tcl_EventuallyFree(clientData, DestroyListbox); } } else if (eventPtr->type == ConfigureNotify) { int vertSpace; - vertSpace = Tk_Height(listPtr->tkwin) - 2*listPtr->inset; + vertSpace = Tk_Height(listPtr->tkwin) - 2 * listPtr->inset; listPtr->fullLines = vertSpace / listPtr->lineHeight; if ((listPtr->fullLines*listPtr->lineHeight) < vertSpace) { listPtr->partialLine = 1; } else { listPtr->partialLine = 0; @@ -3276,11 +3264,11 @@ double first, last; int result; Tcl_Interp *interp; Tcl_DString buf; - if (listPtr->yScrollCmd == NULL) { + if (listPtr->yScrollCmdObj == NULL) { return; } if (listPtr->nElements == 0) { first = 0.0; last = 1.0; @@ -3301,11 +3289,11 @@ */ interp = listPtr->interp; Tcl_Preserve(interp); Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, listPtr->yScrollCmd, TCL_INDEX_NONE); + Tcl_DStringAppend(&buf, Tcl_GetString(listPtr->yScrollCmdObj), TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, firstStr, TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, lastStr, TCL_INDEX_NONE); result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); @@ -3346,16 +3334,16 @@ int result, windowWidth; double first, last; Tcl_Interp *interp; Tcl_DString buf; - if (listPtr->xScrollCmd == NULL) { + if (listPtr->xScrollCmdObj == NULL) { return; } windowWidth = Tk_Width(listPtr->tkwin) - - 2*(listPtr->inset + listPtr->selBorderWidth); + - 2 * (listPtr->inset + listPtr->selBorderWidth); if (listPtr->maxWidth == 0) { first = 0; last = 1.0; } else { first = listPtr->xOffset / (double) listPtr->maxWidth; @@ -3373,11 +3361,11 @@ */ interp = listPtr->interp; Tcl_Preserve(interp); Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, listPtr->xScrollCmd, TCL_INDEX_NONE); + Tcl_DStringAppend(&buf, Tcl_GetString(listPtr->xScrollCmdObj), TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, firstStr, TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, lastStr, TCL_INDEX_NONE); result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); @@ -3423,16 +3411,16 @@ * Bwah hahahaha! Puny mortal, you can't unset a -listvar'd variable! */ if (flags & TCL_TRACE_UNSETS) { - if (!Tcl_InterpDeleted(interp) && listPtr->listVarName) { + if (!Tcl_InterpDeleted(interp) && listPtr->listVarNameObj) { void *probe = NULL; do { probe = Tcl_VarTraceInfo(interp, - listPtr->listVarName, + Tcl_GetString(listPtr->listVarNameObj), TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, probe); if (probe == (void *)listPtr) { break; } @@ -3444,30 +3432,30 @@ * the cause of this unset trace. Instead some outdated * former variable must be, and we should ignore it. */ return NULL; } - Tcl_SetVar2Ex(interp, listPtr->listVarName, NULL, + Tcl_SetVar2Ex(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, listPtr->listObj, TCL_GLOBAL_ONLY); - Tcl_TraceVar2(interp, listPtr->listVarName, + Tcl_TraceVar2(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ListboxListVarProc, clientData); return NULL; } } else { oldListObj = listPtr->listObj; - varListObj = Tcl_GetVar2Ex(listPtr->interp, listPtr->listVarName, + varListObj = Tcl_GetVar2Ex(listPtr->interp, Tcl_GetString(listPtr->listVarNameObj), NULL, TCL_GLOBAL_ONLY); /* * Make sure the new value is a good list; if it's not, disallow the * change - the fact that it is a listvar means that it must always be * a valid list - and return an error message. */ if (Tcl_ListObjLength(listPtr->interp, varListObj, &i) != TCL_OK) { - Tcl_SetVar2Ex(interp, listPtr->listVarName, NULL, oldListObj, + Tcl_SetVar2Ex(interp, Tcl_GetString(listPtr->listVarNameObj), NULL, oldListObj, TCL_GLOBAL_ONLY); return (char *) "invalid listvar value"; } listPtr->listObj = varListObj; @@ -3625,12 +3613,12 @@ Listbox *listPtr) { int maxOffset; maxOffset = listPtr->maxWidth - - (Tk_Width(listPtr->tkwin) - 2*listPtr->inset - - 2*listPtr->selBorderWidth) + listPtr->xScrollUnit - 1; + (Tk_Width(listPtr->tkwin) - 2 * listPtr->inset - + 2 * listPtr->selBorderWidth) + listPtr->xScrollUnit - 1; if (maxOffset < 0) { /* * Listbox is larger in width than its largest width item. */ Index: generic/tkMain.c ================================================================== --- generic/tkMain.c +++ generic/tkMain.c @@ -161,11 +161,11 @@ * interpreted. * *---------------------------------------------------------------------- */ -void +TCL_NORETURN1 void Tk_MainEx( Tcl_Size argc, /* Number of arguments. */ TCHAR **argv, /* Array of argument strings. */ Tcl_AppInitProc *appInitProc, /* Application-specific initialization @@ -187,11 +187,11 @@ /* * Ensure that we are getting a compatible version of Tcl. */ - if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) { + if (Tcl_InitStubs(interp, "8.6-", 0) == NULL) { if (Tcl_InitStubs(interp, "8.1", 0) == NULL) { abort(); } else { Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp))); } @@ -201,11 +201,11 @@ if (tclStubsPtr->tcl_CreateFileHandler) { /* We are running win32 Tk under Cygwin, so let's check * whether the env("DISPLAY") variable or the -display * argument is set. If so, we really want to run the - * Tk_MainEx function of libtcl9tk9.?.dll, not this one. */ + * Tk_MainEx function of libtk8.?.dll, not this one. */ if (Tcl_GetVar2(interp, "env", "DISPLAY", TCL_GLOBAL_ONLY)) { loadCygwinTk: TkCygwinMainEx(argc, argv, appInitProc, interp); /* Only returns when Tk_MainEx() was not found */ } else { @@ -245,10 +245,13 @@ * first few command line arguments to determine the script path and * encoding. */ if (NULL == Tcl_GetStartupScript(NULL)) { +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + size_t length; +#endif /* * Check whether first 3 args (argv[1] - argv[3]) look like * -encoding ENCODING FILENAME * or like @@ -259,19 +262,26 @@ /* mind argc is being adjusted as we proceed */ if ((argc >= 3) && (0 == _tcscmp(TEXT("-encoding"), argv[1])) && ('-' != argv[3][0])) { Tcl_Obj *value = NewNativeObj(argv[2]); - Tcl_SetStartupScript(NewNativeObj(argv[3]), - Tcl_GetString(value)); + Tcl_SetStartupScript(NewNativeObj(argv[3]), Tcl_GetString(value)); Tcl_DecrRefCount(value); argc -= 3; i += 3; } else if ((argc >= 1) && ('-' != argv[1][0])) { Tcl_SetStartupScript(NewNativeObj(argv[1]), NULL); argc--; i++; +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + } else if ((argc >= 2) && (length = _tcslen(argv[1])) + && (length > 1) && (0 == _tcsncmp(TEXT("-file"), argv[1], length)) + && ('-' != argv[2][0])) { + Tcl_SetStartupScript(NewNativeObj(argv[2]), NULL); + argc -= 2; + i += 2; +#endif } } path = Tcl_GetStartupScript(&encodingName); if (path == NULL) { @@ -279,11 +289,11 @@ } else { appName = path; } Tcl_SetVar2Ex(interp, "argv0", NULL, appName, TCL_GLOBAL_ONLY); - Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewWideIntObj((Tcl_WideInt)argc), TCL_GLOBAL_ONLY); + Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewWideIntObj(argc), TCL_GLOBAL_ONLY); argvPtr = Tcl_NewListObj(0, NULL); while (argc--) { Tcl_ListObjAppendElement(NULL, argvPtr, NewNativeObj(argv[i++])); } @@ -306,11 +316,11 @@ nullStdin = fstat(0, &st) || (S_ISCHR(st.st_mode) && !st.st_blocks); } #endif Tcl_SetVar2Ex(interp, "tcl_interactive", NULL, - Tcl_NewWideIntObj(!path && (is.tty || nullStdin)), TCL_GLOBAL_ONLY); + Tcl_NewBooleanObj(!path && (is.tty || nullStdin)), TCL_GLOBAL_ONLY); /* * Invoke application-specific initialization. */ Index: generic/tkMenu.c ================================================================== --- generic/tkMenu.c +++ generic/tkMenu.c @@ -247,22 +247,22 @@ {TK_OPTION_COLOR, "-activeforeground", "activeForeground", "Background", DEF_MENU_ACTIVE_FG_COLOR, offsetof(TkMenu, activeFgPtr), TCL_INDEX_NONE, 0, DEF_MENU_ACTIVE_FG_MONO, 0}, {TK_OPTION_RELIEF, "-activerelief", "activeRelief", "Relief", - DEF_MENU_ACTIVE_RELIEF, offsetof(TkMenu, activeReliefPtr), - TCL_INDEX_NONE, 0, NULL, 0}, + DEF_MENU_ACTIVE_RELIEF, TCL_INDEX_NONE, + offsetof(TkMenu, activeRelief), 0, NULL, 0}, {TK_OPTION_BORDER, "-background", "background", "Background", DEF_MENU_BG_COLOR, offsetof(TkMenu, borderPtr), TCL_INDEX_NONE, 0, DEF_MENU_BG_MONO, 0}, {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_MENU_BORDER_WIDTH, - offsetof(TkMenu, borderWidthObj), TCL_INDEX_NONE, 0, NULL, 0}, + offsetof(TkMenu, borderWidthPtr), TCL_INDEX_NONE, 0, NULL, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_MENU_CURSOR, offsetof(TkMenu, cursorPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, NULL, 0}, {TK_OPTION_COLOR, "-disabledforeground", "disabledForeground", "DisabledForeground", DEF_MENU_DISABLED_FG_COLOR, @@ -276,11 +276,11 @@ DEF_MENU_FG, offsetof(TkMenu, fgPtr), TCL_INDEX_NONE, 0, NULL, 0}, {TK_OPTION_STRING, "-postcommand", "postCommand", "Command", DEF_MENU_POST_COMMAND, offsetof(TkMenu, postCommandPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, NULL, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", - DEF_MENU_RELIEF, TCL_INDEX_NONE, offsetof(TkMenu, relief), 0, NULL, 0}, + DEF_MENU_RELIEF, offsetof(TkMenu, reliefPtr), TCL_INDEX_NONE, 0, NULL, 0}, {TK_OPTION_COLOR, "-selectcolor", "selectColor", "Background", DEF_MENU_SELECT_COLOR, offsetof(TkMenu, indicatorFgPtr), TCL_INDEX_NONE, 0, DEF_MENU_SELECT_MONO, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", DEF_MENU_TAKE_FOCUS, @@ -853,11 +853,15 @@ } if (GetMenuIndex(interp, menuPtr, objv[2], 0, &index) != TCL_OK) { goto error; } if (index < 0) { +#if defined(TK_NO_DEPRECATED) Tcl_SetObjResult(interp, Tcl_NewObj()); +#else + Tcl_SetObjResult(interp, Tcl_NewStringObj("none", TCL_INDEX_NONE)); +#endif } else { Tcl_SetObjResult(interp, TkNewIndexObj(index)); } break; } @@ -3041,11 +3045,11 @@ int x2, borderwidth, max; TkRecomputeMenu(menuPtr); p = string + 1; Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, - menuPtr->borderWidthObj, &borderwidth); + menuPtr->borderWidthPtr, &borderwidth); rest = strchr(p, ','); if (rest) { Tcl_DString ds; Tcl_DStringInit(&ds); Tcl_DStringAppend(&ds, p, rest - p); Index: generic/tkMenu.h ================================================================== --- generic/tkMenu.h +++ generic/tkMenu.h @@ -277,16 +277,16 @@ * Information used when displaying widget: */ Tcl_Obj *borderPtr; /* Structure used to draw 3-D border and * background for menu. */ - Tcl_Obj *borderWidthObj; /* Width of border around whole menu. */ + Tcl_Obj *borderWidthPtr; /* Width of border around whole menu. */ Tcl_Obj *activeBorderPtr; /* Used to draw background and border for * active element (if any). */ Tcl_Obj *activeBorderWidthPtr; /* Width of border around active element. */ - int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */ + Tcl_Obj *reliefPtr; /* 3-d effect: TK_RELIEF_RAISED, etc. */ Tcl_Obj *fontPtr; /* Text font for menu entries. */ Tcl_Obj *fgPtr; /* Foreground color for entries. */ Tcl_Obj *disabledFgPtr; /* Foreground color when disabled. NULL means * use normalFg with a 50% stipple instead. */ Tcl_Obj *activeFgPtr; /* Foreground color for active entry. */ @@ -377,11 +377,11 @@ * this widget to be extended. */ Tk_SavedOptions *errorStructPtr; /* We actually have to allocate these because * multiple menus get changed during one * ConfigureMenu call. */ - Tcl_Obj *activeReliefPtr; /* 3-d effect for active element. */ + int activeRelief; /* 3-d effect for active element. */ Tcl_HashTable items; /* Map: id -> entry */ int serial; /* Next item # for autogenerated ids */ } TkMenu; /* Index: generic/tkMenuDraw.c ================================================================== --- generic/tkMenuDraw.c +++ generic/tkMenuDraw.c @@ -624,18 +624,19 @@ Tk_Font tkfont; Tk_FontMetrics menuMetrics; int width; int borderWidth; Tk_3DBorder border; + int relief; menuPtr->menuFlags &= ~REDRAW_PENDING; if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } - Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthObj, + Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthPtr, &borderWidth); border = Tk_Get3DBorderFromObj(menuPtr->tkwin, menuPtr->borderPtr); if (menuPtr->menuType == MENUBAR) { Tk_Fill3DRectangle(tkwin, Tk_WindowId(tkwin), border, borderWidth, @@ -729,13 +730,14 @@ Tk_Fill3DRectangle(tkwin, Tk_WindowId(tkwin), border, x, y, width, height, 0, TK_RELIEF_FLAT); } + Tk_GetReliefFromObj(NULL, menuPtr->reliefPtr, &relief); Tk_Draw3DRectangle(menuPtr->tkwin, Tk_WindowId(tkwin), border, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), borderWidth, - menuPtr->relief); + relief); } /* *-------------------------------------------------------------- * @@ -987,11 +989,11 @@ *xPtr += mePtr->x; *yPtr += mePtr->y + mePtr->height; } else { int borderWidth, activeBorderWidth; - Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthObj, + Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthPtr, &borderWidth); Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->activeBorderWidthPtr, &activeBorderWidth); *xPtr += Tk_Width(menuPtr->tkwin) - borderWidth - activeBorderWidth - 2; Index: generic/tkMenubutton.c ================================================================== --- generic/tkMenubutton.c +++ generic/tkMenubutton.c @@ -60,11 +60,11 @@ 0, "-background", 0}, {TK_OPTION_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_MENUBUTTON_BITMAP, TCL_INDEX_NONE, offsetof(TkMenuButton, bitmap), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_MENUBUTTON_BORDER_WIDTH, offsetof(TkMenuButton, borderWidthObj), + DEF_MENUBUTTON_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(TkMenuButton, borderWidth), 0, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_MENUBUTTON_CURSOR, TCL_INDEX_NONE, offsetof(TkMenuButton, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-direction", "direction", "Direction", @@ -79,37 +79,37 @@ {TK_OPTION_FONT, "-font", "font", "Font", DEF_MENUBUTTON_FONT, TCL_INDEX_NONE, offsetof(TkMenuButton, tkfont), 0, 0, 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_MENUBUTTON_FG, TCL_INDEX_NONE, offsetof(TkMenuButton, normalFg), 0, 0, 0}, {TK_OPTION_STRING, "-height", "height", "Height", - DEF_MENUBUTTON_HEIGHT, TCL_INDEX_NONE, offsetof(TkMenuButton, heightString), - 0, 0, 0}, + DEF_MENUBUTTON_HEIGHT, offsetof(TkMenuButton, heightObj), + TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_MENUBUTTON_HIGHLIGHT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkMenuButton, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_MENUBUTTON_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkMenuButton, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", DEF_MENUBUTTON_HIGHLIGHT_WIDTH, - offsetof(TkMenuButton, highlightWidthObj), offsetof(TkMenuButton, highlightWidth), 0, 0, 0}, + TCL_INDEX_NONE, offsetof(TkMenuButton, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-image", "image", "Image", - DEF_MENUBUTTON_IMAGE, TCL_INDEX_NONE, offsetof(TkMenuButton, imageString), + DEF_MENUBUTTON_IMAGE, offsetof(TkMenuButton, imageObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-indicatoron", "indicatorOn", "IndicatorOn", DEF_MENUBUTTON_INDICATOR, TCL_INDEX_NONE, offsetof(TkMenuButton, indicatorOn), 0, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_MENUBUTTON_JUSTIFY, TCL_INDEX_NONE, offsetof(TkMenuButton, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-menu", "menu", "Menu", - DEF_MENUBUTTON_MENU, TCL_INDEX_NONE, offsetof(TkMenuButton, menuName), + DEF_MENUBUTTON_MENU, offsetof(TkMenuButton, menuNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - DEF_MENUBUTTON_PADX, offsetof(TkMenuButton, padXObj), offsetof(TkMenuButton, padX), + DEF_MENUBUTTON_PADX, TCL_INDEX_NONE, offsetof(TkMenuButton, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - DEF_MENUBUTTON_PADY, offsetof(TkMenuButton, padYObj), offsetof(TkMenuButton, padY), + DEF_MENUBUTTON_PADY, TCL_INDEX_NONE, offsetof(TkMenuButton, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_MENUBUTTON_RELIEF, TCL_INDEX_NONE, offsetof(TkMenuButton, relief), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound", @@ -117,25 +117,25 @@ 0, tkCompoundStrings, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_MENUBUTTON_STATE, TCL_INDEX_NONE, offsetof(TkMenuButton, state), TK_OPTION_ENUM_VAR, tkStateStrings, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_MENUBUTTON_TAKE_FOCUS, TCL_INDEX_NONE, - offsetof(TkMenuButton, takeFocus), TK_OPTION_NULL_OK, 0, 0}, + DEF_MENUBUTTON_TAKE_FOCUS, offsetof(TkMenuButton, takeFocusObj), + TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-text", "text", "Text", - DEF_MENUBUTTON_TEXT, TCL_INDEX_NONE, offsetof(TkMenuButton, text), 0, 0, 0}, + DEF_MENUBUTTON_TEXT, offsetof(TkMenuButton, textObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-textvariable", "textVariable", "Variable", - DEF_MENUBUTTON_TEXT_VARIABLE, TCL_INDEX_NONE, - offsetof(TkMenuButton, textVarName), TK_OPTION_NULL_OK, 0, 0}, + DEF_MENUBUTTON_TEXT_VARIABLE, offsetof(TkMenuButton, textVarNameObj), + TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_INDEX, "-underline", "underline", "Underline", TK_OPTION_UNDERLINE_DEF(TkMenuButton, underline), 0}, {TK_OPTION_STRING, "-width", "width", "Width", - DEF_MENUBUTTON_WIDTH, TCL_INDEX_NONE, offsetof(TkMenuButton, widthString), - 0, 0, 0}, + DEF_MENUBUTTON_WIDTH, offsetof(TkMenuButton, widthObj), + TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_PIXELS, "-wraplength", "wrapLength", "WrapLength", - DEF_MENUBUTTON_WRAP_LENGTH, offsetof(TkMenuButton, wrapLengthObj), offsetof(TkMenuButton, wrapLength), - 0, 0, 0}, + DEF_MENUBUTTON_WRAP_LENGTH, TCL_INDEX_NONE, + offsetof(TkMenuButton, wrapLength), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0} }; /* * The following tables define the menubutton widget commands and map the @@ -188,19 +188,18 @@ *-------------------------------------------------------------- */ int Tk_MenubuttonObjCmd( - void *dummy, /* NULL. */ + TCL_UNUSED(void *), Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { TkMenuButton *mbPtr; Tk_OptionTable optionTable; Tk_Window tkwin; - (void)dummy; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "pathName ?-option value ...?"); return TCL_ERROR; } @@ -236,16 +235,16 @@ mbPtr->interp = interp; mbPtr->widgetCmd = Tcl_CreateObjCommand(interp, Tk_PathName(mbPtr->tkwin), MenuButtonWidgetObjCmd, mbPtr, MenuButtonCmdDeletedProc); mbPtr->optionTable = optionTable; - mbPtr->menuName = NULL; - mbPtr->text = NULL; + mbPtr->menuNameObj = NULL; + mbPtr->textObj = NULL; mbPtr->underline = INT_MIN; - mbPtr->textVarName = NULL; + mbPtr->textVarNameObj = NULL; mbPtr->bitmap = None; - mbPtr->imageString = NULL; + mbPtr->imageObj = NULL; mbPtr->image = NULL; mbPtr->state = STATE_NORMAL; mbPtr->normalBorder = NULL; mbPtr->activeBorder = NULL; mbPtr->borderWidth = 0; @@ -263,14 +262,14 @@ mbPtr->gray = None; mbPtr->disabledGC = NULL; mbPtr->stippleGC = NULL; mbPtr->leftBearing = 0; mbPtr->rightBearing = 0; - mbPtr->widthString = NULL; - mbPtr->heightString = NULL; + mbPtr->widthObj = NULL; + mbPtr->heightObj = NULL; mbPtr->width = 0; - mbPtr->width = 0; + mbPtr->height = 0; mbPtr->wrapLength = 0; mbPtr->padX = 0; mbPtr->padY = 0; mbPtr->anchor = TK_ANCHOR_CENTER; mbPtr->justify = TK_JUSTIFY_CENTER; @@ -278,17 +277,12 @@ mbPtr->indicatorOn = 0; mbPtr->indicatorWidth = 0; mbPtr->indicatorHeight = 0; mbPtr->direction = DIRECTION_FLUSH; mbPtr->cursor = NULL; - mbPtr->takeFocus = NULL; + mbPtr->takeFocusObj = NULL; mbPtr->flags = 0; - mbPtr->borderWidthObj = NULL; - mbPtr->highlightWidthObj = NULL; - mbPtr->padXObj = NULL; - mbPtr->padYObj = NULL; - mbPtr->wrapLengthObj = NULL; Tk_CreateEventHandler(mbPtr->tkwin, ExposureMask|StructureNotifyMask|FocusChangeMask, MenuButtonEventProc, mbPtr); @@ -417,12 +411,12 @@ * Free up all the stuff that requires special handling, then let * Tk_FreeOptions handle all the standard option-related stuff. */ Tcl_DeleteCommandFromToken(mbPtr->interp, mbPtr->widgetCmd); - if (mbPtr->textVarName != NULL) { - Tcl_UntraceVar2(mbPtr->interp, mbPtr->textVarName, NULL, + if (mbPtr->textVarNameObj != NULL) { + Tcl_UntraceVar2(mbPtr->interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuButtonTextVarProc, mbPtr); } if (mbPtr->image != NULL) { Tk_FreeImage(mbPtr->image); @@ -487,12 +481,12 @@ /* * Eliminate any existing trace on variables monitored by the menubutton. */ - if (mbPtr->textVarName != NULL) { - Tcl_UntraceVar2(interp, mbPtr->textVarName, NULL, + if (mbPtr->textVarNameObj != NULL) { + Tcl_UntraceVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuButtonTextVarProc, mbPtr); } /* @@ -534,45 +528,32 @@ Tk_SetBackgroundFromBorder(mbPtr->tkwin, mbPtr->activeBorder); } else { Tk_SetBackgroundFromBorder(mbPtr->tkwin, mbPtr->normalBorder); } + if (mbPtr->borderWidth < 0) { + mbPtr->borderWidth = 0; + } if (mbPtr->highlightWidth < 0) { mbPtr->highlightWidth = 0; - if (mbPtr->highlightWidthObj) { - Tcl_DecrRefCount(mbPtr->highlightWidthObj); - } - mbPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(mbPtr->highlightWidthObj); } - if (mbPtr->padX < 0) { mbPtr->padX = 0; - if (mbPtr->padXObj) { - Tcl_DecrRefCount(mbPtr->padXObj); - } - mbPtr->padXObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(mbPtr->padXObj); } if (mbPtr->padY < 0) { mbPtr->padY = 0; - if (mbPtr->padYObj) { - Tcl_DecrRefCount(mbPtr->padYObj); - } - mbPtr->padYObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(mbPtr->padYObj); } /* * Get the image for the widget, if there is one. Allocate the new * image before freeing the old one, so that the reference count * doesn't go to zero and cause image data to be discarded. */ - if (mbPtr->imageString != NULL) { + if (mbPtr->imageObj != NULL) { image = Tk_GetImage(mbPtr->interp, mbPtr->tkwin, - mbPtr->imageString, MenuButtonImageProc, mbPtr); + Tcl_GetString(mbPtr->imageObj), MenuButtonImageProc, mbPtr); if (image == NULL) { return TCL_ERROR; } } else { image = NULL; @@ -585,28 +566,28 @@ /* * Recompute the geometry for the button. */ if ((mbPtr->bitmap != None) || (mbPtr->image != NULL)) { - if (Tk_GetPixels(interp, mbPtr->tkwin, mbPtr->widthString, + if (Tk_GetPixelsFromObj(interp, mbPtr->tkwin, mbPtr->widthObj, &mbPtr->width) != TCL_OK) { widthError: Tcl_AddErrorInfo(interp, "\n (processing \"-width\" option)"); continue; } - if (Tk_GetPixels(interp, mbPtr->tkwin, mbPtr->heightString, + if (Tk_GetPixelsFromObj(interp, mbPtr->tkwin, mbPtr->heightObj, &mbPtr->height) != TCL_OK) { heightError: Tcl_AddErrorInfo(interp, "\n (processing \"-height\" option)"); continue; } } else { - if (Tcl_GetInt(interp, mbPtr->widthString, &mbPtr->width) + if (Tcl_GetIntFromObj(interp, mbPtr->widthObj, &mbPtr->width) != TCL_OK) { goto widthError; } - if (Tcl_GetInt(interp, mbPtr->heightString, &mbPtr->height) + if (Tcl_GetIntFromObj(interp, mbPtr->heightObj, &mbPtr->height) != TCL_OK) { goto heightError; } } break; @@ -614,30 +595,30 @@ if (!error) { Tk_FreeSavedOptions(&savedOptions); } - if (mbPtr->textVarName != NULL) { + if (mbPtr->textVarNameObj != NULL) { /* * If no image or -compound is used, display the value of a variable. * Set up a trace to watch for any changes in it, create the variable * if it doesn't exist, and fetch its current value. */ const char *value; - value = Tcl_GetVar2(interp, mbPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { - Tcl_SetVar2(interp, mbPtr->textVarName, NULL, mbPtr->text, + Tcl_SetVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, mbPtr->textObj ? Tcl_GetString(mbPtr->textObj) : "", TCL_GLOBAL_ONLY); } else { - if (mbPtr->text != NULL) { - ckfree(mbPtr->text); + if (mbPtr->textObj != NULL) { + Tcl_DecrRefCount(mbPtr->textObj); } - mbPtr->text = (char *)ckalloc(strlen(value) + 1); - strcpy(mbPtr->text, value); + mbPtr->textObj = Tcl_NewStringObj(value, TCL_INDEX_NONE); + Tcl_IncrRefCount(mbPtr->textObj); } - Tcl_TraceVar2(interp, mbPtr->textVarName, NULL, + Tcl_TraceVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuButtonTextVarProc, mbPtr); } TkMenuButtonWorldChanged(mbPtr); @@ -869,32 +850,29 @@ static char * MenuButtonTextVarProc( void *clientData, /* Information about button. */ Tcl_Interp *interp, /* Interpreter containing variable. */ - const char *name1, /* Name of variable. */ - const char *name2, /* Second part of variable name. */ + TCL_UNUSED(const char *), /* Name of variable. */ + TCL_UNUSED(const char *), /* Second part of variable name. */ int flags) /* Information about what happened. */ { TkMenuButton *mbPtr = (TkMenuButton *)clientData; const char *value; - size_t len; - (void)name1; - (void)name2; /* * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { - if (!Tcl_InterpDeleted(interp) && mbPtr->textVarName) { + if (!Tcl_InterpDeleted(interp) && mbPtr->textVarNameObj) { void *probe = NULL; do { probe = Tcl_VarTraceInfo(interp, - mbPtr->textVarName, + Tcl_GetString(mbPtr->textVarNameObj), TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuButtonTextVarProc, probe); if (probe == (void *)mbPtr) { break; } @@ -906,29 +884,28 @@ * the cause of this unset trace. Instead some outdated * former variable must be, and we should ignore it. */ return NULL; } - Tcl_SetVar2(interp, mbPtr->textVarName, NULL, mbPtr->text, + Tcl_SetVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, mbPtr->textObj ? Tcl_GetString(mbPtr->textObj) : "", TCL_GLOBAL_ONLY); - Tcl_TraceVar2(interp, mbPtr->textVarName, NULL, + Tcl_TraceVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuButtonTextVarProc, clientData); } return NULL; } - value = Tcl_GetVar2(interp, mbPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(mbPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { value = ""; } - if (mbPtr->text != NULL) { - ckfree(mbPtr->text); + if (mbPtr->textObj != NULL) { + Tcl_DecrRefCount(mbPtr->textObj); } - len = 1 + strlen(value); - mbPtr->text = (char *)ckalloc(len); - memcpy(mbPtr->text, value, len); + mbPtr->textObj= Tcl_NewStringObj(value, TCL_INDEX_NONE); + Tcl_IncrRefCount(mbPtr->textObj); TkpComputeMenuButtonGeometry(mbPtr); if ((mbPtr->tkwin != NULL) && Tk_IsMapped(mbPtr->tkwin) && !(mbPtr->flags & REDRAW_PENDING)) { Tcl_DoWhenIdle(TkpDisplayMenuButton, mbPtr); @@ -956,23 +933,18 @@ */ static void MenuButtonImageProc( void *clientData, /* Pointer to widget record. */ - int x, int y, /* Upper left pixel (within image) that must - * be redisplayed. */ - int width, int height, /* Dimensions of area to redisplay (may be <= - * 0). */ - int imgWidth, int imgHeight)/* New dimensions of image. */ + TCL_UNUSED(int), /* x, Upper left pixel (within image) that must */ + TCL_UNUSED(int), /* y, be redisplayed. */ + TCL_UNUSED(int), /* width, Dimensions of area to redisplay (may be <= */ + TCL_UNUSED(int), /* height, 0). */ + TCL_UNUSED(int), /* imgWidth, New dimensions of image. */ + TCL_UNUSED(int)) /* imgHeight) */ { TkMenuButton *mbPtr = (TkMenuButton *)clientData; - (void)x; - (void)y; - (void)width; - (void)height; - (void)imgWidth; - (void)imgHeight; if (mbPtr->tkwin != NULL) { TkpComputeMenuButtonGeometry(mbPtr); if (Tk_IsMapped(mbPtr->tkwin) && !(mbPtr->flags & REDRAW_PENDING)) { Tcl_DoWhenIdle(TkpDisplayMenuButton, mbPtr); Index: generic/tkMenubutton.h ================================================================== --- generic/tkMenubutton.h +++ generic/tkMenubutton.h @@ -53,27 +53,25 @@ * freed up even after tkwin has gone away. */ Tcl_Interp *interp; /* Interpreter associated with menubutton. */ Tcl_Command widgetCmd; /* Token for menubutton's widget command. */ Tk_OptionTable optionTable; /* Table that defines configuration options * available for this widget. */ - char *menuName; /* Name of menu associated with widget. - * Malloc-ed. */ + Tcl_Obj *menuNameObj; /* Name of menu associated with widget. */ /* * Information about what's displayed in the menu button: */ - char *text; /* Text to display in button (malloc'ed) or - * NULL. */ + Tcl_Obj *textObj; /* Text to display in button. May be NULL. */ int underline; /* Index of character to underline. INT_MIN means no underline */ - char *textVarName; /* Name of variable (malloc'ed) or NULL. If + Tcl_Obj *textVarNameObj; /* Name of variable or NULL. If * non-NULL, button displays the contents of * this variable. */ Pixmap bitmap; /* Bitmap to display or None. If not None then * text and textVar and underline are * ignored. */ - char *imageString; /* Name of image to display (malloc'ed), or + Tcl_Obj *imageObj; /* Name of image to display, or * NULL. If non-NULL, bitmap, text, and * textVarName are ignored. */ Tk_Image image; /* Image to display in window, or NULL if * none. */ @@ -87,14 +85,14 @@ * background when window isn't active. NULL * means no such border exists. */ Tk_3DBorder activeBorder; /* Structure used to draw 3-D border and * background when window is active. NULL * means no such border exists. */ - Tcl_Obj *borderWidthObj; /* Width of border. */ + int borderWidth; /* Width of border. */ int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around - * widget when it has the focus. 0 means + int highlightWidth; /* Width in pixels of highlight to draw around + * widget when it has the focus. <= 0 means * don't draw a highlight. */ XColor *highlightBgColorPtr;/* Color for drawing traversal highlight area * when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ int inset; /* Total width of all borders, including @@ -119,22 +117,22 @@ * images when disabled. */ int leftBearing; /* Distance from text origin to leftmost drawn * pixel (positive means to right). */ int rightBearing; /* Amount text sticks right from its * origin. */ - char *widthString; /* Value of -width option. Malloc'ed. */ - char *heightString; /* Value of -height option. Malloc'ed. */ + Tcl_Obj *widthObj; /* Value of -width option. */ + Tcl_Obj *heightObj; /* Value of -height option. */ int width, height; /* If > 0, these specify dimensions to request * for window, in characters for text and in * pixels for bitmaps. In this case the actual * size of the text string or bitmap is * ignored in computing desired window * size. */ - Tcl_Obj *wrapLengthObj; /* Line length (in pixels) at which to wrap - * onto next line. 0 means don't wrap + int wrapLength; /* Line length (in pixels) at which to wrap + * onto next line. <= 0 means don't wrap * except at newlines. */ - Tcl_Obj *padXObj, *padYObj; /* Extra space around text or bitmap (pixels + int padX, padY; /* Extra space around text or bitmap (pixels * on each side). */ Tk_Anchor anchor; /* Where text/bitmap should be displayed * inside window region. */ Tk_Justify justify; /* Justification to use for multi-line * text. */ @@ -169,22 +167,15 @@ * of the menubutton is where the menu pops up. * "left" and "right" will pop the menu left * or right, and the active item will be next * to the button. */ Tk_Cursor cursor; /* Current cursor for window, or NULL. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ int flags; /* Various flags; see below for * definitions. */ -#ifdef BUILD_tk - int borderWidth; - int highlightWidth; - int padX; - int padY; - int wrapLength; -#endif } TkMenuButton; /* * Flag bits for buttons: * Index: generic/tkMessage.c ================================================================== --- generic/tkMessage.c +++ generic/tkMessage.c @@ -36,33 +36,31 @@ /* * Information used when displaying widget: */ - char *string; /* String displayed in message. */ - Tcl_Size numChars; /* Number of characters in string, not - * including terminating NULL. */ - char *textVarName; /* Name of variable (malloc'ed) or NULL. + Tcl_Obj *stringObj; /* String displayed in message. */ + Tcl_Obj *textVarNameObj; /* Name of variable or NULL. * If non-NULL, message displays the contents * of this variable. */ Tk_3DBorder border; /* Structure used to draw 3-D border and * background. NULL means a border hasn't been * created yet. */ - Tcl_Obj *borderWidthObj; /* Width of border. */ + int borderWidth; /* Width of border. */ int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw + int highlightWidth; /* Width in pixels of highlight to draw * around widget when it has the focus. * 0 means don't draw a highlight. */ XColor *highlightBgColorPtr; /* Color for drawing traversal highlight * area when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ Tk_Font tkfont; /* Information about text font, or NULL. */ XColor *fgColorPtr; /* Foreground color in normal mode. */ Tcl_Obj *padXObj, *padYObj; /* Tcl_Obj rep's of padX, padY values. */ - Tcl_Obj *widthObj; /* User-requested width, in pixels. 0 means - * compute width using aspect ratio. */ + int width; /* User-requested width, in pixels. 0 means + * compute width using aspect ratio below. */ int aspect; /* Desired aspect ratio for window * (100*width/height). */ int msgWidth; /* Width in pixels needed to display * message. */ int msgHeight; /* Height in pixels needed to display @@ -78,13 +76,13 @@ /* * Miscellaneous information: */ Tk_Cursor cursor; /* Current cursor for window, or None. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ int flags; /* Various flags; see below for * definitions. */ } Message; /* @@ -117,12 +115,12 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_MESSAGE_BORDER_WIDTH, offsetof(Message, borderWidthObj), - TCL_INDEX_NONE, 0, 0, 0}, + DEF_MESSAGE_BORDER_WIDTH, TCL_INDEX_NONE, + offsetof(Message, borderWidth), 0, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_MESSAGE_CURSOR, TCL_INDEX_NONE, offsetof(Message, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-fg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-foreground", 0}, @@ -135,12 +133,12 @@ offsetof(Message, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_MESSAGE_HIGHLIGHT, TCL_INDEX_NONE, offsetof(Message, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_MESSAGE_HIGHLIGHT_WIDTH, offsetof(Message, highlightWidthObj), - TCL_INDEX_NONE, 0, 0, 0}, + "HighlightThickness", DEF_MESSAGE_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, + offsetof(Message, highlightWidth), 0, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_MESSAGE_JUSTIFY, TCL_INDEX_NONE, offsetof(Message, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", DEF_MESSAGE_PADX, offsetof(Message, padXObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, @@ -148,19 +146,19 @@ DEF_MESSAGE_PADY, offsetof(Message, padYObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_MESSAGE_RELIEF, TCL_INDEX_NONE, offsetof(Message, relief), 0, 0, 0}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_MESSAGE_TAKE_FOCUS, TCL_INDEX_NONE, offsetof(Message, takeFocus), + DEF_MESSAGE_TAKE_FOCUS, offsetof(Message, takeFocusObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-text", "text", "Text", - DEF_MESSAGE_TEXT, TCL_INDEX_NONE, offsetof(Message, string), 0, 0, 0}, + DEF_MESSAGE_TEXT, offsetof(Message, stringObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_STRING, "-textvariable", "textVariable", "Variable", - DEF_MESSAGE_TEXT_VARIABLE, TCL_INDEX_NONE, offsetof(Message, textVarName), + DEF_MESSAGE_TEXT_VARIABLE, offsetof(Message, textVarNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-width", "width", "Width", - DEF_MESSAGE_WIDTH, offsetof(Message, widthObj), TCL_INDEX_NONE, 0, 0 ,0}, + DEF_MESSAGE_WIDTH, TCL_INDEX_NONE, offsetof(Message, width), 0, 0 ,0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0} }; /* * Forward declarations for functions defined later in this file: @@ -399,12 +397,12 @@ Tk_FreeGC(msgPtr->display, msgPtr->textGC); } if (msgPtr->textLayout != NULL) { Tk_FreeTextLayout(msgPtr->textLayout); } - if (msgPtr->textVarName != NULL) { - Tcl_UntraceVar2(msgPtr->interp, msgPtr->textVarName, NULL, + if (msgPtr->textVarNameObj != NULL) { + Tcl_UntraceVar2(msgPtr->interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MessageTextVarProc, msgPtr); } Tk_FreeConfigOptions(msgPtr, msgPtr->optionTable, msgPtr->tkwin); msgPtr->tkwin = NULL; @@ -439,18 +437,18 @@ int objc, /* Number of valid entries in argv. */ Tcl_Obj *const objv[], /* Arguments. */ TCL_UNUSED(int)) /* Flags to pass to Tk_ConfigureWidget. */ { Tk_SavedOptions savedOptions; - int width, borderWidth, highlightWidth, padX, padY; + int padX, padY; /* * Eliminate any existing trace on a variable monitored by the message. */ - if (msgPtr->textVarName != NULL) { - Tcl_UntraceVar2(interp, msgPtr->textVarName, NULL, + if (msgPtr->textVarNameObj != NULL) { + Tcl_UntraceVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MessageTextVarProc, msgPtr); } if (Tk_SetOptions(interp, msgPtr, msgPtr->optionTable, objc, objv, @@ -463,24 +461,25 @@ * If the message is to display the value of a variable, then set up a * trace on the variable's value, create the variable if it doesn't exist, * and fetch its current value. */ - if (msgPtr->textVarName != NULL) { + if (msgPtr->textVarNameObj != NULL) { const char *value; - value = Tcl_GetVar2(interp, msgPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { - Tcl_SetVar2(interp, msgPtr->textVarName, NULL, msgPtr->string, + Tcl_SetVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, Tcl_GetString(msgPtr->stringObj), TCL_GLOBAL_ONLY); } else { - if (msgPtr->string != NULL) { - ckfree(msgPtr->string); + if (msgPtr->stringObj != NULL) { + Tcl_DecrRefCount(msgPtr->stringObj); } - msgPtr->string = strcpy((char *)ckalloc(strlen(value) + 1), value); + msgPtr->stringObj = Tcl_NewStringObj(value, TCL_INDEX_NONE); + Tcl_IncrRefCount(msgPtr->stringObj); } - Tcl_TraceVar2(interp, msgPtr->textVarName, NULL, + Tcl_TraceVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MessageTextVarProc, msgPtr); } /* @@ -487,48 +486,41 @@ * A few other options need special processing, such as setting the * background from a 3-D border or handling special defaults that couldn't * be specified to Tk_ConfigureWidget. */ - msgPtr->numChars = Tcl_NumUtfChars(msgPtr->string, TCL_INDEX_NONE); - - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->widthObj, &width); - if (width < 0) { - if (msgPtr->widthObj) { - Tcl_DecrRefCount(msgPtr->widthObj); - } - msgPtr->widthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(msgPtr->widthObj); - } - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &borderWidth); - if (borderWidth < 0) { - if (msgPtr->borderWidthObj) { - Tcl_DecrRefCount(msgPtr->borderWidthObj); - } - msgPtr->borderWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(msgPtr->borderWidthObj); - } - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth); - if (highlightWidth < 0) { - if (msgPtr->highlightWidthObj) { - Tcl_DecrRefCount(msgPtr->highlightWidthObj); - } - msgPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(msgPtr->highlightWidthObj); - } - if (msgPtr->padXObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); - if (padX < 0) { + if (msgPtr->width < 0) { + msgPtr->width = 0; + } + if (msgPtr->borderWidth < 0) { + msgPtr->borderWidth = 0; + } + if (msgPtr->highlightWidth < 0) { + msgPtr->highlightWidth = 0; + } + if (!msgPtr->padXObj) { + msgPtr->padXObj = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padXObj); + } + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); + if (padX < 0) { + if (strcmp(Tcl_GetString(msgPtr->padXObj), "-1")) { Tcl_DecrRefCount(msgPtr->padXObj); - msgPtr->padXObj = NULL; + msgPtr->padXObj = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padXObj); } } - if (msgPtr->padYObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); - if (padY < 0) { + if (!msgPtr->padYObj) { + msgPtr->padYObj = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padYObj); + } + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); + if (padY < 0) { + if (strcmp(Tcl_GetString(msgPtr->padYObj), "-1")) { Tcl_DecrRefCount(msgPtr->padYObj); - msgPtr->padYObj = NULL; + msgPtr->padYObj = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padYObj); } } Tk_FreeSavedOptions(&savedOptions); MessageWorldChanged(msgPtr); @@ -609,30 +601,27 @@ Message *msgPtr) /* Information about window. */ { int width, inc, height; int thisWidth, thisHeight, maxWidth; int aspect, lowerBound, upperBound, inset; - int borderWidth, highlightWidth, padX, padY; + int padX, padY; Tk_FontMetrics fm; + Tcl_Size numChars; Tk_FreeTextLayout(msgPtr->textLayout); - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth); Tk_GetFontMetrics(msgPtr->tkfont, &fm); - if (msgPtr->padXObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); - } else { + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); + if (padX < 0) { padX = fm.ascent / 2; } - if (msgPtr->padYObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); - } else { + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); + if (padY < 0) { padY = fm.ascent / 4; } - inset = borderWidth + highlightWidth; + inset = msgPtr->borderWidth + msgPtr->highlightWidth; /* * Compute acceptable bounds for the final aspect ratio. */ @@ -649,21 +638,22 @@ * Reduce the size of the change and iterate until dimensions are found * that approximate the desired aspect ratio. Or, if the user gave an * explicit width then just use that. */ - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->widthObj, &width); + width = msgPtr->width; if (width > 0) { inc = 0; } else { width = WidthOfScreen(Tk_Screen(msgPtr->tkwin))/2; inc = width/2; } + numChars = TkGetCharLength(msgPtr->stringObj); for ( ; ; inc /= 2) { msgPtr->textLayout = Tk_ComputeTextLayout(msgPtr->tkfont, - msgPtr->string, msgPtr->numChars, width, msgPtr->justify, + Tcl_GetString(msgPtr->stringObj), numChars, width, msgPtr->justify, 0, &thisWidth, &thisHeight); maxWidth = thisWidth + 2 * (inset + padX); height = thisHeight + 2 * (inset + padY); if (inc <= 2) { @@ -707,37 +697,33 @@ void *clientData) /* Information about window. */ { Message *msgPtr = (Message *)clientData; Tk_Window tkwin = msgPtr->tkwin; int x, y; - int width, borderWidth, highlightWidth, padX, padY; + int width, padX, padY; Tk_FontMetrics fm; - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth); Tk_GetFontMetrics(msgPtr->tkfont, &fm); - if (msgPtr->padXObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); - } else { + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXObj, &padX); + if (padX < 0) { padX = fm.ascent / 2; } - if (msgPtr->padYObj) { - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); - } else { + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYObj, &padY); + if (padY < 0) { padY = fm.ascent / 4; } - width = highlightWidth; + width = msgPtr->highlightWidth; msgPtr->flags &= ~REDRAW_PENDING; if ((msgPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } if (msgPtr->border != NULL) { - width += borderWidth; + width += msgPtr->borderWidth; } if (msgPtr->relief == TK_RELIEF_FLAT) { - width = highlightWidth; + width = msgPtr->highlightWidth; } Tk_Fill3DRectangle(tkwin, Tk_WindowId(tkwin), msgPtr->border, width, width, Tk_Width(tkwin) - 2 * width, Tk_Height(tkwin) - 2 * width, @@ -751,27 +737,27 @@ TkComputeAnchor(msgPtr->anchor, tkwin, padX, padY, msgPtr->msgWidth, msgPtr->msgHeight, &x, &y); Tk_DrawTextLayout(Tk_Display(tkwin), Tk_WindowId(tkwin), msgPtr->textGC, msgPtr->textLayout, x, y, 0, -1); - if (width > highlightWidth) { + if (width > msgPtr->highlightWidth) { Tk_Draw3DRectangle(tkwin, Tk_WindowId(tkwin), msgPtr->border, - highlightWidth, highlightWidth, - Tk_Width(tkwin) - 2 * highlightWidth, - Tk_Height(tkwin) - 2 * highlightWidth, - borderWidth, msgPtr->relief); + msgPtr->highlightWidth, msgPtr->highlightWidth, + Tk_Width(tkwin) - 2 * msgPtr->highlightWidth, + Tk_Height(tkwin) - 2 * msgPtr->highlightWidth, + msgPtr->borderWidth, msgPtr->relief); } - if (highlightWidth > 0) { + if (msgPtr->highlightWidth > 0) { GC fgGC, bgGC; bgGC = Tk_GCForColor(msgPtr->highlightBgColorPtr, Tk_WindowId(tkwin)); if (msgPtr->flags & GOT_FOCUS) { fgGC = Tk_GCForColor(msgPtr->highlightColorPtr,Tk_WindowId(tkwin)); - Tk_DrawHighlightBorder(tkwin, fgGC, bgGC, highlightWidth, + Tk_DrawHighlightBorder(tkwin, fgGC, bgGC, msgPtr->highlightWidth, Tk_WindowId(tkwin)); } else { - Tk_DrawHighlightBorder(tkwin, bgGC, bgGC, highlightWidth, + Tk_DrawHighlightBorder(tkwin, bgGC, bgGC, msgPtr->highlightWidth, Tk_WindowId(tkwin)); } } } @@ -797,30 +783,27 @@ MessageEventProc( void *clientData, /* Information about window. */ XEvent *eventPtr) /* Information about event. */ { Message *msgPtr = (Message *)clientData; - int highlightWidth; if (((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) || (eventPtr->type == ConfigureNotify)) { goto redraw; } else if (eventPtr->type == DestroyNotify) { DestroyMessage(clientData); } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { msgPtr->flags |= GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (msgPtr->highlightWidth > 0) { goto redraw; } } } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { msgPtr->flags &= ~GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (msgPtr->highlightWidth > 0) { goto redraw; } } } return; @@ -900,16 +883,16 @@ * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { - if (!Tcl_InterpDeleted(interp) && msgPtr->textVarName) { + if (!Tcl_InterpDeleted(interp) && msgPtr->textVarNameObj) { void *probe = NULL; do { probe = Tcl_VarTraceInfo(interp, - msgPtr->textVarName, + Tcl_GetString(msgPtr->textVarNameObj), TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MessageTextVarProc, probe); if (probe == (void *)msgPtr) { break; } @@ -921,29 +904,28 @@ * the cause of this unset trace. Instead some outdated * former variable must be, and we should ignore it. */ return NULL; } - Tcl_SetVar2(interp, msgPtr->textVarName, NULL, msgPtr->string, + Tcl_SetVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, Tcl_GetString(msgPtr->stringObj), TCL_GLOBAL_ONLY); - Tcl_TraceVar2(interp, msgPtr->textVarName, NULL, + Tcl_TraceVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MessageTextVarProc, clientData); } return NULL; } - value = Tcl_GetVar2(interp, msgPtr->textVarName, NULL, TCL_GLOBAL_ONLY); + value = Tcl_GetVar2(interp, Tcl_GetString(msgPtr->textVarNameObj), NULL, TCL_GLOBAL_ONLY); if (value == NULL) { value = ""; } - if (msgPtr->string != NULL) { - ckfree(msgPtr->string); + if (msgPtr->stringObj != NULL) { + Tcl_DecrRefCount(msgPtr->stringObj); } - msgPtr->numChars = Tcl_NumUtfChars(value, TCL_INDEX_NONE); - msgPtr->string = (char *)ckalloc(strlen(value) + 1); - strcpy(msgPtr->string, value); + msgPtr->stringObj = Tcl_NewStringObj(value, TCL_INDEX_NONE); + Tcl_IncrRefCount(msgPtr->stringObj); ComputeMessageGeometry(msgPtr); if ((msgPtr->tkwin != NULL) && Tk_IsMapped(msgPtr->tkwin) && !(msgPtr->flags & REDRAW_PENDING)) { Tcl_DoWhenIdle(DisplayMessage, msgPtr); Index: generic/tkObj.c ================================================================== --- generic/tkObj.c +++ generic/tkObj.c @@ -93,10 +93,39 @@ static ThreadSpecificData *GetTypeCache(void); static void UpdateStringOfMM(Tcl_Obj *objPtr); static int SetMMFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); static int SetPixelFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); static int SetWindowFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); + +#if TCL_MAJOR_VERSION < 9 +#ifdef __cplusplus +extern "C" { +#endif +#if defined(USE_TCL_STUBS) +/* Little hack to eliminate the need for "tclInt.h" here: + Just copy a small portion of TclIntStubs, just + enough to make it work */ +typedef struct TclIntStubs { + int magic; + void *hooks; + void (*dummy[34]) (void); /* dummy entries 0-33, not used */ + int (*tclGetIntForIndex) (Tcl_Interp *interp, Tcl_Obj *objPtr, int endValue, int *indexPtr); /* 34 */ +} TclIntStubs; +extern const TclIntStubs *tclIntStubsPtr; + +# undef Tcl_GetIntForIndex +# define Tcl_GetIntForIndex(interp, obj, max, ptr) ((tclIntStubsPtr->tclGetIntForIndex == NULL)? \ + ((int (*)(Tcl_Interp*, Tcl_Obj *, int, int*))(void *)((&(tclStubsPtr->tcl_PkgProvideEx))[645]))((interp), (obj), (max), (ptr)): \ + tclIntStubsPtr->tclGetIntForIndex((interp), (obj), (max), (ptr))) +#elif TCL_MINOR_VERSION < 7 +extern int TclGetIntForIndex(Tcl_Interp*, Tcl_Obj *, int, int*); +# define Tcl_GetIntForIndex(interp, obj, max, ptr) TclGetIntForIndex(interp, obj, max, ptr) +#endif +#ifdef __cplusplus +} +#endif +#endif /* * The following structure defines the implementation of the "pixel" Tcl * object, used for measuring distances. The pixel object remembers its * initial display-independent settings. Index: generic/tkOldConfig.c ================================================================== --- generic/tkOldConfig.c +++ generic/tkOldConfig.c @@ -59,11 +59,11 @@ * Results: * A standard Tcl return value. In case of an error, the interp's result * will hold an error message. * * Side effects: - * The fields of widgRec get filled in with information from objc/objv + * The fields of widgRec get filled in with information from argc/argv * and the option database. Old information in widgRec's fields gets * recycled. A copy of the spec-table is taken with (some of) the char* * fields converted into Tk_Uid fields; this copy will be released when * the interpreter terminates. * @@ -74,12 +74,12 @@ Tk_ConfigureWidget( Tcl_Interp *interp, /* Interpreter for error reporting. */ Tk_Window tkwin, /* Window containing widget (needed to set up * X resources). */ const Tk_ConfigSpec *specs, /* Describes legal options. */ - Tcl_Size objc, /* Number of elements in objv. */ - Tcl_Obj *const *objv, /* Command-line options. */ + Tcl_Size argc, /* Number of elements in argv. */ + const char **argv, /* Command-line options. */ void *widgRec, /* Record whose fields are to be modified. * Values must be properly initialized. */ int flags) /* Used to specify additional flags that must * be present in config specs for them to be * considered. Also, may have @@ -89,10 +89,11 @@ Tk_Uid value; /* Value of option from database. */ int needFlags; /* Specs must contain this set of flags or * else they are not considered. */ int hateFlags; /* If a spec contains any bits here, it's not * considered. */ + Tcl_Obj *obj; if (tkwin == NULL) { /* * Either we're not really in Tk, or the main window was destroyed and * we're on our way out of the application @@ -123,33 +124,57 @@ /* * Pass one: scan through all of the arguments, processing those that * match entries in the specs. */ - for ( ; objc > 0; objc -= 2, objv += 2) { + for ( ; argc > 0; argc -= 2, argv += 2) { const char *arg; - arg = Tcl_GetString(*objv); + if (flags & TK_CONFIG_OBJS) { + arg = Tcl_GetString((Tcl_Obj *)*argv); + } else { + arg = *argv; +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#endif + } specPtr = FindConfigSpec(interp, staticSpecs, arg, needFlags, hateFlags); if (specPtr == NULL) { return TCL_ERROR; } /* * Process the entry. */ - if (objc < 2) { + if (argc < 2) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", arg)); Tcl_SetErrorCode(interp, "TK", "VALUE_MISSING", (char *)NULL); return TCL_ERROR; } - if (DoConfig(interp, tkwin, specPtr, objv[1], widgRec) != TCL_OK) { + if (flags & TK_CONFIG_OBJS) { + obj = (Tcl_Obj *)argv[1]; + arg = Tcl_GetString(obj); + } else { + arg = argv[1]; + obj = Tcl_NewStringObj(arg, TCL_INDEX_NONE); + Tcl_IncrRefCount(obj); +#if defined(TK_NO_DEPRECATED) || (TK_MAJOR_VERSION > 8) + Tcl_Panic("Flag TK_CONFIG_OBJS is mandatory"); +#endif + } + if (DoConfig(interp, tkwin, specPtr, obj, widgRec) != TCL_OK) { Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( - "\n (processing \"%.40s\" option)",specPtr->argvName)); + "\n (processing \"%.40s\" option)", specPtr->argvName)); + if (!(flags & TK_CONFIG_OBJS)) { + Tcl_DecrRefCount(obj); + } return TCL_ERROR; + } + if (!(flags & TK_CONFIG_OBJS)) { + Tcl_DecrRefCount(obj); } if (!(flags & TK_CONFIG_ARGV_ONLY)) { specPtr->specFlags |= TK_CONFIG_OPTION_SPECIFIED; } } @@ -187,18 +212,13 @@ Tcl_DecrRefCount(arg); return TCL_ERROR; } Tcl_DecrRefCount(arg); } else { - if (specPtr->defValue != NULL) { - value = Tk_GetUid(specPtr->defValue); - } else { - value = NULL; - } - if ((value != NULL) && !(specPtr->specFlags + if ((specPtr->defValue != NULL) && !(specPtr->specFlags & TK_CONFIG_DONT_SET_DEFAULT)) { - Tcl_Obj *arg = Tcl_NewStringObj(value, TCL_INDEX_NONE); + Tcl_Obj *arg = Tcl_NewStringObj(specPtr->defValue, TCL_INDEX_NONE); Tcl_IncrRefCount(arg); if (DoConfig(interp, tkwin, specPtr, arg, widgRec) != TCL_OK) { Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( "\n (%s \"%.50s\" in widget \"%.50s\")", @@ -349,12 +369,13 @@ if ((*value == 0) && (specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK|1))) { nullValue = 1; } - if (specPtr->specFlags & TK_CONFIG_OBJS) { - /* Prevent surprises, TK_CONFIG_OBJS is not supported yet */ + if ((specPtr->specFlags & TK_CONFIG_OBJS) && (specPtr->type != TK_CONFIG_STRING) + && (specPtr->type != TK_CONFIG_PIXELS)) { + /* Prevent surprises for other options than TK_CONFIG_(STRING|PIXELS) */ Tcl_AppendResult(interp, "TK_CONFIG_OBJS not supported", (char *)NULL); return TCL_ERROR; } do { if (specPtr->offset < 0) { @@ -380,17 +401,24 @@ case TK_CONFIG_STRING: { char *oldStr, *newStr; if (nullValue) { newStr = NULL; + } else if (specPtr->specFlags & TK_CONFIG_OBJS) { + Tcl_IncrRefCount(arg); + newStr = (char *)arg; } else { newStr = (char *)ckalloc(strlen(value) + 1); strcpy(newStr, value); } oldStr = *((char **)ptr); if (oldStr != NULL) { - ckfree(oldStr); + if (specPtr->specFlags & TK_CONFIG_OBJS) { + Tcl_DecrRefCount((Tcl_Obj *)oldStr); + } else { + ckfree(oldStr); + } } *((char **)ptr) = newStr; break; } case TK_CONFIG_UID: @@ -422,11 +450,11 @@ Tk_Font newFont; if (nullValue) { newFont = NULL; } else { - newFont = Tk_GetFont(interp, tkwin, value); + newFont = Tk_AllocFontFromObj(interp, tkwin, arg); if (newFont == NULL) { return TCL_ERROR; } } Tk_FreeFont(*((Tk_Font *)ptr)); @@ -437,11 +465,11 @@ Pixmap newBmp, oldBmp; if (nullValue) { newBmp = None; } else { - newBmp = Tk_GetBitmap(interp, tkwin, value); + newBmp = Tk_AllocBitmapFromObj(interp, tkwin, arg); if (newBmp == None) { return TCL_ERROR; } } oldBmp = *((Pixmap *)ptr); @@ -515,11 +543,28 @@ if (Tk_GetJoinStyle(interp, value, (int *)ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_PIXELS: - if (nullValue) { + if (specPtr->specFlags & TK_CONFIG_OBJS) { + int dummy; + if (nullValue) { + if (*(Tcl_Obj **)ptr != NULL) { + Tcl_DecrRefCount(*(Tcl_Obj **)ptr); + *(Tcl_Obj **)ptr = NULL; + } + } else if (Tk_GetPixelsFromObj(interp, tkwin, arg, &dummy) + != TCL_OK) { + return TCL_ERROR; + } else { + Tcl_IncrRefCount(arg); + if (*(Tcl_Obj **)ptr != NULL) { + Tcl_DecrRefCount(*(Tcl_Obj **)ptr); + } + *(Tcl_Obj **)ptr = arg; + } + } else if (nullValue) { *(int *)ptr = INT_MIN; } else if (Tk_GetPixelsFromObj(interp, tkwin, arg, (int *)ptr) != TCL_OK) { return TCL_ERROR; } @@ -769,10 +814,16 @@ if (specPtr->offset < 0) { return NULL; } ptr = (char *)widgRec + specPtr->offset; result = ""; + if (specPtr->specFlags & TK_CONFIG_OBJS) { + if (*(Tcl_Obj **)ptr != NULL) { + result = Tcl_GetString(*(Tcl_Obj **)ptr); + } + return result; + } switch (specPtr->type) { case TK_CONFIG_BOOLEAN: if (*((int *)ptr) == 0) { result = "0"; } else { @@ -786,11 +837,11 @@ case TK_CONFIG_DOUBLE: Tcl_PrintDouble(interp, *((double *)ptr), buffer); result = buffer; break; case TK_CONFIG_STRING: - result = (*(char **)ptr); + result = *(char **)ptr; if (result == NULL) { result = ""; } break; case TK_CONFIG_UID: { @@ -994,10 +1045,15 @@ } if (specPtr->offset < 0) { continue; } ptr = (char *)widgRec + specPtr->offset; + if ((specPtr->specFlags & TK_CONFIG_OBJS) && (*(Tcl_Obj **)ptr != NULL)) { + Tcl_DecrRefCount(*(Tcl_Obj **)ptr); + *(Tcl_Obj **)ptr = NULL; + continue; + } switch (specPtr->type) { case TK_CONFIG_STRING: if (*((char **)ptr) != NULL) { ckfree(*((char **)ptr)); *((char **)ptr) = NULL; ADDED generic/tkOldTest.c Index: generic/tkOldTest.c ================================================================== --- /dev/null +++ generic/tkOldTest.c @@ -0,0 +1,416 @@ +/* + * tkOldTest.c -- + * + * This file contains C command functions for additional Tcl + * commands that are used to test Tk's support for legacy + * interfaces. These commands are not normally included in Tcl/Tk + * applications; they're only used for testing. + * + * Copyright © 1993-1994 The Regents of the University of California. + * Copyright © 1994-1997 Sun Microsystems, Inc. + * Copyright © 1998-1999 Scriptics Corporation. + * Contributions by Don Porter, NIST, 2007. (not subject to US copyright) + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ + +#define USE_OLD_IMAGE +#ifndef USE_TCL_STUBS +# define USE_TCL_STUBS +#endif +#ifndef USE_TK_STUBS +# define USE_TK_STUBS +#endif +#include "tkInt.h" + +#ifdef _WIN32 +#include "tkWinInt.h" +#endif + +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) +/* + * The following data structure represents the model for a test image: + */ + +typedef struct TImageModel { + Tk_ImageModel model; /* Tk's token for image model. */ + Tcl_Interp *interp; /* Interpreter for application. */ + int width, height; /* Dimensions of image. */ + char *imageName; /* Name of image (malloc-ed). */ + char *varName; /* Name of variable in which to log events for + * image (malloc-ed). */ +} TImageModel; + +/* + * The following data structure represents a particular use of a particular + * test image. + */ + +typedef struct TImageInstance { + TImageModel *modelPtr; /* Pointer to model for image. */ + XColor *fg; /* Foreground color for drawing in image. */ + GC gc; /* Graphics context for drawing in image. */ +} TImageInstance; + +/* + * The type record for test images: + */ + +static int ImageCreate(Tcl_Interp *interp, + char *name, Tcl_Size argc, char **argv, + Tk_ImageType *typePtr, Tk_ImageModel model, + void **clientDataPtr); +static void *ImageGet(Tk_Window tkwin, void *clientData); +static void ImageDisplay(void *clientData, + Display *display, Drawable drawable, + int imageX, int imageY, int width, + int height, int drawableX, + int drawableY); +static void ImageFree(void *clientData, Display *display); +static void ImageDelete(void *clientData); + +static Tk_ImageType imageType = { + "oldtest", /* name */ + (Tk_ImageCreateProc *) ImageCreate, /* createProc */ + ImageGet, /* getProc */ + ImageDisplay, /* displayProc */ + ImageFree, /* freeProc */ + ImageDelete, /* deleteProc */ + NULL, /* postscriptPtr */ + NULL, /* nextPtr */ + NULL +}; + +/* + * Forward declarations for functions defined later in this file: + */ + +static Tcl_ObjCmdProc ImageObjCmd; +#endif + +/* + *---------------------------------------------------------------------- + * + * TkOldTestInit -- + * + * This function performs initialization for the Tk test suite + * extensions for testing support for legacy interfaces. + * + * Results: + * Returns a standard Tcl completion code, and leaves an error message in + * the interp's result if an error occurs. + * + * Side effects: + * Creates several test commands. + * + *---------------------------------------------------------------------- + */ + +int +TkOldTestInit( + Tcl_Interp *dummy) +{ + static int initialized = 0; + (void)dummy; + + if (!initialized) { + initialized = 1; +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) + Tk_CreateImageType(&imageType); +#endif + } + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * ImageCreate -- + * + * This function is called by the Tk image code to create "oldtest" images. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * The data structure for a new image is allocated. + * + *---------------------------------------------------------------------- + */ +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) +static int +ImageCreate( + Tcl_Interp *interp, /* Interpreter for application containing + * image. */ + char *name, /* Name to use for image. */ + Tcl_Size argc, /* Number of arguments. */ + char **argv, /* Argument strings for options (doesn't + * include image name or type). */ + Tk_ImageType *typePtr, /* Pointer to our type record (not used). */ + Tk_ImageModel model, /* Token for image, to be used by us in later + * callbacks. */ + void **clientDataPtr) /* Store manager's token for image here; it + * will be returned in later callbacks. */ +{ + TImageModel *timPtr; + const char *varName; + Tcl_Size i; + (void)typePtr; + + varName = "log"; + for (i = 0; i < argc; i += 2) { + if (strcmp(argv[i], "-variable") != 0) { + Tcl_AppendResult(interp, "bad option name \"", + argv[i], "\"", NULL); + return TCL_ERROR; + } + if ((i+1) == argc) { + Tcl_AppendResult(interp, "no value given for \"", + argv[i], "\" option", NULL); + return TCL_ERROR; + } + varName = argv[i+1]; + } + + timPtr = (TImageModel *)ckalloc(sizeof(TImageModel)); + timPtr->model = model; + 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_CreateObjCommand(interp, name, ImageObjCmd, timPtr, NULL); + *clientDataPtr = timPtr; + Tk_ImageChanged(model, 0, 0, 30, 15, 30, 15); + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * ImageObjCmd -- + * + * This function implements the commands corresponding to individual + * images. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * Forces windows to be created. + * + *---------------------------------------------------------------------- + */ + +static int +ImageObjCmd( + void *clientData, /* Main window for application. */ + Tcl_Interp *interp, /* Current interpreter. */ + int 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 ...?"); + return TCL_ERROR; + } + if (strcmp(Tcl_GetString(objv[1]), "changed") == 0) { + if (objc != 8) { + Tcl_WrongNumArgs(interp, 1, objv, "changed x y width height" + " imageWidth imageHeight"); + return TCL_ERROR; + } + if ((Tcl_GetIntFromObj(interp, objv[2], &x) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[3], &y) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[4], &width) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[5], &height) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[6], &timPtr->width) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[7], &timPtr->height) != TCL_OK)) { + return TCL_ERROR; + } + Tk_ImageChanged(timPtr->model, x, y, width, height, timPtr->width, + timPtr->height); + } else { + Tcl_AppendResult(interp, "bad option \"", Tcl_GetString(objv[1]), + "\": must be changed", NULL); + return TCL_ERROR; + } + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * ImageGet -- + * + * This function is called by Tk to set things up for using a test image + * in a particular widget. + * + * Results: + * The return value is a token for the image instance, which is used in + * future callbacks to ImageDisplay and ImageFree. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void * +ImageGet( + Tk_Window tkwin, /* Token for window in which image will be + * used. */ + void *clientData) /* Pointer to TImageModel for image. */ +{ + TImageModel *timPtr = (TImageModel *)clientData; + TImageInstance *instPtr; + char buffer[100]; + XGCValues gcValues; + + snprintf(buffer, sizeof(buffer), "%s get", timPtr->imageName); + Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer, + TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT); + + instPtr = (TImageInstance *)ckalloc(sizeof(TImageInstance)); + instPtr->modelPtr = timPtr; + instPtr->fg = Tk_GetColor(timPtr->interp, tkwin, "#ff0000"); + gcValues.foreground = instPtr->fg->pixel; + instPtr->gc = Tk_GetGC(tkwin, GCForeground, &gcValues); + return instPtr; +} + +/* + *---------------------------------------------------------------------- + * + * ImageDisplay -- + * + * This function is invoked to redisplay part or all of an image in a + * given drawable. + * + * Results: + * None. + * + * Side effects: + * The image gets partially redrawn, as an "X" that shows the exact + * redraw area. + * + *---------------------------------------------------------------------- + */ + +static void +ImageDisplay( + void *clientData, /* Pointer to TImageInstance for image. */ + Display *display, /* Display to use for drawing. */ + Drawable drawable, /* Where to redraw image. */ + int imageX, int imageY, /* Origin of area to redraw, relative to + * origin of image. */ + int width, int height, /* Dimensions of area to redraw. */ + int drawableX, int drawableY) + /* Coordinates in drawable corresponding to + * imageX and imageY. */ +{ + TImageInstance *instPtr = (TImageInstance *)clientData; + char buffer[200 + TCL_INTEGER_SPACE * 6]; + + snprintf(buffer, sizeof(buffer), "%s display %d %d %d %d %d %d", + instPtr->modelPtr->imageName, imageX, imageY, width, height, + drawableX, drawableY); + Tcl_SetVar2(instPtr->modelPtr->interp, instPtr->modelPtr->varName, NULL, + buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT); + if (width > (instPtr->modelPtr->width - imageX)) { + width = instPtr->modelPtr->width - imageX; + } + if (height > (instPtr->modelPtr->height - imageY)) { + height = instPtr->modelPtr->height - imageY; + } + XDrawRectangle(display, drawable, instPtr->gc, drawableX, drawableY, + (unsigned) (width-1), (unsigned) (height-1)); + XDrawLine(display, drawable, instPtr->gc, drawableX, drawableY, + (int) (drawableX + width - 1), (int) (drawableY + height - 1)); + XDrawLine(display, drawable, instPtr->gc, drawableX, + (int) (drawableY + height - 1), + (int) (drawableX + width - 1), drawableY); +} + +/* + *---------------------------------------------------------------------- + * + * ImageFree -- + * + * This function is called when an instance of an image is no longer + * used. + * + * Results: + * None. + * + * Side effects: + * Information related to the instance is freed. + * + *---------------------------------------------------------------------- + */ + +static void +ImageFree( + void *clientData, /* Pointer to TImageInstance for instance. */ + Display *display) /* Display where image was to be drawn. */ +{ + TImageInstance *instPtr = (TImageInstance *)clientData; + char buffer[200]; + + snprintf(buffer, sizeof(buffer), "%s free", instPtr->modelPtr->imageName); + Tcl_SetVar2(instPtr->modelPtr->interp, instPtr->modelPtr->varName, NULL, + buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT); + Tk_FreeColor(instPtr->fg); + Tk_FreeGC(display, instPtr->gc); + ckfree(instPtr); +} + +/* + *---------------------------------------------------------------------- + * + * ImageDelete -- + * + * This function is called to clean up a test image when an application + * goes away. + * + * Results: + * None. + * + * Side effects: + * Information about the image is deleted. + * + *---------------------------------------------------------------------- + */ + +static void +ImageDelete( + void *clientData) /* Pointer to TImageModel for image. When + * this function is called, no more instances + * exist. */ +{ + TImageModel *timPtr = (TImageModel *)clientData; + char buffer[100]; + + snprintf(buffer, sizeof(buffer), "%s delete", timPtr->imageName); + Tcl_SetVar2(timPtr->interp, timPtr->varName, NULL, buffer, + TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT); + + Tcl_DeleteCommand(timPtr->interp, timPtr->imageName); + ckfree(timPtr->imageName); + ckfree(timPtr->varName); + ckfree(timPtr); +} +#endif + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ Index: generic/tkPack.c ================================================================== --- generic/tkPack.c +++ generic/tkPack.c @@ -120,10 +120,14 @@ static void ArrangePacking(void *clientData); static int ConfigureContent(Tcl_Interp *interp, Tk_Window tkwin, int objc, Tcl_Obj *const objv[]); static Tcl_FreeProc DestroyPacker; static Packer * GetPacker(Tk_Window tkwin); +#ifndef TK_NO_DEPRECATED +static int PackAfter(Tcl_Interp *interp, Packer *prevPtr, + Packer *containerPtr, int objc,Tcl_Obj *const objv[]); +#endif /* !TK_NO_DEPRECATED */ static void PackStructureProc(void *clientData, XEvent *eventPtr); static void Unlink(Packer *packPtr); static int XExpansion(Packer *contentPtr, int cavityWidth); static int YExpansion(Packer *contentPtr, int cavityHeight); @@ -193,14 +197,20 @@ Tcl_Obj *const objv[]) /* Argument objects. */ { Tk_Window tkwin = (Tk_Window)clientData; const char *argv2; static const char *const optionStrings[] = { +#ifndef TK_NO_DEPRECATED + "after", "append", "before", "unpack", +#endif /* !TK_NO_DEPRECATED */ "configure", "content", "forget", "info", "propagate", "slaves", NULL }; static const char *const optionStringsNoDep[] = { "configure", "content", "forget", "info", "propagate", NULL }; enum options { +#ifndef TK_NO_DEPRECATED + PACK_AFTER, PACK_APPEND, PACK_BEFORE, PACK_UNPACK, +#endif /* !TK_NO_DEPRECATED */ PACK_CONFIGURE, PACK_CONTENT, PACK_FORGET, PACK_INFO, PACK_PROPAGATE, PACK_SLAVES }; int index; if (objc >= 2) { const char *string = Tcl_GetString(objv[1]); @@ -227,15 +237,87 @@ return TCL_ERROR; } argv2 = Tcl_GetString(objv[2]); switch ((enum options) index) { +#ifndef TK_NO_DEPRECATED + case PACK_AFTER: { + Packer *prevPtr; + Tk_Window tkwin2; + + if (TkGetWindowFromObj(interp, tkwin, objv[2], &tkwin2) != TCL_OK) { + return TCL_ERROR; + } + if (!(prevPtr = GetPacker(tkwin2))) { + return TCL_OK; + } + if (prevPtr->containerPtr == NULL) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "window \"%s\" isn't packed", argv2)); + Tcl_SetErrorCode(interp, "TK", "PACK", "NOT_PACKED", (char *)NULL); + return TCL_ERROR; + } + return PackAfter(interp, prevPtr, prevPtr->containerPtr, objc-3, objv+3); + } + case PACK_APPEND: { + Packer *containerPtr; + Packer *prevPtr; + Tk_Window tkwin2; + + if (TkGetWindowFromObj(interp, tkwin, objv[2], &tkwin2) != TCL_OK) { + return TCL_ERROR; + } + if (!(containerPtr = GetPacker(tkwin2))) { + return TCL_OK; + } + prevPtr = containerPtr->contentPtr; + if (prevPtr != NULL) { + while (prevPtr->nextPtr != NULL) { + prevPtr = prevPtr->nextPtr; + } + } + return PackAfter(interp, prevPtr, containerPtr, objc-3, objv+3); + } + case PACK_BEFORE: { + Packer *packPtr, *containerPtr; + Packer *prevPtr; + Tk_Window tkwin2; + + if (TkGetWindowFromObj(interp, tkwin, objv[2], &tkwin2) != TCL_OK) { + return TCL_ERROR; + } + if (!(packPtr = GetPacker(tkwin2))) { + return TCL_OK; + } + if (packPtr->containerPtr == NULL) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "window \"%s\" isn't packed", argv2)); + Tcl_SetErrorCode(interp, "TK", "PACK", "NOT_PACKED", (char *)NULL); + return TCL_ERROR; + } + containerPtr = packPtr->containerPtr; + prevPtr = containerPtr->contentPtr; + if (prevPtr == packPtr) { + prevPtr = NULL; + } else { + for ( ; ; prevPtr = prevPtr->nextPtr) { + if (prevPtr == NULL) { + Tcl_Panic("\"pack before\" couldn't find predecessor"); + } + if (prevPtr->nextPtr == packPtr) { + break; + } + } + } + return PackAfter(interp, prevPtr, containerPtr, objc-3, objv+3); + } +#endif /* !TK_NO_DEPRECATED */ case PACK_CONFIGURE: if (argv2[0] != '.') { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad argument \"%s\": must be name of window", argv2)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "WINDOW_PATH", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "WINDOW_PATH", (char *)NULL); return TCL_ERROR; } return ConfigureContent(interp, tkwin, objc-2, objv+2); case PACK_FORGET: { Tk_Window content; @@ -244,11 +326,13 @@ for (i = 2; i < objc; i++) { if (TkGetWindowFromObj(interp, tkwin, objv[i], &content) != TCL_OK) { continue; } - contentPtr = GetPacker(content); + if (!(contentPtr = GetPacker(content))) { + continue; + } if ((contentPtr != NULL) && (contentPtr->containerPtr != NULL)) { Tk_ManageGeometry(content, NULL, NULL); if (contentPtr->containerPtr->tkwin != Tk_Parent(contentPtr->tkwin)) { Tk_UnmaintainGeometry(contentPtr->tkwin, contentPtr->containerPtr->tkwin); @@ -269,15 +353,17 @@ return TCL_ERROR; } if (TkGetWindowFromObj(interp, tkwin, objv[2], &content) != TCL_OK) { return TCL_ERROR; } - contentPtr = GetPacker(content); + if (!(contentPtr = GetPacker(content))) { + return TCL_OK; + } if (contentPtr->containerPtr == NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't packed", argv2)); - Tcl_SetErrorCode(interp, "TK", "PACK", "NOT_PACKED", NULL); + Tcl_SetErrorCode(interp, "TK", "PACK", "NOT_PACKED", (char *)NULL); return TCL_ERROR; } infoObj = Tcl_NewObj(); Tcl_DictObjPut(NULL, infoObj, Tcl_NewStringObj("-in", TCL_INDEX_NONE), @@ -323,11 +409,13 @@ return TCL_ERROR; } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetPacker(container); + if (!(containerPtr = GetPacker(container))) { + return TCL_OK; + } if (objc == 3) { Tcl_SetObjResult(interp, Tcl_NewBooleanObj(!(containerPtr->flags & DONT_PROPAGATE))); return TCL_OK; } @@ -380,19 +468,46 @@ } if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) { return TCL_ERROR; } resultObj = Tcl_NewObj(); - containerPtr = GetPacker(container); + if (!(containerPtr = GetPacker(container))) { + return TCL_OK; + } for (contentPtr = containerPtr->contentPtr; contentPtr != NULL; contentPtr = contentPtr->nextPtr) { Tcl_ListObjAppendElement(NULL, resultObj, Tk_NewWindowObj(contentPtr->tkwin)); } Tcl_SetObjResult(interp, resultObj); break; } +#ifndef TK_NO_DEPRECATED + case PACK_UNPACK: { + Tk_Window tkwin2; + Packer *packPtr; + + if (objc != 3) { + Tcl_WrongNumArgs(interp, 2, objv, "window"); + return TCL_ERROR; + } + if (TkGetWindowFromObj(interp, tkwin, objv[2], &tkwin2) != TCL_OK) { + return TCL_ERROR; + } + packPtr = GetPacker(tkwin2); + if (packPtr && (packPtr->containerPtr != NULL)) { + Tk_ManageGeometry(tkwin2, NULL, NULL); + if (packPtr->containerPtr->tkwin != Tk_Parent(packPtr->tkwin)) { + Tk_UnmaintainGeometry(packPtr->tkwin, + packPtr->containerPtr->tkwin); + } + Unlink(packPtr); + Tk_UnmapWindow(packPtr->tkwin); + } + break; + } +#endif /* !TK_NO_DEPRECATED */ } return TCL_OK; } @@ -917,15 +1032,16 @@ *------------------------------------------------------------------------ * * GetPacker -- * * This internal function is used to locate a Packer structure for a - * given window, creating one if one doesn't exist already. + * window, creating one if one doesn't exist already, except if the window + * is already dead. * * Results: * The return value is a pointer to the Packer structure corresponding to - * tkwin. + * tkwin, or NULL when tkwin is already dead. * * Side effects: * A new packer structure may be created. If so, then a callback is set * up to clean things up when the window is deleted. * @@ -939,10 +1055,14 @@ { Packer *packPtr; Tcl_HashEntry *hPtr; int isNew; TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; + + if (((TkWindow *) tkwin)->flags & TK_ALREADY_DEAD) { + return NULL; + } if (!dispPtr->packInit) { dispPtr->packInit = 1; Tcl_InitHashTable(&dispPtr->packerHashTable, TCL_ONE_WORD_KEYS); } @@ -974,10 +1094,254 @@ Tk_CreateEventHandler(tkwin, StructureNotifyMask, PackStructureProc, packPtr); return packPtr; } +/* + *------------------------------------------------------------------------ + * + * PackAfter -- + * + * This function does most of the real work of adding one or more windows + * into the packing order for its container. + * + * Results: + * A standard Tcl return value. + * + * Side effects: + * The geometry of the specified windows may change, both now and again + * in the future. + * + *------------------------------------------------------------------------ + */ + +#ifndef TK_NO_DEPRECATED +static int +PackAfter( + Tcl_Interp *interp, /* Interpreter for error reporting. */ + Packer *prevPtr, /* Pack windows in argv just after this + * window; NULL means pack as first child of + * containerPtr. */ + Packer *containerPtr, /* Container in which to pack windows. */ + int objc, /* Number of elements in objv. */ + Tcl_Obj *const objv[]) /* Array of lists, each containing 2 elements: + * window name and side against which to + * pack. */ +{ + Packer *packPtr; + Tk_Window tkwin, ancestor, parent; + Tcl_Obj **options; + int c; + Tcl_Size index, optionCount; + + /* + * Iterate over all of the window specifiers, each consisting of two + * arguments. The first argument contains the window name and the + * additional arguments contain options such as "top" or "padx 20". + */ + + for ( ; objc > 0; objc -= 2, objv += 2, prevPtr = packPtr) { + if (objc < 2) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "wrong # args: window \"%s\" should be followed by options", + Tcl_GetString(objv[0]))); + Tcl_SetErrorCode(interp, "TCL", "WRONGARGS", (char *)NULL); + return TCL_ERROR; + } + + /* + * Find the packer for the window to be packed, and make sure that the + * window in which it will be packed is either its or a descendant of + * its parent. + */ + + if (TkGetWindowFromObj(interp, containerPtr->tkwin, objv[0], &tkwin) + != TCL_OK) { + return TCL_ERROR; + } + + parent = Tk_Parent(tkwin); + for (ancestor = containerPtr->tkwin; ; ancestor = Tk_Parent(ancestor)) { + if (ancestor == parent) { + break; + } + if (((Tk_FakeWin *) (ancestor))->flags & TK_TOP_HIERARCHY) { + badWindow: + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "can't pack \"%s\" inside \"%s\"", Tcl_GetString(objv[0]), + Tk_PathName(containerPtr->tkwin))); + Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "HIERARCHY", (char *)NULL); + return TCL_ERROR; + } + } + if (((Tk_FakeWin *) (tkwin))->flags & TK_TOP_HIERARCHY) { + goto badWindow; + } + if (tkwin == containerPtr->tkwin) { + goto badWindow; + } + if (!(packPtr = GetPacker(tkwin))) { + return TCL_OK; + } + + /* + * Process options for this window. + */ + + if (Tcl_ListObjGetElements(interp, objv[1], &optionCount, &options) + != TCL_OK) { + return TCL_ERROR; + } + packPtr->side = TOP; + packPtr->anchor = TK_ANCHOR_CENTER; + packPtr->padX = packPtr->padY = 0; + packPtr->padLeft = packPtr->padTop = 0; + packPtr->iPadX = packPtr->iPadY = 0; + packPtr->flags &= ~(FILLX|FILLY|EXPAND); + packPtr->flags |= OLD_STYLE; + for (index = 0 ; index < optionCount; index++) { + Tcl_Obj *curOptPtr = options[index]; + Tcl_Size length; + const char *curOpt = Tcl_GetStringFromObj(curOptPtr, &length); + + c = curOpt[0]; + + if ((c == 't') + && (strncmp(curOpt, "top", length)) == 0) { + packPtr->side = TOP; + } else if ((c == 'b') + && (strncmp(curOpt, "bottom", length)) == 0) { + packPtr->side = BOTTOM; + } else if ((c == 'l') + && (strncmp(curOpt, "left", length)) == 0) { + packPtr->side = LEFT; + } else if ((c == 'r') + && (strncmp(curOpt, "right", length)) == 0) { + packPtr->side = RIGHT; + } else if ((c == 'e') + && (strncmp(curOpt, "expand", length)) == 0) { + packPtr->flags |= EXPAND; + } else if ((c == 'f') + && (strcmp(curOpt, "fill")) == 0) { + packPtr->flags |= FILLX|FILLY; + } else if ((length == 5) && (strcmp(curOpt, "fillx")) == 0) { + packPtr->flags |= FILLX; + } else if ((length == 5) && (strcmp(curOpt, "filly")) == 0) { + packPtr->flags |= FILLY; + } else if ((c == 'p') && (strcmp(curOpt, "padx")) == 0) { + if (optionCount <= (index+1)) { + missingPad: + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "wrong # args: \"%s\" option must be" + " followed by screen distance", curOpt)); + Tcl_SetErrorCode(interp, "TK", "OLDPACK", "BAD_PARAMETER", + (char *)NULL); + return TCL_ERROR; + } + if (TkParsePadAmount(interp, tkwin, options[index+1], + &packPtr->padLeft, &packPtr->padX) != TCL_OK) { + return TCL_ERROR; + } + packPtr->padX /= 2; + packPtr->padLeft /= 2; + packPtr->iPadX = 0; + index++; + } else if ((c == 'p') && (strcmp(curOpt, "pady")) == 0) { + if (optionCount <= (index+1)) { + goto missingPad; + } + if (TkParsePadAmount(interp, tkwin, options[index+1], + &packPtr->padTop, &packPtr->padY) != TCL_OK) { + return TCL_ERROR; + } + packPtr->padY /= 2; + packPtr->padTop /= 2; + packPtr->iPadY = 0; + index++; + } else if ((c == 'f') && (length > 1) + && (strncmp(curOpt, "frame", length) == 0)) { + if (optionCount <= (index+1)) { + Tcl_SetObjResult(interp, Tcl_NewStringObj( + "wrong # args: \"frame\"" + " option must be followed by anchor point", TCL_INDEX_NONE)); + Tcl_SetErrorCode(interp, "TK", "OLDPACK", "BAD_PARAMETER", + (char *)NULL); + return TCL_ERROR; + } + if (Tk_GetAnchorFromObj(interp, options[index+1], + &packPtr->anchor) != TCL_OK) { + return TCL_ERROR; + } + index++; + } else { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "bad option \"%s\": should be top, bottom, left," + " right, expand, fill, fillx, filly, padx, pady, or" + " frame", curOpt)); + Tcl_SetErrorCode(interp, "TK", "OLDPACK", "BAD_PARAMETER", + (char *)NULL); + return TCL_ERROR; + } + } + + if (packPtr != prevPtr) { + /* + * Unpack this window if it's currently packed. + */ + + if (packPtr->containerPtr != NULL) { + if ((packPtr->containerPtr != containerPtr) && + (packPtr->containerPtr->tkwin + != Tk_Parent(packPtr->tkwin))) { + Tk_UnmaintainGeometry(packPtr->tkwin, + packPtr->containerPtr->tkwin); + } + Unlink(packPtr); + } + + /* + * Add the window in the correct place in its container's packing + * order, then make sure that the window is managed by us. + */ + + packPtr->containerPtr = containerPtr; + if (prevPtr == NULL) { + packPtr->nextPtr = containerPtr->contentPtr; + containerPtr->contentPtr = packPtr; + } else { + packPtr->nextPtr = prevPtr->nextPtr; + prevPtr->nextPtr = packPtr; + } + Tk_ManageGeometry(tkwin, &packerType, packPtr); + + if (!(containerPtr->flags & DONT_PROPAGATE)) { + if (TkSetGeometryContainer(interp, containerPtr->tkwin, "pack") + != TCL_OK) { + Tk_ManageGeometry(tkwin, NULL, NULL); + Unlink(packPtr); + return TCL_ERROR; + } + containerPtr->flags |= ALLOCED_CONTAINER; + } + } + } + + /* + * Arrange for the container to be re-packed at the first idle moment. + */ + + if (containerPtr->abortPtr != NULL) { + *containerPtr->abortPtr = 1; + } + if (!(containerPtr->flags & REQUESTED_REPACK)) { + containerPtr->flags |= REQUESTED_REPACK; + Tcl_DoWhenIdle(ArrangePacking, containerPtr); + } + return TCL_OK; +} +#endif /* !TK_NO_DEPRECATED */ + /* *---------------------------------------------------------------------- * * Unlink -- * @@ -1241,14 +1605,17 @@ } if (Tk_TopWinHierarchy(content)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't pack \"%s\": it's a top-level window", Tcl_GetString(objv[j]))); - Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "TOPLEVEL", NULL); + Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "TOPLEVEL", (char *)NULL); return TCL_ERROR; } - contentPtr = GetPacker(content); + if (!(contentPtr = GetPacker(content))) { + continue; + } + contentPtr->flags &= ~OLD_STYLE; /* * If the content isn't currently packed, reset all of its configuration * information to default values (there could be old values left from @@ -1267,11 +1634,11 @@ for (i = numWindows; i < objc; i+=2) { if ((i+2) > objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "extra option \"%s\" (option with no value?)", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "PACK", "BAD_PARAMETER", NULL); + Tcl_SetErrorCode(interp, "TK", "PACK", "BAD_PARAMETER", (char *)NULL); return TCL_ERROR; } if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option", 0, &index) != TCL_OK) { return TCL_ERROR; @@ -1282,18 +1649,20 @@ if (j == 0) { if (TkGetWindowFromObj(interp, tkwin, objv[i+1], &other) != TCL_OK) { return TCL_ERROR; } - prevPtr = GetPacker(other); + if (!(prevPtr = GetPacker(other))) { + continue; + } if (prevPtr->containerPtr == NULL) { notPacked: Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't packed", Tcl_GetString(objv[i+1]))); Tcl_SetErrorCode(interp, "TK", "PACK", "NOT_PACKED", - NULL); + (char *)NULL); return TCL_ERROR; } containerPtr = prevPtr->containerPtr; positionGiven = 1; } @@ -1308,11 +1677,13 @@ if (j == 0) { if (TkGetWindowFromObj(interp, tkwin, objv[i+1], &other) != TCL_OK) { return TCL_ERROR; } - otherPtr = GetPacker(other); + if (!(otherPtr = GetPacker(other))) { + continue; + } if (otherPtr->containerPtr == NULL) { goto notPacked; } containerPtr = otherPtr->containerPtr; prevPtr = containerPtr->contentPtr; @@ -1347,21 +1718,23 @@ contentPtr->flags |= FILLX|FILLY; } else { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad fill style \"%s\": must be " "none, x, y, or both", string)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "FILL", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "FILL", (char *)NULL); return TCL_ERROR; } break; case CONF_IN: if (j == 0) { if (TkGetWindowFromObj(interp, tkwin, objv[i+1], &other) != TCL_OK) { return TCL_ERROR; } - containerPtr = GetPacker(other); + if (!(containerPtr = GetPacker(other))) { + continue; + } prevPtr = containerPtr->contentPtr; if (prevPtr != NULL) { while (prevPtr->nextPtr != NULL) { prevPtr = prevPtr->nextPtr; } @@ -1373,11 +1746,11 @@ if ((Tk_GetPixelsFromObj(interp, content, objv[i+1], &tmp) != TCL_OK) || (tmp < 0)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad ipadx value \"%s\": must be positive screen" " distance", Tcl_GetString(objv[i+1]))); - Tcl_SetErrorCode(interp, "TK", "VALUE", "INT_PAD", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "INT_PAD", (char *)NULL); return TCL_ERROR; } contentPtr->iPadX = tmp * 2; break; case CONF_IPADY: @@ -1384,11 +1757,11 @@ if ((Tk_GetPixelsFromObj(interp, content, objv[i+1], &tmp) != TCL_OK) || (tmp < 0)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad ipady value \"%s\": must be positive screen" " distance", Tcl_GetString(objv[i+1]))); - Tcl_SetErrorCode(interp, "TK", "VALUE", "INT_PAD", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "INT_PAD", (char *)NULL); return TCL_ERROR; } contentPtr->iPadY = tmp * 2; break; case CONF_PADX: @@ -1440,11 +1813,13 @@ * specified, arrange for the content to go at the end of the order for * its parent. */ if (!positionGiven) { - containerPtr = GetPacker(Tk_Parent(content)); + if (!(containerPtr = GetPacker(Tk_Parent(content)))) { + continue; + } prevPtr = containerPtr->contentPtr; if (prevPtr != NULL) { while (prevPtr->nextPtr != NULL) { prevPtr = prevPtr->nextPtr; } @@ -1464,18 +1839,18 @@ } if (Tk_TopWinHierarchy(ancestor)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't pack \"%s\" inside \"%s\"", Tcl_GetString(objv[j]), Tk_PathName(containerPtr->tkwin))); - Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "HIERARCHY", NULL); + Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "HIERARCHY", (char *)NULL); return TCL_ERROR; } } if (content == containerPtr->tkwin) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't pack \"%s\" inside itself", Tcl_GetString(objv[j]))); - Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "SELF", NULL); + Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "SELF", (char *)NULL); return TCL_ERROR; } /* * Check for management loops. @@ -1485,11 +1860,11 @@ container = (TkWindow *)TkGetContainer(container)) { if (container == (TkWindow *)content) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't put \"%s\" inside \"%s\": would cause management loop", Tcl_GetString(objv[j]), Tk_PathName(containerPtr->tkwin))); - Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "LOOP", NULL); + Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "LOOP", (char *)NULL); return TCL_ERROR; } } if (containerPtr->tkwin != Tk_Parent(content)) { ((TkWindow *)content)->maintainerPtr = (TkWindow *)containerPtr->tkwin; Index: generic/tkPanedWindow.c ================================================================== --- generic/tkPanedWindow.c +++ generic/tkPanedWindow.c @@ -78,15 +78,15 @@ * managed by a paned window widget. */ typedef struct Pane { Tk_Window tkwin; /* Window being managed. */ - Tcl_Obj *minSizeObj; /* Minimum size of this pane, on the relevant + int minSize; /* Minimum size of this pane, on the relevant * axis, in pixels. */ - Tcl_Obj *padXObj; /* Additional padding requested for pane, in + int padx; /* Additional padding requested for pane, in * the x dimension. */ - Tcl_Obj *padYObj; /* Additional padding requested for pane, in + int pady; /* Additional padding requested for pane, in * the y dimension. */ Tcl_Obj *widthObj, *heightObj; /* Tcl_Obj rep's of pane width/height, to * allow for null values. */ int width; /* Pane width. */ @@ -104,14 +104,10 @@ int hide; /* Controls visibility of pane */ struct PanedWindow *containerPtr; /* Paned window managing the window. */ Tk_Window after; /* Placeholder for parsing options. */ Tk_Window before; /* Placeholder for parsing options. */ -#ifdef BUILD_tk - int padX, padY; - int minSize; -#endif } Pane; /* * A data structure of the following type is kept for each paned window widget * managed by this file: @@ -157,12 +153,10 @@ int proxyRelief; /* Relief used to draw proxy, if TK_RELIEF_NULL then use relief. */ Pane **panes; /* Pointer to array of Panes. */ int numPanes; /* Number of panes. */ int sizeofPanes; /* Number of elements in the panes array. */ int flags; /* Flags for widget; see below. */ - Tcl_Obj *borderWidthObj; - Tcl_Obj *handlePadPtr; } PanedWindow; /* * Flags used for paned windows: * @@ -283,17 +277,17 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_PANEDWINDOW_BORDERWIDTH, offsetof(PanedWindow, borderWidthObj), offsetof(PanedWindow, borderWidth), + DEF_PANEDWINDOW_BORDERWIDTH, TCL_INDEX_NONE, offsetof(PanedWindow, borderWidth), 0, 0, GEOMETRY}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_PANEDWINDOW_CURSOR, TCL_INDEX_NONE, offsetof(PanedWindow, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-handlepad", "handlePad", "HandlePad", - DEF_PANEDWINDOW_HANDLEPAD, offsetof(PanedWindow, handlePadPtr), offsetof(PanedWindow, handlePad), + DEF_PANEDWINDOW_HANDLEPAD, TCL_INDEX_NONE, offsetof(PanedWindow, handlePad), 0, 0, GEOMETRY}, {TK_OPTION_PIXELS, "-handlesize", "handleSize", "HandleSize", DEF_PANEDWINDOW_HANDLESIZE, offsetof(PanedWindow, handleSizePtr), offsetof(PanedWindow, handleSize), 0, 0, GEOMETRY}, {TK_OPTION_PIXELS, "-height", "height", "Height", @@ -318,11 +312,11 @@ DEF_PANEDWINDOW_RELIEF, TCL_INDEX_NONE, offsetof(PanedWindow, relief), 0, 0, 0}, {TK_OPTION_CURSOR, "-sashcursor", "sashCursor", "Cursor", DEF_PANEDWINDOW_SASHCURSOR, TCL_INDEX_NONE, offsetof(PanedWindow, sashCursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-sashpad", "sashPad", "SashPad", - DEF_PANEDWINDOW_SASHPAD, offsetof(PanedWindow, sashPadPtr), offsetof(PanedWindow, sashPad), + DEF_PANEDWINDOW_SASHPAD, TCL_INDEX_NONE, offsetof(PanedWindow, sashPad), 0, 0, GEOMETRY}, {TK_OPTION_RELIEF, "-sashrelief", "sashRelief", "Relief", DEF_PANEDWINDOW_SASHRELIEF, TCL_INDEX_NONE, offsetof(PanedWindow, sashRelief), 0, 0, 0}, {TK_OPTION_PIXELS, "-sashwidth", "sashWidth", "Width", @@ -348,15 +342,15 @@ DEF_PANEDWINDOW_PANE_HEIGHT, offsetof(Pane, heightObj), offsetof(Pane, height), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-hide", "hide", "Hide", DEF_PANEDWINDOW_PANE_HIDE, TCL_INDEX_NONE, offsetof(Pane, hide), 0,0,GEOMETRY}, {TK_OPTION_PIXELS, "-minsize", NULL, NULL, - DEF_PANEDWINDOW_PANE_MINSIZE, offsetof(Pane, minSizeObj), offsetof(Pane, minSize), 0, 0, 0}, + DEF_PANEDWINDOW_PANE_MINSIZE, TCL_INDEX_NONE, offsetof(Pane, minSize), 0, 0, 0}, {TK_OPTION_PIXELS, "-padx", NULL, NULL, - DEF_PANEDWINDOW_PANE_PADX, offsetof(Pane, padXObj), offsetof(Pane, padX), 0, 0, 0}, + DEF_PANEDWINDOW_PANE_PADX, TCL_INDEX_NONE, offsetof(Pane, padx), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", NULL, NULL, - DEF_PANEDWINDOW_PANE_PADY, offsetof(Pane, padYObj), offsetof(Pane, padY), 0, 0, 0}, + DEF_PANEDWINDOW_PANE_PADY, TCL_INDEX_NONE, offsetof(Pane, pady), 0, 0, 0}, {TK_OPTION_CUSTOM, "-sticky", NULL, NULL, DEF_PANEDWINDOW_PANE_STICKY, TCL_INDEX_NONE, offsetof(Pane, sticky), 0, &stickyOption, 0}, {TK_OPTION_STRING_TABLE, "-stretch", "stretch", "Stretch", DEF_PANEDWINDOW_PANE_STRETCH, TCL_INDEX_NONE, offsetof(Pane, stretch), @@ -802,20 +796,20 @@ /* * A panedwindow cannot manage itself. */ Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "cannot add %s to itself", arg)); + "can't add %s to itself", arg)); Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "SELF", (char *)NULL); return TCL_ERROR; } else if (Tk_IsTopLevel(tkwin)) { /* * A panedwindow cannot manage a toplevel. */ Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "cannot add toplevel %s to %s", arg, + "can't add toplevel %s to %s", arg, Tk_PathName(pwPtr->tkwin))); Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "TOPLEVEL", (char *)NULL); return TCL_ERROR; } else { /* @@ -828,11 +822,11 @@ if (ancestor == parent) { break; } if (Tk_IsTopLevel(ancestor)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "cannot add %s to %s", arg, + "can't add %s to %s", arg, Tk_PathName(pwPtr->tkwin))); Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "HIERARCHY", (char *)NULL); return TCL_ERROR; } @@ -953,11 +947,11 @@ } /* * Make sure this pane wasn't already put into the inserts array, * i.e., when the user specifies the same window multiple times in a - * single add command. + * single add commaned. */ for (j = 0; j < insertIndex; j++) { if (inserts[j]->tkwin == tkwin) { found = 1; break; @@ -1798,18 +1792,18 @@ if (panePtr->width > 0) { paneSize = panePtr->width; } else { paneSize = panePtr->paneWidth; } - stretchReserve -= paneSize + (2 * panePtr->padX); + stretchReserve -= paneSize + (2 * panePtr->padx); } else { if (panePtr->height > 0) { paneSize = panePtr->height; } else { paneSize = panePtr->paneHeight; } - stretchReserve -= paneSize + (2 * panePtr->padY); + stretchReserve -= paneSize + (2 * panePtr->pady); } if (IsStretchable(panePtr->stretch,i,first,last) && Tk_IsMapped(pwPtr->tkwin)) { paneDynSize += paneSize; paneDynMinSize += panePtr->minSize; @@ -1903,13 +1897,13 @@ stretchReserve = paneDynMinSize - paneDynSize; } } if (horizontal) { paneWidth = paneSize; - paneHeight = pwHeight - (2 * panePtr->padY); + paneHeight = pwHeight - (2 * panePtr->pady); } else { - paneWidth = pwWidth - (2 * panePtr->padX); + paneWidth = pwWidth - (2 * panePtr->padx); paneHeight = paneSize; } /* * Adjust for area reserved for sashes. @@ -1949,21 +1943,21 @@ * Compute the location of the sash at the right or bottom of the * parcel and the location of the next parcel. */ if (horizontal) { - x += paneWidth + (2 * panePtr->padX); + x += paneWidth + (2 * panePtr->padx); if (x < internalBW) { x = internalBW; } panePtr->sashx = x + sashOffset; panePtr->sashy = y; panePtr->handlex = x + handleOffset; panePtr->handley = y + pwPtr->handlePad; x += sashWidth; } else { - y += paneHeight + (2 * panePtr->padY); + y += paneHeight + (2 * panePtr->pady); if (y < internalBW) { y = internalBW; } panePtr->sashx = x; panePtr->sashy = y + sashOffset; @@ -1979,12 +1973,12 @@ paneX = panePtr->x; paneY = panePtr->y; AdjustForSticky(panePtr->sticky, paneWidth, paneHeight, &paneX, &paneY, &newPaneWidth, &newPaneHeight); - paneX += panePtr->padX; - paneY += panePtr->padY; + paneX += panePtr->padx; + paneY += panePtr->pady; /* * Now put the window in the proper spot. */ @@ -2262,18 +2256,18 @@ * Compute the location of the sash at the right or bottom of the * parcel. */ if (horizontal) { - x += panePtr->paneWidth + (2 * panePtr->padX); + x += panePtr->paneWidth + (2 * panePtr->padx); panePtr->sashx = x + sashOffset; panePtr->sashy = y; panePtr->handlex = x + handleOffset; panePtr->handley = y + pwPtr->handlePad; x += sashWidth; } else { - y += panePtr->paneHeight + (2 * panePtr->padY); + y += panePtr->paneHeight + (2 * panePtr->pady); panePtr->sashx = x; panePtr->sashy = y + sashOffset; panePtr->handlex = x + pwPtr->handlePad; panePtr->handley = y + handleOffset; y += sashWidth; @@ -2294,11 +2288,11 @@ dim = panePtr->height; } else { doubleBw = 2 * Tk_Changes(panePtr->tkwin)->border_width; dim = Tk_ReqHeight(panePtr->tkwin) + doubleBw; } - dim += 2 * panePtr->padY; + dim += 2 * panePtr->pady; if (dim > reqHeight) { reqHeight = dim; } } else { /* @@ -2310,11 +2304,11 @@ dim = panePtr->width; } else { doubleBw = 2 * Tk_Changes(panePtr->tkwin)->border_width; dim = Tk_ReqWidth(panePtr->tkwin) + doubleBw; } - dim += 2 * panePtr->padX; + dim += 2 * panePtr->padx; if (dim > reqWidth) { reqWidth = dim; } } } @@ -2639,14 +2633,14 @@ if (panePtr->hide) { continue; } if (horizontal) { panePtr->paneWidth = panePtr->width = panePtr->sashx - - sashOffset - panePtr->x - (2 * panePtr->padX); + - sashOffset - panePtr->x - (2 * panePtr->padx); } else { panePtr->paneHeight = panePtr->height = panePtr->sashy - - sashOffset - panePtr->y - (2 * panePtr->padY); + - sashOffset - panePtr->y - (2 * panePtr->pady); } } /* * There must be a next sash since it is only possible to enter this Index: generic/tkPkgConfig.c ================================================================== --- generic/tkPkgConfig.c +++ generic/tkPkgConfig.c @@ -12,13 +12,24 @@ */ /* Note, the definitions in this module are influenced by the following C * preprocessor macros: * + * OSCMa = shortcut for "old style configuration macro activates" + * NSCMdt = shortcut for "new style configuration macro declares that" + * + * - TCL_THREADS OSCMa compilation as threaded. + * - TCL_MEM_DEBUG OSCMa memory debugging. + * + * - TCL_CFG_DO64BIT NSCMdt tk is compiled for a 64bit system. + * - NDEBUG NSCMdt tk is compiled with symbol info off. + * - TCL_CFG_OPTIMIZED NSCMdt tk is compiled with cc optimizations on + * - TCL_CFG_PROFILED NSCMdt tk is compiled with profiling info. + * * - _WIN32 || __CYGWIN__ The value for the fontsytem key will be * MAC_OSX_TK chosen based on these macros/defines. - * HAVE_XFT declares that xft font support was requested. + * HAVE_XFT NSCMdt xft font support was requested. * * - CFG_RUNTIME_* Paths to various stuff at runtime. * - CFG_INSTALL_* Paths to various stuff at installation time. * * - TCL_CFGVAL_ENCODING string containing the encoding used for the @@ -34,10 +45,46 @@ /* * Use C preprocessor statements to define the various values for the embedded * configuration information. */ + +#ifdef TCL_THREADS +# define CFG_THREADED "1" +#else +# define CFG_THREADED "0" +#endif + +#ifdef TCL_MEM_DEBUG +# define CFG_MEMDEBUG "1" +#else +# define CFG_MEMDEBUG "0" +#endif + +#ifdef TCL_CFG_DO64BIT +# define CFG_64 "1" +#else +# define CFG_64 "0" +#endif + +#ifndef NDEBUG +# define CFG_DEBUG "1" +#else +# define CFG_DEBUG "0" +#endif + +#ifdef TCL_CFG_OPTIMIZED +# define CFG_OPTIMIZED "1" +#else +# define CFG_OPTIMIZED "0" +#endif + +#ifdef TCL_CFG_PROFILED +# define CFG_PROFILED "1" +#else +# define CFG_PROFILED "0" +#endif #if defined(_WIN32) # define CFG_FONTSYSTEM "gdi" #elif defined(MAC_OSX_TK) # define CFG_FONTSYSTEM "cocoa" @@ -46,10 +93,18 @@ #else # define CFG_FONTSYSTEM "x11" #endif static const Tcl_Config cfg[] = { +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 + {"debug", CFG_DEBUG}, + {"threaded", CFG_THREADED}, + {"profiled", CFG_PROFILED}, + {"64bit", CFG_64}, + {"optimized", CFG_OPTIMIZED}, + {"mem_debug", CFG_MEMDEBUG}, +#endif {"fontsystem", CFG_FONTSYSTEM}, /* Runtime paths to various stuff */ #ifdef CFG_RUNTIME_LIBDIR Index: generic/tkPlatDecls.h ================================================================== --- generic/tkPlatDecls.h +++ generic/tkPlatDecls.h @@ -44,19 +44,27 @@ EXTERN HINSTANCE Tk_GetHINSTANCE(void); /* 2 */ EXTERN HWND Tk_GetHWND(Window window); /* 3 */ EXTERN Tk_Window Tk_HWNDToWindow(HWND hwnd); +/* 4 */ +EXTERN void Tk_PointerEvent(HWND hwnd, int x, int y); +/* 5 */ +EXTERN int Tk_TranslateWinEvent(HWND hwnd, UINT message, + WPARAM wParam, LPARAM lParam, + LRESULT *result); #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ /* Slot 0 is reserved */ /* Slot 1 is reserved */ /* Slot 2 is reserved */ /* Slot 3 is reserved */ /* 4 */ EXTERN void TkMacOSXInitAppleEvents(Tcl_Interp *interp); -/* Slot 5 is reserved */ +/* 5 */ +EXTERN void TkGenWMConfigureEvent_(Tk_Window tkwin, int x, int y, + int width, int height, int flags); /* 6 */ EXTERN void TkMacOSXInvalClipRgns(Tk_Window tkwin); /* Slot 7 is reserved */ /* 8 */ EXTERN void * TkMacOSXGetRootControl(Drawable drawable); @@ -84,18 +92,20 @@ #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ Window (*tk_AttachHWND) (Tk_Window tkwin, HWND hwnd); /* 0 */ HINSTANCE (*tk_GetHINSTANCE) (void); /* 1 */ HWND (*tk_GetHWND) (Window window); /* 2 */ Tk_Window (*tk_HWNDToWindow) (HWND hwnd); /* 3 */ + void (*tk_PointerEvent) (HWND hwnd, int x, int y); /* 4 */ + int (*tk_TranslateWinEvent) (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result); /* 5 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ void (*reserved0)(void); void (*reserved1)(void); void (*reserved2)(void); void (*reserved3)(void); void (*tkMacOSXInitAppleEvents) (Tcl_Interp *interp); /* 4 */ - void (*reserved5)(void); + void (*tkGenWMConfigureEvent_) (Tk_Window tkwin, int x, int y, int width, int height, int flags); /* 5 */ void (*tkMacOSXInvalClipRgns) (Tk_Window tkwin); /* 6 */ void (*reserved7)(void); void * (*tkMacOSXGetRootControl) (Drawable drawable); /* 8 */ void (*tk_MacOSXSetupTkNotifier) (void); /* 9 */ int (*tk_MacOSXIsAppInFront) (void); /* 10 */ @@ -127,19 +137,24 @@ (tkPlatStubsPtr->tk_GetHINSTANCE) /* 1 */ #define Tk_GetHWND \ (tkPlatStubsPtr->tk_GetHWND) /* 2 */ #define Tk_HWNDToWindow \ (tkPlatStubsPtr->tk_HWNDToWindow) /* 3 */ +#define Tk_PointerEvent \ + (tkPlatStubsPtr->tk_PointerEvent) /* 4 */ +#define Tk_TranslateWinEvent \ + (tkPlatStubsPtr->tk_TranslateWinEvent) /* 5 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ /* Slot 0 is reserved */ /* Slot 1 is reserved */ /* Slot 2 is reserved */ /* Slot 3 is reserved */ #define TkMacOSXInitAppleEvents \ (tkPlatStubsPtr->tkMacOSXInitAppleEvents) /* 4 */ -/* Slot 5 is reserved */ +#define TkGenWMConfigureEvent_ \ + (tkPlatStubsPtr->tkGenWMConfigureEvent_) /* 5 */ #define TkMacOSXInvalClipRgns \ (tkPlatStubsPtr->tkMacOSXInvalClipRgns) /* 6 */ /* Slot 7 is reserved */ #define TkMacOSXGetRootControl \ (tkPlatStubsPtr->tkMacOSXGetRootControl) /* 8 */ @@ -168,8 +183,9 @@ #endif #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT +#undef TkGenWMConfigureEvent_ #define Tk_MacOSXGetNSViewForDrawable TkMacOSXGetRootControl #endif /* _TKPLATDECLS */ Index: generic/tkPointer.c ================================================================== --- generic/tkPointer.c +++ generic/tkPointer.c @@ -179,11 +179,11 @@ /* * Generate appropriate Enter/Leave events. */ InitializeEvent(&event, targetPtr, LeaveNotify, x, y, state, - NotifyNormal); + NotifyAncestor); TkInOutEvents(&event, lastWinPtr, winPtr, LeaveNotify, EnterNotify, TCL_QUEUE_TAIL); crossed = 1; } @@ -384,11 +384,11 @@ targetWinPtr = tsdPtr->grabWinPtr; } if (targetWinPtr != NULL) { InitializeEvent(&event, targetWinPtr, MotionNotify, x, y, - tsdPtr->lastState, NotifyNormal); + tsdPtr->lastState, NotifyAncestor); Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); } tsdPtr->lastPos = pos; } } Index: generic/tkRectOval.c ================================================================== --- generic/tkRectOval.c +++ generic/tkRectOval.c @@ -169,11 +169,11 @@ configSpecs, /* configSpecs */ ConfigureRectOval, /* configureProc */ RectOvalCoords, /* coordProc */ DeleteRectOval, /* deleteProc */ DisplayRectOval, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ RectToPoint, /* pointProc */ RectToArea, /* areaProc */ RectOvalToPostscript, /* postscriptProc */ ScaleRectOval, /* scaleProc */ TranslateRectOval, /* translateProc */ @@ -194,11 +194,11 @@ configSpecs, /* configSpecs */ ConfigureRectOval, /* configureProc */ RectOvalCoords, /* coordProc */ DeleteRectOval, /* deleteProc */ DisplayRectOval, /* displayProc */ - 0, /* flags */ + TK_CONFIG_OBJS, /* flags */ OvalToPoint, /* pointProc */ OvalToArea, /* areaProc */ RectOvalToPostscript, /* postscriptProc */ ScaleRectOval, /* scaleProc */ TranslateRectOval, /* translateProc */ @@ -414,11 +414,11 @@ Tk_State state; tkwin = Tk_CanvasTkwin(canvas); if (TCL_OK != Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, - objv, rectOvalPtr, flags)) { + (const char **)objv, (char *) rectOvalPtr, flags|TK_CONFIG_OBJS)) { return TCL_ERROR; } state = itemPtr->state; /* Index: generic/tkScale.c ================================================================== --- generic/tkScale.c +++ generic/tkScale.c @@ -47,11 +47,11 @@ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-borderwidth", 0}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_SCALE_BORDER_WIDTH, offsetof(TkScale, borderWidthObj), TCL_INDEX_NONE, + DEF_SCALE_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(TkScale, borderWidth), 0, 0, 0}, {TK_OPTION_STRING, "-command", "command", "Command", DEF_SCALE_COMMAND, TCL_INDEX_NONE, offsetof(TkScale, command), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", @@ -75,17 +75,17 @@ 0, DEF_SCALE_HIGHLIGHT_BG_MONO, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_SCALE_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkScale, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_SCALE_HIGHLIGHT_WIDTH, offsetof(TkScale, highlightWidthObj), - TCL_INDEX_NONE, 0, 0, 0}, + "HighlightThickness", DEF_SCALE_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, + offsetof(TkScale, highlightWidth), 0, 0, 0}, {TK_OPTION_STRING, "-label", "label", "Label", DEF_SCALE_LABEL, TCL_INDEX_NONE, offsetof(TkScale, label), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-length", "length", "Length", - DEF_SCALE_LENGTH, offsetof(TkScale, lengthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_SCALE_LENGTH, TCL_INDEX_NONE, offsetof(TkScale, length), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-orient", "orient", "Orient", DEF_SCALE_ORIENT, TCL_INDEX_NONE, offsetof(TkScale, orient), TK_OPTION_ENUM_VAR, orientStrings, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_SCALE_RELIEF, TCL_INDEX_NONE, offsetof(TkScale, relief), 0, 0, 0}, @@ -100,11 +100,11 @@ 0, 0, 0}, {TK_OPTION_BOOLEAN, "-showvalue", "showValue", "ShowValue", DEF_SCALE_SHOW_VALUE, TCL_INDEX_NONE, offsetof(TkScale, showValue), 0, 0, 0}, {TK_OPTION_PIXELS, "-sliderlength", "sliderLength", "SliderLength", - DEF_SCALE_SLIDER_LENGTH, offsetof(TkScale, sliderLengthObj), TCL_INDEX_NONE, + DEF_SCALE_SLIDER_LENGTH, TCL_INDEX_NONE, offsetof(TkScale, sliderLength), 0, 0, 0}, {TK_OPTION_RELIEF, "-sliderrelief", "sliderRelief", "SliderRelief", DEF_SCALE_SLIDER_RELIEF, TCL_INDEX_NONE, offsetof(TkScale, sliderRelief), 0, 0, 0}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", @@ -123,11 +123,11 @@ 0, DEF_SCALE_TROUGH_MONO, 0}, {TK_OPTION_STRING, "-variable", "variable", "Variable", DEF_SCALE_VARIABLE, offsetof(TkScale, varNamePtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-width", "width", "Width", - DEF_SCALE_WIDTH, offsetof(TkScale, widthObj), TCL_INDEX_NONE, 0, 0, 0}, + DEF_SCALE_WIDTH, TCL_INDEX_NONE, offsetof(TkScale, width), 0, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, 0, 0} }; /* * The following tables define the scale widget commands and map the indexes @@ -149,11 +149,11 @@ */ static void ComputeFormat(TkScale *scalePtr, int forTicks); static void ComputeScaleGeometry(TkScale *scalePtr); static int ConfigureScale(Tcl_Interp *interp, TkScale *scalePtr, - int objc, Tcl_Obj *const objv[]); + Tcl_Size objc, Tcl_Obj *const objv[]); static void DestroyScale(void *memPtr); static double MaxTickRoundingError(TkScale *scalePtr, double tickResolution); static void ScaleCmdDeletedProc(void *clientData); static void ScaleEventProc(void *clientData, @@ -279,12 +279,12 @@ scalePtr->widgetCmd = Tcl_CreateObjCommand(interp, Tk_PathName(scalePtr->tkwin), ScaleWidgetObjCmd, scalePtr, ScaleCmdDeletedProc); scalePtr->optionTable = optionTable; scalePtr->orient = ORIENT_VERTICAL; - scalePtr->widthObj = NULL; - scalePtr->lengthObj = NULL; + scalePtr->width = 0; + scalePtr->length = 0; scalePtr->value = 0.0; scalePtr->varNamePtr = NULL; scalePtr->fromValue = 0.0; scalePtr->toValue = 0.0; scalePtr->tickInterval = 0.0; @@ -295,11 +295,11 @@ scalePtr->repeatDelay = 0; scalePtr->repeatInterval = 0; scalePtr->label = NULL; scalePtr->labelLength = 0; scalePtr->state = STATE_NORMAL; - scalePtr->borderWidthObj = NULL; + scalePtr->borderWidth = 0; scalePtr->bgBorder = NULL; scalePtr->activeBorder = NULL; scalePtr->sliderRelief = TK_RELIEF_RAISED; scalePtr->troughColorPtr = NULL; scalePtr->troughGC = NULL; @@ -306,15 +306,15 @@ scalePtr->copyGC = NULL; scalePtr->tkfont = NULL; scalePtr->textColorPtr = NULL; scalePtr->textGC = NULL; scalePtr->relief = TK_RELIEF_FLAT; - scalePtr->highlightWidthObj = NULL; + scalePtr->highlightWidth = 0; scalePtr->highlightBorder = NULL; scalePtr->highlightColorPtr = NULL; scalePtr->inset = 0; - scalePtr->sliderLengthObj = NULL; + scalePtr->sliderLength = 0; scalePtr->showValue = 0; scalePtr->horizLabelY = 0; scalePtr->horizValueY = 0; scalePtr->horizTroughY = 0; scalePtr->horizTickY = 0; @@ -324,12 +324,10 @@ scalePtr->vertLabelX = 0; scalePtr->fontHeight = 0; scalePtr->cursor = NULL; scalePtr->takeFocusPtr = NULL; scalePtr->flags = NEVER_SET; - - Tk_SetClassProcs(scalePtr->tkwin, &scaleClass, scalePtr); Tk_CreateEventHandler(scalePtr->tkwin, ExposureMask|StructureNotifyMask|FocusChangeMask, ScaleEventProc, scalePtr); @@ -416,11 +414,11 @@ } else { result = ConfigureScale(interp, scalePtr, objc-2, objv+2); } break; case COMMAND_COORDS: { - int x, y, width, borderWidth; + int x, y; double value; Tcl_Obj *coords[2]; if ((objc != 2) && (objc != 3)) { Tcl_WrongNumArgs(interp, 1, objv, "coords ?value?"); @@ -431,20 +429,18 @@ goto error; } } else { value = scalePtr->value; } - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->widthObj, &width); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); if (scalePtr->orient == ORIENT_VERTICAL) { - x = scalePtr->vertTroughX + width/2 - + borderWidth; + x = scalePtr->vertTroughX + scalePtr->width/2 + + scalePtr->borderWidth; y = TkScaleValueToPixel(scalePtr, value); } else { x = TkScaleValueToPixel(scalePtr, value); - y = scalePtr->horizTroughY + width/2 - + borderWidth; + y = scalePtr->horizTroughY + scalePtr->width/2 + + scalePtr->borderWidth; } coords[0] = Tcl_NewWideIntObj(x); coords[1] = Tcl_NewWideIntObj(y); Tcl_SetObjResult(interp, Tcl_NewListObj(2, coords)); break; @@ -592,16 +588,16 @@ static int ConfigureScale( Tcl_Interp *interp, /* Used for error reporting. */ TkScale *scalePtr, /* Information about widget; may or may not * already have values for some fields. */ - int objc, /* Number of valid entries in objv. */ + Tcl_Size objc, /* Number of valid entries in objv. */ Tcl_Obj *const objv[]) /* Argument values. */ { Tk_SavedOptions savedOptions; Tcl_Obj *errorResult = NULL; - int error, highlightWidth, borderWidth; + int error; double varValue; /* * Eliminate any existing trace on a variable monitored by the scale. */ @@ -675,21 +671,14 @@ scalePtr->labelLength = scalePtr->label ? strlen(scalePtr->label) : 0; Tk_SetBackgroundFromBorder(scalePtr->tkwin, scalePtr->bgBorder); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth < 0) { - highlightWidth = 0; - if (scalePtr->highlightWidthObj) { - Tcl_DecrRefCount(scalePtr->highlightWidthObj); - } - scalePtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(scalePtr->highlightWidthObj); - } - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - scalePtr->inset = highlightWidth + borderWidth; + if (scalePtr->highlightWidth < 0) { + scalePtr->highlightWidth = 0; + } + scalePtr->inset = scalePtr->highlightWidth + scalePtr->borderWidth; break; } if (!error) { Tk_FreeSavedOptions(&savedOptions); } @@ -766,11 +755,10 @@ void *instanceData) /* Information about widget. */ { XGCValues gcValues; GC gc; TkScale *scalePtr = (TkScale *)instanceData; - int highlightWidth, borderWidth; gcValues.foreground = scalePtr->troughColorPtr->pixel; gc = Tk_GetGC(scalePtr->tkwin, GCForeground, &gcValues); if (scalePtr->troughGC != NULL) { Tk_FreeGC(scalePtr->display, scalePtr->troughGC); @@ -788,13 +776,11 @@ if (scalePtr->copyGC == NULL) { gcValues.graphics_exposures = False; scalePtr->copyGC = Tk_GetGC(scalePtr->tkwin, GCGraphicsExposures, &gcValues); } - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->highlightWidthObj, &highlightWidth); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - scalePtr->inset = highlightWidth + borderWidth; + scalePtr->inset = scalePtr->highlightWidth + scalePtr->borderWidth; /* * Recompute display-related information, and let the geometry manager * know how much space is needed now. */ @@ -943,16 +929,14 @@ /* * No resolution was specified, so compute the difference in * value between adjacent pixels and use it for the least * significant digit. */ - int length; x = fabs(scalePtr->fromValue - scalePtr->toValue); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->lengthObj, &length); - if (length > 0) { - x /= length; + if (scalePtr->length > 0) { + x /= scalePtr->length; } if (x > 0) { leastSigDigit = ScaleDigit(x); } else { leastSigDigit = 0; @@ -1025,11 +1009,10 @@ TkScale *scalePtr) /* Information about widget. */ { char valueString[TCL_DOUBLE_SPACE]; int tmp, valuePixels, tickPixels, x, y, extraSpace; Tk_FontMetrics fm; - int length, width, borderWidth; Tk_GetFontMetrics(scalePtr->tkfont, &fm); scalePtr->fontHeight = fm.linespace + SPACING; /* @@ -1053,20 +1036,17 @@ } else { scalePtr->horizValueY = y; } y += extraSpace; scalePtr->horizTroughY = y; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->lengthObj, &length); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->widthObj, &width); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - y += width + 2 * borderWidth; + y += scalePtr->width + 2*scalePtr->borderWidth; if (scalePtr->tickInterval != 0) { scalePtr->horizTickY = y + SPACING; y += scalePtr->fontHeight + SPACING; } Tk_GeometryRequest(scalePtr->tkwin, - length + 2*scalePtr->inset, y + scalePtr->inset); + scalePtr->length + 2*scalePtr->inset, y + scalePtr->inset); Tk_SetInternalBorder(scalePtr->tkwin, scalePtr->inset); return; } /* @@ -1131,24 +1111,21 @@ } else { scalePtr->vertTickRightX = x; scalePtr->vertValueRightX = x; } scalePtr->vertTroughX = x; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->widthObj, &width); - x += 2 * borderWidth + width; + x += 2*scalePtr->borderWidth + scalePtr->width; if (scalePtr->labelLength == 0) { scalePtr->vertLabelX = 0; } else { scalePtr->vertLabelX = x + fm.ascent/2; x = scalePtr->vertLabelX + fm.ascent/2 + Tk_TextWidth(scalePtr->tkfont, scalePtr->label, scalePtr->labelLength); } - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->lengthObj, &length); Tk_GeometryRequest(scalePtr->tkwin, x + scalePtr->inset, - length + 2*scalePtr->inset); + scalePtr->length + 2*scalePtr->inset); Tk_SetInternalBorder(scalePtr->tkwin, scalePtr->inset); } /* *-------------------------------------------------------------- @@ -1172,11 +1149,10 @@ ScaleEventProc( void *clientData, /* Information about window. */ XEvent *eventPtr) /* Information about event. */ { TkScale *scalePtr = (TkScale *)clientData; - int highlightWidth; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { TkEventuallyRedrawScale(scalePtr, REDRAW_ALL); } else if (eventPtr->type == DestroyNotify) { DestroyScale(clientData); @@ -1184,20 +1160,18 @@ ComputeScaleGeometry(scalePtr); TkEventuallyRedrawScale(scalePtr, REDRAW_ALL); } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { scalePtr->flags |= GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (scalePtr->highlightWidth > 0) { TkEventuallyRedrawScale(scalePtr, REDRAW_ALL); } } } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { scalePtr->flags &= ~GOT_FOCUS; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->highlightWidthObj, &highlightWidth); - if (highlightWidth > 0) { + if (scalePtr->highlightWidth > 0) { TkEventuallyRedrawScale(scalePtr, REDRAW_ALL); } } } } @@ -1549,21 +1523,18 @@ TkScalePixelToValue( TkScale *scalePtr, /* Information about widget. */ int x, int y) /* Coordinates of point within window. */ { double value, pixelRange; - int borderWidth, sliderLength; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->sliderLengthObj, &sliderLength); if (scalePtr->orient == ORIENT_VERTICAL) { - pixelRange = Tk_Height(scalePtr->tkwin) - sliderLength - - 2 * scalePtr->inset - 2 * borderWidth; + pixelRange = Tk_Height(scalePtr->tkwin) - scalePtr->sliderLength + - 2*scalePtr->inset - 2*scalePtr->borderWidth; value = y; } else { - pixelRange = Tk_Width(scalePtr->tkwin) - sliderLength - - 2 * scalePtr->inset - 2 * borderWidth; + pixelRange = Tk_Width(scalePtr->tkwin) - scalePtr->sliderLength + - 2*scalePtr->inset - 2*scalePtr->borderWidth; value = x; } if (pixelRange <= 0) { /* @@ -1571,12 +1542,12 @@ * scale's current value. */ return scalePtr->value; } - value -= sliderLength/2 + scalePtr->inset - + borderWidth; + value -= scalePtr->sliderLength/2 + scalePtr->inset + + scalePtr->borderWidth; value /= pixelRange; if (value < 0) { value = 0; } if (value > 1) { @@ -1611,18 +1582,15 @@ TkScale *scalePtr, /* Information about widget. */ double value) /* Reading of the widget. */ { int y, pixelRange; double valueRange; - int borderWidth, sliderLength; - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, scalePtr->tkwin, scalePtr->sliderLengthObj, &sliderLength); valueRange = scalePtr->toValue - scalePtr->fromValue; pixelRange = ((scalePtr->orient == ORIENT_VERTICAL) ? Tk_Height(scalePtr->tkwin) : Tk_Width(scalePtr->tkwin)) - - sliderLength - 2 * scalePtr->inset - 2 * borderWidth; + - scalePtr->sliderLength - 2*scalePtr->inset - 2*scalePtr->borderWidth; if (valueRange == 0) { y = 0; } else { y = ScaleRound((value - scalePtr->fromValue) * pixelRange / valueRange); @@ -1630,11 +1598,11 @@ y = 0; } else if (y > pixelRange) { y = pixelRange; } } - y += sliderLength / 2 + scalePtr->inset + borderWidth; + y += scalePtr->sliderLength/2 + scalePtr->inset + scalePtr->borderWidth; return y; } /* * Local Variables: Index: generic/tkScale.h ================================================================== --- generic/tkScale.h +++ generic/tkScale.h @@ -51,13 +51,13 @@ Tcl_Command widgetCmd; /* Token for scale's widget command. */ Tk_OptionTable optionTable; /* Table that defines configuration options * available for this widget. */ enum orient orient; /* Orientation for window (vertical or * horizontal). */ - Tcl_Obj *widthObj; /* Desired narrow dimension of scale, in + int width; /* Desired narrow dimension of scale, in * pixels. */ - Tcl_Obj *lengthObj; /* Desired long dimension of scale, in + int length; /* Desired long dimension of scale, in * pixels. */ double value; /* Current value of scale. */ Tcl_Obj *varNamePtr; /* Name of variable or NULL. If non-NULL, * scale's value tracks the contents of this * variable and vice versa. */ @@ -94,11 +94,11 @@ /* * Information used when displaying widget: */ - Tcl_Obj *borderWidthObj; /* Width of 3-D border around window. */ + int borderWidth; /* Width of 3-D border around window. */ Tk_3DBorder bgBorder; /* Used for drawing slider and other * background areas. */ Tk_3DBorder activeBorder; /* For drawing the slider when active. */ int sliderRelief; /* Is slider to be drawn raised, sunken, * etc. */ @@ -108,11 +108,11 @@ Tk_Font tkfont; /* Information about text font, or NULL. */ XColor *textColorPtr; /* Color for drawing text. */ GC textGC; /* GC for drawing text in normal mode. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ - Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around + int highlightWidth; /* Width in pixels of highlight to draw around * widget when it has the focus. <= 0 means * don't draw a highlight. */ Tk_3DBorder highlightBorder;/* Value of -highlightbackground option: * specifies background with which to draw 3-D * default ring and focus highlight area when @@ -121,11 +121,11 @@ int inset; /* Total width of all borders, including * traversal highlight and 3-D border. * Indicates how much interior stuff must be * offset from outside edges to leave room for * borders. */ - Tcl_Obj *sliderLengthObj; /* Length of slider, measured in pixels along + int sliderLength; /* Length of slider, measured in pixels along * long dimension of scale. */ int showValue; /* Non-zero means to display the scale value * below or to the left of the slider; zero * means don't display the value. */ Index: generic/tkScrollbar.c ================================================================== --- generic/tkScrollbar.c +++ generic/tkScrollbar.c @@ -49,12 +49,12 @@ {TK_CONFIG_SYNONYM, "-bd", "borderWidth", NULL, NULL, 0, 0, NULL}, {TK_CONFIG_SYNONYM, "-bg", "background", NULL, NULL, 0, 0, NULL}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_SCROLLBAR_BORDER_WIDTH, offsetof(TkScrollbar, borderWidth), 0, NULL}, {TK_CONFIG_STRING, "-command", "command", "Command", - DEF_SCROLLBAR_COMMAND, offsetof(TkScrollbar, command), - TK_CONFIG_NULL_OK, NULL}, + DEF_SCROLLBAR_COMMAND, offsetof(TkScrollbar, commandObj), + TK_CONFIG_OBJS|TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_SCROLLBAR_CURSOR, offsetof(TkScrollbar, cursor), TK_CONFIG_NULL_OK, NULL}, {TK_CONFIG_PIXELS, "-elementborderwidth", "elementBorderWidth", "BorderWidth", DEF_SCROLLBAR_EL_BORDER_WIDTH, offsetof(TkScrollbar, elementBorderWidth), TK_CONFIG_NULL_OK, NULL}, @@ -77,12 +77,12 @@ {TK_CONFIG_INT, "-repeatdelay", "repeatDelay", "RepeatDelay", DEF_SCROLLBAR_REPEAT_DELAY, offsetof(TkScrollbar, repeatDelay), 0, NULL}, {TK_CONFIG_INT, "-repeatinterval", "repeatInterval", "RepeatInterval", DEF_SCROLLBAR_REPEAT_INTERVAL, offsetof(TkScrollbar, repeatInterval), 0, NULL}, {TK_CONFIG_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_SCROLLBAR_TAKE_FOCUS, offsetof(TkScrollbar, takeFocus), - TK_CONFIG_NULL_OK, NULL}, + DEF_SCROLLBAR_TAKE_FOCUS, offsetof(TkScrollbar, takeFocusObj), + TK_CONFIG_NULL_OK|TK_CONFIG_OBJS, NULL}, {TK_CONFIG_COLOR, "-troughcolor", "troughColor", "Background", DEF_SCROLLBAR_TROUGH_COLOR, offsetof(TkScrollbar, troughColorPtr), TK_CONFIG_COLOR_ONLY, NULL}, {TK_CONFIG_COLOR, "-troughcolor", "troughColor", "Background", DEF_SCROLLBAR_TROUGH_MONO, offsetof(TkScrollbar, troughColorPtr), @@ -157,12 +157,11 @@ scrollPtr->widgetCmd = Tcl_CreateObjCommand(interp, Tk_PathName(scrollPtr->tkwin), ScrollbarWidgetObjCmd, scrollPtr, ScrollbarCmdDeletedProc); scrollPtr->vertical = 0; scrollPtr->width = 0; - scrollPtr->command = NULL; - scrollPtr->commandSize = 0; + scrollPtr->commandObj = NULL; scrollPtr->repeatDelay = 0; scrollPtr->repeatInterval = 0; scrollPtr->borderWidth = 0; scrollPtr->bgBorder = NULL; scrollPtr->activeBorder = NULL; @@ -170,20 +169,30 @@ scrollPtr->relief = TK_RELIEF_FLAT; scrollPtr->highlightWidth = 0; scrollPtr->highlightBgColorPtr = NULL; scrollPtr->highlightColorPtr = NULL; scrollPtr->inset = 0; - scrollPtr->elementBorderWidth = INT_MIN; + scrollPtr->elementBorderWidth = -1; scrollPtr->arrowLength = 0; scrollPtr->sliderFirst = 0; scrollPtr->sliderLast = 0; scrollPtr->activeField = 0; scrollPtr->activeRelief = TK_RELIEF_RAISED; +#ifndef TK_NO_DEPRECATED +#define totalUnits dummy1 +#define windowUnits dummy2 +#define firstUnit dummy3 +#define lastUnit dummy4 + scrollPtr->totalUnits = 0; + scrollPtr->windowUnits = 0; + scrollPtr->firstUnit = 0; + scrollPtr->lastUnit = 0; +#endif /* TK_NO_DEPRECATED */ scrollPtr->firstFraction = 0.0; scrollPtr->lastFraction = 0.0; scrollPtr->cursor = NULL; - scrollPtr->takeFocus = NULL; + scrollPtr->takeFocusObj = NULL; scrollPtr->flags = 0; if (ConfigureScrollbar(interp, scrollPtr, objc-2, objv+2, 0) != TCL_OK) { Tk_DestroyWindow(scrollPtr->tkwin); return TCL_ERROR; @@ -315,15 +324,15 @@ goto error; } if (scrollPtr->vertical) { pixels = yDelta; length = Tk_Height(scrollPtr->tkwin) - 1 - - 2*(scrollPtr->arrowLength + scrollPtr->inset); + - 2 * (scrollPtr->arrowLength + scrollPtr->inset); } else { pixels = xDelta; length = Tk_Width(scrollPtr->tkwin) - 1 - - 2*(scrollPtr->arrowLength + scrollPtr->inset); + - 2 * (scrollPtr->arrowLength + scrollPtr->inset); } if (length == 0) { fraction = 0.0; } else { fraction = ((double) pixels / (double) length); @@ -344,15 +353,15 @@ goto error; } if (scrollPtr->vertical) { pos = y - (scrollPtr->arrowLength + scrollPtr->inset); length = Tk_Height(scrollPtr->tkwin) - 1 - - 2*(scrollPtr->arrowLength + scrollPtr->inset); + - 2 * (scrollPtr->arrowLength + scrollPtr->inset); } else { pos = x - (scrollPtr->arrowLength + scrollPtr->inset); length = Tk_Width(scrollPtr->tkwin) - 1 - - 2*(scrollPtr->arrowLength + scrollPtr->inset); + - 2 * (scrollPtr->arrowLength + scrollPtr->inset); } if (length == 0) { fraction = 0.0; } else { fraction = ((double) pos / (double) length); @@ -370,10 +379,21 @@ if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "get"); goto error; } +#ifndef TK_NO_DEPRECATED +# define OLD_STYLE_COMMANDS 2 + if (scrollPtr->flags & OLD_STYLE_COMMANDS) { + resObjs[0] = Tcl_NewWideIntObj(scrollPtr->totalUnits); + resObjs[1] = Tcl_NewWideIntObj(scrollPtr->windowUnits); + resObjs[2] = Tcl_NewWideIntObj(scrollPtr->firstUnit); + resObjs[3] = Tcl_NewWideIntObj(scrollPtr->lastUnit); + Tcl_SetObjResult(interp, Tcl_NewListObj(4, resObjs)); + break; + } +#endif /* TK_NO_DEPRECATED */ resObjs[0] = Tcl_NewDoubleObj(scrollPtr->firstFraction); resObjs[1] = Tcl_NewDoubleObj(scrollPtr->lastFraction); Tcl_SetObjResult(interp, Tcl_NewListObj(2, resObjs)); break; } @@ -421,10 +441,52 @@ } else if (last > 1.0) { scrollPtr->lastFraction = 1.0; } else { scrollPtr->lastFraction = last; } +#ifndef TK_NO_DEPRECATED + scrollPtr->flags &= ~OLD_STYLE_COMMANDS; + } else if (objc == 6) { + int totalUnits, windowUnits, firstUnit, lastUnit; + if (Tcl_GetIntFromObj(interp, objv[2], &totalUnits) != TCL_OK) { + goto error; + } + if (totalUnits < 0) { + totalUnits = 0; + } + if (Tcl_GetIntFromObj(interp, objv[3], &windowUnits) != TCL_OK) { + goto error; + } + if (windowUnits < 0) { + windowUnits = 0; + } + if (Tcl_GetIntFromObj(interp, objv[4], &firstUnit) != TCL_OK) { + goto error; + } + if (Tcl_GetIntFromObj(interp, objv[5], &lastUnit) != TCL_OK) { + goto error; + } + if (totalUnits > 0) { + if (lastUnit < firstUnit) { + lastUnit = firstUnit; + } + } else { + firstUnit = lastUnit = 0; + } + scrollPtr->totalUnits = totalUnits; + scrollPtr->windowUnits = windowUnits; + scrollPtr->firstUnit = firstUnit; + scrollPtr->lastUnit = lastUnit; + if (scrollPtr->totalUnits == 0) { + scrollPtr->firstFraction = 0.0; + scrollPtr->lastFraction = 1.0; + } else { + scrollPtr->firstFraction = ((double) firstUnit)/totalUnits; + scrollPtr->lastFraction = ((double) (lastUnit+1))/totalUnits; + } + scrollPtr->flags |= OLD_STYLE_COMMANDS; +#endif /* !TK_NO_DEPRECATED */ } else { Tcl_WrongNumArgs(interp, 1, objv, "set firstFraction lastFraction"); goto error; } TkpComputeScrollbarGeometry(scrollPtr); @@ -471,32 +533,27 @@ Tcl_Size objc, /* Number of valid entries in argv. */ Tcl_Obj *const objv[], /* Arguments. */ int flags) /* Flags to pass to Tk_ConfigureWidget. */ { if (Tk_ConfigureWidget(interp, scrollPtr->tkwin, configSpecs, objc, - objv, scrollPtr, flags) != TCL_OK) { + (const char **)objv, (char *)scrollPtr, flags|TK_CONFIG_OBJS) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the background * from a 3-D border. */ - if (scrollPtr->command != NULL) { - scrollPtr->commandSize = (int) strlen(scrollPtr->command); - } else { - scrollPtr->commandSize = 0; - } if (scrollPtr->highlightWidth < 0) { scrollPtr->highlightWidth = 0; } if (scrollPtr->borderWidth < 0) { scrollPtr->borderWidth = 0; } if (scrollPtr->elementBorderWidth < 0) { - scrollPtr->elementBorderWidth = INT_MIN; + scrollPtr->elementBorderWidth = -1; } /* * Configure platform specific options. */ Index: generic/tkScrollbar.h ================================================================== --- generic/tkScrollbar.h +++ generic/tkScrollbar.h @@ -31,48 +31,64 @@ * freed even after tkwin has gone away. */ Tcl_Interp *interp; /* Interpreter associated with scrollbar. */ Tcl_Command widgetCmd; /* Token for scrollbar's widget command. */ int vertical; /* Non-zero means vertical orientation * requested, zero means horizontal. */ +#if TK_MAJOR_VERSION > 8 + Tcl_Obj *widthObj; /* Desired narrow dimension of scrollbar, in + * pixels. */ +#else int width; /* Desired narrow dimension of scrollbar, in * pixels. */ - char *command; /* Command prefix to use when invoking +#endif + Tcl_Obj *commandObj; /* Command prefix to use when invoking * scrolling commands. NULL means don't invoke - * commands. Malloc'ed. */ - int commandSize; /* Number of non-NULL bytes in command. */ + * commands. */ int repeatDelay; /* How long to wait before auto-repeating on * scrolling actions (in ms). */ int repeatInterval; /* Interval between autorepeats (in ms). */ int jump; /* Value of -jump option. */ /* * Information used when displaying widget: */ - int borderWidth; /* Width of 3-D borders. */ +#if TK_MAJOR_VERSION > 8 + Tcl_Obj *borderWidthObj; /* Width of 3-D borders. */ +#else + int borderWidth; +#endif Tk_3DBorder bgBorder; /* Used for drawing background (all flat * surfaces except for trough). */ Tk_3DBorder activeBorder; /* For drawing backgrounds when active (i.e. * when mouse is positioned over element). */ XColor *troughColorPtr; /* Color for drawing trough. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ - int highlightWidth; /* Width in pixels of highlight to draw around +#if TK_MAJOR_VERSION > 8 + Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around * widget when it has the focus. <= 0 means * don't draw a highlight. */ +#else + int highlightWidth; +#endif XColor *highlightBgColorPtr; /* Color for drawing traversal highlight area * when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ int inset; /* Total width of all borders, including * traversal highlight and 3-D border. * Indicates how much interior stuff must be * offset from outside edges to leave room for * borders. */ - int elementBorderWidth; /* Width of border to draw around elements +#if TK_MAJOR_VERSION > 8 + Tcl_Obj *elementBorderWidthObj; /* Width of border to draw around elements * inside scrollbar (arrows and slider). -1 * means use borderWidth. */ +#else + int elementBorderWidth; +#endif int arrowLength; /* Length of arrows along long dimension of * scrollbar, including space for a small gap * between the arrow and the slider. * Recomputed on window size changes. */ int sliderFirst; /* Pixel coordinate of top or left edge of @@ -85,34 +101,32 @@ * field. */ int activeRelief; /* Value of -activeRelief option: relief to * use for active element. */ /* - * Information describing the application related to the scrollbar. This - * information is provided by the application by invoking the "set" widget - * command. This information can now be provided in two ways: the "old" - * form (totalUnits, windowUnits, firstUnit, and lastUnit), or the "new" - * form (firstFraction and lastFraction). FirstFraction and lastFraction - * will always be valid, but the old-style information is only valid if - * the OLD_STYLE_COMMANDS flag is 1. + * Information describing the application related to the scrollbar, which + * is provided by the application by invoking the "set" widget command. + * It can be provided in two ways: the "new" form (firstFraction + * and lastFraction) or the "old" form. The "old" form is deprecated. */ +#if TK_MAJOR_VERSION < 9 + int dummy1, dummy2, dummy3, dummy4; /* deprecated, for "old" form. */ +#endif double firstFraction; /* Position of first visible thing in window, - * specified as a fraction between 0 and - * 1.0. */ + * specified as a fraction between 0 and 1.0. */ double lastFraction; /* Position of last visible thing in window, - * specified as a fraction between 0 and - * 1.0. */ + * specified as a fraction between 0 and 1.0. */ /* * Miscellaneous information: */ Tk_Cursor cursor; /* Current cursor for window, or NULL. */ - char *takeFocus; /* Value of -takefocus option; not used in the + Tcl_Obj *takeFocusObj; /* Value of -takefocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ int flags; /* Various flags; see below for * definitions. */ } TkScrollbar; /* @@ -130,14 +144,10 @@ /* * Flag bits for scrollbars: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler has * already been queued to redraw this window. - * OLD_STYLE_COMMANDS: Non-zero means the old style of commands - * should be used to communicate with the widget: - * ".t yview 40", instead of - * ".t yview scroll 2 lines", for example. * GOT_FOCUS: Non-zero means this window has the input * focus. */ #define REDRAW_PENDING 1 Index: generic/tkSelect.c ================================================================== --- generic/tkSelect.c +++ generic/tkSelect.c @@ -1399,19 +1399,19 @@ * the command has not been deleted. */ if (cmdInfoPtr->interp != NULL) { if (length <= maxBytes) { - cmdInfoPtr->charOffset += Tcl_NumUtfChars(string, TCL_INDEX_NONE); + cmdInfoPtr->charOffset += TkNumUtfChars(string, TCL_INDEX_NONE); cmdInfoPtr->buffer[0] = '\0'; } else { - Tcl_UniChar ch = 0; + int ch = 0; p = string; string += count; numChars = 0; while (p < string) { - p += Tcl_UtfToUniChar(p, &ch); + p += TkUtfToUniChar(p, &ch); numChars++; } cmdInfoPtr->charOffset += numChars; length = p - string; if (length > 0) { Index: generic/tkSquare.c ================================================================== --- generic/tkSquare.c +++ generic/tkSquare.c @@ -21,11 +21,10 @@ #endif #ifndef USE_TK_STUBS # define USE_TK_STUBS #endif #include "tkInt.h" -#include /* * A data structure of the following type is kept for each square widget * managed by this file: */ @@ -52,14 +51,13 @@ Tcl_Obj *bgBorderPtr; Tcl_Obj *fgBorderPtr; Tcl_Obj *reliefPtr; GC gc; /* Graphics context for copying from * off-screen pixmap onto screen. */ - bool doubleBuffer; /* true means double-buffer redisplay with - * pixmap; false means draw straight onto the - * display. */ - bool updatePending; /* true means a call to SquareDisplay has + int doubleBuffer; /* Non-zero means double-buffer redisplay with + * pixmap; 0 means draw straight onto the display. */ + int updatePending; /* Non-zero means a call to SquareDisplay has * already been scheduled. */ } Square; /* * Information used for argv parsing. @@ -74,11 +72,11 @@ {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", "2", offsetof(Square, borderWidthObj), TCL_INDEX_NONE, 0, NULL, 0}, {TK_OPTION_BOOLEAN, "-dbl", "doubleBuffer", "DoubleBuffer", - "1", TCL_INDEX_NONE, offsetof(Square, doubleBuffer), TK_OPTION_VAR(bool) , NULL, 0}, + "1", TCL_INDEX_NONE, offsetof(Square, doubleBuffer), 0 , NULL, 0}, {TK_OPTION_SYNONYM, "-fg", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-foreground", 0}, {TK_OPTION_BORDER, "-foreground", "foreground", "Foreground", "#b03060", offsetof(Square, fgBorderPtr), TCL_INDEX_NONE, 0, "black", 0}, @@ -278,11 +276,11 @@ if (result == TCL_OK) { result = SquareConfigure(interp, squarePtr); } if (!squarePtr->updatePending) { Tcl_DoWhenIdle(SquareDisplay, squarePtr); - squarePtr->updatePending = true; + squarePtr->updatePending = 1; } } if (resultObjPtr != NULL) { Tcl_SetObjResult(interp, resultObjPtr); } @@ -349,11 +347,11 @@ Tk_GetPixelsFromObj(NULL, squarePtr->tkwin, squarePtr->borderWidthObj, &borderWidth); Tk_SetInternalBorder(squarePtr->tkwin, borderWidth); if (!squarePtr->updatePending) { Tcl_DoWhenIdle(SquareDisplay, squarePtr); - squarePtr->updatePending = true; + squarePtr->updatePending = 1; } KeepInWindow(squarePtr); return TCL_OK; } @@ -383,17 +381,17 @@ Square *squarePtr = (Square *)clientData; if (eventPtr->type == Expose) { if (!squarePtr->updatePending) { Tcl_DoWhenIdle(SquareDisplay, squarePtr); - squarePtr->updatePending = true; + squarePtr->updatePending = 1; } } else if (eventPtr->type == ConfigureNotify) { KeepInWindow(squarePtr); if (!squarePtr->updatePending) { Tcl_DoWhenIdle(SquareDisplay, squarePtr); - squarePtr->updatePending = true; + squarePtr->updatePending = 1; } } else if (eventPtr->type == DestroyNotify) { if (squarePtr->tkwin != NULL) { Tk_FreeConfigOptions(squarePtr, squarePtr->optionTable, squarePtr->tkwin); @@ -475,11 +473,11 @@ Pixmap pm = None; Drawable d; int borderWidth, size, relief; Tk_3DBorder bgBorder, fgBorder; - squarePtr->updatePending = false; + squarePtr->updatePending = 0; if (!Tk_IsMapped(tkwin)) { return; } /* Index: generic/tkStubInit.c ================================================================== --- generic/tkStubInit.c +++ generic/tkStubInit.c @@ -37,30 +37,92 @@ /* * Remove macro that might interfere with the definition below. */ +#undef Tk_MainEx +#undef Tk_FreeXId +#undef Tk_FreeStyleFromObj +#undef Tk_GetStyleFromObj +#undef TkWinGetPlatformId #undef TkPutImage #undef XPutImage +#define TkMacOSXSetUpClippingRgn (void (*)(Drawable))(void *)doNothing +#undef TkMacOSXIsCharacterMissing +#define TkMacOSXIsCharacterMissing (int (*)(Tk_Font, unsigned int))(void *)doNothing + +#if defined(_WIN32) && !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +# define Tk_TranslateWinEvent TkTranslateWinEvent +# define Tk_PointerEvent TkWinPointerEvent +#define TkWinGetPlatformId winGetPlatformId +static int TkWinGetPlatformId(void) { + return 2; +} +#else +# define Tk_TranslateWinEvent 0 +# define Tk_PointerEvent 0 +# define TkWinGetPlatformId 0 +#endif -#if !defined(MAC_OSX_TK) +#if defined(TK_NO_DEPRECATED) || (TCL_MAJOR_VERSION > 8) +# define TkSetWindowMenuBar 0 +# define TkpDrawHighlightBorder 0 +# define TkpUseWindow 0 +# define TkpSetMainMenubar 0 +# define TkpGetOtherWindow 0 +# define TkpGetSystemDefault 0 +# define TkpMakeContainer 0 +# define TkpMakeWindow 0 +#endif + static int doNothing(void) { /* dummy implementation, no need to do anything */ return 0; } + +#if defined(TK_NO_DEPRECATED) || TCL_MAJOR_VERSION > 8 +#define Tk_MainEx 0 +#define Tk_FreeXId 0 +#define Tk_FreeStyleFromObj 0 +#define Tk_GetStyleFromObj 0 +#define TkWinGetPlatformId 0 +#define Tk_PhotoPutBlock_NoComposite 0 +#define Tk_PhotoPutZoomedBlock_NoComposite 0 +#define Tk_PhotoExpand_Panic 0 +#define Tk_PhotoPutBlock_Panic 0 +#define Tk_PhotoPutZoomedBlock_Panic 0 +#define Tk_PhotoSetSize_Panic 0 +#define Tk_CreateOldPhotoImageFormat 0 +#else +#define Tk_FreeXId ((void (*)(Display *, XID))(void *)doNothing) +#define Tk_FreeStyleFromObj ((void (*)(Tcl_Obj *))(void *)doNothing) +#define Tk_GetStyleFromObj getStyleFromObj +static Tk_Style Tk_GetStyleFromObj(Tcl_Obj *obj) +{ + return Tk_AllocStyleFromObj(NULL, obj); +} +#endif /* !TK_NO_DEPRECATED */ + +#define TkpCmapStressed_ TkpCmapStressed +#define TkpSync_ TkpSync +#define TkUnixContainerId_ TkUnixContainerId +#define TkUnixDoOneXEvent_ TkUnixDoOneXEvent +#define TkUnixSetMenubar_ TkUnixSetMenubar +#define TkWmCleanup_ TkWmCleanup +#define TkSendCleanup_ TkSendCleanup +#define TkpTestsendCmd_ TkpTestsendCmd +#define TkGenWMConfigureEvent_ TkGenWMConfigureEvent +#define TkGenerateActivateEvents_ TkGenerateActivateEvents +#define TkMacOSXDrawable Tk_MacOSXGetNSWindowForDrawable + +#if !defined(MAC_OSX_TK) # undef TkpWillDrawWidget # undef TkpRedrawWidget -# undef TkpDefineNativeBitmaps -# undef TkpCreateNativeBitmap -# undef TkpGetNativeAppBitmap # define TkpWillDrawWidget ((int (*)(Tk_Window))(void *)doNothing) # define TkpRedrawWidget ((void (*)(Tk_Window))(void *)doNothing) -# define TkpDefineNativeBitmaps ((void (*)(void))(void *)doNothing) -# define TkpCreateNativeBitmap ((Pixmap (*)(Display *, const void *))(void *)doNothing) -# define TkpGetNativeAppBitmap ((Pixmap (*)(Display *, const char*, int *, int *))(void *)doNothing) #endif #ifdef _WIN32 int @@ -294,36 +356,36 @@ TkpChangeFocus, /* 55 */ TkpCloseDisplay, /* 56 */ TkpClaimFocus, /* 57 */ TkpDisplayWarning, /* 58 */ TkpGetAppName, /* 59 */ - 0, /* 60 */ + TkpGetOtherWindow, /* 60 */ TkpGetWrapperWindow, /* 61 */ TkpInit, /* 62 */ TkpInitializeMenuBindings, /* 63 */ - 0, /* 64 */ + TkpMakeContainer, /* 64 */ TkpMakeMenuWindow, /* 65 */ - 0, /* 66 */ + TkpMakeWindow, /* 66 */ TkpMenuNotifyToplevelCreate, /* 67 */ TkpOpenDisplay, /* 68 */ TkPointerEvent, /* 69 */ TkPolygonToArea, /* 70 */ TkPolygonToPoint, /* 71 */ TkPositionInTree, /* 72 */ TkpRedirectKeyEvent, /* 73 */ - 0, /* 74 */ - 0, /* 75 */ + TkpSetMainMenubar, /* 74 */ + TkpUseWindow, /* 75 */ 0, /* 76 */ TkQueueEventForAllChildren, /* 77 */ TkReadBitmapFile, /* 78 */ TkScrollWindow, /* 79 */ TkSelDeadWindow, /* 80 */ TkSelEventProc, /* 81 */ TkSelInit, /* 82 */ TkSelPropProc, /* 83 */ 0, /* 84 */ - 0, /* 85 */ + TkSetWindowMenuBar, /* 85 */ TkStringToKeysym, /* 86 */ TkThickPolyLineToArea, /* 87 */ TkWmAddToColormapWindows, /* 88 */ TkWmDeadWindow, /* 89 */ TkWmFocusToplevel, /* 90 */ @@ -345,24 +407,57 @@ TkGetDisplayList, /* 106 */ TkGetMainInfoList, /* 107 */ TkGetWindowFromObj, /* 108 */ TkpGetString, /* 109 */ TkpGetSubFonts, /* 110 */ - 0, /* 111 */ + TkpGetSystemDefault, /* 111 */ TkpMenuThreadInit, /* 112 */ XClipBox, /* 113 */ XCreateRegion, /* 114 */ XDestroyRegion, /* 115 */ XIntersectRegion, /* 116 */ XRectInRegion, /* 117 */ XSetRegion, /* 118 */ XUnionRectWithRegion, /* 119 */ 0, /* 120 */ +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + 0, /* 121 */ +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + 0, /* 121 */ +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + 0, /* 121 */ /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ TkpCreateNativeBitmap, /* 121 */ +#endif /* AQUA */ +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + 0, /* 122 */ +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + 0, /* 122 */ +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + 0, /* 122 */ /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ TkpDefineNativeBitmaps, /* 122 */ +#endif /* AQUA */ 0, /* 123 */ +#if !(defined(_WIN32) || defined(MAC_OSX_TK)) /* X11 */ + 0, /* 124 */ +#endif /* X11 */ +#if defined(_WIN32) /* WIN */ + 0, /* 124 */ +#endif /* WIN */ +#ifdef MAC_OSX_TK /* AQUA */ +# if TCL_MAJOR_VERSION < 9 + 0, /* 124 */ /* Dummy entry for stubs table backwards compatibility */ +# endif /* TCL_MAJOR_VERSION < 9 */ TkpGetNativeAppBitmap, /* 124 */ +#endif /* AQUA */ 0, /* 125 */ 0, /* 126 */ 0, /* 127 */ 0, /* 128 */ 0, /* 129 */ @@ -369,11 +464,11 @@ 0, /* 130 */ 0, /* 131 */ 0, /* 132 */ 0, /* 133 */ 0, /* 134 */ - 0, /* 135 */ + TkpDrawHighlightBorder, /* 135 */ TkSetFocusWin, /* 136 */ TkpSetKeycodeAndState, /* 137 */ TkpGetKeySym, /* 138 */ TkpInitKeymapInfo, /* 139 */ TkPhotoGetValidRegion, /* 140 */ @@ -428,11 +523,11 @@ static const TkIntPlatStubs tkIntPlatStubs = { TCL_STUB_MAGIC, 0, #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ - TkCreateXEventSource, /* 0 */ + TkAlignImageData, /* 0 */ 0, /* 1 */ TkGenerateActivateEvents, /* 2 */ TkpGetMS, /* 3 */ TkPointerDeadWindow, /* 4 */ TkpPrintWindowId, /* 5 */ @@ -461,15 +556,15 @@ TkWinXCleanup, /* 28 */ TkWinXInit, /* 29 */ TkWinSetForegroundWindow, /* 30 */ TkWinDialogDebug, /* 31 */ TkWinGetMenuSystemDefault, /* 32 */ - TkAlignImageData, /* 33 */ + TkWinGetPlatformId, /* 33 */ TkWinSetHINSTANCE, /* 34 */ TkWinGetPlatformTheme, /* 35 */ TkWinChildProc, /* 36 */ - 0, /* 37 */ + TkCreateXEventSource, /* 37 */ TkpCmapStressed, /* 38 */ TkpSync, /* 39 */ TkUnixContainerId, /* 40 */ TkUnixDoOneXEvent, /* 41 */ TkUnixSetMenubar, /* 42 */ @@ -478,22 +573,22 @@ TkpTestsendCmd, /* 45 */ 0, /* 46 */ TkpGetCapture, /* 47 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ - 0, /* 0 */ - TkAboutDlg, /* 1 */ - TkGenerateActivateEvents, /* 2 */ - TkpGetMS, /* 3 */ - TkPointerDeadWindow, /* 4 */ + TkGenerateActivateEvents, /* 0 */ + 0, /* 1 */ + TkGenerateActivateEvents_, /* 2 */ + TkPointerDeadWindow, /* 3 */ + TkpSetCapture, /* 4 */ TkpSetCursor, /* 5 */ - TkpScanWindowId, /* 6 */ - TkpWmSetState, /* 7 */ + TkpWmSetState, /* 6 */ + TkAboutDlg, /* 7 */ TkMacOSXButtonKeyState, /* 8 */ TkMacOSXClearMenubarActive, /* 9 */ TkMacOSXDispatchMenuEvent, /* 10 */ - TkpSetCapture, /* 11 */ + 0, /* 11 */ TkMacOSXHandleTearoffMenu, /* 12 */ 0, /* 13 */ TkMacOSXDoHLEvent, /* 14 */ 0, /* 15 */ TkMacOSXGetXWindow, /* 16 */ @@ -500,19 +595,19 @@ TkMacOSXGrowToplevel, /* 17 */ TkMacOSXHandleMenuSelect, /* 18 */ 0, /* 19 */ 0, /* 20 */ TkMacOSXInvalidateWindow, /* 21 */ - 0, /* 22 */ + TkMacOSXIsCharacterMissing, /* 22 */ TkMacOSXMakeRealWindowExist, /* 23 */ TkMacOSXMakeStippleMap, /* 24 */ TkMacOSXMenuClick, /* 25 */ 0, /* 26 */ TkMacOSXResizable, /* 27 */ TkMacOSXSetHelpMenuItemCount, /* 28 */ TkMacOSXSetScrollbarGrow, /* 29 */ - 0, /* 30 */ + TkMacOSXSetUpClippingRgn, /* 30 */ TkMacOSXSetUpGraphicsPort, /* 31 */ TkMacOSXUpdateClipRgn, /* 32 */ 0, /* 33 */ TkMacOSXUseMenuID, /* 34 */ TkMacOSXVisableClipRgn, /* 35 */ @@ -530,27 +625,30 @@ TkpGetCapture, /* 47 */ 0, /* 48 */ TkMacOSXGetContainer, /* 49 */ TkGenerateButtonEvent, /* 50 */ TkGenWMDestroyEvent, /* 51 */ - 0, /* 52 */ + TkMacOSXSetDrawingEnabled, /* 52 */ + TkpGetMS, /* 53 */ + TkMacOSXDrawable, /* 54 */ + TkpScanWindowId, /* 55 */ #endif /* AQUA */ #if !(defined(_WIN32) || defined(__CYGWIN__) || defined(MAC_OSX_TK)) /* X11 */ TkCreateXEventSource, /* 0 */ 0, /* 1 */ TkGenerateActivateEvents, /* 2 */ - 0, /* 3 */ - 0, /* 4 */ - 0, /* 5 */ - TkpScanWindowId, /* 6 */ - 0, /* 7 */ - 0, /* 8 */ - TkpWmSetState, /* 9 */ - 0, /* 10 */ + TkpCmapStressed, /* 3 */ + TkpSync, /* 4 */ + TkUnixContainerId, /* 5 */ + TkUnixDoOneXEvent, /* 6 */ + TkUnixSetMenubar, /* 7 */ + TkpScanWindowId, /* 8 */ + TkWmCleanup, /* 9 */ + TkSendCleanup, /* 10 */ 0, /* 11 */ - 0, /* 12 */ - 0, /* 13 */ + TkpWmSetState, /* 12 */ + TkpTestsendCmd_, /* 13 */ 0, /* 14 */ 0, /* 15 */ 0, /* 16 */ 0, /* 17 */ 0, /* 18 */ @@ -571,17 +669,17 @@ 0, /* 33 */ 0, /* 34 */ 0, /* 35 */ 0, /* 36 */ 0, /* 37 */ - TkpCmapStressed, /* 38 */ - TkpSync, /* 39 */ - TkUnixContainerId, /* 40 */ - TkUnixDoOneXEvent, /* 41 */ - TkUnixSetMenubar, /* 42 */ - TkWmCleanup, /* 43 */ - TkSendCleanup, /* 44 */ + TkpCmapStressed_, /* 38 */ + TkpSync_, /* 39 */ + TkUnixContainerId_, /* 40 */ + TkUnixDoOneXEvent_, /* 41 */ + TkUnixSetMenubar_, /* 42 */ + TkWmCleanup_, /* 43 */ + TkSendCleanup_, /* 44 */ TkpTestsendCmd, /* 45 */ #endif /* X11 */ }; static const TkIntXlibStubs tkIntXlibStubs = { @@ -754,117 +852,117 @@ XCreateImage, /* 2 */ XGetImage, /* 3 */ XGetAtomName, /* 4 */ XKeysymToString, /* 5 */ XCreateColormap, /* 6 */ - XCreatePixmapCursor, /* 7 */ - XCreateGlyphCursor, /* 8 */ - XGContextFromGC, /* 9 */ - XListHosts, /* 10 */ - XKeycodeToKeysym, /* 11 */ - XStringToKeysym, /* 12 */ - XRootWindow, /* 13 */ - XSetErrorHandler, /* 14 */ - XIconifyWindow, /* 15 */ - XWithdrawWindow, /* 16 */ - XGetWMColormapWindows, /* 17 */ - XAllocColor, /* 18 */ - XBell, /* 19 */ - XChangeProperty, /* 20 */ - XChangeWindowAttributes, /* 21 */ - XClearWindow, /* 22 */ - XConfigureWindow, /* 23 */ - XCopyArea, /* 24 */ - XCopyPlane, /* 25 */ - XCreateBitmapFromData, /* 26 */ - XDefineCursor, /* 27 */ - XDeleteProperty, /* 28 */ - XDestroyWindow, /* 29 */ - XDrawArc, /* 30 */ - XDrawLines, /* 31 */ - XDrawRectangle, /* 32 */ - XFillArc, /* 33 */ - XFillPolygon, /* 34 */ - XFillRectangles, /* 35 */ - XForceScreenSaver, /* 36 */ - XFreeColormap, /* 37 */ - XFreeColors, /* 38 */ - XFreeCursor, /* 39 */ - XFreeModifiermap, /* 40 */ - XGetGeometry, /* 41 */ - XGetInputFocus, /* 42 */ - XGetWindowProperty, /* 43 */ - XGetWindowAttributes, /* 44 */ - XGrabKeyboard, /* 45 */ - XGrabPointer, /* 46 */ - XKeysymToKeycode, /* 47 */ - XLookupColor, /* 48 */ - XMapWindow, /* 49 */ - XMoveResizeWindow, /* 50 */ - XMoveWindow, /* 51 */ - XNextEvent, /* 52 */ - XPutBackEvent, /* 53 */ - XQueryColors, /* 54 */ - XQueryPointer, /* 55 */ - XQueryTree, /* 56 */ - XRaiseWindow, /* 57 */ - XRefreshKeyboardMapping, /* 58 */ - XResizeWindow, /* 59 */ - XSelectInput, /* 60 */ - XSendEvent, /* 61 */ - XSetCommand, /* 62 */ - XSetIconName, /* 63 */ - XSetInputFocus, /* 64 */ - XSetSelectionOwner, /* 65 */ - XSetWindowBackground, /* 66 */ - XSetWindowBackgroundPixmap, /* 67 */ - XSetWindowBorder, /* 68 */ - XSetWindowBorderPixmap, /* 69 */ - XSetWindowBorderWidth, /* 70 */ - XSetWindowColormap, /* 71 */ - XTranslateCoordinates, /* 72 */ - XUngrabKeyboard, /* 73 */ - XUngrabPointer, /* 74 */ - XUnmapWindow, /* 75 */ - XWindowEvent, /* 76 */ - XDestroyIC, /* 77 */ - XFilterEvent, /* 78 */ - XmbLookupString, /* 79 */ - TkPutImage, /* 80 */ - XSetClipRectangles, /* 81 */ - XParseColor, /* 82 */ - XCreateGC, /* 83 */ - XFreeGC, /* 84 */ - XInternAtom, /* 85 */ - XSetBackground, /* 86 */ - XSetForeground, /* 87 */ - XSetClipMask, /* 88 */ - XSetClipOrigin, /* 89 */ - XSetTSOrigin, /* 90 */ - XChangeGC, /* 91 */ - XSetFont, /* 92 */ - XSetArcMode, /* 93 */ - XSetStipple, /* 94 */ - XSetFillRule, /* 95 */ - XSetFillStyle, /* 96 */ - XSetFunction, /* 97 */ - XSetLineAttributes, /* 98 */ - _XInitImageFuncPtrs, /* 99 */ - XCreateIC, /* 100 */ - XGetVisualInfo, /* 101 */ - XSetWMClientMachine, /* 102 */ - XStringListToTextProperty, /* 103 */ - XDrawLine, /* 104 */ - XWarpPointer, /* 105 */ - XFillRectangle, /* 106 */ + XGContextFromGC, /* 7 */ + XKeycodeToKeysym, /* 8 */ + XStringToKeysym, /* 9 */ + XRootWindow, /* 10 */ + XSetErrorHandler, /* 11 */ + XAllocColor, /* 12 */ + XBell, /* 13 */ + XChangeProperty, /* 14 */ + XChangeWindowAttributes, /* 15 */ + XConfigureWindow, /* 16 */ + XCopyArea, /* 17 */ + XCopyPlane, /* 18 */ + XCreateBitmapFromData, /* 19 */ + XDefineCursor, /* 20 */ + XDestroyWindow, /* 21 */ + XDrawArc, /* 22 */ + XDrawLines, /* 23 */ + XDrawRectangle, /* 24 */ + XFillArc, /* 25 */ + XFillPolygon, /* 26 */ + XFillRectangles, /* 27 */ + XFreeColormap, /* 28 */ + XFreeColors, /* 29 */ + XFreeModifiermap, /* 30 */ + XGetGeometry, /* 31 */ + XGetWindowProperty, /* 32 */ + XGrabKeyboard, /* 33 */ + XGrabPointer, /* 34 */ + XKeysymToKeycode, /* 35 */ + XMapWindow, /* 36 */ + XMoveResizeWindow, /* 37 */ + XMoveWindow, /* 38 */ + XQueryPointer, /* 39 */ + XRaiseWindow, /* 40 */ + XRefreshKeyboardMapping, /* 41 */ + XResizeWindow, /* 42 */ + XSelectInput, /* 43 */ + XSendEvent, /* 44 */ + XSetIconName, /* 45 */ + XSetInputFocus, /* 46 */ + XSetSelectionOwner, /* 47 */ + XSetWindowBackground, /* 48 */ + XSetWindowBackgroundPixmap, /* 49 */ + XSetWindowBorder, /* 50 */ + XSetWindowBorderPixmap, /* 51 */ + XSetWindowBorderWidth, /* 52 */ + XSetWindowColormap, /* 53 */ + XUngrabKeyboard, /* 54 */ + XUngrabPointer, /* 55 */ + XUnmapWindow, /* 56 */ + TkPutImage, /* 57 */ + XParseColor, /* 58 */ + XCreateGC, /* 59 */ + XFreeGC, /* 60 */ + XInternAtom, /* 61 */ + XSetBackground, /* 62 */ + XSetForeground, /* 63 */ + XSetClipMask, /* 64 */ + XSetClipOrigin, /* 65 */ + XSetTSOrigin, /* 66 */ + XChangeGC, /* 67 */ + XSetFont, /* 68 */ + XSetArcMode, /* 69 */ + XSetStipple, /* 70 */ + XSetFillRule, /* 71 */ + XSetFillStyle, /* 72 */ + XSetFunction, /* 73 */ + XSetLineAttributes, /* 74 */ + _XInitImageFuncPtrs, /* 75 */ + XCreateIC, /* 76 */ + XGetVisualInfo, /* 77 */ + XSetWMClientMachine, /* 78 */ + XStringListToTextProperty, /* 79 */ + XDrawSegments, /* 80 */ + XForceScreenSaver, /* 81 */ + XDrawLine, /* 82 */ + XFillRectangle, /* 83 */ + XClearWindow, /* 84 */ + XDrawPoint, /* 85 */ + XDrawPoints, /* 86 */ + XWarpPointer, /* 87 */ + XQueryColor, /* 88 */ + XQueryColors, /* 89 */ + XQueryTree, /* 90 */ + XSync, /* 91 */ + XTranslateCoordinates, /* 92 */ + XDeleteProperty, /* 93 */ + XFreeCursor, /* 94 */ + XGetInputFocus, /* 95 */ + XmbLookupString, /* 96 */ + XNextEvent, /* 97 */ + XPutBackEvent, /* 98 */ + XSetCommand, /* 99 */ + XWindowEvent, /* 100 */ + XGetWindowAttributes, /* 101 */ + XGetWMColormapWindows, /* 102 */ + XIconifyWindow, /* 103 */ + XWithdrawWindow, /* 104 */ + XListHosts, /* 105 */ + XSetClipRectangles, /* 106 */ XFlush, /* 107 */ XGrabServer, /* 108 */ XUngrabServer, /* 109 */ XFree, /* 110 */ XNoOp, /* 111 */ XSynchronize, /* 112 */ - XSync, /* 113 */ + XLookupColor, /* 113 */ XVisualIDFromVisual, /* 114 */ 0, /* 115 */ 0, /* 116 */ 0, /* 117 */ 0, /* 118 */ @@ -880,24 +978,24 @@ 0, /* 128 */ XLowerWindow, /* 129 */ XFillArcs, /* 130 */ XDrawArcs, /* 131 */ XDrawRectangles, /* 132 */ - XDrawSegments, /* 133 */ - XDrawPoint, /* 134 */ - XDrawPoints, /* 135 */ + 0, /* 133 */ + 0, /* 134 */ + 0, /* 135 */ XReparentWindow, /* 136 */ XPutImage, /* 137 */ XPolygonRegion, /* 138 */ XPointInRegion, /* 139 */ XVaCreateNestedList, /* 140 */ XSetICValues, /* 141 */ XGetICValues, /* 142 */ XSetICFocus, /* 143 */ - 0, /* 144 */ - 0, /* 145 */ - 0, /* 146 */ + XDestroyIC, /* 144 */ + XCreatePixmapCursor, /* 145 */ + XCreateGlyphCursor, /* 146 */ XFreeFontSet, /* 147 */ XCloseIM, /* 148 */ XRegisterIMInstantiateCallback, /* 149 */ XUnregisterIMInstantiateCallback, /* 150 */ XSetLocaleModifiers, /* 151 */ @@ -917,18 +1015,20 @@ #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ Tk_AttachHWND, /* 0 */ Tk_GetHINSTANCE, /* 1 */ Tk_GetHWND, /* 2 */ Tk_HWNDToWindow, /* 3 */ + Tk_PointerEvent, /* 4 */ + Tk_TranslateWinEvent, /* 5 */ #endif /* WIN */ #ifdef MAC_OSX_TK /* AQUA */ 0, /* 0 */ 0, /* 1 */ 0, /* 2 */ 0, /* 3 */ TkMacOSXInitAppleEvents, /* 4 */ - 0, /* 5 */ + TkGenWMConfigureEvent_, /* 5 */ TkMacOSXInvalClipRgns, /* 6 */ 0, /* 7 */ TkMacOSXGetRootControl, /* 8 */ Tk_MacOSXSetupTkNotifier, /* 9 */ Tk_MacOSXIsAppInFront, /* 10 */ @@ -1026,11 +1126,11 @@ Tk_FreeGC, /* 72 */ Tk_FreeImage, /* 73 */ Tk_FreeOptions, /* 74 */ Tk_FreePixmap, /* 75 */ Tk_FreeTextLayout, /* 76 */ - 0, /* 77 */ + Tk_FreeXId, /* 77 */ Tk_GCForColor, /* 78 */ Tk_GeometryRequest, /* 79 */ Tk_Get3DBorder, /* 80 */ Tk_GetAllBindings, /* 81 */ Tk_GetAnchor, /* 82 */ @@ -1067,11 +1167,11 @@ Tk_GetVRootGeometry, /* 113 */ Tk_Grab, /* 114 */ Tk_HandleEvent, /* 115 */ Tk_IdToWindow, /* 116 */ Tk_ImageChanged, /* 117 */ - 0, /* 118 */ + Tk_Init, /* 118 */ Tk_InternAtom, /* 119 */ Tk_IntersectTextLayout, /* 120 */ Tk_MaintainGeometry, /* 121 */ Tk_MainWindow, /* 122 */ Tk_MakeWindowExist, /* 123 */ @@ -1093,26 +1193,26 @@ Tk_NameOfJustify, /* 139 */ Tk_NameOfRelief, /* 140 */ Tk_NameToWindow, /* 141 */ Tk_OwnSelection, /* 142 */ Tk_ParseArgv, /* 143 */ - 0, /* 144 */ - 0, /* 145 */ + Tk_PhotoPutBlock_NoComposite, /* 144 */ + Tk_PhotoPutZoomedBlock_NoComposite, /* 145 */ Tk_PhotoGetImage, /* 146 */ Tk_PhotoBlank, /* 147 */ - 0, /* 148 */ + Tk_PhotoExpand_Panic, /* 148 */ Tk_PhotoGetSize, /* 149 */ - 0, /* 150 */ + Tk_PhotoSetSize_Panic, /* 150 */ Tk_PointToChar, /* 151 */ Tk_PostscriptFontName, /* 152 */ Tk_PreserveColormap, /* 153 */ Tk_QueueWindowEvent, /* 154 */ Tk_RedrawImage, /* 155 */ Tk_ResizeWindow, /* 156 */ Tk_RestackWindow, /* 157 */ Tk_RestrictEvents, /* 158 */ - 0, /* 159 */ + Tk_SafeInit, /* 159 */ Tk_SetAppName, /* 160 */ Tk_SetBackgroundFromBorder, /* 161 */ Tk_SetClass, /* 162 */ Tk_SetGrid, /* 163 */ Tk_SetInternalBorder, /* 164 */ @@ -1161,15 +1261,15 @@ Tk_GetMMFromObj, /* 207 */ Tk_GetPixelsFromObj, /* 208 */ Tk_GetReliefFromObj, /* 209 */ Tk_GetScrollInfoObj, /* 210 */ Tk_InitOptions, /* 211 */ - 0, /* 212 */ + Tk_MainEx, /* 212 */ Tk_RestoreSavedOptions, /* 213 */ Tk_SetOptions, /* 214 */ Tk_InitConsoleChannels, /* 215 */ - 0, /* 216 */ + Tk_CreateConsoleWindow, /* 216 */ Tk_CreateSmoothMethod, /* 217 */ 0, /* 218 */ 0, /* 219 */ Tk_GetDash, /* 220 */ Tk_CreateOutline, /* 221 */ @@ -1195,12 +1295,12 @@ Tk_CreateAnonymousWindow, /* 241 */ Tk_SetClassProcs, /* 242 */ Tk_SetInternalBorderEx, /* 243 */ Tk_SetMinimumRequestSize, /* 244 */ Tk_SetCaretPos, /* 245 */ - 0, /* 246 */ - 0, /* 247 */ + Tk_PhotoPutBlock_Panic, /* 246 */ + Tk_PhotoPutZoomedBlock_Panic, /* 247 */ Tk_CollapseMotionEvents, /* 248 */ Tk_RegisterStyleEngine, /* 249 */ Tk_GetStyleEngine, /* 250 */ Tk_RegisterStyledElement, /* 251 */ Tk_GetElementId, /* 252 */ @@ -1207,12 +1307,12 @@ Tk_CreateStyle, /* 253 */ Tk_GetStyle, /* 254 */ Tk_FreeStyle, /* 255 */ Tk_NameOfStyle, /* 256 */ Tk_AllocStyleFromObj, /* 257 */ - 0, /* 258 */ - 0, /* 259 */ + Tk_GetStyleFromObj, /* 258 */ + Tk_FreeStyleFromObj, /* 259 */ Tk_GetStyledElement, /* 260 */ Tk_GetElementSize, /* 261 */ Tk_GetElementBox, /* 262 */ Tk_GetElementBorderWidth, /* 263 */ Tk_DrawElement, /* 264 */ @@ -1221,12 +1321,12 @@ Tk_PhotoPutZoomedBlock, /* 267 */ Tk_PhotoSetSize, /* 268 */ Tk_GetUserInactiveTime, /* 269 */ Tk_ResetUserInactiveTime, /* 270 */ Tk_Interp, /* 271 */ - 0, /* 272 */ - 0, /* 273 */ + Tk_CreateOldImageType, /* 272 */ + Tk_CreateOldPhotoImageFormat, /* 273 */ Tk_AlwaysShowSelection, /* 274 */ Tk_GetButtonMask, /* 275 */ Tk_GetDoublePixelsFromObj, /* 276 */ Tk_NewWindowObj, /* 277 */ Tk_SendVirtualEvent, /* 278 */ Index: generic/tkStyle.c ================================================================== --- generic/tkStyle.c +++ generic/tkStyle.c @@ -1356,11 +1356,11 @@ entryPtr = Tcl_FindHashEntry(&tsdPtr->styleTable, (name!=NULL?name:"")); if (entryPtr == NULL) { if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "style \"%s\" does not exist", name)); + "style \"%s\" doesn't exist", name)); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "STYLE", name, (char *)NULL); } return NULL; } return (Tk_Style)Tcl_GetHashValue(entryPtr); Index: generic/tkTest.c ================================================================== --- generic/tkTest.c +++ generic/tkTest.c @@ -206,11 +206,11 @@ Tktest_Init( Tcl_Interp *interp) /* Interpreter for application. */ { static int initialized = 0; - if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) { + if (Tcl_InitStubs(interp, "8.6-", 0) == NULL) { return TCL_ERROR; } if (Tk_InitStubs(interp, TK_VERSION, 0) == NULL) { return TCL_ERROR; } @@ -269,10 +269,18 @@ if (!initialized) { initialized = 1; Tk_CreateImageType(&imageType); } + + /* + * Enable testing of legacy interfaces. + */ + + if (TkOldTestInit(interp) != TCL_OK) { + return TCL_ERROR; + } /* * And finally add any platform specific test commands. */ Index: generic/tkText.c ================================================================== --- generic/tkText.c +++ generic/tkText.c @@ -25,10 +25,20 @@ #ifdef _WIN32 #include "tkWinInt.h" #endif +/* + * For compatibility with Tk 4.0 through 8.4.x, we allow tabs to be + * mis-specified with non-increasing values. These are converted into tabs + * which are the equivalent of at least a character width apart. + */ + +#if (TK_MAJOR_VERSION < 9) +#define _TK_ALLOW_DECREASING_TABS +#endif + #include "tkText.h" /* * Used to avoid having to allocate and deallocate arrays on the fly for * commonly used functions. Must be > 0. @@ -118,11 +128,11 @@ NULL, 0, TCL_INDEX_NONE, 0, "-background", 0}, {TK_OPTION_BOOLEAN, "-blockcursor", "blockCursor", "BlockCursor", DEF_TEXT_BLOCK_CURSOR, TCL_INDEX_NONE, offsetof(TkText, insertCursorType), 0, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_TEXT_BORDER_WIDTH, offsetof(TkText, borderWidthObj), offsetof(TkText, borderWidth), + DEF_TEXT_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(TkText, borderWidth), 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_TEXT_CURSOR, TCL_INDEX_NONE, offsetof(TkText, cursor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_CUSTOM, "-endline", NULL, NULL, @@ -138,20 +148,20 @@ TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", DEF_TEXT_FG, TCL_INDEX_NONE, offsetof(TkText, fgColor), 0, 0, 0}, {TK_OPTION_PIXELS, "-height", "height", "Height", - DEF_TEXT_HEIGHT, offsetof(TkText, heightObj), offsetof(TkText, height), 0, 0, 0}, + DEF_TEXT_HEIGHT, TCL_INDEX_NONE, offsetof(TkText, height), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_TEXT_HIGHLIGHT_BG, TCL_INDEX_NONE, offsetof(TkText, highlightBgColorPtr), 0, 0, 0}, {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", DEF_TEXT_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkText, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_TEXT_HIGHLIGHT_WIDTH, offsetof(TkText, highlightWidthObj), + "HighlightThickness", DEF_TEXT_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, offsetof(TkText, highlightWidth), 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_BORDER, "-inactiveselectbackground","inactiveSelectBackground", "Foreground", DEF_TEXT_INACTIVE_SELECT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkText, inactiveSelBorder), @@ -159,11 +169,11 @@ {TK_OPTION_BORDER, "-insertbackground", "insertBackground", "Foreground", DEF_TEXT_INSERT_BG, TCL_INDEX_NONE, offsetof(TkText, insertBorder), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertborderwidth", "insertBorderWidth", - "BorderWidth", DEF_TEXT_INSERT_BD_COLOR, offsetof(TkText, insertBorderWidthObj), + "BorderWidth", DEF_TEXT_INSERT_BD_COLOR, TCL_INDEX_NONE, offsetof(TkText, insertBorderWidth), 0, DEF_TEXT_INSERT_BD_MONO, 0}, {TK_OPTION_INT, "-insertofftime", "insertOffTime", "OffTime", DEF_TEXT_INSERT_OFF_TIME, TCL_INDEX_NONE, offsetof(TkText, insertOffTime), 0, 0, 0}, @@ -173,51 +183,51 @@ {TK_OPTION_STRING_TABLE, "-insertunfocussed", "insertUnfocussed", "InsertUnfocussed", DEF_TEXT_INSERT_UNFOCUSSED, TCL_INDEX_NONE, offsetof(TkText, insertUnfocussed), TK_OPTION_ENUM_VAR, insertUnfocussedStrings, 0}, {TK_OPTION_PIXELS, "-insertwidth", "insertWidth", "InsertWidth", - DEF_TEXT_INSERT_WIDTH, offsetof(TkText, insertWidthObj), offsetof(TkText, insertWidth), + DEF_TEXT_INSERT_WIDTH, TCL_INDEX_NONE, offsetof(TkText, insertWidth), 0, 0, 0}, {TK_OPTION_INT, "-maxundo", "maxUndo", "MaxUndo", DEF_TEXT_MAX_UNDO, TCL_INDEX_NONE, offsetof(TkText, maxUndo), TK_OPTION_DONT_SET_DEFAULT, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - DEF_TEXT_PADX, offsetof(TkText, padXObj), offsetof(TkText, padX), 0, 0, + DEF_TEXT_PADX, TCL_INDEX_NONE, offsetof(TkText, padX), 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - DEF_TEXT_PADY, offsetof(TkText, padYObj), offsetof(TkText, padY), 0, 0, 0}, + DEF_TEXT_PADY, TCL_INDEX_NONE, offsetof(TkText, padY), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_TEXT_RELIEF, TCL_INDEX_NONE, offsetof(TkText, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_TEXT_SELECT_COLOR, TCL_INDEX_NONE, offsetof(TkText, selBorder), 0, DEF_TEXT_SELECT_MONO, 0}, {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_TEXT_SELECT_BD_COLOR, - offsetof(TkText, selBorderWidthObj), offsetof(TkText, selBorderWidth), + offsetof(TkText, selBorderWidthObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, DEF_TEXT_SELECT_BD_MONO, 0}, {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background", DEF_TEXT_SELECT_FG_COLOR, TCL_INDEX_NONE, offsetof(TkText, selFgColorPtr), TK_OPTION_NULL_OK, DEF_TEXT_SELECT_FG_MONO, 0}, {TK_OPTION_BOOLEAN, "-setgrid", "setGrid", "SetGrid", DEF_TEXT_SET_GRID, TCL_INDEX_NONE, offsetof(TkText, setGrid), 0, 0, 0}, {TK_OPTION_PIXELS, "-spacing1", "spacing1", "Spacing", - DEF_TEXT_SPACING1, offsetof(TkText, spacing1Obj), offsetof(TkText, spacing1), + DEF_TEXT_SPACING1, TCL_INDEX_NONE, offsetof(TkText, spacing1), 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_PIXELS, "-spacing2", "spacing2", "Spacing", - DEF_TEXT_SPACING2, offsetof(TkText, spacing2Obj), offsetof(TkText, spacing2), + DEF_TEXT_SPACING2, TCL_INDEX_NONE, offsetof(TkText, spacing2), 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_PIXELS, "-spacing3", "spacing3", "Spacing", - DEF_TEXT_SPACING3, offsetof(TkText, spacing3Obj), offsetof(TkText, spacing3), + DEF_TEXT_SPACING3, TCL_INDEX_NONE, offsetof(TkText, spacing3), 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_CUSTOM, "-startline", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkText, start), TK_OPTION_NULL_OK, &lineOption, TK_TEXT_LINE_RANGE}, {TK_OPTION_STRING_TABLE, "-state", "state", "State", DEF_TEXT_STATE, TCL_INDEX_NONE, offsetof(TkText, state), TK_OPTION_ENUM_VAR, &tkStateStrings[1], 0}, {TK_OPTION_STRING, "-tabs", "tabs", "Tabs", - DEF_TEXT_TABS, offsetof(TkText, tabOptionPtr), TCL_INDEX_NONE, + DEF_TEXT_TABS, offsetof(TkText, tabOptionObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_STRING_TABLE, "-tabstyle", "tabStyle", "TabStyle", DEF_TEXT_TABSTYLE, TCL_INDEX_NONE, offsetof(TkText, tabStyle), TK_OPTION_ENUM_VAR, tkTextTabStyleStrings, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus", @@ -592,19 +602,18 @@ textPtr->exportSelection = 1; textPtr->pickEvent.type = LeaveNotify; textPtr->undo = textPtr->sharedTextPtr->undo; textPtr->maxUndo = textPtr->sharedTextPtr->maxUndo; textPtr->autoSeparators = textPtr->sharedTextPtr->autoSeparators; - textPtr->tabOptionPtr = NULL; + textPtr->tabOptionObj = NULL; /* * Create the "sel" tag and the "current" and "insert" marks. */ textPtr->selBorder = NULL; textPtr->inactiveSelBorder = NULL; - textPtr->selBorderWidth = 0; textPtr->selBorderWidthObj = NULL; textPtr->selFgColorPtr = NULL; /* * Note: it is important that textPtr->selTagPtr is NULL before this @@ -1445,11 +1454,11 @@ int deleteInsertOffset, insertLength, indexFromLine, indexFromByteOffset; Tcl_Size j; insertLength = 0; for (j = 4; j < objc; j += 2) { - insertLength += Tcl_GetCharLength(objv[j]); + insertLength += TkGetCharLength(objv[j]); } /* * Calculate 'deleteInsertOffset' as an offset we will apply * to the insertion point after this operation. @@ -2203,31 +2212,16 @@ * Don't allow negative spacings. */ if (textPtr->spacing1 < 0) { textPtr->spacing1 = 0; - if (textPtr->spacing1Obj) { - Tcl_DecrRefCount(textPtr->spacing1Obj); - } - textPtr->spacing1Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(textPtr->spacing1Obj); } if (textPtr->spacing2 < 0) { textPtr->spacing2 = 0; - if (textPtr->spacing2Obj) { - Tcl_DecrRefCount(textPtr->spacing2Obj); - } - textPtr->spacing2Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(textPtr->spacing2Obj); } if (textPtr->spacing3 < 0) { textPtr->spacing3 = 0; - if (textPtr->spacing3Obj) { - Tcl_DecrRefCount(textPtr->spacing3Obj); - } - textPtr->spacing3Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(textPtr->spacing3Obj); } /* * Parse tab stops. */ @@ -2234,13 +2228,13 @@ if (textPtr->tabArrayPtr != NULL) { ckfree(textPtr->tabArrayPtr); textPtr->tabArrayPtr = NULL; } - if (textPtr->tabOptionPtr != NULL) { - textPtr->tabArrayPtr = TkTextGetTabs(interp, textPtr->tkwin, - textPtr->tabOptionPtr); + if (textPtr->tabOptionObj != NULL) { + textPtr->tabArrayPtr = TkTextGetTabs(interp, textPtr, + textPtr->tabOptionObj); if (textPtr->tabArrayPtr == NULL) { Tcl_AddErrorInfo(interp,"\n (while processing -tabs option)"); Tk_RestoreSavedOptions(&savedOptions); return TCL_ERROR; } @@ -2258,29 +2252,28 @@ } else { textPtr->selTagPtr->selBorder = textPtr->selBorder; } if (textPtr->selTagPtr->borderWidthObj != textPtr->selBorderWidthObj) { textPtr->selTagPtr->borderWidthObj = textPtr->selBorderWidthObj; - textPtr->selTagPtr->borderWidth = textPtr->selBorderWidth; } if (textPtr->selTagPtr->selFgColor == NULL) { textPtr->selTagPtr->fgColor = textPtr->selFgColorPtr; } else { textPtr->selTagPtr->selFgColor = textPtr->selFgColorPtr; } textPtr->selTagPtr->affectsDisplay = 0; textPtr->selTagPtr->affectsDisplayGeometry = 0; - if ((textPtr->selTagPtr->elide >= 0) + if ((textPtr->selTagPtr->elideObj != NULL) || (textPtr->selTagPtr->tkfont != NULL) || (textPtr->selTagPtr->justify != TK_JUSTIFY_NULL) - || (textPtr->selTagPtr->lMargin1 != INT_MIN) - || (textPtr->selTagPtr->lMargin2 != INT_MIN) - || (textPtr->selTagPtr->offset != INT_MIN) - || (textPtr->selTagPtr->rMargin != INT_MIN) - || (textPtr->selTagPtr->spacing1 != INT_MIN) - || (textPtr->selTagPtr->spacing2 != INT_MIN) - || (textPtr->selTagPtr->spacing3 != INT_MIN) + || (textPtr->selTagPtr->lMargin1Obj != NULL) + || (textPtr->selTagPtr->lMargin2Obj != NULL) + || (textPtr->selTagPtr->offsetObj != NULL) + || (textPtr->selTagPtr->rMarginObj != NULL) + || (textPtr->selTagPtr->spacing1Obj != NULL) + || (textPtr->selTagPtr->spacing2Obj != NULL) + || (textPtr->selTagPtr->spacing3Obj != NULL) || (textPtr->selTagPtr->tabStringPtr != NULL) || (textPtr->selTagPtr->tabStyle == TK_TEXT_TABSTYLE_TABULAR) || (textPtr->selTagPtr->tabStyle == TK_TEXT_TABSTYLE_WORDPROCESSOR) || (textPtr->selTagPtr->wrapMode == TEXT_WRAPMODE_CHAR) || (textPtr->selTagPtr->wrapMode == TEXT_WRAPMODE_NONE) @@ -2293,13 +2286,13 @@ || (textPtr->selTagPtr->relief != TK_RELIEF_NULL) || (textPtr->selTagPtr->bgStipple != None) || (textPtr->selTagPtr->fgColor != NULL) || (textPtr->selTagPtr->selFgColor != NULL) || (textPtr->selTagPtr->fgStipple != None) - || (textPtr->selTagPtr->overstrike >= 0) + || (textPtr->selTagPtr->overstrikeObj != NULL) || (textPtr->selTagPtr->overstrikeColor != NULL) - || (textPtr->selTagPtr->underline >= 0) + || (textPtr->selTagPtr->underlineObj != NULL) || (textPtr->selTagPtr->underlineColor != NULL) || (textPtr->selTagPtr->lMarginColor != NULL) || (textPtr->selTagPtr->rMarginColor != NULL)) { textPtr->selTagPtr->affectsDisplay = 1; } @@ -2426,13 +2419,13 @@ if (textPtr->charHeight != oldCharHeight) { TkBTreeClientRangeChanged(textPtr, textPtr->charHeight); } border = textPtr->borderWidth + textPtr->highlightWidth; Tk_GeometryRequest(textPtr->tkwin, - textPtr->width * textPtr->charWidth + 2*textPtr->padX + 2*border, - textPtr->height*(fm.linespace+textPtr->spacing1+textPtr->spacing3) - + 2*textPtr->padY + 2*border); + textPtr->width * textPtr->charWidth + 2 * textPtr->padX + 2 * border, + textPtr->height * (fm.linespace + textPtr->spacing1 + textPtr->spacing3) + + 2 * textPtr->padY + 2 * border); Tk_SetInternalBorderEx(textPtr->tkwin, border + textPtr->padX, border + textPtr->padX, border + textPtr->padY, border + textPtr->padY); if (textPtr->setGrid) { @@ -2497,11 +2490,10 @@ * well. */ textPtr->selBorder = NULL; textPtr->selBorderWidthObj = NULL; - textPtr->selBorderWidth = 0; textPtr->selFgColorPtr = NULL; if (textPtr->setGrid) { Tk_UnsetGrid(textPtr->tkwin); textPtr->setGrid = 0; } @@ -3319,11 +3311,11 @@ } sharedTextPtr->stateEpoch++; TkBTreeDeleteIndexRange(sharedTextPtr->tree, &index1, &index2); - UpdateDirtyFlag(sharedTextPtr); + UpdateDirtyFlag(sharedTextPtr); } resetViewCount = 0; for (tPtr = sharedTextPtr->peers; tPtr != NULL ; tPtr = tPtr->next) { Tcl_Size line = lineAndByteIndex[resetViewCount]; @@ -4092,16 +4084,16 @@ || !TkTextIsElided(textPtr, &curIndex, NULL))) { if (leftToScan < segPtr->size) { if (searchSpecPtr->exact) { index += leftToScan; } else { - index += Tcl_NumUtfChars(segPtr->body.chars, leftToScan); + index += TkNumUtfChars(segPtr->body.chars, leftToScan); } } else if (searchSpecPtr->exact) { index += segPtr->size; } else { - index += Tcl_NumUtfChars(segPtr->body.chars, -1); + index += TkNumUtfChars(segPtr->body.chars, -1); } } leftToScan -= segPtr->size; } return index; @@ -4222,11 +4214,11 @@ if (lenPtr != NULL) { if (searchSpecPtr->exact) { Tcl_GetString(theLine); *lenPtr = theLine->length; } else { - *lenPtr = Tcl_GetCharLength(theLine); + *lenPtr = TkGetCharLength(theLine); } } return linePtr; } @@ -4292,11 +4284,11 @@ */ if (searchSpecPtr->exact) { const char *startOfLine = Tcl_GetString(theLine); - numChars = Tcl_NumUtfChars(startOfLine + matchOffset, matchLength); + numChars = TkNumUtfChars(startOfLine + matchOffset, matchLength); } else { numChars = matchLength; } /* @@ -4351,17 +4343,17 @@ } else if (!searchSpecPtr->searchElide && TkTextIsElided(textPtr, &curIndex, NULL)) { if (searchSpecPtr->exact) { matchOffset += segPtr->size; } else { - matchOffset += Tcl_NumUtfChars(segPtr->body.chars, -1); + matchOffset += TkNumUtfChars(segPtr->body.chars, -1); } } else { if (searchSpecPtr->exact) { leftToScan -= (int)segPtr->size; } else { - leftToScan -= Tcl_NumUtfChars(segPtr->body.chars, -1); + leftToScan -= TkNumUtfChars(segPtr->body.chars, -1); } } curIndex.byteIndex += segPtr->size; } if (segPtr == NULL && leftToScan >= 0) { @@ -4442,17 +4434,17 @@ numChars += segPtr->size; continue; } else if (!searchSpecPtr->searchElide && TkTextIsElided(textPtr, &curIndex, NULL)) { - numChars += Tcl_NumUtfChars(segPtr->body.chars, -1); + numChars += TkNumUtfChars(segPtr->body.chars, -1); continue; } if (searchSpecPtr->exact) { leftToScan -= segPtr->size; } else { - leftToScan -= Tcl_NumUtfChars(segPtr->body.chars, -1); + leftToScan -= TkNumUtfChars(segPtr->body.chars, -1); } } /* * Now store the count result, if it is wanted. @@ -4492,11 +4484,11 @@ */ TkTextTabArray * TkTextGetTabs( Tcl_Interp *interp, /* Used for error reporting. */ - Tk_Window tkwin, /* Information about the window. */ + const TkText *textPtr, /* Information about the text widget. */ Tcl_Obj *stringPtr) /* Description of the tab stops. See the text * manual entry for details. */ { Tcl_Size objc, i, count; Tcl_Obj **objv; @@ -4543,11 +4535,11 @@ /* * This will round fractional pixels above 0.5 upwards, and otherwise * downwards, to find the right integer pixel position. */ - if (Tk_GetPixelsFromObj(interp, tkwin, objv[i], + if (Tk_GetPixelsFromObj(interp, textPtr->tkwin, objv[i], &tabPtr->location) != TCL_OK) { goto error; } if (tabPtr->location <= 0) { @@ -4557,11 +4549,11 @@ Tcl_SetErrorCode(interp, "TK", "VALUE", "TAB_STOP", (char *)NULL); goto error; } prevStop = lastStop; - if (Tk_GetDoublePixelsFromObj(interp, tkwin, objv[i], + if (Tk_GetDoublePixelsFromObj(interp, textPtr->tkwin, objv[i], &lastStop) != TCL_OK) { goto error; } if (i > 0 && (tabPtr->location <= (tabPtr-1)->location)) { @@ -4568,16 +4560,31 @@ /* * This tab is actually to the left of the previous one, which is * illegal. */ +#ifdef _TK_ALLOW_DECREASING_TABS + /* + * Force the tab to be a typical character width to the right of + * the previous one, and update the 'lastStop' with the changed + * position. + */ + + if (textPtr->charWidth > 0) { + tabPtr->location = (tabPtr-1)->location + textPtr->charWidth; + } else { + tabPtr->location = (tabPtr-1)->location + 8; + } + lastStop = tabPtr->location; +#else Tcl_SetObjResult(interp, Tcl_ObjPrintf( "tabs must be monotonically increasing, but \"%s\" is " "smaller than or equal to the previous tab", Tcl_GetString(objv[i]))); Tcl_SetErrorCode(interp, "TK", "VALUE", "TAB_STOP", (char *)NULL); goto error; +#endif /* _TK_ALLOW_DECREASING_TABS */ } tabArrayPtr->numTabs++; /* @@ -4592,11 +4599,11 @@ /* * There may be a more efficient way of getting this. */ - Tcl_UtfToUniChar(Tcl_GetString(objv[i+1]), &ch); + TkUtfToUniChar(Tcl_GetString(objv[i+1]), &ch); if (!Tcl_UniCharIsAlpha(ch)) { continue; } i += 1; @@ -4936,11 +4943,11 @@ segPtr->body.toggle.tagPtr->name, command, &index, what); } else if ((what & TK_DUMP_IMG) && (segPtr->typePtr == &tkTextEmbImageType)) { TkTextEmbImage *eiPtr = &segPtr->body.ei; - const char *name = (eiPtr->name == NULL) ? "" : eiPtr->name; + const char *name = eiPtr->name; TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, lineno, offset, &index); lineChanged = DumpSegment(textPtr, interp, "image", name, command, &index, what); @@ -5747,11 +5754,11 @@ int code = TCL_OK; Tcl_Obj *theLine; int alreadySearchOffset = -1; const char *pattern = NULL; /* For exact searches only. */ - int firstNewLine = -1; /* For exact searches only. */ + int firstNewLine = -1; /* For exact searches only. */ Tcl_RegExp regexp = NULL; /* For regexp searches only. */ /* * These items are for backward regexp searches only. They are for two * purposes: to allow us to report backwards matches in the correct order, @@ -6179,11 +6186,11 @@ if (alreadySearchOffset < 0) { break; } } else { firstOffset = p - startOfLine + - Tcl_UtfToUniChar(startOfLine+matchOffset,&ch); + TkUtfToUniChar(startOfLine+matchOffset,&ch); } } } while (searchSpecPtr->all); } else { int maxExtraLines = 0; Index: generic/tkText.h ================================================================== --- generic/tkText.h +++ generic/tkText.h @@ -112,30 +112,27 @@ * make option table updating easier. NULL * means that the window hasn't been created * yet. */ TkTextLine *linePtr; /* Line structure that contains this * window. */ - char *create; /* Script to create window on-demand. NULL - * means no such script. Malloc-ed. */ + Tcl_Obj *createObj; /* Script to create window on-demand. NULL + * means no such script. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *padXObj, *padYObj; /* Padding to leave around each side of window. */ -#if TCL_MAJOR_VERSION > 8 +#endif TkAlignMode align; /* How to align window in vertical space. See * definitions in tkTextWind.c. */ -#else - int align; +#if TK_MAJOR_VERSION < 9 + int padX, padY; #endif int stretch; /* Should window stretch to fill vertical * space of line (except for pady)? 0 or 1. */ Tk_OptionTable optionTable; /* Token representing the configuration * specifications. */ TkTextEmbWindowClient *clients; /* Linked list of peer-widget specific * information for this embedded window. */ -#if defined(BUILD_tk) - int padX, padY; /* Padding to leave around each side of - * window, in pixels. */ -#endif } TkTextEmbWindow; /* * A structure of the following type holds information for each image embedded * in a text widget. This information is only used by the file tkTextImage.c @@ -145,34 +142,31 @@ struct TkSharedText *sharedTextPtr; /* Information about the shared portion of the * text widget. This is used when the image * changes or is deleted. */ TkTextLine *linePtr; /* Line structure that contains this image. */ - char *imageString; /* Name of the image for this segment. */ - char *imageName; /* Name used by text widget to identify this + Tcl_Obj *imageObj; /* Name of the image for this segment. */ + Tcl_Obj *imageNameObj; /* Name used by text widget to identify this * image. May be unique-ified. */ char *name; /* Name used in the hash table. Used by * "image names" to identify this instance of * the image. */ Tk_Image image; /* Image for this segment. NULL means that the * image hasn't been created yet. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *padXObj, *padYObj; /* Padding to leave around each side of image, * in pixels. */ -#if TCL_MAJOR_VERSION > 8 +#endif TkAlignMode align; /* How to align image in vertical space. See * definitions in tkTextImage.c. */ -#else - int align; +#if TK_MAJOR_VERSION < 9 + int padX, padY; #endif int chunkCount; /* Number of display chunks that refer to this * image. */ Tk_OptionTable optionTable; /* Token representing the configuration * specifications. */ -#if defined(BUILD_tk) - int padX, padY; /* Padding to leave around each side of - * window, in pixels. */ -#endif } TkTextEmbImage; /* * The data structure below defines line segments. */ @@ -224,11 +218,11 @@ * Types for procedure pointers stored in TkTextDispChunk strutures: */ typedef struct TkTextDispChunk TkTextDispChunk; -typedef void Tk_ChunkDisplayProc(struct TkText *textPtr, +typedef void Tk_ChunkDisplayProc(struct TkText *textPtr, TkTextDispChunk *chunkPtr, int x, int y, int height, int baseline, Display *display, Drawable dst, int screenY); typedef void Tk_ChunkUndisplayProc(struct TkText *textPtr, TkTextDispChunk *chunkPtr); @@ -357,14 +351,10 @@ */ Tk_3DBorder border; /* Used for drawing background. NULL means no * value specified here. */ Tcl_Obj *borderWidthObj; /* Width of 3-D border for background. */ -#if TK_MAJOR_VERSION < 9 - char *reliefString; /* -relief option string (malloc-ed). NULL - * means option not specified. */ -#endif int relief; /* 3-D relief for background. */ Pixmap bgStipple; /* Stipple bitmap for background. None means * no value specified here. */ XColor *fgColor; /* Foreground color for text. NULL means no * value specified here. */ @@ -371,101 +361,57 @@ Tk_Font tkfont; /* Font for displaying text. NULL means no * value specified here. */ Pixmap fgStipple; /* Stipple bitmap for text and other * foreground stuff. None means no value * specified here.*/ -#if TK_MAJOR_VERSION < 9 - char *justifyString; /* -justify option string (malloc-ed). NULL - * means option not specified. */ -#endif Tk_Justify justify; /* How to justify text: TK_JUSTIFY_CENTER, * TK_JUSTIFY_LEFT, or TK_JUSTIFY_RIGHT. */ -#if TK_MAJOR_VERSION > 8 - Tcl_Obj *lMargin1Obj; /* -lmargin1 option object. NULL - * means option not specified. */ -#else - char *lMargin1String; /* -lmargin1 option string (malloc-ed). NULL - * means option not specified. */ -#endif - int lMargin1; /* Left margin for first display line of each - * text line, in pixels. INT_MIN means option not specified. */ -#if TK_MAJOR_VERSION > 8 - Tcl_Obj *lMargin2Obj; /* -lmargin2 option object. NULL - * means option not specified. */ -#else - char *lMargin2String; /* -lmargin2 option string (malloc-ed). NULL - * means option not specified. */ -#endif - int lMargin2; /* Left margin for second and later display lines - * of each text line, in pixels. INT_MIN means option not specified. */ + Tcl_Obj *lMargin1Obj; /* Left margin for first display line of each + * text line, in pixels. NULL means option not specified. */ + int lMargin1; /* No longer used, but kept for binary compatibility. */ + Tcl_Obj *lMargin2Obj; /* Left margin for second and later display lines + * of each text line, in pixels NULL means option not specified. */ + int lMargin2; /* No longer used, but kept for binary compatibility. */ Tk_3DBorder lMarginColor; /* Used for drawing background in left margins. * This is used for both lmargin1 and lmargin2. * NULL means no value specified here. */ -#if TK_MAJOR_VERSION > 8 - Tcl_Obj *offsetObj; /* -offset option. NULL means option not specified. */ -#else - char *offsetString; /* -offset option string (malloc-ed). NULL - * means option not specified. */ -#endif - int offset; /* Vertical offset of text's baseline from + Tcl_Obj *offsetObj; /* Vertical offset of text's baseline from * baseline of line. Used for superscripts and - * subscripts. INT_MIN means option not specified. */ + * subscripts. NULL means option not specified. */ + int offset; /* No longer used, but kept for binary compatibility. */ #if TK_MAJOR_VERSION < 9 - char *overstrikeString; /* -overstrike option string (malloc-ed). NULL + Tcl_Obj *overstrikeObj; /* -overstrike option. NULL * means option not specified. */ #endif int overstrike; /* > 0 means draw horizontal line through * middle of text. -1 means not specified. */ XColor *overstrikeColor; /* Color for the overstrike. NULL means same * color as foreground. */ -#if TK_MAJOR_VERSION > 8 - Tcl_Obj *rMarginObj; /* -rmargin option object. NULL - * means option not specified. */ -#else - char *rMarginString; /* -rmargin option string (malloc-ed). NULL - * means option not specified. */ -#endif - int rMargin; /* Right margin for text, in pixels. INT_MIN means option not specified. */ + Tcl_Obj *rMarginObj; /* Right margin for text, in pixels. NULL + * means option not specified. */ + int rMargin; /* No longer used, but kept for binary compatibility. */ Tk_3DBorder rMarginColor; /* Used for drawing background in right margin. * NULL means no value specified here. */ Tk_3DBorder selBorder; /* Used for drawing background for selected text. * NULL means no value specified here. */ XColor *selFgColor; /* Foreground color for selected text. NULL means * no value specified here. */ -#if TK_MAJOR_VERSION > 8 Tcl_Obj *spacing1Obj; /* -spacing1 option object. NULL * means option not specified. */ -#else - char *spacing1String; /* -spacing1 option string (malloc-ed). NULL - * means option not specified. */ -#endif -#if TK_MAJOR_VERSION > 8 Tcl_Obj *spacing2Obj; /* -spacing2 option object. NULL * means option not specified. */ -#else - char *spacing2String; /* -spacing2 option string (malloc-ed). NULL - * means option not specified. */ -#endif -#if TK_MAJOR_VERSION > 8 Tcl_Obj *spacing3Obj; /* -spacing3 option object. NULL * means option not specified. */ -#else - char *spacing3String; /* -spacing3 option string (malloc-ed). NULL - * means option not specified. */ -#endif - Tcl_Obj *tabStringPtr; /* -tabs option string. NULL means option not + Tcl_Obj *tabStringPtr; /* -tabs option. NULL means option not * specified. */ struct TkTextTabArray *tabArrayPtr; /* Info about tabs for tag (malloc-ed) or - * NULL. Corresponds to tabString. */ -#if TK_MAJOR_VERSION > 8 + * NULL. Corresponds to tabStringPtr. */ TkTextTabStyle tabStyle; /* One of TK_TEXT_TABSTYLE_TABULAR or TK_TEXT_TABSTYLE_WORDPROCESSOR * or TK_TEXT_TABSTYLE_NULL (if not specified). */ -#else - int tabStyle; /* One of TABULAR or WORDPROCESSOR or NONE (if - * not specified). */ - char *underlineString; /* -underline option string (malloc-ed). NULL +#if TK_MAJOR_VERSION < 9 + Tcl_Obj *underlineObj; /* -underline option. NULL * means option not specified. */ #endif int underline; /* > 0 means draw underline underneath * text. -1 means not specified. */ XColor *underlineColor; /* Color for the underline. NULL means same @@ -473,14 +419,14 @@ TkWrapMode wrapMode; /* How to handle wrap-around for this tag. * Must be TEXT_WRAPMODE_CHAR, TEXT_WRAPMODE_WORD, * TEXT_WRAPMODE_NONE, or TEXT_WRAPMODE_NULL to * use wrapmode for whole widget. */ #if TK_MAJOR_VERSION < 9 - char *elideString; /* -elide option string (malloc-ed). NULL + Tcl_Obj *elideObj; /* -elide option. NULL * means option not specified. */ #endif - int elide; /* > 0 means that data under this tag + int elide; /* Non-zero means that data under this tag * should not be displayed. -1 means not specified. */ int affectsDisplay; /* Non-zero means that this tag affects the * way information is displayed on the screen * (so need to redisplay if tag changes). */ Tk_OptionTable optionTable; /* Token representing the configuration @@ -487,19 +433,10 @@ * specifications. */ int affectsDisplayGeometry; /* Non-zero means that this tag affects the * size with which information is displayed on * the screen (so need to recalculate line * dimensions if tag changes). */ -#ifdef BUILD_tk - int spacing1; /* Extra spacing above first display line for - * text line. INT_MIN means option not specified. */ - int spacing2; /* Extra spacing between display lines for the - * same text line. INT_MIN means option not specified. */ - int spacing3; /* Extra spacing below last display line for - * text line. INT_MIN means option not specified. */ - int borderWidth; /* Width of 3-D border for background. */ -#endif } TkTextTag; #define TK_TAG_AFFECTS_DISPLAY 0x1 #define TK_TAG_UNDERLINE 0x2 #define TK_TAG_JUSTIFY 0x4 @@ -724,18 +661,27 @@ * to ranges of characters). */ Tk_3DBorder border; /* Structure used to draw 3-D border and * default background. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *borderWidthObj; /* Width of 3-D border to draw around entire * widget. */ Tcl_Obj *padXObj, *padYObj; /* Padding between text and window border. */ +#else + int borderWidth; + int padX, padY; +#endif int relief; /* 3-d effect for border around entire widget: * TK_RELIEF_RAISED etc. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *highlightWidthObj; /* Width in pixels of highlight to draw around * widget when it has the focus. <= 0 means * don't draw a highlight. */ +#else + int highlightWidth; +#endif XColor *highlightBgColorPtr; /* Color for drawing traversal highlight area * when highlight is off. */ XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ Tk_Cursor cursor; /* Current cursor for window, or NULL. */ @@ -743,17 +689,21 @@ Tk_Font tkfont; /* Default font for displaying text. */ int charWidth; /* Width of average character in default * font. */ int charHeight; /* Height of average character in default * font, including line spacing. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *spacing1Obj; /* Default extra spacing above first display * line for each text line. */ Tcl_Obj *spacing2Obj; /* Default extra spacing between display lines * for the same text line. */ Tcl_Obj *spacing3Obj; /* Default extra spacing below last display * line for each text line. */ - Tcl_Obj *tabOptionPtr; /* Value of -tabs option string. */ +#else + int spacing1, spacing2, spacing3; +#endif + Tcl_Obj *tabOptionObj; /* Value of -tabs option string. */ TkTextTabArray *tabArrayPtr; /* Information about tab stops (malloc'ed). * NULL means perform default tabbing * behavior. */ TkTextTabStyle tabStyle; /* One of TK_TEXT_TABSTYLE_TABULAR or TK_TEXT_TABSTYLE_WORDPROCESSOR. */ @@ -764,12 +714,16 @@ TkWrapMode wrapMode; /* How to handle wrap-around. Must be * TEXT_WRAPMODE_CHAR, TEXT_WRAPMODE_NONE, or * TEXT_WRAPMODE_WORD, or TEXT_WRAPMODE_NULL to * use wrapmode for whole widget. */ - int width; Tcl_Obj *heightObj; /* Desired dimensions for window, measured in - * characters. */ + int width; /* Desired dimensions for window, measured in characters */ +#if TK_MAJOR_VERSION > 8 + Tcl_Obj *heightObj; +#else + int height; +#endif int setGrid; /* Non-zero means pass gridding information to * window manager. */ int prevWidth, prevHeight; /* Last known dimensions of window; used to * detect changes in size. */ TkTextIndex topIndex; /* Identifies first character in top display @@ -788,10 +742,13 @@ * explicitly freed. */ Tk_3DBorder inactiveSelBorder; /* Border and background for selected * characters when they don't have the * focus. */ +#if TK_MAJOR_VERSION < 8 + int selBorderWidth; +#endif Tcl_Obj *selBorderWidthObj; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected text. This is * a copy of information in *selTagPtr, so it * shouldn't be explicitly freed. */ int exportSelection; /* Non-zero means tie "sel" tag to X @@ -807,12 +764,16 @@ TkTextSegment *insertMarkPtr; /* Points to segment for "insert" mark. */ Tk_3DBorder insertBorder; /* Used to draw vertical bar for insertion * cursor. */ +#if TK_MAJOR_VERSION > 8 Tcl_Obj *insertWidthObj; /* Total width of insert cursor. */ Tcl_Obj *insertBorderWidthObj; /* Width of 3-D border around insert cursor */ +#else + int insertWidth, insertBorderWidth; +#endif TkTextInsertUnfocussed insertUnfocussed; /* How to display the insert cursor when the * text widget does not have the focus. */ int insertOnTime; /* Number of milliseconds cursor should spend * in "on" state for each blink. */ @@ -839,23 +800,17 @@ /* * Miscellaneous additional information: */ -#if TK_MAJOR_VERSION > 8 Tcl_Obj *takeFocusObj; /* Value of -takeFocus option; not used in the * C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * scripts. May be NULL. */ Tcl_Obj *xScrollCmdObj; /* Prefix of command to issue to update - * horizontal scrollbar when view changes. */ + * horizontal scrollbar when view changes. May be NULL. */ Tcl_Obj *yScrollCmdObj; /* Prefix of command to issue to update - * vertical scrollbar when view changes. */ -#else - char *takeFocus; - char *xScrollCmd; - char *yScrollCmd; -#endif + * vertical scrollbar when view changes. May be NULL. */ int flags; /* Miscellaneous flags; see below for * definitions. */ Tk_OptionTable optionTable; /* Token representing the configuration * specifications. */ Tcl_Size refCount; /* Number of cached TkTextIndex objects @@ -875,20 +830,10 @@ * statements. */ int autoSeparators; /* Non-zero means the separators will be * inserted automatically. */ Tcl_Obj *afterSyncCmd; /* Command to be executed when lines are up to * date */ -#ifdef BUILD_tk - int padX, padY; - int selBorderWidth; - int highlightWidth; - int borderWidth; - int spacing1, spacing2, spacing3; - int height; - int insertBorderWidth; - int insertWidth; -#endif } TkText; /* * Flag values for TkText records: * @@ -1160,11 +1105,11 @@ TkSharedText *sharedTextPtr, Tcl_Obj *idxPtr, TkTextIndex *indexPtr); MODULE_SCOPE const TkTextIndex *TkTextGetIndexFromObj(Tcl_Interp *interp, TkText *textPtr, Tcl_Obj *objPtr); MODULE_SCOPE TkTextTabArray *TkTextGetTabs(Tcl_Interp *interp, - Tk_Window tkwin, Tcl_Obj *stringPtr); + const TkText *textPtr, Tcl_Obj *stringPtr); MODULE_SCOPE void TkTextFindDisplayLineEnd(TkText *textPtr, TkTextIndex *indexPtr, int end, int *xOffset); MODULE_SCOPE void TkTextIndexBackChars(const TkText *textPtr, const TkTextIndex *srcPtr, int count, TkTextIndex *dstPtr, TkTextCountType type); Index: generic/tkTextBTree.c ================================================================== --- generic/tkTextBTree.c +++ generic/tkTextBTree.c @@ -3558,11 +3558,11 @@ segPtr = linePtr->segPtr; while ((index + (int)segPtr->size) <= indexPtr->byteIndex) { if ((segPtr->typePtr == &tkTextToggleOnType) || (segPtr->typePtr == &tkTextToggleOffType)) { tagPtr = segPtr->body.toggle.tagPtr; - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj != NULL) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; infoPtr->tagCnts[tagPtr->priority]++; } } @@ -3598,11 +3598,11 @@ for (segPtr = siblingLinePtr->segPtr; segPtr != NULL; segPtr = segPtr->nextPtr) { if ((segPtr->typePtr == &tkTextToggleOnType) || (segPtr->typePtr == &tkTextToggleOffType)) { tagPtr = segPtr->body.toggle.tagPtr; - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj != NULL) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; infoPtr->tagCnts[tagPtr->priority]++; } } } @@ -3622,11 +3622,11 @@ siblingPtr != nodePtr; siblingPtr = siblingPtr->nextPtr) { for (summaryPtr = siblingPtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr->toggleCount & 1) { tagPtr = summaryPtr->tagPtr; - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj != NULL) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; infoPtr->tagCnts[tagPtr->priority] += summaryPtr->toggleCount; } } @@ -3640,11 +3640,11 @@ */ infoPtr->elidePriority = -1; for (i = infoPtr->numTags-1; i >=0; i--) { if (infoPtr->tagCnts[i] & 1) { - infoPtr->elide = infoPtr->tagPtrs[i]->elide > 0; + infoPtr->elide = infoPtr->tagPtrs[i]->elideObj && infoPtr->tagPtrs[i]->elide != 0; /* * Note: i == infoPtr->tagPtrs[i]->priority */ Index: generic/tkTextDisp.c ================================================================== --- generic/tkTextDisp.c +++ generic/tkTextDisp.c @@ -22,10 +22,12 @@ #include "tkUnixInt.h" #elif defined(MAC_OSX_TK) #include "tkMacOSXInt.h" #endif +#define OK_TO_LOG (!TkpWillDrawWidget(textPtr->tkwin)) + /* * "Calculations of line pixel heights and the size of the vertical * scrollbar." * * Given that tag, font and elide changes can happen to large numbers of @@ -201,17 +203,24 @@ #define FP_EQUAL_SCALE(double1, double2, scaleFactor) \ (fabs((double1)-(double2))*((scaleFactor)+1.0) < 0.3) /* * Macros to make debugging/testing logging a little easier. + * + * On OSX 10.14 Drawing procedures are sometimes run because the system has + * decided to redraw the window. This can corrupt the data that a test is + * trying to collect. So we don't write to the logging variables when the + * drawing procedure is being run that way. Other systems can always log. */ #define LOG(toVar,what) \ - Tcl_SetVar2(textPtr->interp, toVar, NULL, (what), \ - TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT) + if (OK_TO_LOG) \ + Tcl_SetVar2(textPtr->interp, toVar, NULL, (what), \ + TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT) #define CLEAR(var) \ - Tcl_SetVar2(interp, var, NULL, "", TCL_GLOBAL_ONLY) + if (OK_TO_LOG) \ + Tcl_SetVar2(interp, var, NULL, "", TCL_GLOBAL_ONLY) /* * The following structure describes one line of the display, which may be * either part or all of one line of the text. */ @@ -859,11 +868,11 @@ borderPrio = tagPtr->priority; } if ((tagPtr->borderWidthObj != NULL) && (Tcl_GetString(tagPtr->borderWidthObj)[0] != '\0') && (tagPtr->priority > borderWidthPrio)) { - styleValues.borderWidth = tagPtr->borderWidth; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->borderWidthObj, &styleValues.borderWidth); borderWidthPrio = tagPtr->priority; } if ((tagPtr->relief != TK_RELIEF_NULL) && (tagPtr->priority > reliefPrio)) { if (styleValues.border == NULL) { @@ -893,63 +902,63 @@ if ((tagPtr->justify != TK_JUSTIFY_NULL) && (tagPtr->priority > justifyPrio)) { styleValues.justify = tagPtr->justify; justifyPrio = tagPtr->priority; } - if ((tagPtr->lMargin1 != INT_MIN) + if ((tagPtr->lMargin1Obj != NULL) && (tagPtr->priority > lMargin1Prio)) { - styleValues.lMargin1 = tagPtr->lMargin1; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->lMargin1Obj, &styleValues.lMargin1); lMargin1Prio = tagPtr->priority; } - if ((tagPtr->lMargin2 != INT_MIN) + if ((tagPtr->lMargin2Obj != NULL) && (tagPtr->priority > lMargin2Prio)) { - styleValues.lMargin2 = tagPtr->lMargin2; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->lMargin2Obj, &styleValues.lMargin2); lMargin2Prio = tagPtr->priority; } if ((tagPtr->lMarginColor != NULL) && (tagPtr->priority > lMarginColorPrio)) { styleValues.lMarginColor = tagPtr->lMarginColor; lMarginColorPrio = tagPtr->priority; } - if ((tagPtr->offset != INT_MIN) + if ((tagPtr->offsetObj != NULL) && (tagPtr->priority > offsetPrio)) { - styleValues.offset = tagPtr->offset; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->offsetObj, &styleValues.offset); offsetPrio = tagPtr->priority; } - if ((tagPtr->overstrike >= 0) + if ((tagPtr->overstrikeObj != NULL) && (tagPtr->priority > overstrikePrio)) { - styleValues.overstrike = tagPtr->overstrike > 0; + styleValues.overstrike = tagPtr->overstrike != 0; overstrikePrio = tagPtr->priority; if (tagPtr->overstrikeColor != NULL) { styleValues.overstrikeColor = tagPtr->overstrikeColor; } else if (fgColor != NULL) { styleValues.overstrikeColor = fgColor; } } - if ((tagPtr->rMargin != INT_MIN) + if ((tagPtr->rMarginObj != NULL) && (tagPtr->priority > rMarginPrio)) { - styleValues.rMargin = tagPtr->rMargin; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->rMarginObj, &styleValues.rMargin); rMarginPrio = tagPtr->priority; } if ((tagPtr->rMarginColor != NULL) && (tagPtr->priority > rMarginColorPrio)) { styleValues.rMarginColor = tagPtr->rMarginColor; rMarginColorPrio = tagPtr->priority; } - if ((tagPtr->spacing1 != INT_MIN) + if ((tagPtr->spacing1Obj != NULL) && (tagPtr->priority > spacing1Prio)) { - styleValues.spacing1 = tagPtr->spacing1; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->spacing1Obj, &styleValues.spacing1); spacing1Prio = tagPtr->priority; } - if ((tagPtr->spacing2 != INT_MIN) + if ((tagPtr->spacing2Obj != NULL) && (tagPtr->priority > spacing2Prio)) { - styleValues.spacing2 = tagPtr->spacing2; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->spacing2Obj, &styleValues.spacing2); spacing2Prio = tagPtr->priority; } - if ((tagPtr->spacing3 != INT_MIN) + if ((tagPtr->spacing3Obj != NULL) && (tagPtr->priority > spacing3Prio)) { - styleValues.spacing3 = tagPtr->spacing3; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->spacing3Obj, &styleValues.spacing3); spacing3Prio = tagPtr->priority; } if ((tagPtr->tabStringPtr != NULL) && (tagPtr->priority > tabPrio)) { styleValues.tabArrayPtr = tagPtr->tabArrayPtr; @@ -959,23 +968,23 @@ || (tagPtr->tabStyle == TK_TEXT_TABSTYLE_WORDPROCESSOR)) && (tagPtr->priority > tabStylePrio)) { styleValues.tabStyle = tagPtr->tabStyle; tabStylePrio = tagPtr->priority; } - if ((tagPtr->underline >= 0) + if ((tagPtr->underlineObj != NULL) && (tagPtr->priority > underlinePrio)) { - styleValues.underline = tagPtr->underline > 0; + styleValues.underline = tagPtr->underline != 0; underlinePrio = tagPtr->priority; if (tagPtr->underlineColor != NULL) { styleValues.underlineColor = tagPtr->underlineColor; } else if (fgColor != NULL) { styleValues.underlineColor = fgColor; } } - if ((tagPtr->elide >= 0) + if ((tagPtr->elideObj != NULL) && (tagPtr->priority > elidePrio)) { - styleValues.elide = tagPtr->elide > 0; + styleValues.elide = tagPtr->elide != 0; elidePrio = tagPtr->priority; } if (((tagPtr->wrapMode == TEXT_WRAPMODE_CHAR) || (tagPtr->wrapMode == TEXT_WRAPMODE_NONE) || (tagPtr->wrapMode == TEXT_WRAPMODE_WORD)) && (tagPtr->priority > wrapPrio)) { styleValues.wrapMode = tagPtr->wrapMode; @@ -1234,11 +1243,11 @@ * The elide state only changes if this tag is either the * current highest priority tag (and is therefore being * toggled off), or it's a new tag with higher priority. */ - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj != NULL) { info.tagCnts[tagPtr->priority]++; if (info.tagCnts[tagPtr->priority] & 1) { info.tagPtrs[tagPtr->priority] = tagPtr; } if (tagPtr->priority >= info.elidePriority) { @@ -1259,17 +1268,17 @@ */ elide = 0; while (--info.elidePriority > 0) { if (info.tagCnts[info.elidePriority] & 1) { - elide = info.tagPtrs[info.elidePriority] - ->elide > 0; + elide = info.tagPtrs[info.elidePriority]->elideObj + && (info.tagPtrs[info.elidePriority]->elide != 0); break; } } } else { - elide = tagPtr->elide > 0; + elide = tagPtr->elideObj && (tagPtr->elide != 0); info.elidePriority = tagPtr->priority; } } } } @@ -1381,13 +1390,13 @@ * If have we have a tag toggle, there is a chance that * invisibility state changed, so bail out. */ } else if ((segPtr->typePtr == &tkTextToggleOffType) || (segPtr->typePtr == &tkTextToggleOnType)) { - if (segPtr->body.toggle.tagPtr->elide >= 0) { + if (segPtr->body.toggle.tagPtr->elideObj) { elide = (segPtr->typePtr == &tkTextToggleOffType) - ^ (segPtr->body.toggle.tagPtr->elide > 0); + ^ (segPtr->body.toggle.tagPtr->elide != 0); } } byteOffset = 0; segPtr = segPtr->nextPtr; @@ -4180,10 +4189,26 @@ * The widget has been deleted. Don't do anything. */ return; } + +#ifdef MAC_OSX_TK + /* + * If the toplevel is being resized it would be dangerous to try redrawing + * the widget. But we can just clear the REDRAW_PENDING flag and return. + * This display proc will be called again after the widget has been + * reconfigured. + */ + + TkWindow *winPtr = (TkWindow *)(textPtr->tkwin); + MacDrawable *macWin = winPtr->privatePtr; + if (macWin && (macWin->flags & TK_DO_NOT_DRAW)) { + dInfoPtr->flags &= ~REDRAW_PENDING; + return; + } +#endif interp = textPtr->interp; Tcl_Preserve(interp); if (tkTextDebug) { @@ -5229,17 +5254,12 @@ * Recompute some overall things for the layout. Even if the window gets * very small, pretend that there's at least one pixel of drawing space in * it. */ - if (textPtr->highlightWidthObj) { - if (textPtr->highlightWidth < 0) { - textPtr->highlightWidth = 0; - Tcl_DecrRefCount(textPtr->highlightWidthObj); - textPtr->highlightWidthObj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(textPtr->highlightWidthObj); - } + if (textPtr->highlightWidth < 0) { + textPtr->highlightWidth = 0; } dInfoPtr->x = textPtr->highlightWidth + textPtr->borderWidth + textPtr->padX; dInfoPtr->y = textPtr->highlightWidth + textPtr->borderWidth + textPtr->padY; @@ -7681,11 +7701,11 @@ #endif /* TK_LAYOUT_WITH_BASE_CHUNKS */ if (bytesThatFit + 1 <= maxBytes) { if ((bytesThatFit == 0) && noCharsYet) { int ch; - int chLen = Tcl_UtfToUniChar(p, &ch); + int chLen = TkUtfToUniChar(p, &ch); #ifdef TK_LAYOUT_WITH_BASE_CHUNKS bytesThatFit = CharChunkMeasureChars(chunkPtr, line, lineOffset+chLen, lineOffset, -1, chunkPtr->x, -1, 0, &nextX); Index: generic/tkTextImage.c ================================================================== --- generic/tkTextImage.c +++ generic/tkTextImage.c @@ -82,20 +82,20 @@ */ static const Tk_OptionSpec optionSpecs[] = { {TK_OPTION_STRING_TABLE, "-align", NULL, NULL, "center", TCL_INDEX_NONE, offsetof(TkTextEmbImage, align), - (TCL_MAJOR_VERSION > 8) ? TK_OPTION_ENUM_VAR : 0, alignStrings, 0}, + TK_OPTION_ENUM_VAR, alignStrings, 0}, {TK_OPTION_PIXELS, "-padx", NULL, NULL, - "0", offsetof(TkTextEmbImage, padXObj), offsetof(TkTextEmbImage, padX), 0, 0, 0}, + "0", TCL_INDEX_NONE, offsetof(TkTextEmbImage, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", NULL, NULL, - "0", offsetof(TkTextEmbImage, padYObj), offsetof(TkTextEmbImage, padY), 0, 0, 0}, + "0", TCL_INDEX_NONE, offsetof(TkTextEmbImage, padY), 0, 0, 0}, {TK_OPTION_STRING, "-image", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextEmbImage, imageString), + NULL, offsetof(TkTextEmbImage, imageObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-name", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextEmbImage, imageName), + NULL, offsetof(TkTextEmbImage, imageNameObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0} }; /* @@ -245,17 +245,16 @@ eiPtr = (TkTextSegment *)ckalloc(EI_SEG_SIZE); eiPtr->typePtr = &tkTextEmbImageType; eiPtr->size = 1; eiPtr->body.ei.sharedTextPtr = textPtr->sharedTextPtr; eiPtr->body.ei.linePtr = NULL; - eiPtr->body.ei.imageName = NULL; - eiPtr->body.ei.imageString = NULL; + eiPtr->body.ei.imageNameObj = NULL; + eiPtr->body.ei.imageObj = NULL; eiPtr->body.ei.name = NULL; eiPtr->body.ei.image = NULL; eiPtr->body.ei.align = TK_ALIGN_CENTER; eiPtr->body.ei.padX = eiPtr->body.ei.padY = 0; - eiPtr->body.ei.padXObj = eiPtr->body.ei.padYObj = NULL; eiPtr->body.ei.chunkCount = 0; eiPtr->body.ei.optionTable = Tk_CreateOptionTable(interp, optionSpecs); /* * Link the segment into the text widget, then configure it (delete it @@ -349,13 +348,13 @@ * after the new one is allocated. This keeps the reference count from * going to zero so the image doesn't have to be recreated if it hasn't * changed. */ - if (eiPtr->body.ei.imageString != NULL) { + if (eiPtr->body.ei.imageObj != NULL) { image = Tk_GetImage(textPtr->interp, textPtr->tkwin, - eiPtr->body.ei.imageString, EmbImageProc, eiPtr); + Tcl_GetString(eiPtr->body.ei.imageObj), EmbImageProc, eiPtr); if (image == NULL) { return TCL_ERROR; } } else { image = NULL; @@ -364,24 +363,24 @@ Tk_FreeImage(eiPtr->body.ei.image); } eiPtr->body.ei.image = image; if (eiPtr->body.ei.name != NULL) { - return TCL_OK; + return TCL_OK; } /* * Find a unique name for this image. Use imageName (or imageString) if * available, otherwise tack on a #nn and use it. If a name is already * associated with this image, delete the name. */ - name = eiPtr->body.ei.imageName; - if (name == NULL) { - name = eiPtr->body.ei.imageString; - } - if (name == NULL) { + if (eiPtr->body.ei.imageNameObj) { + name = Tcl_GetString(eiPtr->body.ei.imageNameObj); + } else if (eiPtr->body.ei.imageObj) { + name = Tcl_GetString(eiPtr->body.ei.imageObj); + } else { Tcl_SetObjResult(textPtr->interp, Tcl_NewStringObj( "Either a \"-name\" or a \"-image\" argument must be" " provided to the \"image create\" subcommand", TCL_INDEX_NONE)); Tcl_SetErrorCode(textPtr->interp, "TK", "TEXT", "IMAGE_CREATE_USAGE", (char *)NULL); @@ -544,12 +543,12 @@ if (eiPtr->body.ei.image == NULL) { width = 0; height = 0; } else { Tk_SizeOfImage(eiPtr->body.ei.image, &width, &height); - width += 2*eiPtr->body.ei.padX; - height += 2*eiPtr->body.ei.padY; + width += 2 * eiPtr->body.ei.padX; + height += 2 * eiPtr->body.ei.padY; } if ((width > (maxX - chunkPtr->x)) && !noCharsYet && (textPtr->wrapMode != TEXT_WRAPMODE_NONE)) { return 0; } Index: generic/tkTextIndex.c ================================================================== --- generic/tkTextIndex.c +++ generic/tkTextIndex.c @@ -45,10 +45,18 @@ TkText *textPtr, const char *string, TkTextIndex *indexPtr, int *canCachePtr); static int IndexCountBytesOrdered(const TkText *textPtr, const TkTextIndex *indexPtr1, const TkTextIndex *indexPtr2); + +#if defined(USE_TCL_STUBS) && (TCL_MAJOR_VERSION < 9) +# undef Tcl_UtfPrev +# define Tcl_UtfPrev (((&tclStubsPtr->tcl_PkgProvideEx)[631]) ? \ + ((const char * (*)(const char *, const char *))(void *)((&tclStubsPtr->tcl_PkgProvideEx)[656])) \ + : ((const char * (*)(const char *, const char *))(void *)((&tclStubsPtr->tcl_PkgProvideEx)[331]))) +#endif + /* * The "textindex" Tcl_Obj definition: */ @@ -441,11 +449,11 @@ * adjusted to the end of that UTF-8 character. */ start = segPtr->body.chars + (byteIndex - index); p = Tcl_UtfPrev(start, segPtr->body.chars); - p += Tcl_UtfToUniChar(p, &ch); + p += TkUtfToUniChar(p, &ch); indexPtr->byteIndex += p - start; } break; } index += segPtr->size; @@ -484,11 +492,11 @@ TkTextIndex *indexPtr) /* Structure to fill in. */ { TkTextSegment *segPtr; char *p, *start, *end; int index, offset; - Tcl_UniChar ch = 0; + int ch = 0; indexPtr->tree = tree; if (lineIndex < 0) { lineIndex = 0; charIndex = 0; @@ -531,11 +539,11 @@ if (charIndex == 0) { indexPtr->byteIndex = index; return indexPtr; } charIndex--; - offset = Tcl_UtfToUniChar(p, &ch); + offset = TkUtfToUniChar(p, &ch); index += offset; } } else { if (charIndex < (int)segPtr->size) { indexPtr->byteIndex = index; @@ -1119,19 +1127,19 @@ } if (numBytes <= segPtr->size) { break; } if (segPtr->typePtr == &tkTextCharType) { - charIndex += Tcl_NumUtfChars(segPtr->body.chars, segPtr->size); + charIndex += TkNumUtfChars(segPtr->body.chars, segPtr->size); } else { charIndex += segPtr->size; } numBytes -= segPtr->size; } if (segPtr->typePtr == &tkTextCharType) { - charIndex += Tcl_NumUtfChars(segPtr->body.chars, numBytes); + charIndex += TkNumUtfChars(segPtr->body.chars, numBytes); } else { charIndex += numBytes; } return snprintf(string, TK_POS_CHARS, "%d.%" TCL_SIZE_MODIFIER "d", @@ -1611,11 +1619,11 @@ * The elide state only changes if this tag is either the * current highest priority tag (and is therefore being * toggled off), or it's a new tag with higher priority. */ - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj) { infoPtr->tagCnts[tagPtr->priority]++; if (infoPtr->tagCnts[tagPtr->priority] & 1) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; } @@ -1638,17 +1646,17 @@ elide = 0; while (--infoPtr->elidePriority > 0) { if (infoPtr->tagCnts[infoPtr->elidePriority] & 1) { - elide = infoPtr->tagPtrs - [infoPtr->elidePriority]->elide > 0; + elide = infoPtr->tagPtrs[infoPtr->elidePriority]->elideObj + && infoPtr->tagPtrs[infoPtr->elidePriority]->elide != 0; break; } } } else { - elide = tagPtr->elide > 0; + elide = tagPtr->elideObj && (tagPtr->elide != 0); infoPtr->elidePriority = tagPtr->priority; } } } } @@ -1655,11 +1663,11 @@ if (!elide) { if (segPtr->typePtr == &tkTextCharType) { start = segPtr->body.chars + byteOffset; end = segPtr->body.chars + segPtr->size; - for (p = start; p < end; p += Tcl_UtfToUniChar(p, &ch)) { + for (p = start; p < end; p += TkUtfToUniChar(p, &ch)) { if (charCount == 0) { dstPtr->byteIndex += (p - start); goto forwardCharDone; } charCount--; @@ -1861,11 +1869,11 @@ * The elide state only changes if this tag is either the * current highest priority tag (and is therefore being * toggled off), or it's a new tag with higher priority. */ - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj) { infoPtr->tagCnts[tagPtr->priority]++; if (infoPtr->tagCnts[tagPtr->priority] & 1) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; } if (tagPtr->priority >= infoPtr->elidePriority) { @@ -1888,17 +1896,17 @@ elide = 0; while (--infoPtr->elidePriority > 0) { if (infoPtr->tagCnts[ infoPtr->elidePriority] & 1) { - elide = infoPtr->tagPtrs[ - infoPtr->elidePriority]->elide > 0; + elide = infoPtr->tagPtrs[infoPtr->elidePriority]->elideObj + && (infoPtr->tagPtrs[infoPtr->elidePriority]->elide != 0); break; } } } else { - elide = tagPtr->elide > 0; + elide = tagPtr->elideObj && (tagPtr->elide != 0); infoPtr->elidePriority = tagPtr->priority; } } } } @@ -1938,11 +1946,11 @@ i--; str++; } count += byteLen - i; if (i) { - count += Tcl_NumUtfChars(segPtr->body.chars + byteOffset + count += TkNumUtfChars(segPtr->body.chars + byteOffset + (byteLen - i), i); } } else { if (type & COUNT_INDICES) { Tcl_Size byteLen = segPtr->size - byteOffset; @@ -2150,11 +2158,11 @@ * The elide state only changes if this tag is either the current * highest priority tag (and is therefore being toggled off), or * it's a new tag with higher priority. */ - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj) { infoPtr->tagCnts[tagPtr->priority]++; if (infoPtr->tagCnts[tagPtr->priority] & 1) { infoPtr->tagPtrs[tagPtr->priority] = tagPtr; } if (tagPtr->priority >= infoPtr->elidePriority) { @@ -2175,17 +2183,17 @@ */ elide = 0; while (--infoPtr->elidePriority > 0) { if (infoPtr->tagCnts[infoPtr->elidePriority] & 1) { - elide = infoPtr->tagPtrs[ - infoPtr->elidePriority]->elide > 0; + elide = infoPtr->tagPtrs[infoPtr->elidePriority]->elideObj + && (infoPtr->tagPtrs[infoPtr->elidePriority]->elide != 0); break; } } } else { - elide = tagPtr->elide > 0; + elide = tagPtr->elideObj && (tagPtr->elide != 0); infoPtr->elidePriority = tagPtr->priority; } } } } @@ -2200,13 +2208,10 @@ goto backwardCharDone; } if (p == start) { break; } - if ((sizeof(Tcl_UniChar) == 2) && (unsigned)(UCHAR(*p) - 0xF0) <= 5) { - charCount--; /* Characters > U+FFFF count as 2 here */ - } if (charCount != 0) { charCount--; } } } else { @@ -2387,11 +2392,11 @@ int chSize = 1; if (segPtr->typePtr == &tkTextCharType) { int ch; - chSize = Tcl_UtfToUniChar(segPtr->body.chars + offset, &ch); + chSize = TkUtfToUniChar(segPtr->body.chars + offset, &ch); if (!Tcl_UniCharIsWordChar(ch)) { break; } firstChar = 0; } @@ -2432,11 +2437,11 @@ int chSize = 1; if (segPtr->typePtr == &tkTextCharType) { int ch; - Tcl_UtfToUniChar(segPtr->body.chars + offset, &ch); + TkUtfToUniChar(segPtr->body.chars + offset, &ch); if (!Tcl_UniCharIsWordChar(ch)) { break; } if (offset + 1 > 1) { chSize = (segPtr->body.chars + offset Index: generic/tkTextTag.c ================================================================== --- generic/tkTextTag.c +++ generic/tkTextTag.c @@ -13,21 +13,32 @@ */ #include "tkInt.h" #include "tkText.h" #include "default.h" + +/* This struct can be used for booleans, relief and pixels */ +typedef struct { + char *string; + int value; +} IntStruct; + +typedef struct { + char *string; + Tk_Justify value; +} JustifyStruct; static const Tk_OptionSpec tagOptionSpecs[] = { {TK_OPTION_BORDER, "-background", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, border), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BITMAP, "-bgstipple", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, bgStipple), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", NULL, NULL, - NULL, offsetof(TkTextTag, borderWidthObj), offsetof(TkTextTag, borderWidth), + NULL, offsetof(TkTextTag, borderWidthObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-elide", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextTag, elide), + NULL, offsetof(TkTextTag, elideObj), offsetof(TkTextTag, elide), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BITMAP, "-fgstipple", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, fgStipple), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_FONT, "-font", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, tkfont), TK_OPTION_NULL_OK, 0, 0}, @@ -34,46 +45,46 @@ {TK_OPTION_COLOR, "-foreground", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, fgColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, justify), TK_OPTION_NULL_OK, 0,0}, {TK_OPTION_PIXELS, "-lmargin1", NULL, NULL, - NULL, offsetof(TkTextTag, lMargin1Obj), offsetof(TkTextTag, lMargin1), TK_OPTION_NULL_OK,0,0}, + NULL, offsetof(TkTextTag, lMargin1Obj), TCL_INDEX_NONE, TK_OPTION_NULL_OK,0,0}, {TK_OPTION_PIXELS, "-lmargin2", NULL, NULL, - NULL, offsetof(TkTextTag, lMargin2Obj), offsetof(TkTextTag, lMargin2), TK_OPTION_NULL_OK,0,0}, + NULL, offsetof(TkTextTag, lMargin2Obj), TCL_INDEX_NONE, TK_OPTION_NULL_OK,0,0}, {TK_OPTION_BORDER, "-lmargincolor", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMarginColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-offset", NULL, NULL, - NULL, offsetof(TkTextTag, offsetObj), offsetof(TkTextTag, offset), TK_OPTION_NULL_OK, 0, 0}, + NULL, offsetof(TkTextTag, offsetObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-overstrike", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrike), + NULL, offsetof(TkTextTag, overstrikeObj), offsetof(TkTextTag, overstrike), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-overstrikefg", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrikeColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_RELIEF, "-relief", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, relief), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-rmargin", NULL, NULL, - NULL, offsetof(TkTextTag, rMarginObj), offsetof(TkTextTag, rMargin), TK_OPTION_NULL_OK, 0,0}, + NULL, offsetof(TkTextTag, rMarginObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0,0}, {TK_OPTION_BORDER, "-rmargincolor", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, rMarginColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, selBorder), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-selectforeground", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, selFgColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-spacing1", NULL, NULL, - NULL, offsetof(TkTextTag, spacing1Obj), offsetof(TkTextTag, spacing1), TK_OPTION_NULL_OK,0,0}, + NULL, offsetof(TkTextTag, spacing1Obj), TCL_INDEX_NONE, TK_OPTION_NULL_OK,0,0}, {TK_OPTION_PIXELS, "-spacing2", NULL, NULL, - NULL, offsetof(TkTextTag, spacing2Obj), offsetof(TkTextTag, spacing2), TK_OPTION_NULL_OK,0,0}, + NULL, offsetof(TkTextTag, spacing2Obj), TCL_INDEX_NONE, TK_OPTION_NULL_OK,0,0}, {TK_OPTION_PIXELS, "-spacing3", NULL, NULL, - NULL, offsetof(TkTextTag, spacing3Obj), offsetof(TkTextTag, spacing3), TK_OPTION_NULL_OK,0,0}, + NULL, offsetof(TkTextTag, spacing3Obj), TCL_INDEX_NONE, TK_OPTION_NULL_OK,0,0}, {TK_OPTION_STRING, "-tabs", NULL, NULL, NULL, offsetof(TkTextTag, tabStringPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-tabstyle", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, tabStyle), TK_OPTION_NULL_OK|TK_OPTION_ENUM_VAR, tkTextTabStyleStrings, 0}, {TK_OPTION_BOOLEAN, "-underline", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextTag, underline), + NULL, offsetof(TkTextTag, underlineObj), offsetof(TkTextTag, underline), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-underlinefg", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, underlineColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING_TABLE, "-wrap", NULL, NULL, @@ -160,24 +171,24 @@ Tcl_WrongNumArgs(interp, 3, objv, "tagName index1 ?index2 index1 index2 ...?"); return TCL_ERROR; } tagPtr = TkTextCreateTag(textPtr, Tcl_GetString(objv[3]), NULL); - if (tagPtr->elide > 0) { + if (tagPtr->elideObj && (tagPtr->elide != 0)) { /* * Indices are potentially obsolete after adding or removing * elided character ranges, especially indices having "display" * or "any" submodifier, therefore increase the epoch. */ textPtr->sharedTextPtr->stateEpoch++; } - for (i = 4; i < (Tcl_Size)objc; i += 2) { + for (i = 4; i < objc; i += 2) { if (TkTextGetObjIndex(interp, textPtr, objv[i], &index1) != TCL_OK) { return TCL_ERROR; } - if ((Tcl_Size)objc > (i+1)) { + if (objc > (i+1)) { if (TkTextGetObjIndex(interp, textPtr, objv[i+1], &index2) != TCL_OK) { return TCL_ERROR; } if (TkTextIndexCmp(&index1, &index2) >= 0) { @@ -279,11 +290,11 @@ Tk_DeleteBinding(interp, textPtr->sharedTextPtr->bindingTable, (void *) tagPtr->name, Tcl_GetString(objv[4])); Tcl_SetObjResult(interp, Tcl_NewStringObj( "requested illegal events; only key, button, motion," " enter, leave, and virtual events may be used", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "TEXT", "TAG_BIND_EVENT",NULL); + Tcl_SetErrorCode(interp, "TK", "TEXT", "TAG_BIND_EVENT", (char *)NULL); return TCL_ERROR; } } else if (objc == 5) { const char *command; @@ -362,53 +373,31 @@ * because we need to distinguish a particular value of an option * from "unspecified"). */ if (tagPtr->borderWidthObj) { - if (tagPtr->borderWidth < 0) { - tagPtr->borderWidth = 0; + int borderWidth; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->borderWidthObj, &borderWidth); + if (borderWidth < 0) { + borderWidth = 0; Tcl_DecrRefCount(tagPtr->borderWidthObj); tagPtr->borderWidthObj = Tcl_NewIntObj(0); Tcl_IncrRefCount(tagPtr->borderWidthObj); } - } - if (tagPtr->spacing1Obj) { - if (tagPtr->spacing1 < 0) { - tagPtr->spacing1 = 0; - Tcl_DecrRefCount(tagPtr->spacing1Obj); - tagPtr->spacing1Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(tagPtr->spacing1Obj); - } - } - if (tagPtr->spacing2Obj) { - if (tagPtr->spacing2 < 0) { - tagPtr->spacing2 = 0; - Tcl_DecrRefCount(tagPtr->spacing2Obj); - tagPtr->spacing2Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(tagPtr->spacing2Obj); - } - } - if (tagPtr->spacing3Obj) { - if (tagPtr->spacing3 < 0) { - tagPtr->spacing3 = 0; - Tcl_DecrRefCount(tagPtr->spacing3Obj); - tagPtr->spacing3Obj = Tcl_NewIntObj(0); - Tcl_IncrRefCount(tagPtr->spacing3Obj); - } } if (tagPtr->tabArrayPtr != NULL) { ckfree(tagPtr->tabArrayPtr); tagPtr->tabArrayPtr = NULL; } if (tagPtr->tabStringPtr != NULL) { tagPtr->tabArrayPtr = - TkTextGetTabs(interp, textPtr->tkwin, tagPtr->tabStringPtr); + TkTextGetTabs(interp, textPtr, tagPtr->tabStringPtr); if (tagPtr->tabArrayPtr == NULL) { return TCL_ERROR; } } - if (tagPtr->elide >= 0) { + if (tagPtr->elideObj) { /* * Indices are potentially obsolete after changing -elide, * especially those computed with "display" or "any" * submodifier, therefore increase the epoch. */ @@ -428,11 +417,10 @@ if (tagPtr->selBorder == NULL) { textPtr->selBorder = tagPtr->border; } else { textPtr->selBorder = tagPtr->selBorder; } - textPtr->selBorderWidth = tagPtr->borderWidth; textPtr->selBorderWidthObj = tagPtr->borderWidthObj; if (tagPtr->selFgColor == NULL) { textPtr->selFgColorPtr = tagPtr->fgColor; } else { textPtr->selFgColorPtr = tagPtr->selFgColor; @@ -439,20 +427,20 @@ } } tagPtr->affectsDisplay = 0; tagPtr->affectsDisplayGeometry = 0; - if ((tagPtr->elide >= 0) + if ((tagPtr->elideObj) || (tagPtr->tkfont != NULL) || (tagPtr->justify != TK_JUSTIFY_NULL) - || (tagPtr->lMargin1 != INT_MIN) - || (tagPtr->lMargin2 != INT_MIN) - || (tagPtr->offset != INT_MIN) - || (tagPtr->rMargin != INT_MIN) - || (tagPtr->spacing1 != INT_MIN) - || (tagPtr->spacing2 != INT_MIN) - || (tagPtr->spacing3 != INT_MIN) + || (tagPtr->lMargin1Obj != NULL) + || (tagPtr->lMargin2Obj != NULL) + || (tagPtr->offsetObj != NULL) + || (tagPtr->rMarginObj != NULL) + || (tagPtr->spacing1Obj != NULL) + || (tagPtr->spacing2Obj != NULL) + || (tagPtr->spacing3Obj != NULL) || (tagPtr->tabStringPtr != NULL) || (tagPtr->tabStyle == TK_TEXT_TABSTYLE_TABULAR) || (tagPtr->tabStyle == TK_TEXT_TABSTYLE_WORDPROCESSOR) || (tagPtr->wrapMode == TEXT_WRAPMODE_CHAR) || (tagPtr->wrapMode == TEXT_WRAPMODE_NONE) @@ -465,13 +453,13 @@ || (tagPtr->relief != TK_RELIEF_NULL) || (tagPtr->bgStipple != None) || (tagPtr->fgColor != NULL) || (tagPtr->selFgColor != NULL) || (tagPtr->fgStipple != None) - || (tagPtr->overstrike >= 0) + || (tagPtr->overstrikeObj != NULL) || (tagPtr->overstrikeColor != NULL) - || (tagPtr->underline >= 0) + || (tagPtr->underlineObj != NULL) || (tagPtr->underlineColor != NULL) || (tagPtr->lMarginColor != NULL) || (tagPtr->rMarginColor != NULL)) { tagPtr->affectsDisplay = 1; } @@ -499,11 +487,11 @@ if (objc < 4) { Tcl_WrongNumArgs(interp, 3, objv, "tagName ?tagName ...?"); return TCL_ERROR; } - for (i = 3; i < (Tcl_Size)objc; i++) { + for (i = 3; i < objc; i++) { hPtr = Tcl_FindHashEntry(&textPtr->sharedTextPtr->tagTable, Tcl_GetString(objv[i])); if (hPtr == NULL) { /* * Either this tag doesn't exist or it's the 'sel' tag (which @@ -603,11 +591,11 @@ listObj = Tcl_NewListObj(0, NULL); for (i = 0; i < arraySize; i++) { tagPtr = arrayPtr[i]; Tcl_ListObjAppendElement(interp, listObj, - Tcl_NewStringObj(tagPtr->name,-1)); + Tcl_NewStringObj(tagPtr->name, TCL_INDEX_NONE)); } Tcl_SetObjResult(interp, listObj); ckfree(arrayPtr); break; } @@ -953,44 +941,43 @@ tagPtr->textPtr = NULL; tagPtr->toggleCount = 0; tagPtr->tagRootPtr = NULL; tagPtr->priority = textPtr->sharedTextPtr->numTags; tagPtr->border = NULL; - tagPtr->borderWidth = 0; tagPtr->borderWidthObj = NULL; tagPtr->relief = TK_RELIEF_NULL; tagPtr->bgStipple = None; tagPtr->fgColor = NULL; tagPtr->tkfont = NULL; tagPtr->fgStipple = None; tagPtr->justify = TK_JUSTIFY_NULL; tagPtr->lMargin1Obj = NULL; - tagPtr->lMargin1 = INT_MIN; + tagPtr->lMargin1 = 0; tagPtr->lMargin2Obj = NULL; - tagPtr->lMargin2 = INT_MIN; + tagPtr->lMargin2 = 0; tagPtr->lMarginColor = NULL; tagPtr->offsetObj = NULL; - tagPtr->offset = INT_MIN; - tagPtr->overstrike = -1; + tagPtr->offset = 0; + tagPtr->overstrikeObj = NULL; + tagPtr->overstrike = 0; tagPtr->overstrikeColor = NULL; tagPtr->rMarginObj = NULL; - tagPtr->rMargin = INT_MIN; + tagPtr->rMargin = 0; tagPtr->rMarginColor = NULL; tagPtr->selBorder = NULL; tagPtr->selFgColor = NULL; tagPtr->spacing1Obj = NULL; - tagPtr->spacing1 = INT_MIN; tagPtr->spacing2Obj = NULL; - tagPtr->spacing2 = INT_MIN; tagPtr->spacing3Obj = NULL; - tagPtr->spacing3 = INT_MIN; tagPtr->tabStringPtr = NULL; tagPtr->tabArrayPtr = NULL; tagPtr->tabStyle = TK_TEXT_TABSTYLE_NULL; - tagPtr->underline = -1; + tagPtr->underlineObj = NULL; + tagPtr->underline = 0; tagPtr->underlineColor = NULL; - tagPtr->elide = -1; + tagPtr->elideObj = NULL; + tagPtr->elide = 0; tagPtr->wrapMode = TEXT_WRAPMODE_NULL; tagPtr->affectsDisplay = 0; tagPtr->affectsDisplayGeometry = 0; textPtr->sharedTextPtr->numTags++; if (!strcmp(tagName, "sel")) { @@ -1047,11 +1034,11 @@ if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "tag \"%s\" isn't defined in text widget", Tcl_GetString(tagName))); Tcl_SetErrorCode(interp, "TK", "LOOKUP", "TEXT_TAG", - Tcl_GetString(tagName), NULL); + Tcl_GetString(tagName), (char *)NULL); } return NULL; } /* Index: generic/tkTextWind.c ================================================================== --- generic/tkTextWind.c +++ generic/tkTextWind.c @@ -94,17 +94,17 @@ */ static const Tk_OptionSpec optionSpecs[] = { {TK_OPTION_STRING_TABLE, "-align", NULL, NULL, "center", TCL_INDEX_NONE, offsetof(TkTextEmbWindow, align), - (TCL_MAJOR_VERSION > 8) ? TK_OPTION_ENUM_VAR : 0, alignStrings, 0}, + TK_OPTION_ENUM_VAR, alignStrings, 0}, {TK_OPTION_STRING, "-create", NULL, NULL, - NULL, TCL_INDEX_NONE, offsetof(TkTextEmbWindow, create), TK_OPTION_NULL_OK, 0, 0}, + NULL, offsetof(TkTextEmbWindow, createObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-padx", NULL, NULL, - "0", offsetof(TkTextEmbWindow, padXObj), offsetof(TkTextEmbWindow, padX), 0, 0, 0}, + "0", TCL_INDEX_NONE, offsetof(TkTextEmbWindow, padX), 0, 0, 0}, {TK_OPTION_PIXELS, "-pady", NULL, NULL, - "0", offsetof(TkTextEmbWindow, padYObj), offsetof(TkTextEmbWindow, padY), 0, 0, 0}, + "0", TCL_INDEX_NONE, offsetof(TkTextEmbWindow, padY), 0, 0, 0}, {TK_OPTION_BOOLEAN, "-stretch", NULL, NULL, "0", TCL_INDEX_NONE, offsetof(TkTextEmbWindow, stretch), 0, 0, 0}, {TK_OPTION_WINDOW, "-window", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextEmbWindow, tkwin), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0} @@ -288,14 +288,13 @@ ewPtr->typePtr = &tkTextEmbWindowType; ewPtr->size = 1; ewPtr->body.ew.sharedTextPtr = textPtr->sharedTextPtr; ewPtr->body.ew.linePtr = NULL; ewPtr->body.ew.tkwin = NULL; - ewPtr->body.ew.create = NULL; + ewPtr->body.ew.createObj = NULL; ewPtr->body.ew.align = TK_ALIGN_CENTER; ewPtr->body.ew.padX = ewPtr->body.ew.padY = 0; - ewPtr->body.ew.padXObj = ewPtr->body.ew.padYObj = NULL; ewPtr->body.ew.stretch = 0; ewPtr->body.ew.optionTable = Tk_CreateOptionTable(interp, optionSpecs); client = (TkTextEmbWindowClient *)ckalloc(sizeof(TkTextEmbWindowClient)); client->next = NULL; @@ -844,19 +843,19 @@ ewPtr->body.ew.tkwin = NULL; } else { ewPtr->body.ew.tkwin = client->tkwin; } - if ((ewPtr->body.ew.tkwin == NULL) && (ewPtr->body.ew.create != NULL)) { + if ((ewPtr->body.ew.tkwin == NULL) && (ewPtr->body.ew.createObj != NULL)) { int code, isNew; Tk_Window ancestor; Tcl_HashEntry *hPtr; const char *before, *string; Tcl_DString buf, *dsPtr = NULL; Tcl_Obj *nameObj; - before = ewPtr->body.ew.create; + before = Tcl_GetString(ewPtr->body.ew.createObj); /* * Find everything up to the next % character and append it to the * result string. */ @@ -906,11 +905,11 @@ if (dsPtr != NULL) { Tcl_DStringAppend(dsPtr, before, string-before); code = Tcl_EvalEx(textPtr->interp, Tcl_DStringValue(dsPtr), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); Tcl_DStringFree(dsPtr); } else { - code = Tcl_EvalEx(textPtr->interp, ewPtr->body.ew.create, TCL_INDEX_NONE, TCL_EVAL_GLOBAL); + code = Tcl_EvalEx(textPtr->interp, Tcl_GetString(ewPtr->body.ew.createObj), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); } if (code != TCL_OK) { Tcl_BackgroundException(textPtr->interp, code); goto gotWindow; } Index: generic/tkUtil.c ================================================================== --- generic/tkUtil.c +++ generic/tkUtil.c @@ -1308,10 +1308,82 @@ if (detail) Tcl_IncrRefCount(detail); // Event code will DecrRefCount Tk_QueueWindowEvent(&event.general, TCL_QUEUE_TAIL); } +#if TCL_MAJOR_VERSION < 9 +/* + *--------------------------------------------------------------------------- + * + * TkUtfToUniChar -- + * + * Almost the same as Tcl_UtfToUniChar but using int instead of Tcl_UniChar. + * This function is capable of collapsing a upper/lower surrogate pair to a + * single unicode character. So, up to 6 bytes might be consumed. + * + * Results: + * *chPtr is filled with the Tcl_UniChar, and the return value is the + * number of bytes from the UTF-8 string that were consumed. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +Tcl_Size +TkUtfToUniChar( + const char *src, /* The UTF-8 string. */ + int *chPtr) /* Filled with the Unicode value represented by + * the UTF-8 string. */ +{ + Tcl_UniChar uniChar = 0; + + Tcl_Size len = Tcl_UtfToUniChar(src, &uniChar); + if ((uniChar & 0xFC00) == 0xD800) { + Tcl_UniChar low = uniChar; + /* This can only happen if src points to a character > U+FFFF */ + Tcl_Size len2 = Tcl_UtfToUniChar(src+len, &low); + if ((low & 0xFC00) == 0xDC00) { + *chPtr = (((uniChar & 0x3FF) << 10) | (low & 0x3FF)) + 0x10000; + return len + len2; + } + } + *chPtr = uniChar; + return len; +} + +/* + *--------------------------------------------------------------------------- + * + * TkUniCharToUtf -- + * + * Almost the same as Tcl_UniCharToUtf but producing 2 x 3-byte UTF-8 + * sequences for out-of-bmp characters when TCL_UTF_MAX==3. + * So, up to 6 bytes might be produced. + * + * Results: + * *buf is filled with the UTF-8 string, and the return value is the + * number of bytes produced. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +Tcl_Size TkUniCharToUtf(int ch, char *buf) +{ + if ((unsigned)(ch - 0x10000) <= 0xFFFFF) { + /* Spit out a 4-byte UTF-8 character (Tcl 8.7+) or + * 2 x 3-byte UTF-8 characters (Tcl 8.6) */ + Tcl_Size len = Tcl_UniCharToUtf(0xD800 | ((ch - 0x10000) >> 10), buf); + return len + Tcl_UniCharToUtf(0xDC00 | (ch & 0x7FF), buf + len); + } + return Tcl_UniCharToUtf(ch, buf); +} +#endif /* * Local Variables: * mode: c * c-basic-offset: 4 * fill-column: 78 Index: generic/tkWindow.c ================================================================== --- generic/tkWindow.c +++ generic/tkWindow.c @@ -213,21 +213,10 @@ int *screenPtr); static int Initialize(Tcl_Interp *interp); static int NameWindow(Tcl_Interp *interp, TkWindow *winPtr, TkWindow *parentPtr, const char *name); static void UnlinkWindow(TkWindow *winPtr); - -/* - * This static variable only makes sense for macOS and Windows, which never - * have more than one display. It is set by TkCloseDisplay, and when set - * prevents sending Enter and Leave events when all of the windows in the - * display are being destroyed. Tk does not send those events on X11; that - * job is handled by the X server. - */ - -static int displayBeingClosed = 0; - /* *---------------------------------------------------------------------- * * TkCloseDisplay -- @@ -248,11 +237,10 @@ static void TkCloseDisplay( TkDisplay *dispPtr) { - displayBeingClosed = 1; TkClipCleanup(dispPtr); if (dispPtr->name != NULL) { ckfree(dispPtr->name); } @@ -898,19 +886,19 @@ mainPtr->alwaysShowSelection = 0; mainPtr->tclUpdateObjProc = NULL; #if TCL_MAJOR_VERSION > 8 mainPtr->tclUpdateObjProc2 = NULL; #endif - if (Tcl_LinkVar(interp, "tk_strictMotif", &mainPtr->strictMotif, + if (Tcl_LinkVar(interp, "tk_strictMotif", (char *)&mainPtr->strictMotif, TCL_LINK_BOOLEAN) != TCL_OK) { Tcl_ResetResult(interp); } if (Tcl_CreateNamespace(interp, "::tk", NULL, NULL) == NULL) { Tcl_ResetResult(interp); } if (Tcl_LinkVar(interp, "::tk::AlwaysShowSelection", - &mainPtr->alwaysShowSelection, + (char *)&mainPtr->alwaysShowSelection, TCL_LINK_BOOLEAN) != TCL_OK) { Tcl_ResetResult(interp); } mainPtr->nextPtr = tsdPtr->mainWindowList; tsdPtr->mainWindowList = mainPtr; @@ -1344,43 +1332,10 @@ * callback functions are invoked. * *-------------------------------------------------------------- */ -#if defined(MAC_OSX_TK) || defined(_WIN32) -static void SendEnterLeaveForDestroy( - Tk_Window tkwin) -{ - int x, y; - unsigned int state; - Tk_Window pointerWin; - TkWindow *containerPtr; - - if (displayBeingClosed) { - return; - } - XQueryPointer(Tk_Display(tkwin), None, NULL, NULL, &x, &y, - NULL, NULL, &state); - pointerWin = Tk_CoordsToWindow(x, y, tkwin); - if (pointerWin == tkwin) { - if (!Tk_IsTopLevel(tkwin)) { - containerPtr = TkGetContainer((TkWindow *)pointerWin); - Tk_UpdatePointer((Tk_Window) containerPtr, x, y, state); - } - } - - if (pointerWin && (tkwin == Tk_Parent(pointerWin))) { - Tk_UpdatePointer(Tk_Parent(tkwin), x, y, state); - } -} -#else -static void SendEnterLeaveForDestroy( - TCL_UNUSED(Tk_Window)) -{ -} -#endif - void Tk_DestroyWindow( Tk_Window tkwin) /* Window to destroy. */ { TkWindow *winPtr = (TkWindow *)tkwin; @@ -1396,14 +1351,10 @@ * Ignore the request. */ return; } - if ((winPtr->flags & TK_DONT_DESTROY_WINDOW) == 0) { - SendEnterLeaveForDestroy(tkwin); - } - winPtr->flags |= TK_ALREADY_DEAD; /* * Unless we are cleaning up a half dead window from * DeleteWindowsExitProc, add this window to the half dead list. @@ -1570,11 +1521,11 @@ /* * Cleanup the data structures associated with this window. */ - if (winPtr->wmInfoPtr && (winPtr->flags & TK_WIN_MANAGED)) { + if (winPtr->flags & TK_WIN_MANAGED) { TkWmDeadWindow(winPtr); } else if (winPtr->flags & TK_WM_COLORMAP_WINDOW) { TkWmRemoveFromColormapWindows(winPtr); } if (winPtr->window != None) { @@ -2659,11 +2610,11 @@ { TkWindow *winPtr = (TkWindow *) tkwin; TkWindow *otherPtr = (TkWindow *) other; /* - * Special case: if winPtr is a toplevel window then just find the + * Special case: if winPtr is a top-level window then just find the * top-level ancestor of otherPtr and restack winPtr above otherPtr * without changing any of Tk's childLists. */ if (winPtr->flags & TK_WIN_MANAGED) { @@ -2995,13 +2946,13 @@ #if defined(_WIN32) && !defined(STATIC_BUILD) static HMODULE tkcygwindll = NULL; /* - * Run Tk_MainEx from libtcl9tk9.?.dll + * Run Tk_MainEx from libtk8.?.dll * - * This function is only ever called from wish9.?.exe, the cygwin port of Tcl. + * This function is only ever called from wish8.?.exe, the cygwin port of Tcl. * This means that the system encoding is utf-8, so we don't have to do any * encoding conversions. */ MODULE_SCOPE void @@ -3016,19 +2967,19 @@ { WCHAR name[MAX_PATH]; size_t len; void (*tkmainex)(Tcl_Size, char **, Tcl_AppInitProc *, Tcl_Interp *); - /* construct "/libtcl9tk9.?.dll", from "/tcl9tk9?.dll" */ + /* construct "/libtk8.?.dll", from "/tk8?.dll" */ len = GetModuleFileNameW((HINSTANCE)Tk_GetHINSTANCE(), name, MAX_PATH); name[len-2] = '.'; name[len-1] = name[len-5]; wcscpy(name+len, L".dll"); #if TCL_MAJOR_VERSION > 8 - memcpy(name+len-12, L"libtcl9tk9", 10 * sizeof(WCHAR)); + memcpy(name+len-12, L"libtcl9tk8", 10 * sizeof(WCHAR)); #else - memcpy(name+len-8, L"libtk9", 6 * sizeof(WCHAR)); + memcpy(name+len-8, L"libtk8", 6 * sizeof(WCHAR)); #endif tkcygwindll = LoadLibraryW(name); if (tkcygwindll) { tkmainex = (void (*)(Tcl_Size, char **, Tcl_AppInitProc *, Tcl_Interp *)) @@ -3224,11 +3175,11 @@ /* * Ensure that we are getting a compatible version of Tcl. */ - if (Tcl_InitStubs(interp, "8.7-", 0) == NULL) { + if (Tcl_InitStubs(interp, "8.6-", 0) == NULL) { return TCL_ERROR; } /* * TIP #59: Make embedded configuration information available. @@ -3424,18 +3375,11 @@ Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewStringObj("-visual", TCL_INDEX_NONE)); Tcl_ListObjAppendElement(NULL, cmd, visualObj); visualObj = NULL; } - Tcl_Size objc; - Tcl_Obj **objv; - - if (TCL_OK != Tcl_ListObjGetElements(interp, cmd, &objc, &objv)) { - return TCL_ERROR; - } - code = TkCreateFrame(NULL, interp, objc, objv, - 1, nameObj ? Tcl_GetString(nameObj) : NULL); + code = TkListCreateFrame(NULL, interp, cmd, 1, nameObj); Tcl_DecrRefCount(cmd); if (code != TCL_OK) { goto done; Index: generic/ttk/ttk.decls ================================================================== --- generic/ttk/ttk.decls +++ generic/ttk/ttk.decls @@ -141,10 +141,10 @@ } # # Utilities. # -declare 40 { - int Ttk_GetOrientFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Ttk_Orient *orient) +declare 40 {deprecated {}} { + int Ttk_GetOrientFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *orient) } Index: generic/ttk/ttkClamTheme.c ================================================================== --- generic/ttk/ttkClamTheme.c +++ generic/ttk/ttkClamTheme.c @@ -547,20 +547,20 @@ */ typedef struct { Tcl_Obj *lightColorObj; Tcl_Obj *borderColorObj; - Tcl_Obj *gripSizeObj; + Tcl_Obj *gripCountObj; } GripElement; static const Ttk_ElementOptionSpec GripElementOptions[] = { { "-lightcolor", TK_OPTION_COLOR, offsetof(GripElement,lightColorObj), LIGHT_COLOR }, { "-bordercolor", TK_OPTION_COLOR, offsetof(GripElement,borderColorObj), DARKEST_COLOR }, - { "-gripsize", TK_OPTION_PIXELS, - offsetof(GripElement,gripSizeObj), "7.5p" }, + { "-gripcount", TK_OPTION_PIXELS, + offsetof(GripElement,gripCountObj), "5" }, { NULL, TK_OPTION_BOOLEAN, 0, NULL } }; static void GripElementSize( void *clientData, void *elementRecord, Tk_Window tkwin, @@ -569,11 +569,12 @@ { Ttk_Orient orient = (Ttk_Orient)PTR2INT(clientData); GripElement *grip = (GripElement *)elementRecord; int gripSize = 0; - Tk_GetPixelsFromObj(NULL, tkwin, grip->gripSizeObj, &gripSize); + Tk_GetPixelsFromObj(NULL, tkwin, grip->gripCountObj, &gripSize); + gripSize *= 2; if (orient == TTK_ORIENT_HORIZONTAL) { *widthPtr = gripSize; } else { *heightPtr = gripSize; } @@ -590,11 +591,12 @@ GC lightGC = Ttk_GCForColor(tkwin,grip->lightColorObj,d); GC darkGC = Ttk_GCForColor(tkwin,grip->borderColorObj,d); int gripPad = 1, gripSize = 0; int i; - Tk_GetPixelsFromObj(NULL, tkwin, grip->gripSizeObj, &gripSize); + Tk_GetPixelsFromObj(NULL, tkwin, grip->gripCountObj, &gripSize); + gripSize *= 2; if (orient == TTK_ORIENT_HORIZONTAL) { int x = b.x + (b.width - gripSize) / 2; int y1 = b.y + gripPad, y2 = b.y + b.height - gripPad - 1 + w; for (i=0; iorientObj, &orient); - Tk_GetPixelsFromObj(NULL, tkwin, sb->gripSizeObj, &gripSize); + TtkGetOrientFromObj(NULL, sb->orientObj, &orient); + Tk_GetPixelsFromObj(NULL, tkwin, sb->gripCountObj, &gripSize); + gripSize *= 2; lightGC = Ttk_GCForColor(tkwin,sb->lightColorObj,d); darkGC = Ttk_GCForColor(tkwin,sb->borderColorObj,d); if (orient == TTK_ORIENT_HORIZONTAL) { dx = 1; dy = 0; @@ -772,11 +775,11 @@ ScrollbarElement *sb = (ScrollbarElement *)elementRecord; int length, thickness; Ttk_Orient orient; length = thickness = SCROLLBAR_THICKNESS; - Ttk_GetOrientFromObj(NULL, sb->orientObj, &orient); + TtkGetOrientFromObj(NULL, sb->orientObj, &orient); Tk_GetPixelsFromObj(NULL, tkwin, sb->arrowSizeObj, &thickness); Tk_GetPixelsFromObj(NULL, tkwin, sb->sliderlengthObj, &length); if (orient == TTK_ORIENT_VERTICAL) { *heightPtr = length; *widthPtr = thickness; Index: generic/ttk/ttkClassicTheme.c ================================================================== --- generic/ttk/ttkClassicTheme.c +++ generic/ttk/ttkClassicTheme.c @@ -232,11 +232,11 @@ offsetof(IndicatorElement,backgroundObj), DEFAULT_BACKGROUND }, { "-indicatorcolor", TK_OPTION_BORDER, offsetof(IndicatorElement,colorObj), DEFAULT_BACKGROUND }, { "-indicatorrelief", TK_OPTION_RELIEF, offsetof(IndicatorElement,reliefObj), "raised" }, - { "-indicatorsize", TK_OPTION_PIXELS, + { "-indicatordiameter", TK_OPTION_PIXELS, offsetof(IndicatorElement,sizeObj), "9p" }, { "-indicatormargin", TK_OPTION_STRING, offsetof(IndicatorElement,marginObj), "0 2 4 2" }, { "-borderwidth", TK_OPTION_PIXELS, offsetof(IndicatorElement,borderWidthObj), DEFAULT_BORDERWIDTH }, @@ -592,11 +592,11 @@ { SliderElement *slider = (SliderElement *)elementRecord; Ttk_Orient orient; int length, thickness; - Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient); + TtkGetOrientFromObj(NULL, slider->orientObj, &orient); Tk_GetPixelsFromObj(NULL, tkwin, slider->lengthObj, &length); Tk_GetPixelsFromObj(NULL, tkwin, slider->thicknessObj, &thickness); switch (orient) { case TTK_ORIENT_VERTICAL: @@ -625,11 +625,11 @@ Ttk_Orient orient; border = Tk_Get3DBorderFromObj(tkwin, slider->borderObj); Tk_GetReliefFromObj(NULL, slider->reliefObj, &relief); Tk_GetPixelsFromObj(NULL, tkwin, slider->borderWidthObj, &borderWidth); - Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient); + TtkGetOrientFromObj(NULL, slider->orientObj, &orient); Tk_Fill3DRectangle(tkwin, d, border, b.x, b.y, b.width, b.height, borderWidth, relief); Index: generic/ttk/ttkDecls.h ================================================================== --- generic/ttk/ttkDecls.h +++ generic/ttk/ttkDecls.h @@ -11,11 +11,15 @@ Tcl_Interp *, const char *version, int epoch, int revision); #define Ttk_InitStubs(interp) TtkInitializeStubs( \ interp, TTK_VERSION, TTK_STUBS_EPOCH, TTK_STUBS_REVISION) #else -#define Ttk_InitStubs(interp) Tcl_PkgRequireEx(interp, "ttk", TTK_VERSION, 0, NULL) +#if !defined(TK_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9 +# define Ttk_InitStubs(interp) Tcl_PkgRequireEx(interp, "Ttk", TTK_VERSION, 0, NULL) +#else +# define Ttk_InitStubs(interp) Tcl_PkgRequireEx(interp, "ttk", TTK_VERSION, 0, NULL) +#endif #endif #if !defined(BUILD_tk) # define TTK_DEPRECATED(msg) TTKAPI TCL_DEPRECATED_API(msg) @@ -137,12 +141,13 @@ /* Slot 36 is reserved */ /* Slot 37 is reserved */ /* Slot 38 is reserved */ /* Slot 39 is reserved */ /* 40 */ -TTKAPI int Ttk_GetOrientFromObj(Tcl_Interp *interp, - Tcl_Obj *objPtr, Ttk_Orient *orient); +TTK_DEPRECATED("") +int Ttk_GetOrientFromObj(Tcl_Interp *interp, + Tcl_Obj *objPtr, int *orient); typedef struct TtkStubs { int magic; int epoch; int revision; @@ -186,11 +191,11 @@ Tcl_Obj * (*ttk_NewBoxObj) (Ttk_Box box); /* 35 */ void (*reserved36)(void); void (*reserved37)(void); void (*reserved38)(void); void (*reserved39)(void); - int (*ttk_GetOrientFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, Ttk_Orient *orient); /* 40 */ + TCL_DEPRECATED_API("") int (*ttk_GetOrientFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *orient); /* 40 */ } TtkStubs; extern const TtkStubs *ttkStubsPtr; #ifdef __cplusplus Index: generic/ttk/ttkDefaultTheme.c ================================================================== --- generic/ttk/ttkDefaultTheme.c +++ generic/ttk/ttkDefaultTheme.c @@ -1061,11 +1061,11 @@ ThumbElement *thumb = (ThumbElement *)elementRecord; Ttk_Orient orient; int size; Tk_GetPixelsFromObj(NULL, tkwin, thumb->sizeObj, &size); - Ttk_GetOrientFromObj(NULL, thumb->orientObj, &orient); + TtkGetOrientFromObj(NULL, thumb->orientObj, &orient); if (orient == TTK_ORIENT_VERTICAL) { *widthPtr = size; *heightPtr = MIN_THUMB_SIZE; } else { @@ -1156,11 +1156,11 @@ { SliderElement *slider = (SliderElement *)elementRecord; Ttk_Orient orient; int thickness, borderWidth; - Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient); + TtkGetOrientFromObj(NULL, slider->orientObj, &orient); Tk_GetPixelsFromObj(NULL, tkwin, slider->thicknessObj, &thickness); Tk_GetPixelsFromObj(NULL, tkwin, slider->borderWidthObj, &borderWidth); switch (orient) { case TTK_ORIENT_VERTICAL: @@ -1215,11 +1215,11 @@ } TreeitemIndicator; static const Ttk_ElementOptionSpec TreeitemIndicatorOptions[] = { { "-foreground", TK_OPTION_COLOR, offsetof(TreeitemIndicator,colorObj), DEFAULT_FOREGROUND }, - { "-size", TK_OPTION_PIXELS, + { "-diameter", TK_OPTION_PIXELS, offsetof(TreeitemIndicator,sizeObj), "6.75p" }, { "-indicatormargins", TK_OPTION_STRING, offsetof(TreeitemIndicator,marginObj), "2 2 4 2" }, { NULL, TK_OPTION_BOOLEAN, 0, NULL } }; @@ -1235,10 +1235,11 @@ TreeitemIndicator *indicator = (TreeitemIndicator *)elementRecord; int size = 0; Ttk_Padding margins; Tk_GetPixelsFromObj(NULL, tkwin, indicator->sizeObj, &size); + if (size % 2 == 0) --size; /* An odd size is better for the indicator. */ Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginObj, &margins); *widthPtr = size + Ttk_PaddingWidth(margins); *heightPtr = size + Ttk_PaddingHeight(margins); } @@ -1257,11 +1258,11 @@ if (state & TTK_STATE_LEAF) { /* don't draw anything ... */ return; } - Ttk_GetPaddingFromObj(NULL,tkwin,indicator->marginObj,&padding); + Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginObj, &padding); b = Ttk_PadBox(b, padding); XDrawRectangle(Tk_Display(tkwin), d, gc, b.x, b.y, b.width - 1, b.height - 1); Index: generic/ttk/ttkElements.c ================================================================== --- generic/ttk/ttkElements.c +++ generic/ttk/ttkElements.c @@ -83,11 +83,11 @@ Drawable d, Ttk_Box b, TCL_UNUSED(Ttk_State)) { BackgroundElement *bg = (BackgroundElement *)elementRecord; - Tk_3DBorder backgroundPtr = Tk_Get3DBorderFromObj(tkwin,bg->backgroundObj); + Tk_3DBorder backgroundPtr = Tk_Get3DBorderFromObj(tkwin, bg->backgroundObj); XFillRectangle(Tk_Display(tkwin), d, Tk_3DBorderGC(tkwin, backgroundPtr, TK_3D_FLAT_GC), b.x, b.y, b.width, b.height); } @@ -339,11 +339,11 @@ int relief = TK_RELIEF_FLAT; Ttk_Padding pad; Tk_GetReliefFromObj(NULL, padding->reliefObj, &relief); Tk_GetPixelsFromObj(NULL, tkwin, padding->shiftreliefObj, &shiftRelief); - Ttk_GetPaddingFromObj(NULL,tkwin,padding->paddingObj,&pad); + Ttk_GetPaddingFromObj(NULL, tkwin, padding->paddingObj, &pad); *paddingPtr = Ttk_RelievePadding(pad, relief, shiftRelief); } static const Ttk_ElementSpec PaddingElementSpec = { TK_STYLE_VERSION_2, @@ -383,15 +383,15 @@ gcValues.foreground = color->pixel; gc = Tk_GetGC(tkwin, GCForeground, &gcValues); if (solid) { XRectangle rects[4] = { - {b.x, b.y, b.width, thickness}, /* N */ - {b.x, b.y + b.height - thickness, b.width, thickness}, /* S */ - {b.x, b.y + thickness, thickness, b.height - 2*thickness}, /* W */ - {b.x + b.width - thickness, b.y + thickness, /* E */ - thickness, b.height - 2*thickness} + {(short)b.x, (short)b.y, (unsigned short)b.width, (unsigned short)thickness}, /* N */ + {(short)b.x, (short)(b.y + b.height - thickness), (unsigned short)b.width, (unsigned short)thickness}, /* S */ + {(short)b.x, (short)(b.y + thickness), (unsigned short)thickness, (unsigned short)(b.height - 2*thickness)}, /* W */ + {(short)(b.x + b.width - thickness), (short)(b.y + thickness), /* E */ + (unsigned short)thickness, (unsigned short)(b.height - 2*thickness)} }; XFillRectangles(disp, d, gc, rects, 4); } else { TkDrawDottedRect(disp, d, gc, b.x, b.y, b.width, b.height); @@ -523,11 +523,11 @@ Drawable d, Ttk_Box b, Ttk_State state) { SeparatorElement *separator = (SeparatorElement *)elementRecord; Ttk_Orient orient; - Ttk_GetOrientFromObj(NULL, separator->orientObj, &orient); + TtkGetOrientFromObj(NULL, separator->orientObj, &orient); switch (orient) { case TTK_ORIENT_HORIZONTAL: HorizontalSeparatorElementDraw( clientData, elementRecord, tkwin, d, b, state); break; @@ -574,11 +574,11 @@ static const Ttk_ElementOptionSpec SizegripOptions[] = { { "-background", TK_OPTION_BORDER, offsetof(SizegripElement,backgroundObj), DEFAULT_BACKGROUND }, { "-gripsize", TK_OPTION_PIXELS, offsetof(SizegripElement,gripSizeObj), "11.25p" }, - {0,TK_OPTION_BOOLEAN,0,0} + {0, TK_OPTION_BOOLEAN, 0, 0} }; static void SizegripSize( TCL_UNUSED(void *), /* clientData */ void *elementRecord, @@ -614,13 +614,13 @@ gripThickness = gripSize * 3 / (gripCount * 5); gripSpace = gripSize / 3 - gripThickness; while (gripCount--) { x1 -= gripSpace; y2 -= gripSpace; for (int i = 1; i < gripThickness; i++) { - XDrawLine(Tk_Display(tkwin), d, darkGC, x1,y1, x2,y2); --x1; --y2; + XDrawLine(Tk_Display(tkwin), d, darkGC, x1,y1, x2,y2); --x1; --y2; } - XDrawLine(Tk_Display(tkwin), d, lightGC, x1,y1, x2,y2); --x1; --y2; + XDrawLine(Tk_Display(tkwin), d, lightGC, x1,y1, x2,y2); --x1; --y2; } } static const Ttk_ElementSpec SizegripElementSpec = { TK_STYLE_VERSION_2, @@ -647,22 +647,22 @@ const char *const triDataPtr; } IndicatorSpec; static const char checkbtnOffData[] = "\ \n\ - \n\ + \n\ "; static const char checkbtnOnData[] = "\ \n\ - \n\ + \n\ \n\ "; static const char checkbtnTriData[] = "\ \n\ - \n\ + \n\ \n\ "; static const IndicatorSpec checkbutton_spec = { 16, 16, @@ -926,11 +926,11 @@ { "-relief", TK_OPTION_RELIEF, offsetof(ArrowElement,reliefObj), "raised"}, { NULL, TK_OPTION_BOOLEAN, 0, NULL } }; -static const Ttk_Padding ArrowPadding = { 3,3,3,3 }; +static const Ttk_Padding ArrowPadding = { 3, 3, 3, 3 }; static void ArrowElementSize( void *clientData, void *elementRecord, Tk_Window tkwin, int *widthPtr, int *heightPtr, TCL_UNUSED(Ttk_Padding *)) @@ -1233,11 +1233,11 @@ TkMainInfo *mainInfoPtr = ((TkWindow *) tkwin)->mainPtr; Tk_GetPixelsFromObj(NULL, tkwin, troughPtr->borderWidthObj, &borderWidth); Tk_GetPixelsFromObj(NULL, tkwin, troughPtr->grooveWidthObj, &grooveWidth); Tk_GetReliefFromObj(NULL, troughPtr->reliefObj, &relief); - Ttk_GetOrientFromObj(NULL, troughPtr->orientObj, &orient); + TtkGetOrientFromObj(NULL, troughPtr->orientObj, &orient); if (grooveWidth > 0 && grooveWidth < b.height && grooveWidth < b.width) { if (orient == TTK_ORIENT_HORIZONTAL) { b.y += (b.height - grooveWidth) / 2; b.height = grooveWidth; @@ -1307,11 +1307,11 @@ ThumbElement *thumb = (ThumbElement *)elementRecord; Ttk_Orient orient; int thickness; Tk_GetPixelsFromObj(NULL, tkwin, thumb->thicknessObj, &thickness); - Ttk_GetOrientFromObj(NULL, thumb->orientObj, &orient); + TtkGetOrientFromObj(NULL, thumb->orientObj, &orient); if (orient == TTK_ORIENT_VERTICAL) { *widthPtr = thickness; *heightPtr = MIN_THUMB_SIZE; } else { @@ -1438,11 +1438,11 @@ /* * Fill the thin trough area preceding the * slider's center with the inner color */ if (mainInfoPtr != NULL) { - Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient); + TtkGetOrientFromObj(NULL, slider->orientObj, &orient); switch (orient) { case TTK_ORIENT_HORIZONTAL: XFillRectangle(disp, d, gc, mainInfoPtr->troughInnerX, mainInfoPtr->troughInnerY, b.x + dim/2 - 1, mainInfoPtr->troughInnerHeight); @@ -1577,11 +1577,11 @@ { PbarElement *pbar = (PbarElement *)elementRecord; Ttk_Orient orient; int thickness = 15, length = 30, borderWidth = 2; - Ttk_GetOrientFromObj(NULL, pbar->orientObj, &orient); + TtkGetOrientFromObj(NULL, pbar->orientObj, &orient); Tk_GetPixelsFromObj(NULL, tkwin, pbar->thicknessObj, &thickness); Tk_GetPixelsFromObj(NULL, tkwin, pbar->lengthObj, &length); Tk_GetPixelsFromObj(NULL, tkwin, pbar->borderWidthObj, &borderWidth); switch (orient) { @@ -1640,11 +1640,11 @@ offsetof(TabElement,backgroundObj), DEFAULT_BACKGROUND }, { "-highlight", TK_OPTION_BOOLEAN, offsetof(TabElement,highlightObj), "0" }, { "-highlightcolor", TK_OPTION_COLOR, offsetof(TabElement,highlightColorObj), "#4a6984" }, - {0,TK_OPTION_BOOLEAN,0,0} + {0, TK_OPTION_BOOLEAN, 0, 0} }; static void TabElementSize( TCL_UNUSED(void *), /* clientData */ void *elementRecord, Tk_Window tkwin, @@ -1875,11 +1875,11 @@ int borderWidth = 1; Tk_GetPixelsFromObj(NULL, tkwin, ce->borderWidthObj, &borderWidth); Tk_Fill3DRectangle(tkwin, d, border, - b.x, b.y, b.width, b.height, borderWidth,TK_RELIEF_RAISED); + b.x, b.y, b.width, b.height, borderWidth, TK_RELIEF_RAISED); } static const Ttk_ElementSpec ClientElementSpec = { TK_STYLE_VERSION_2, sizeof(ClientElement), @@ -1900,11 +1900,11 @@ /* * Elements: */ Ttk_RegisterElement(interp, theme, "background", - &BackgroundElementSpec,NULL); + &BackgroundElementSpec, NULL); Ttk_RegisterElement(interp, theme, "fill", &FillElementSpec, NULL); Ttk_RegisterElement(interp, theme, "border", &BorderElementSpec, NULL); Ttk_RegisterElement(interp, theme, "field", &FieldElementSpec, NULL); Ttk_RegisterElement(interp, theme, "focus", &FocusElementSpec, NULL); Index: generic/ttk/ttkEntry.c ================================================================== --- generic/ttk/ttkEntry.c +++ generic/ttk/ttkEntry.c @@ -298,12 +298,12 @@ char *displayString, *p; int size; int ch; char buf[6]; - Tcl_UtfToUniChar(showChar, &ch); - size = Tcl_UniCharToUtf(ch, buf); + TkUtfToUniChar(showChar, &ch); + size = TkUniCharToUtf(ch, buf); p = displayString = (char *)ckalloc(numChars * size + 1); while (numChars--) { memcpy(p, buf, size); p += size; @@ -367,12 +367,12 @@ || Tcl_IsSafe(entryPtr->core.interp)) { return TCL_INDEX_NONE; } string = entryPtr->entry.displayString; - selStart = Tcl_UtfAtIndex(string, entryPtr->entry.selectFirst); - selEnd = Tcl_UtfAtIndex(selStart, + selStart = TkUtfAtIndex(string, entryPtr->entry.selectFirst); + selEnd = TkUtfAtIndex(selStart, entryPtr->entry.selectLast - entryPtr->entry.selectFirst); if (selEnd <= selStart + offset) { return 0; } byteCount = selEnd - selStart - offset; @@ -456,11 +456,11 @@ /* There's a percent sequence here. Process it. */ ++templ; /* skip over % */ if (*templ != '\0') { - templ += Tcl_UtfToUniChar(templ, &ch); + templ += TkUtfToUniChar(templ, &ch); } else { ch = '%'; } stringLength = -1; @@ -486,15 +486,15 @@ case 's': /* Current string value */ string = entryPtr->entry.string; break; case 'S': /* string to be inserted/deleted, if any */ if (reason == VALIDATE_INSERT) { - string = Tcl_UtfAtIndex(newValue, index); - stringLength = Tcl_UtfAtIndex(string, count) - string; + string = TkUtfAtIndex(newValue, index); + stringLength = TkUtfAtIndex(string, count) - string; } else if (reason == VALIDATE_DELETE) { - string = Tcl_UtfAtIndex(entryPtr->entry.string, index); - stringLength = Tcl_UtfAtIndex(string, count) - string; + string = TkUtfAtIndex(entryPtr->entry.string, index); + stringLength = TkUtfAtIndex(string, count) - string; } else { string = ""; stringLength = 0; } break; @@ -506,11 +506,11 @@ break; case 'W': /* widget name */ string = Tk_PathName(entryPtr->core.tkwin); break; default: - length = Tcl_UniCharToUtf(ch, numStorage); + length = TkUniCharToUtf(ch, numStorage); numStorage[length] = '\0'; string = numStorage; break; } @@ -738,11 +738,11 @@ */ static void EntryStoreValue(Entry *entryPtr, const char *value) { size_t numBytes = strlen(value); - Tcl_Size numChars = Tcl_NumUtfChars(value, numBytes); + Tcl_Size numChars = TkNumUtfChars(value, numBytes); if (entryPtr->core.flags & VALIDATING) entryPtr->core.flags |= VALIDATION_SET_VALUE; /* Make sure all indices remain in bounds: @@ -843,13 +843,13 @@ Entry *entryPtr, /* Entry that is to get the new elements. */ Tcl_Size index, /* Insert before this index */ const char *value) /* New characters to add */ { char *string = entryPtr->entry.string; - size_t byteIndex = Tcl_UtfAtIndex(string, index) - string; + size_t byteIndex = TkUtfAtIndex(string, index) - string; size_t byteCount = strlen(value); - int charsAdded = Tcl_NumUtfChars(value, byteCount); + int charsAdded = TkNumUtfChars(value, byteCount); size_t newByteCount = entryPtr->entry.numBytes + byteCount + 1; char *newBytes; int code; if (byteCount == 0) { @@ -897,12 +897,12 @@ } if (count <= 0) { return TCL_OK; } - byteIndex = Tcl_UtfAtIndex(string, index) - string; - byteCount = Tcl_UtfAtIndex(string+byteIndex, count) - (string+byteIndex); + byteIndex = TkUtfAtIndex(string, index) - string; + byteCount = TkUtfAtIndex(string+byteIndex, count) - (string+byteIndex); newByteCount = entryPtr->entry.numBytes + 1 - byteCount; newBytes = (char *)ckalloc(newByteCount); memcpy(newBytes, string, byteIndex); strcpy(newBytes + byteIndex, string + byteIndex + byteCount); @@ -1317,11 +1317,11 @@ /* Draw the text: */ if ((*(entryPtr->entry.displayString) == '\0') && (entryPtr->entry.placeholderObj != NULL)) { /* No text displayed, but -placeholder is given */ - if (Tcl_GetCharLength(es.placeholderForegroundObj) > 0) { + if (TkGetCharLength(es.placeholderForegroundObj) > 0) { foregroundObj = es.placeholderForegroundObj; } else { foregroundObj = es.foregroundObj; } /* Use placeholder text width */ Index: generic/ttk/ttkInit.c ================================================================== --- generic/ttk/ttkInit.c +++ generic/ttk/ttkInit.c @@ -53,11 +53,21 @@ */ const char *const ttkOrientStrings[] = { "horizontal", "vertical", NULL }; +#if !defined(TK_NO_DEPRECATED) && TK_MAJOR_VERSION < 9 int Ttk_GetOrientFromObj( + Tcl_Interp *interp, Tcl_Obj *objPtr, int *resultPtr) +{ + *resultPtr = TTK_ORIENT_HORIZONTAL; + return Tcl_GetIndexFromObj(interp, objPtr, ttkOrientStrings, + "orientation", 0, resultPtr); +} +#endif + +int TtkGetOrientFromObj( Tcl_Interp *interp, Tcl_Obj *objPtr, Ttk_Orient *resultPtr) { int orient = (int)TTK_ORIENT_HORIZONTAL; int result = Tcl_GetIndexFromObj(interp, objPtr, ttkOrientStrings, "orientation", 0, &orient); Index: generic/ttk/ttkLabel.c ================================================================== --- generic/ttk/ttkLabel.c +++ generic/ttk/ttkLabel.c @@ -52,11 +52,15 @@ { "-font", TK_OPTION_FONT, offsetof(TextElement,fontObj), DEFAULT_FONT }, { "-foreground", TK_OPTION_COLOR, offsetof(TextElement,foregroundObj), "black" }, { "-underline", TK_OPTION_INDEX, +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) + offsetof(TextElement,underlineObj), "-1"}, +#else offsetof(TextElement,underlineObj), NULL}, +#endif { "-width", TK_OPTION_INT, offsetof(TextElement,widthObj), "-1"}, { "-anchor", TK_OPTION_ANCHOR, offsetof(TextElement,anchorObj), "w"}, { "-justify", TK_OPTION_JUSTIFY, @@ -523,11 +527,15 @@ { "-font", TK_OPTION_FONT, offsetof(LabelElement,text.fontObj), DEFAULT_FONT }, { "-foreground", TK_OPTION_COLOR, offsetof(LabelElement,text.foregroundObj), "black" }, { "-underline", TK_OPTION_INDEX, +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) offsetof(LabelElement,text.underlineObj), "-1"}, +#else + offsetof(LabelElement,text.underlineObj), NULL}, +#endif { "-width", TK_OPTION_INT, offsetof(LabelElement,text.widthObj), ""}, { "-anchor", TK_OPTION_ANCHOR, offsetof(LabelElement,text.anchorObj), "w"}, { "-justify", TK_OPTION_JUSTIFY, Index: generic/ttk/ttkNotebook.c ================================================================== --- generic/ttk/ttkNotebook.c +++ generic/ttk/ttkNotebook.c @@ -1124,13 +1124,14 @@ Tcl_SetObjResult(interp, Tcl_NewStringObj(elementName, -1)); } break; case IDENTIFY_TAB: - if (tabIndex >= 0) { - Tcl_SetObjResult(interp, TkNewIndexObj(tabIndex)); - } +#if !defined TK_NO_DEPRECATED && (TCL_MAJOR_VERSION < 9) + if (tabIndex >= 0) +#endif + Tcl_SetObjResult(interp, TkNewIndexObj(tabIndex)); break; } return TCL_OK; } @@ -1151,13 +1152,14 @@ return TCL_ERROR; } status = FindTabIndex(interp, nb, objv[2], &index); if (status == TCL_OK) { - if (index >= 0) { - Tcl_SetObjResult(interp, TkNewIndexObj(index)); - } +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) + if (index >= 0) +#endif + Tcl_SetObjResult(interp, TkNewIndexObj(index)); } return status; } Index: generic/ttk/ttkProgress.c ================================================================== --- generic/ttk/ttkProgress.c +++ generic/ttk/ttkProgress.c @@ -301,11 +301,11 @@ TtkWidgetSize(recordPtr, widthPtr, heightPtr); /* Override requested width (height) based on -length and -orient */ Tk_GetPixelsFromObj(NULL, pb->core.tkwin, pb->progress.lengthObj, &length); - Ttk_GetOrientFromObj(NULL, pb->progress.orientObj, &orient); + TtkGetOrientFromObj(NULL, pb->progress.orientObj, &orient); if (orient == TTK_ORIENT_HORIZONTAL) { *widthPtr = length; } else { *heightPtr = length; @@ -374,11 +374,11 @@ /* Adjust the bar size: */ Tcl_GetDoubleFromObj(NULL, pb->progress.valueObj, &value); Tcl_GetDoubleFromObj(NULL, pb->progress.maximumObj, &maximum); - Ttk_GetOrientFromObj(NULL, pb->progress.orientObj, &orient); + TtkGetOrientFromObj(NULL, pb->progress.orientObj, &orient); if (pbar) { double fraction = value / maximum; Ttk_Box parcel = Ttk_ClientRegion(corePtr->layout, "trough"); Index: generic/ttk/ttkStubInit.c ================================================================== --- generic/ttk/ttkStubInit.c +++ generic/ttk/ttkStubInit.c @@ -5,10 +5,14 @@ #include "tkInt.h" #include "ttkTheme.h" MODULE_SCOPE const TtkStubs ttkStubs; + +#if defined(TK_NO_DEPRECATED) || TK_MAJOR_VERSION > 8 +#define Ttk_GetOrientFromObj 0 +#endif #ifdef __GNUC__ /* * The rest of this file shouldn't warn about deprecated functions; they're * there because we intend them to be so and know that this file is OK to Index: generic/ttk/ttkTheme.c ================================================================== --- generic/ttk/ttkTheme.c +++ generic/ttk/ttkTheme.c @@ -534,13 +534,14 @@ Tcl_Interp* interp) { StylePackageData* pkgPtr = GetStylePackageData(interp); /* - * Cancel any pending ThemeChanged calls: + * Cancel any pending ThemeChanged calls. We might be called + * before Ttk is initialized. See bug [3981091ed336]. */ - if (pkgPtr->themeChangePending) { + if (pkgPtr && pkgPtr->themeChangePending) { Tcl_CancelIdleCall(ThemeChangedProc, pkgPtr); } } /* @@ -1325,11 +1326,13 @@ Tcl_WrongNumArgs(interp, 2, objv, "style -option ?state? ?default?"); return TCL_ERROR; } style = Ttk_GetStyle(theme, Tcl_GetString(objv[2])); - + if (!style) { + return TCL_ERROR; + } optionName = Tcl_GetString(objv[3]); if (objc >= 5) { Ttk_StateSpec stateSpec; /* @@@ SB: Ttk_GetStateFromObj(); 'offbits' spec is ignored */ @@ -1350,11 +1353,11 @@ return TCL_OK; } static int StyleThemeCurrentCmd( - void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj * const objv[]) + void *clientData, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) { StylePackageData *pkgPtr = (StylePackageData *)clientData; Tcl_HashSearch search; Tcl_HashEntry *entryPtr = NULL; const char *name = NULL; Index: generic/ttk/ttkTheme.h ================================================================== --- generic/ttk/ttkTheme.h +++ generic/ttk/ttkTheme.h @@ -364,10 +364,13 @@ typedef enum { /* -orient option values */ TTK_ORIENT_HORIZONTAL, TTK_ORIENT_VERTICAL } Ttk_Orient; + +MODULE_SCOPE int TtkGetOrientFromObj(Tcl_Interp *interp, + Tcl_Obj *objPtr, Ttk_Orient *orient); /*------------------------------------------------------------------------ * +++ Utilities. */ Index: generic/ttk/ttkThemeInt.h ================================================================== --- generic/ttk/ttkThemeInt.h +++ generic/ttk/ttkThemeInt.h @@ -50,8 +50,12 @@ MODULE_SCOPE void TtkSetBlinkCursorTimes(Tcl_Interp* interp); MODULE_SCOPE int TtkBoxEqual(Ttk_Box, Ttk_Box); -#define TTK_OPTION_UNDERLINE_DEF(type, field) NULL, offsetof(type, field), TCL_INDEX_NONE, TK_OPTION_NULL_OK, NULL +#if !defined(TK_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9) +# define TTK_OPTION_UNDERLINE_DEF(type, field) "-1", offsetof(type, field), TCL_INDEX_NONE, 0, NULL +#else +# define TTK_OPTION_UNDERLINE_DEF(type, field) NULL, offsetof(type, field), TCL_INDEX_NONE, TK_OPTION_NULL_OK, NULL +#endif #endif /* _TTKTHEMEINT */ Index: generic/ttk/ttkTreeview.c ================================================================== --- generic/ttk/ttkTreeview.c +++ generic/ttk/ttkTreeview.c @@ -2171,11 +2171,11 @@ Drawable d, int x, int y, int title) { Ttk_Layout layout = tv->tree.cellLayout; Ttk_Style style = Ttk_LayoutStyle(tv->core.layout); Ttk_State state = ItemState(tv, item); - int horizPad = round(4 * TkScalingLevel(tv->core.tkwin)); + short horizPad = round(4 * TkScalingLevel(tv->core.tkwin)); Ttk_Padding cellPadding = {horizPad, 0, horizPad, 0}; DisplayItem displayItemLocal; DisplayItem displayItemCell, displayItemCellSel; int rowHeight = tv->tree.rowHeight * item->height; int xPad = 0, defaultPadding = 1; @@ -3345,54 +3345,10 @@ TtkRedisplayWidget(&tv->core); ckfree(items); return TCL_OK; } -/* Is an item detached? The root is never detached. */ -static int IsDetached(Treeview *tv, TreeItem *item) -{ - return item->next == NULL && item->prev == NULL && - item->parent == NULL && item != tv->tree.root; -} - -/* + $tv detached ?$item? -- - * List detached items (in arbitrary order) or query the detached state of - * $item. - */ -static int TreeviewDetachedCommand( - void *recordPtr, Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) -{ - Treeview *tv = (Treeview *)recordPtr; - TreeItem *item; - - if (objc == 2) { - /* List detached items */ - Tcl_HashSearch search; - Tcl_HashEntry *entryPtr = Tcl_FirstHashEntry(&tv->tree.items, &search); - Tcl_Obj *objPtr = Tcl_NewObj(); - - while (entryPtr != NULL) { - item = (TreeItem *)Tcl_GetHashValue(entryPtr); - entryPtr = Tcl_NextHashEntry(&search); - if (IsDetached(tv, item)) { - Tcl_ListObjAppendElement(NULL, objPtr, ItemID(tv, item)); - } - } - Tcl_SetObjResult(interp, objPtr); - return TCL_OK; - } else if (objc == 3) { - /* Query; the root is never reported as detached */ - if (!(item = FindItem(interp, tv, objv[2]))) { - return TCL_ERROR; - } - Tcl_SetObjResult(interp, Tcl_NewBooleanObj(IsDetached(tv, item))); - return TCL_OK; - } else { - Tcl_WrongNumArgs(interp, 2, objv, "?item?"); - return TCL_ERROR; - } -} /* + $tv delete $items -- * Delete each item in $items. * * Do this in two passes: * First detach the item and all its descendants and remove them @@ -4512,11 +4468,10 @@ { "cget", TtkWidgetCgetCommand,0 }, { "column", TreeviewColumnCommand,0 }, { "configure", TtkWidgetConfigureCommand,0 }, { "delete", TreeviewDeleteCommand,0 }, { "detach", TreeviewDetachCommand,0 }, - { "detached", TreeviewDetachedCommand,0 }, { "drag", TreeviewDragCommand,0 }, { "drop", TreeviewDropCommand,0 }, { "exists", TreeviewExistsCommand,0 }, { "focus", TreeviewFocusCommand,0 }, { "heading", TreeviewHeadingCommand,0 }, @@ -4623,16 +4578,16 @@ int *widthPtr, int *heightPtr, TCL_UNUSED(Ttk_Padding *)) { TreeitemIndicator *indicator = (TreeitemIndicator *)elementRecord; - Ttk_Padding margins; int size = 0; + Ttk_Padding margins; - Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginsObj, &margins); Tk_GetPixelsFromObj(NULL, tkwin, indicator->sizeObj, &size); - if (size % 2 == 0) --size; /* An odd size is better for the arrow. */ + if (size % 2 == 0) --size; /* An odd size is better for the indicator. */ + Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginsObj, &margins); *widthPtr = size + Ttk_PaddingWidth(margins); *heightPtr = size + Ttk_PaddingHeight(margins); } @@ -4646,19 +4601,38 @@ { TreeitemIndicator *indicator = (TreeitemIndicator *)elementRecord; ArrowDirection direction = (state & TTK_STATE_OPEN) ? ARROW_DOWN : ARROW_RIGHT; Ttk_Padding margins; + int cx, cy; XColor *borderColor = Tk_GetColorFromObj(tkwin, indicator->colorObj); XGCValues gcvalues; GC gc; unsigned mask; if (state & TTK_STATE_LEAF) /* don't draw anything */ return; - Ttk_GetPaddingFromObj(NULL,tkwin,indicator->marginsObj,&margins); + Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginsObj, &margins); b = Ttk_PadBox(b, margins); + switch (direction) { + case ARROW_DOWN: + TtkArrowSize(b.width/2, direction, &cx, &cy); + if ((b.height - cy) % 2 == 1) { + ++cy; + } + break; + case ARROW_RIGHT: + default: + TtkArrowSize(b.height/2, direction, &cx, &cy); + if ((b.width - cx) % 2 == 1) { + ++cx; + } + break; + } + + b = Ttk_AnchorBox(b, cx, cy, TK_ANCHOR_CENTER); + gcvalues.foreground = borderColor->pixel; gcvalues.line_width = 1; mask = GCForeground | GCLineWidth; gc = Tk_GetGC(tkwin, mask, &gcvalues); Index: generic/ttk/ttkWidget.c ================================================================== --- generic/ttk/ttkWidget.c +++ generic/ttk/ttkWidget.c @@ -480,11 +480,11 @@ Tcl_DStringInit(&styleName); /* Prefix: */ - Ttk_GetOrientFromObj(NULL, orientObj, &orient); + TtkGetOrientFromObj(NULL, orientObj, &orient); if (orient == TTK_ORIENT_HORIZONTAL) Tcl_DStringAppend(&styleName, "Horizontal.", TCL_INDEX_NONE); else Tcl_DStringAppend(&styleName, "Vertical.", TCL_INDEX_NONE); Index: library/bgerror.tcl ================================================================== --- library/bgerror.tcl +++ library/bgerror.tcl @@ -20,11 +20,11 @@ option add *ErrorDialog*Label.font TkCaptionFont widgetDefault if {[tk windowingsystem] eq "aqua"} { option add *ErrorDialog*background systemAlertBackgroundActive \ widgetDefault option add *ErrorDialog*info.text.background \ - systemTextBackgroundColor widgetDefault + systemTextBackgroundColor widgetDefault option add *ErrorDialog*Button.highlightBackground \ systemAlertBackgroundActive widgetDefault } } @@ -61,13 +61,13 @@ [list [mc "All Files"] $allFiles] \ ] set filename [tk_getSaveFile -title [mc "Select Log File"] \ -filetypes $types -defaultextension .log -parent .bgerrorDialog] if {$filename ne {}} { - set f [open $filename w] - puts -nonewline $f $text - close $f + set f [open $filename w] + puts -nonewline $f $text + close $f } return } proc ::tk::dialog::error::Destroy {w} { @@ -129,11 +129,11 @@ set lines 0 set maxLine 45 set maxRows 5 foreach line [split $err \n] { if {$lines > $maxRows - 1} { - # No more lines. Append to previous line. + # No more lines. Append to previous line. append displayedErr { ...} break } if {[string length $line] > $maxLine} { append displayedErr "[string range $line 0 $maxLine-3]..." @@ -141,11 +141,11 @@ } if {$lines > $maxRows - 2 && [string length $line] > $maxLine-4} { append displayedErr "[string range $line 0 $maxLine-3]..." break } elseif {$lines > $maxRows - 2} { - # Last line, but no break or newline. Room to add 4 chars. + # Last line, but no break or newline. Room to add 4 chars. append displayedErr "${line}" } else { append displayedErr "${line}\n" } incr lines @@ -253,11 +253,11 @@ if {[tk windowingsystem] eq "win32"} { # Place it topmost if we aren't at the top of the stacking # order to ensure that it's seen if {[lindex [wm stackorder .] end] ne "$dlg"} { wm attributes $dlg -topmost 1 - } + } } # 9. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager Index: library/choosedir.tcl ================================================================== --- library/choosedir.tcl +++ library/choosedir.tcl @@ -26,13 +26,13 @@ set dataName __tk_choosedir upvar ::tk::dialog::file::$dataName data Config $dataName $args if {$data(-parent) eq "."} { - set w .$dataName + set w .$dataName } else { - set w $data(-parent).$dataName + set w $data(-parent).$dataName } # (re)create the dialog box if necessary # if {![winfo exists $w]} { Index: library/comdlg.tcl ================================================================== --- library/comdlg.tcl +++ library/comdlg.tcl @@ -63,13 +63,13 @@ } # 2: set the default values # if {"DONTSETDEFAULTS" ni $flags} { - foreach cmdsw [array names cmd] { + foreach cmdsw [array names cmd] { set data($cmdsw) $def($cmdsw) - } + } } # 3: parse the argument list # foreach {cmdsw value} $argList { Index: library/console.tcl ================================================================== --- library/console.tcl +++ library/console.tcl @@ -36,11 +36,11 @@ # ::tk::ConsoleInit -- # This procedure constructs and configures the console windows. # # Arguments: -# None. +# None. proc ::tk::ConsoleInit {} { if {![consoleinterp eval {set tcl_interactive}]} { wm withdraw . } @@ -720,11 +720,11 @@ Tcl $::tcl_patchLevel Tk $::tk_patchLevel" } # ::tk::console::Fontchooser* -- -# Let the user select the console font (TIP 324). +# Let the user select the console font (TIP 324). proc ::tk::console::FontchooserToggle {} { if {[tk fontchooser configure -visible]} { tk fontchooser hide } else { @@ -793,12 +793,12 @@ # anyone has something better, I'd like to see/use it. This is really # only efficient for small contexts. # # Arguments: # w - console text widget -# c1 - first char of pair -# c2 - second char of pair +# c1 - first char of pair +# c2 - second char of pair # # Calls: ::tk::console::Blink proc ::tk::console::MatchPair {w c1 c2 {lim 1.0}} { if {!$::tk::console::magicKeys} { @@ -885,13 +885,13 @@ # # Blinks between n index pairs for a specified duration. # # Arguments: # w - console text widget -# i1 - start index to blink region -# i2 - end index of blink region -# dur - duration in usecs to blink for +# i1 - start index to blink region +# i2 - end index of blink region +# dur - duration in usecs to blink for # # Outputs: # blinks selected characters in $w proc ::tk::console::Blink {w args} { @@ -919,11 +919,11 @@ # ::tk::console::Expand -- # # Arguments: # ARGS: w - text widget in which to expand str -# type - type of expansion (path / proc / variable) +# type - type of expansion (path / proc / variable) # # Calls: ::tk::console::Expand(Pathname|Procname|Variable) # # Outputs: The string to match is expanded to the longest possible match. # If ::tk::console::showMatches is non-zero and the longest match @@ -1119,11 +1119,11 @@ # The extra $e in this argument allows us to limit the innermost loop a little # further. This improves speed as $l becomes large or $e becomes long. # # Arguments: # l - list to find best unique match in -# e - currently best known unique match +# e - currently best known unique match # # Returns: longest unique match in the list proc ::tk::console::ExpandBestMatch {l {e {}}} { set ec [lindex $l 0] Index: library/demos/anilabel.tcl ================================================================== --- library/demos/anilabel.tcl +++ library/demos/anilabel.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .anilabel catch {destroy $w} toplevel $w wm title $w "Animated Label Demonstration" Index: library/demos/aniwave.tcl ================================================================== --- library/demos/aniwave.tcl +++ library/demos/aniwave.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .aniwave catch {destroy $w} toplevel $w wm title $w "Animated Wave Demonstration" Index: library/demos/arrow.tcl ================================================================== --- library/demos/arrow.tcl +++ library/demos/arrow.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # scl -- # Scales an integer according to the display's current scaling percentage. # # Arguments: Index: library/demos/bind.tcl ================================================================== --- library/demos/bind.tcl +++ library/demos/bind.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .bind catch {destroy $w} toplevel $w wm title $w "Text Demonstration - Tag Bindings" Index: library/demos/bitmap.tcl ================================================================== --- library/demos/bitmap.tcl +++ library/demos/bitmap.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # bitmapRow -- # Create a row of bitmap items in a window. # # Arguments: Index: library/demos/browse ================================================================== --- library/demos/browse +++ library/demos/browse @@ -5,11 +5,11 @@ # browse -- # This script generates a directory browser, which lists the working # directory and allows you to open files or subdirectories by # double-clicking. -package require tk +package require Tk # Create a scrollbar on the right side of the main window and a listbox # on the left side. scrollbar .scroll -command ".list yview" Index: library/demos/button.tcl ================================================================== --- library/demos/button.tcl +++ library/demos/button.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .button catch {destroy $w} toplevel $w wm title $w "Button Demonstration" Index: library/demos/check.tcl ================================================================== --- library/demos/check.tcl +++ library/demos/check.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .check catch {destroy $w} toplevel $w wm title $w "Checkbutton Demonstration" Index: library/demos/clrpick.tcl ================================================================== --- library/demos/clrpick.tcl +++ library/demos/clrpick.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .clrpick catch {destroy $w} toplevel $w wm title $w "Color Selection Dialog" Index: library/demos/colors.tcl ================================================================== --- library/demos/colors.tcl +++ library/demos/colors.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .colors catch {destroy $w} toplevel $w wm title $w "Listbox Demonstration (colors)" Index: library/demos/combo.tcl ================================================================== --- library/demos/combo.tcl +++ library/demos/combo.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .combo catch {destroy $w} toplevel $w wm title $w "Combobox Demonstration" Index: library/demos/cscroll.tcl ================================================================== --- library/demos/cscroll.tcl +++ library/demos/cscroll.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .cscroll catch {destroy $w} toplevel $w wm title $w "Scrollable Canvas Demonstration" Index: library/demos/ctext.tcl ================================================================== --- library/demos/ctext.tcl +++ library/demos/ctext.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ctext catch {destroy $w} toplevel $w wm title $w "Canvas Text Demonstration" Index: library/demos/entry1.tcl ================================================================== --- library/demos/entry1.tcl +++ library/demos/entry1.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .entry1 catch {destroy $w} toplevel $w wm title $w "Entry Demonstration (no scrollbars)" Index: library/demos/entry2.tcl ================================================================== --- library/demos/entry2.tcl +++ library/demos/entry2.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .entry2 catch {destroy $w} toplevel $w wm title $w "Entry Demonstration (with scrollbars)" Index: library/demos/entry3.tcl ================================================================== --- library/demos/entry3.tcl +++ library/demos/entry3.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .entry3 catch {destroy $w} toplevel $w wm title $w "Constrained Entry Demonstration" Index: library/demos/filebox.tcl ================================================================== --- library/demos/filebox.tcl +++ library/demos/filebox.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .filebox catch {destroy $w} toplevel $w wm title $w "File Selection Dialogs" Index: library/demos/floor.tcl ================================================================== --- library/demos/floor.tcl +++ library/demos/floor.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # floorDisplay -- # Recreate the floorplan display in the canvas given by "w". The # floor given by "active" is displayed on top with its office structure # visible. Index: library/demos/fontchoose.tcl ================================================================== --- library/demos/fontchoose.tcl +++ library/demos/fontchoose.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .fontchoose catch {destroy $w} toplevel $w wm title $w "Font Selection Dialog" @@ -18,11 +18,11 @@ catch {font create FontchooseDemoFont {*}[font actual TkDefaultFont]} # The font chooser needs to be configured and then shown. proc SelectFont {parent} { tk fontchooser configure -font FontchooseDemoFont \ - -command ApplyFont -parent $parent + -command ApplyFont -parent $parent tk fontchooser show } proc ApplyFont {font} { font configure FontchooseDemoFont {*}[font actual $font] @@ -31,13 +31,13 @@ # When the visibility of the fontchooser changes, the following event is fired # to the parent widget. # bind $w <> { if {[tk fontchooser configure -visible]} { - %W.f.font state disabled + %W.f.font state disabled } else { - %W.f.font state !disabled + %W.f.font state !disabled } } set f [ttk::frame $w.f -relief sunken -padding 1.5p] Index: library/demos/form.tcl ================================================================== --- library/demos/form.tcl +++ library/demos/form.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .form catch {destroy $w} toplevel $w wm title $w "Form Demonstration" Index: library/demos/goldberg.tcl ================================================================== --- library/demos/goldberg.tcl +++ library/demos/goldberg.tcl @@ -38,11 +38,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .goldberg catch {destroy $w} toplevel $w wm title $w "Tk Goldberg (demonstration)" @@ -1921,11 +1921,11 @@ # Simple placed dialog - stacked dialogs are not allowed, # the command does nothing if another grab already exists. proc PlacedDialog {w msg {labelFnt {Helvetica 10}}} { if {[grab current] ne {}} { - return + return } destroy $w frame $w -relief raised -bd 3p label $w.lab -font $labelFnt -wraplength 3i -justify left -text $msg @@ -1952,11 +1952,11 @@ } proc ClosePlacedDialog {w} { set tl [winfo toplevel $w] if {![winfo exists $::PlacedDialogOldFocus]} { - set ::PlacedDialogOldFocus $tl + set ::PlacedDialogOldFocus $tl } focus $::PlacedDialogOldFocus set ::PlacedDialogOldFocus {} grab release $w destroy $w Index: library/demos/hello ================================================================== --- library/demos/hello +++ library/demos/hello @@ -4,11 +4,11 @@ # hello -- # Simple Tk script to create a button that prints "Hello, world". # Click on the button to terminate the program. -package require tk +package require Tk # The first line below creates the button, and the second line # asks the packer to shrink-wrap the application's main window # around the button. Index: library/demos/hscale.tcl ================================================================== --- library/demos/hscale.tcl +++ library/demos/hscale.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .hscale catch {destroy $w} toplevel $w wm title $w "Horizontal Scale Demonstration" Index: library/demos/icon.tcl ================================================================== --- library/demos/icon.tcl +++ library/demos/icon.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .icon catch {destroy $w} toplevel $w wm title $w "Iconic Button Demonstration" Index: library/demos/image1.tcl ================================================================== --- library/demos/image1.tcl +++ library/demos/image1.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .image1 catch {destroy $w} toplevel $w wm title $w "Image Demonstration #1" Index: library/demos/image2.tcl ================================================================== --- library/demos/image2.tcl +++ library/demos/image2.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # loadDir -- # This procedure reloads the directory listbox from the directory # named in the demo's entry. # Index: library/demos/items.tcl ================================================================== --- library/demos/items.tcl +++ library/demos/items.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .items catch {destroy $w} toplevel $w wm title $w "Canvas Item Demonstration" Index: library/demos/ixset ================================================================== --- library/demos/ixset +++ library/demos/ixset @@ -7,11 +7,11 @@ # # History : # 91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design # 92/08/01 : pda@masi.ibp.fr : cleaning -package require tk +package require Tk # # Button actions # Index: library/demos/knightstour.tcl ================================================================== --- library/demos/knightstour.tcl +++ library/demos/knightstour.tcl @@ -19,33 +19,33 @@ # # You can drag the knight to a specific square to start if you wish. # If you let it repeat then it will choose random start positions # for each new tour. -package require tk +package require Tk # Return a list of accessible squares from a given square proc ValidMoves {square} { set moves {} foreach pair {{-1 -2} {-2 -1} {-2 1} {-1 2} {1 2} {2 1} {2 -1} {1 -2}} { - set col [expr {($square % 8) + [lindex $pair 0]}] - set row [expr {($square / 8) + [lindex $pair 1]}] - if {$row >= 0 && $row < 8 && $col >= 0 && $col < 8} { - lappend moves [expr {$row * 8 + $col}] - } + set col [expr {($square % 8) + [lindex $pair 0]}] + set row [expr {($square / 8) + [lindex $pair 1]}] + if {$row >= 0 && $row < 8 && $col >= 0 && $col < 8} { + lappend moves [expr {$row * 8 + $col}] + } } return $moves } # Return the number of available moves for this square proc CheckSquare {square} { variable visited set moves 0 foreach test [ValidMoves $square] { - if {[lsearch -exact -integer $visited $test] < 0} { - incr moves - } + if {[lsearch -exact -integer $visited $test] < 0} { + incr moves + } } return $moves } # Select the next square to move to. Returns -1 if there are no available @@ -53,21 +53,21 @@ proc Next {square} { variable visited set minimum 9 set nextSquare -1 foreach testSquare [ValidMoves $square] { - if {[lsearch -exact -integer $visited $testSquare] < 0} { - set count [CheckSquare $testSquare] - if {$count < $minimum} { - set minimum $count - set nextSquare $testSquare - } elseif {$count == $minimum} { - # to remove the enhancement to Warnsdorff's rule - # remove the next line: - set nextSquare [Edgemost $nextSquare $testSquare] - } - } + if {[lsearch -exact -integer $visited $testSquare] < 0} { + set count [CheckSquare $testSquare] + if {$count < $minimum} { + set minimum $count + set nextSquare $testSquare + } elseif {$count == $minimum} { + # to remove the enhancement to Warnsdorff's rule + # remove the next line: + set nextSquare [Edgemost $nextSquare $testSquare] + } + } } return $nextSquare } # Select the square nearest the edge of the board @@ -96,41 +96,41 @@ $dlg.f.c itemconfigure [expr {1+$square}] -state normal -outline red $dlg.f.c moveto knight {*}[lrange [$dlg.f.c coords [expr {1+$square}]] 0 1] lappend visited $square set next [Next $square] if {$next ne -1} { - variable aid [after $delay [list MovePiece $dlg $square $next]] - } else { - $dlg.tf.b1 configure -state normal - if {[llength $visited] == 64} { - variable initial - if {$initial == $square} { - $dlg.f.txt insert end "Closed tour!" - } else { - $dlg.f.txt insert end "Success" - if {$continuous} { - after [expr {$delay * 2}] [namespace code \ - [list Tour $dlg [expr {int(rand() * 64)}]]] - } - } - } else { - $dlg.f.txt insert end "FAILED!" - } + variable aid [after $delay [list MovePiece $dlg $square $next]] + } else { + $dlg.tf.b1 configure -state normal + if {[llength $visited] == 64} { + variable initial + if {$initial == $square} { + $dlg.f.txt insert end "Closed tour!" + } else { + $dlg.f.txt insert end "Success" + if {$continuous} { + after [expr {$delay * 2}] [namespace code \ + [list Tour $dlg [expr {int(rand() * 64)}]]] + } + } + } else { + $dlg.f.txt insert end "FAILED!" + } } } # Begin a new tour of the board given a random start position proc Tour {dlg {square {}}} { variable visited {} $dlg.f.txt delete 1.0 end $dlg.tf.b1 configure -state disabled for {set n 0} {$n < 64} {incr n} { - $dlg.f.c itemconfigure $n -state disabled -outline black + $dlg.f.c itemconfigure $n -state disabled -outline black } if {$square eq {}} { - set coords [lrange [$dlg.f.c coords knight] 0 1] - set square [expr {[$dlg.f.c find closest {*}$coords 0 65]-1}] + set coords [lrange [$dlg.f.c coords knight] 0 1] + set square [expr {[$dlg.f.c find closest {*}$coords 0 65]-1}] } variable initial $square after idle [list MovePiece $dlg $initial $initial] } @@ -155,13 +155,13 @@ variable dragging [list $x $y] } proc DragMotion {w x y} { variable dragging if {[info exists dragging]} { - $w move selected [expr {$x - [lindex $dragging 0]}] \ - [expr {$y - [lindex $dragging 1]}] - variable dragging [list $x $y] + $w move selected [expr {$x - [lindex $dragging 0]}] \ + [expr {$y - [lindex $dragging 1]}] + variable dragging [list $x $y] } } proc DragEnd {w x y} { set square [$w find closest $x $y 0 65] $w moveto selected {*}[lrange [$w coords $square] 0 1] @@ -175,53 +175,53 @@ wm title $dlg "Knight's Tour" wm withdraw $dlg set f [ttk::frame $dlg.f] set c [canvas $f.c -width 192p -height 192p] text $f.txt -width 12 -height 1 -padx 3p \ - -yscrollcommand [list $f.vs set] -font TkFixedFont + -yscrollcommand [list $f.vs set] -font TkFixedFont ttk::scrollbar $f.vs -command [list $f.txt yview] variable speed 1400 variable delay [expr {2000 - $speed}] variable continuous 0 ttk::frame $dlg.tf ttk::checkbutton $dlg.tf.cc -text Repeat \ - -variable [namespace which -variable continuous] + -variable [namespace which -variable continuous] ttk::scale $dlg.tf.sc -from 0 -to 1992 -command [list SetDelay] \ - -variable [namespace which -variable speed] + -variable [namespace which -variable speed] ttk::label $dlg.tf.ls -text Speed ttk::button $dlg.tf.b1 -text Start -command [list Tour $dlg] ttk::button $dlg.tf.b2 -text Exit -command [list Exit $dlg] set square 0 for {set row 7} {$row >= 0} {incr row -1} { - for {set col 0} {$col < 8} {incr col} { - if {(($col & 1) ^ ($row & 1))} { - set fill tan3 ; set dfill tan4 - } else { - set fill bisque ; set dfill bisque3 - } - set coords [list [expr {$col * 24 + 3}]p \ + for {set col 0} {$col < 8} {incr col} { + if {(($col & 1) ^ ($row & 1))} { + set fill tan3 ; set dfill tan4 + } else { + set fill bisque ; set dfill bisque3 + } + set coords [list [expr {$col * 24 + 3}]p \ [expr {$row * 24 + 3}]p \ - [expr {$col * 24 + 24}]p \ + [expr {$col * 24 + 24}]p \ [expr {$row * 24 + 24}]p] - $c create rectangle $coords -fill $fill -disabledfill $dfill \ - -width 1.5p -state disabled -outline black - } + $c create rectangle $coords -fill $fill -disabledfill $dfill \ + -width 1.5p -state disabled -outline black + } } if {[tk windowingsystem] ne "x11"} { - catch {eval font create KnightFont -size 18} - $c create text 0 0 -font KnightFont -text "♞" \ - -anchor nw -tags knight -fill black -activefill "#600000" + catch {eval font create KnightFont -size 18} + $c create text 0 0 -font KnightFont -text "♞" \ + -anchor nw -tags knight -fill black -activefill "#600000" } else { - # On X11 we cannot reliably tell if the ♞ glyph is available - # so just use a polygon - set pts { - 2 25 24 25 21 19 20 8 14 0 10 0 0 13 0 16 - 2 17 4 14 5 15 3 17 5 17 9 14 10 15 5 21 - } - $c create polygon $pts -tag knight -offset 8 \ - -fill black -activefill "#600000" + # On X11 we cannot reliably tell if the ♞ glyph is available + # so just use a polygon + set pts { + 2 25 24 25 21 19 20 8 14 0 10 0 0 13 0 16 + 2 17 4 14 5 15 3 17 5 17 9 14 10 15 5 21 + } + $c create polygon $pts -tag knight -offset 8 \ + -fill black -activefill "#600000" set scaleFactor [expr {$tk::scalingPct / 100.0}] $c scale knight 0 0 $scaleFactor $scaleFactor } $c moveto knight {*}[lrange [$c coords [expr {1 + int(rand() * 64)}]] 0 1] $c bind knight [namespace code [list DragStart %W %x %y]] @@ -246,11 +246,11 @@ pack configure [lindex $things 0] -padx {4 24} pack configure [lindex $things end] -padx {16 4} } grid $dlg.tf - - - - - -sticky ew if {[info exists ::widgetDemo]} { - grid [addSeeDismiss $dlg.buttons $dlg] - - - - - -sticky ew + grid [addSeeDismiss $dlg.buttons $dlg] - - - - - -sticky ew } grid rowconfigure $dlg 0 -weight 1 grid columnconfigure $dlg 0 -weight 1 Index: library/demos/label.tcl ================================================================== --- library/demos/label.tcl +++ library/demos/label.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .label catch {destroy $w} toplevel $w wm title $w "Label Demonstration" Index: library/demos/labelframe.tcl ================================================================== --- library/demos/labelframe.tcl +++ library/demos/labelframe.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .labelframe catch {destroy $w} toplevel $w wm title $w "Labelframe Demonstration" @@ -38,31 +38,31 @@ labelframe $w.f -text "Value" -padx 1.5p -pady 1.5p grid $w.f -row 0 -column 0 -pady 2m -padx 2m foreach value {1 2 3 4} { radiobutton $w.f.b$value -text "This is value $value" \ - -variable lfdummy -value $value + -variable lfdummy -value $value pack $w.f.b$value -side top -fill x -pady 1.5p } # Using a label window to control a group of options. proc lfEnableButtons {w} { foreach child [winfo children $w] { - if {$child == "$w.cb"} continue - if {$::lfdummy2} { - $child configure -state normal - } else { - $child configure -state disabled - } + if {$child == "$w.cb"} continue + if {$::lfdummy2} { + $child configure -state normal + } else { + $child configure -state disabled + } } } labelframe $w.f2 -pady 1.5p -padx 1.5p checkbutton $w.f2.cb -text "Use this option." -variable lfdummy2 \ - -command "lfEnableButtons $w.f2" -padx 0 + -command "lfEnableButtons $w.f2" -padx 0 $w.f2 configure -labelwidget $w.f2.cb grid $w.f2 -row 0 -column 1 -pady 2m -padx 2m set t 0 foreach str {Option1 Option2 Option3} { Index: library/demos/mac_styles.tcl ================================================================== --- library/demos/mac_styles.tcl +++ library/demos/mac_styles.tcl @@ -6,14 +6,16 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } +package require Tk + set w .mac_styles catch {destroy $w} toplevel $w -package require tk +package require Tk wm title $w "Tk Aqua Widgets" wm iconname $w "mac_styles" positionWindow $w ## # System images we use in our buttons @@ -121,11 +123,11 @@ pack [ttk::radiobutton $radio.r1 -text "Radio 1" -variable .radioVar -value 1] -pady 4 pack [ttk::radiobutton $radio.r2 -text "Radio 2" -variable .radioVar -value 2] -pady 4 set triangle [ttk::checkbutton $buttonFrame.triangle -style Item -variable TriangleVar] bind $triangle {toggleTriangle %W} set bonjour [ttk::button $buttonFrame.bonjour -style ImageButton -text Bonjour \ - -image {bonjour pressed bonjour1}] + -image {bonjour pressed bonjour1}] set feather [ttk::button $buttonFrame.feather -style ImageButton -text Tk \ -image {tkfeather pressed tkfeather1}] set gradient [ttk::frame $buttonFrame.gradient] pack [ttk::button $buttonFrame.gradient.add -style GradientButton \ -image add -padding {2 0}] -side left @@ -243,24 +245,24 @@ } else { $light state selected } proc beLight {f w} { wm attributes $w -appearance aqua - # A small delay is needed for the appearance change to complete. - after 10 [list $f.dark state !selected] - after 10 [list $f.light state selected] + $f.dark state !selected + $f.light state selected + after 10 $f.light state !hover } proc beDark {f w} { wm attributes $w -appearance darkaqua - # A small delay is needed for the appearance change to complete. - after 10 [list $f.light state !selected] - after 10 [list $f.dark state selected] + $f.light state !selected + $f.dark state selected + after 10 $f.dark state !hover } $w.notebook add $appearanceFrame -text "Appearance" ## See Code / Dismiss pack [addSeeDismiss $w.buttons $w] -side bottom -fill x ## Notebook pack $w.notebook -side bottom -fill both -expand 1 -padx 16 -pady 16 Index: library/demos/mac_tabs.tcl ================================================================== --- library/demos/mac_tabs.tcl +++ library/demos/mac_tabs.tcl @@ -6,15 +6,16 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk catch {font create giant -family {Times New Roman} -size 64} set w .mac_tabs catch {destroy $w} toplevel $w +package require Tk wm title $w "Tabbed Windows in Aqua" wm iconname $w "mac_tabs" positionWindow $w set suffix 0 set winlist {} Index: library/demos/mac_wm.tcl ================================================================== --- library/demos/mac_wm.tcl +++ library/demos/mac_wm.tcl @@ -6,15 +6,16 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .mac_wm catch {destroy $w} toplevel $w +package require Tk wm title $w "Tk Aqua Window Styles" wm iconname $w "mac_wm" positionWindow $w set suffix 0 set winlist {} @@ -44,27 +45,27 @@ grid $t -row 0 -column 0 -columnspan 2 -sticky NSEW ttk::labelframe $f.stylemask -text "styleMask bits" # titled if {$class == "nswindow"} { ttk::checkbutton $f.stylemask.titled -text titled -variable $name.titled \ - -command [list setbit $name $f.stylemask.titled titled] + -command [list setbit $name $f.stylemask.titled titled] $f.stylemask.titled state selected grid $f.stylemask.titled -row 0 -column 0 -sticky w } # closable ttk::checkbutton $f.stylemask.closable -text closable -variable $name.closable \ - -command [list setbit $name $f.stylemask.closable closable] + -command [list setbit $name $f.stylemask.closable closable] $f.stylemask.closable state selected grid $f.stylemask.closable -row 1 -column 0 -sticky w # miniaturizableable ttk::checkbutton $f.stylemask.miniaturizable -text miniaturizable \ -variable $name.miniaturizable \ - -command [list setbit $name $f.stylemask.miniaturizable miniaturizable] + -command [list setbit $name $f.stylemask.miniaturizable miniaturizable] if {$class == "nswindow"} { - $f.stylemask.miniaturizable state selected + $f.stylemask.miniaturizable state selected } else { - $f.stylemask.miniaturizable state !alternate + $f.stylemask.miniaturizable state !alternate } grid $f.stylemask.miniaturizable -row 2 -column 0 -sticky w # resizable ttk::checkbutton $f.stylemask.resizable -text resizable -variable $name.resizable \ -command [list setbit $name $f.stylemask.resizable resizable] @@ -122,14 +123,14 @@ proc setbit {win cb bitname} { set state [$cb instate selected] set bits [wm attributes $win -stylemask] set index [lsearch $bits $bitname] if {$index >= 0 && !$state} { - set bits [lreplace $bits $index $index] + set bits [lreplace $bits $index $index] } if {$index < 0 && $state} { - lappend bits $bitname + lappend bits $bitname } wm attributes $win -stylemask $bits } set aboutText \ @@ -190,12 +191,12 @@ grid columnconfigure .mod 1 -weight 1 grid rowconfigure .mod 0 -weight 1 frame .mod.left -width 220 -height 400 -background systemWindowBackgroundColor catch { font create leftFont -family .AppleSystemUIFont -size 11 - font create rightFont -family .AppleSystemUIFont -size 16 - font create codeFont -family Courier -size 16 + font create rightFont -family .AppleSystemUIFont -size 16 + font create codeFont -family Courier -size 16 } grid [ttk::label .mod.left.spacer -padding {220 30 0 0}] -row 0 -column 0 grid [ttk::radiobutton .mod.left.about -text About -style SidebarButton \ -variable whichPage -value 1] \ -row 1 -column 0 -sticky nsew -padx 14 Index: library/demos/mclist.tcl ================================================================== --- library/demos/mclist.tcl +++ library/demos/mclist.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .mclist catch {destroy $w} toplevel $w -class MCList wm title $w "Multi-Column List" @@ -155,16 +155,16 @@ } set mclistGrid 0 proc tglGrid {} { if {$::mclistGrid} { - .mclist.tree configure -stripe 1 - foreach col [.mclist.tree cget -columns] { - .mclist.tree column $col -separator 1 - } + .mclist.tree configure -stripe 1 + foreach col [.mclist.tree cget -columns] { + .mclist.tree column $col -separator 1 + } } else { - .mclist.tree configure -stripe 0 - foreach col [.mclist.tree cget -columns] { - .mclist.tree column $col -separator 0 - } + .mclist.tree configure -stripe 0 + foreach col [.mclist.tree cget -columns] { + .mclist.tree column $col -separator 0 + } } } Index: library/demos/menu.tcl ================================================================== --- library/demos/menu.tcl +++ library/demos/menu.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .menu catch {destroy $w} toplevel $w wm title $w "Menu Demonstration" Index: library/demos/menubu.tcl ================================================================== --- library/demos/menubu.tcl +++ library/demos/menubu.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .menubu catch {destroy $w} toplevel $w wm title $w "Menu Button Demonstration" Index: library/demos/msgbox.tcl ================================================================== --- library/demos/msgbox.tcl +++ library/demos/msgbox.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .msgbox catch {destroy $w} toplevel $w wm title $w "Message Box Demonstration" Index: library/demos/nl.msg ================================================================== --- library/demos/nl.msg +++ library/demos/nl.msg @@ -64,19 +64,19 @@ "Kaders met bijschrift" ::msgcat::mcset nl "Listboxes" "Keuzelijsten" ::msgcat::mcset nl "The 50 states" "De 50 staten van de VS" ::msgcat::mcset nl "Colors: change the color scheme for the application" \ - "Kleuren: verander het kleurenschema voor het programma" + "Kleuren: verander het kleurenschema voor het programma" ::msgcat::mcset nl "A collection of famous and infamous sayings" \ - "Beroemde en beruchte citaten en gezegden" + "Beroemde en beruchte citaten en gezegden" ::msgcat::mcset nl "Entries and Spin-boxes" "Invulvelden en Spinboxen" ::msgcat::mcset nl "Entries without scrollbars" "Invulvelden zonder schuifbalk" ::msgcat::mcset nl "Entries with scrollbars" "Invulvelden met schuifbalk" ::msgcat::mcset nl "Validated entries and password fields" \ - "Invulvelden met controle of wachtwoorden" + "Invulvelden met controle of wachtwoorden" ::msgcat::mcset nl "Spin-boxes" "Spinboxen" ::msgcat::mcset nl "Simple Rolodex-like form" "Simpel kaartsysteem" ::msgcat::mcset nl "Text" "Tekst" ::msgcat::mcset nl "Basic editable text" "Voorbeeld met te wijzigen tekst" Index: library/demos/paned1.tcl ================================================================== --- library/demos/paned1.tcl +++ library/demos/paned1.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .paned1 catch {destroy $w} toplevel $w wm title $w "Horizontal Paned Window Demonstration" Index: library/demos/paned2.tcl ================================================================== --- library/demos/paned2.tcl +++ library/demos/paned2.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .paned2 catch {destroy $w} toplevel $w wm title $w "Vertical Paned Window Demonstration" Index: library/demos/pendulum.tcl ================================================================== --- library/demos/pendulum.tcl +++ library/demos/pendulum.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .pendulum catch {destroy $w} toplevel $w wm title $w "Pendulum Animation Demonstration" Index: library/demos/plot.tcl ================================================================== --- library/demos/plot.tcl +++ library/demos/plot.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .plot catch {destroy $w} toplevel $w wm title $w "Plot Demonstration" Index: library/demos/puzzle.tcl ================================================================== --- library/demos/puzzle.tcl +++ library/demos/puzzle.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # puzzleSwitch -- # This procedure is invoked when the user clicks on a particular button; # if the button is next to the empty space, it moves the button into the # empty space. Index: library/demos/radio.tcl ================================================================== --- library/demos/radio.tcl +++ library/demos/radio.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .radio catch {destroy $w} toplevel $w wm title $w "Radiobutton Demonstration" Index: library/demos/rmt ================================================================== --- library/demos/rmt +++ library/demos/rmt @@ -5,11 +5,11 @@ # rmt -- # This script implements a simple remote-control mechanism for # Tk applications. It allows you to select an application and # then type commands to that application. -package require tk +package require Tk wm title . "Tk Remote Controller" wm iconname . "Tk Remote" wm minsize . 1 1 Index: library/demos/rolodex ================================================================== --- library/demos/rolodex +++ library/demos/rolodex @@ -6,11 +6,11 @@ # This script was written as an entry in Tom LaStrange's rolodex # benchmark. It creates something that has some of the look and # feel of a rolodex program, although it's lifeless and doesn't # actually do the rolodex application. -package require tk +package require Tk foreach i [winfo children .] { catch {destroy $i} } Index: library/demos/ruler.tcl ================================================================== --- library/demos/ruler.tcl +++ library/demos/ruler.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # rulerMkTab -- # This procedure creates a new triangular polygon in a canvas to # represent a tab stop. # Index: library/demos/sayings.tcl ================================================================== --- library/demos/sayings.tcl +++ library/demos/sayings.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .sayings catch {destroy $w} toplevel $w wm title $w "Listbox Demonstration (well-known sayings)" Index: library/demos/search.tcl ================================================================== --- library/demos/search.tcl +++ library/demos/search.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # textLoadFile -- # This procedure below loads a file into a text widget, discarding # the previous contents of the widget. Tags for the old widget are # not affected, however. Index: library/demos/spin.tcl ================================================================== --- library/demos/spin.tcl +++ library/demos/spin.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .spin catch {destroy $w} toplevel $w wm title $w "Spinbox Demonstration" Index: library/demos/states.tcl ================================================================== --- library/demos/states.tcl +++ library/demos/states.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .states catch {destroy $w} toplevel $w wm title $w "Listbox Demonstration (50 states)" @@ -21,13 +21,13 @@ labelframe $w.justif -text Justification foreach c {Left Center Right} { set lower [string tolower $c] radiobutton $w.justif.$lower -text $c -variable just \ - -relief flat -value $lower -anchor w \ - -command "$w.frame.list configure -justify \$just" \ - -tristatevalue "multi" + -relief flat -value $lower -anchor w \ + -command "$w.frame.list configure -justify \$just" \ + -tristatevalue "multi" pack $w.justif.$lower -side left -pady 1.5p -fill x } pack $w.justif ## See Code / Dismiss buttons Index: library/demos/style.tcl ================================================================== --- library/demos/style.tcl +++ library/demos/style.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .style catch {destroy $w} toplevel $w wm title $w "Text Demonstration - Display Styles" Index: library/demos/systray.tcl ================================================================== --- library/demos/systray.tcl +++ library/demos/systray.tcl @@ -24,14 +24,14 @@ menu $iconmenu $iconmenu add command -label "Status" -command { puts "status icon clicked" } $iconmenu add command -label "Exit" -command exit pack [label $w.l -text "This demonstration showcases - the tk systray and tk sysnotify commands. - Running this demo creates the systray icon. - Clicking the buttons below modifies and destroys the icon - and displays the notification."] + the tk systray and tk sysnotify commands. + Running this demo creates the systray icon. + Clicking the buttons below modifies and destroys the icon + and displays the notification."] image create photo book -data R0lGODlhDwAPAKIAAP//////AP8AAMDAwICAgAAAAAAAAAAAACwAAAAADwAPAAADSQhA2u5ksPeKABKSCaya29d4WKgERFF0l1IMQCAKatvBJ0OTdzzXI1xMB3TBZAvATtB6NSLKleXi3OBoLqrVgc0yv+DVSEUuFxIAOw== labelframe $w.f -text "Tray Icon" button $w.f.b0 -text "Create" -command create @@ -43,24 +43,24 @@ pack $w.f $w.b3 -fill x -padx 3p -pady 3p proc create {} { global trayIconExists if {$trayIconExists} { - tk_messageBox -message "Systray icon already exists" - return + tk_messageBox -message "Systray icon already exists" + return } tk systray create -image book -text "Systray sample" \ - -button1 {puts "foo"} \ - -button3 {tk_popup $iconmenu [winfo pointerx .] [winfo pointery .]} + -button1 {puts "foo"} \ + -button3 {tk_popup $iconmenu [winfo pointerx .] [winfo pointery .]} set trayIconExists true } proc modify {} { global trayIconExists if {!$trayIconExists} { - tk_messageBox -message "Please create systray icon first" - return + tk_messageBox -message "Please create systray icon first" + return } image create photo page -data R0lGODlhCwAPAKIAAP//////AMDAwICAgAAA/wAAAAAAAAAAACwAAAAACwAPAAADMzi6CzAugiAgDGE68aB0RXgRJBFVX0SNpQlUWfahQOvSsgrX7eZJMlQMWBEYj8iQchlKAAA7 tk systray configure -image page tk systray configure -text "Modified text" tk systray configure -button1 {puts "this is a different output"} @@ -68,22 +68,22 @@ } proc notify {} { global trayIconExists if {!$trayIconExists} { - tk_messageBox -message "Please create systray icon first" - return + tk_messageBox -message "Please create systray icon first" + return } tk sysnotify "Alert" "This is an alert" } proc remove {} { global trayIconExists if {!$trayIconExists} { - tk_messageBox -message "Systray icon was already destroyed" - return + tk_messageBox -message "Systray icon was already destroyed" + return } tk systray destroy set trayIconExists false } create Index: library/demos/tcolor ================================================================== --- library/demos/tcolor +++ library/demos/tcolor @@ -5,11 +5,11 @@ # tcolor -- # This script implements a simple color editor, where you can # create colors using either the RGB, HSB, or CYM color spaces # and apply the color to existing applications. -package require tk +package require Tk wm title . "Color Editor" # Global variables that control the program: # # colorSpace - Color space currently being used for Index: library/demos/text.tcl ================================================================== --- library/demos/text.tcl +++ library/demos/text.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .text catch {destroy $w} toplevel $w wm title $w "Text Demonstration - Basic Facilities" @@ -28,15 +28,15 @@ pack $w.text -expand yes -fill both # TIP 324 Demo: [tk fontchooser] proc fontchooserToggle {} { tk fontchooser [expr {[tk fontchooser configure -visible] ? - "hide" : "show"}] + "hide" : "show"}] } proc fontchooserVisibility {w} { $w configure -text [expr {[tk fontchooser configure -visible] ? - "Hide Font Dialog" : "Show Font Dialog"}] + "Hide Font Dialog" : "Show Font Dialog"}] } proc fontchooserFocus {w} { tk fontchooser configure -font [$w cget -font] \ -command [list fontchooserFontSel $w] } Index: library/demos/textpeer.tcl ================================================================== --- library/demos/textpeer.tcl +++ library/demos/textpeer.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .textpeer catch {destroy $w} toplevel $w wm title $w "Text Widget Peering Demonstration" Index: library/demos/timer ================================================================== --- library/demos/timer +++ library/demos/timer @@ -3,11 +3,11 @@ exec wish "$0" ${1+"$@"} # timer -- # This script generates a counter with start and stop buttons. -package require tk +package require Tk label .counter -text 0.00 -relief raised -width 10 -padx 2m -pady 1m button .start -text Start -command { if {$stopped} { set stopped 0 Index: library/demos/toolbar.tcl ================================================================== --- library/demos/toolbar.tcl +++ library/demos/toolbar.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .toolbar destroy $w toplevel $w wm title $w "Toolbar Demonstration" Index: library/demos/tree.tcl ================================================================== --- library/demos/tree.tcl +++ library/demos/tree.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .tree catch {destroy $w} toplevel $w wm title $w "Directory Browser" Index: library/demos/ttkbut.tcl ================================================================== --- library/demos/ttkbut.tcl +++ library/demos/ttkbut.tcl @@ -6,11 +6,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkbut catch {destroy $w} toplevel $w wm title $w "Simple Ttk Widgets" Index: library/demos/ttkmenu.tcl ================================================================== --- library/demos/ttkmenu.tcl +++ library/demos/ttkmenu.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkmenu catch {destroy $w} toplevel $w wm title $w "Ttk Menu Buttons" Index: library/demos/ttknote.tcl ================================================================== --- library/demos/ttknote.tcl +++ library/demos/ttknote.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttknote catch {destroy $w} toplevel $w wm title $w "Ttk Notebook Widget" Index: library/demos/ttkpane.tcl ================================================================== --- library/demos/ttkpane.tcl +++ library/demos/ttkpane.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkpane catch {destroy $w} toplevel $w wm title $w "Themed Nested Panes" @@ -65,11 +65,11 @@ # Force a pre-load of all the timezones needed; otherwise can end up # poor-looking synch problems! set zones {} foreach zone $testzones { if {![catch {clock format 0 -timezone $zone}]} { - lappend zones $zone + lappend zones $zone } } if {[llength $zones] < 2} { lappend zones -0200 :GMT :UTC +0200 } foreach zone $zones { set city [string map {_ " "} [regexp -inline {[^/]+$} $zone]] Index: library/demos/ttkprogress.tcl ================================================================== --- library/demos/ttkprogress.tcl +++ library/demos/ttkprogress.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkprogress catch {destroy $w} toplevel $w wm title $w "Progress Bar Demonstration" Index: library/demos/ttkscale.tcl ================================================================== --- library/demos/ttkscale.tcl +++ library/demos/ttkscale.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkscale catch {destroy $w} toplevel $w -bg [ttk::style lookup TLabel -background] wm title $w "Themed Scale Demonstration" Index: library/demos/ttkspin.tcl ================================================================== --- library/demos/ttkspin.tcl +++ library/demos/ttkspin.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .ttkspin catch {destroy $w} toplevel $w wm title $w "Themed Spinbox Demonstration" Index: library/demos/twind.tcl ================================================================== --- library/demos/twind.tcl +++ library/demos/twind.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk # Make an Aqua button's fill color match its parent's background proc blend {bt} { if {[tk windowingsystem] eq "aqua"} { $bt configure -highlightbackground [[winfo parent $bt] cget -background] @@ -351,8 +351,8 @@ -yscrollcommand "$w.scroll set"] $t tag configure peer_warning -font boldFont $w.pane add $t -stretch always } } else { - return + return } } Index: library/demos/unicodeout.tcl ================================================================== --- library/demos/unicodeout.tcl +++ library/demos/unicodeout.tcl @@ -5,11 +5,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .unicodeout catch {destroy $w} toplevel $w wm title $w "Unicode Label Demonstration" Index: library/demos/vscale.tcl ================================================================== --- library/demos/vscale.tcl +++ library/demos/vscale.tcl @@ -4,11 +4,11 @@ if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } -package require tk +package require Tk set w .vscale catch {destroy $w} toplevel $w wm title $w "Vertical Scale Demonstration" Index: library/demos/widget ================================================================== --- library/demos/widget +++ library/demos/widget @@ -8,11 +8,11 @@ # the main window for the application, which invokes individual # demonstrations. The code for the actual demonstrations is contained in # separate ".tcl" files is this directory, which are sourced by this script as # needed. -package require tk 8.7- +package require Tk 8.7- package require msgcat destroy {*}[winfo children .] set tk_demoDirectory [file join [pwd] [file dirname [info script]]] ::msgcat::mcload $tk_demoDirectory @@ -29,30 +29,30 @@ } if {"defaultFont" ni [font names]} { # TIP #145 defines some standard named fonts if {"TkDefaultFont" in [font names] && "TkFixedFont" in [font names]} { - # FIX ME: the following technique of cloning the font to copy it works - # fine but means that if the system font is changed by Tk - # cannot update the copied font. font alias might be useful - # here -- or fix the app to use TkDefaultFont etc. - font create mainFont {*}[font configure TkDefaultFont] - font create fixedFont {*}[font configure TkFixedFont] - font create boldFont {*}[font configure TkDefaultFont] -weight bold - font create titleFont {*}[font configure TkDefaultFont] -weight bold - font create statusFont {*}[font configure TkDefaultFont] - font create varsFont {*}[font configure TkDefaultFont] + # FIX ME: the following technique of cloning the font to copy it works + # fine but means that if the system font is changed by Tk + # cannot update the copied font. font alias might be useful + # here -- or fix the app to use TkDefaultFont etc. + font create mainFont {*}[font configure TkDefaultFont] + font create fixedFont {*}[font configure TkFixedFont] + font create boldFont {*}[font configure TkDefaultFont] -weight bold + font create titleFont {*}[font configure TkDefaultFont] -weight bold + font create statusFont {*}[font configure TkDefaultFont] + font create varsFont {*}[font configure TkDefaultFont] if {[tk windowingsystem] eq "aqua"} { font configure titleFont -size 17 } } else { - font create mainFont -family Helvetica -size 12 - font create fixedFont -family Courier -size 10 - font create boldFont -family Helvetica -size 12 -weight bold - font create titleFont -family Helvetica -size 18 -weight bold - font create statusFont -family Helvetica -size 10 - font create varsFont -family Helvetica -size 14 + font create mainFont -family Helvetica -size 12 + font create fixedFont -family Courier -size 10 + font create boldFont -family Helvetica -size 12 -weight bold + font create titleFont -family Helvetica -size 18 -weight bold + font create statusFont -family Helvetica -size 10 + font create varsFont -family Helvetica -size 14 } } set widgetDemo 1 set font mainFont Index: library/demos/windowicons.tcl ================================================================== --- library/demos/windowicons.tcl +++ library/demos/windowicons.tcl @@ -97,11 +97,11 @@ # the copy will only be effectively magnified if $tk::scalingPct >= 200. image create photo icon2 icon2 copy icon -zoom [expr {$tk::scalingPct / 100}] pack [button $w.i -text "Set Window Icon to Globe" -image icon2 \ - -compound top -command {wm iconphoto . icon}] -fill x -padx 3p + -compound top -command {wm iconphoto . icon}] -fill x -padx 3p pack [button $w.b -text "Set Badge to 3" -command {wm iconbadge . 3}] \ -fill x -padx 3p pack [button $w.e -text "Set Badge to 11" -command {wm iconbadge . 11}] \ -fill x -padx 3p pack [button $w.f -text "Reset Badge" -command {wm iconbadge . ""}] \ Index: library/dialog.tcl ================================================================== --- library/dialog.tcl +++ library/dialog.tcl @@ -147,13 +147,13 @@ tkwait visibility $w # 7. Set a grab and claim the focus too. if {$default >= 0} { - set focus $w.button$default + set focus $w.button$default } else { - set focus $w + set focus $w } tk::SetFocusGrab $w $focus # 8. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus Index: library/entry.tcl ================================================================== --- library/entry.tcl +++ library/entry.tcl @@ -306,16 +306,16 @@ # A few additional bindings of my own. bind Entry { if {!$tk_strictMotif} { - ::tk::EntryScanMark %W %x + ::tk::EntryScanMark %W %x } } bind Entry { if {!$tk_strictMotif} { - ::tk::EntryScanDrag %W %x + ::tk::EntryScanDrag %W %x } } # ::tk::EntryClosestGap -- # Given x and y coordinates, this procedure finds the closest boundary @@ -413,11 +413,11 @@ line { $w selection range 0 end } } if {$Priv(mouseMoved)} { - $w icursor $cur + $w icursor $cur } update idletasks } # ::tk::EntryPaste -- Index: library/fontchooser.tcl ================================================================== --- library/fontchooser.tcl +++ library/fontchooser.tcl @@ -12,14 +12,14 @@ variable S set S(W) .__tk__fontchooser set S(fonts) [lsort -dictionary -unique [font families]] set S(styles) [list \ - [::msgcat::mc Regular] \ - [::msgcat::mc Italic] \ - [::msgcat::mc Bold] \ - [::msgcat::mc {Bold Italic}] \ + [::msgcat::mc Regular] \ + [::msgcat::mc Italic] \ + [::msgcat::mc Bold] \ + [::msgcat::mc {Bold Italic}] \ ] set S(sizes) {8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72} set S(strike) 0 set S(under) 0 set S(first) 1 @@ -32,44 +32,44 @@ proc ::tk::fontchooser::Canonical {} { variable S foreach style $S(styles) { - lappend S(styles,lcase) [string tolower $style] + lappend S(styles,lcase) [string tolower $style] } set S(sizes,lcase) $S(sizes) set S(sampletext) [::msgcat::mc "AaBbYyZz01"] # Canonical versions of font families, styles, etc. for easier searching set S(fonts,lcase) {} foreach font $S(fonts) { - lappend S(fonts,lcase) [string tolower $font] + lappend S(fonts,lcase) [string tolower $font] } set S(styles,lcase) {} foreach style $S(styles) { - lappend S(styles,lcase) [string tolower $style] + lappend S(styles,lcase) [string tolower $style] } } proc ::tk::fontchooser::Setup {} { variable S Canonical ::ttk::style layout FontchooserFrame { - Entry.field -sticky news -border true -children { - FontchooserFrame.padding -sticky news - } + Entry.field -sticky news -border true -children { + FontchooserFrame.padding -sticky news + } } bind [winfo class .] <> \ - [list +ttk::style layout FontchooserFrame \ - [ttk::style layout FontchooserFrame]] + [list +ttk::style layout FontchooserFrame \ + [ttk::style layout FontchooserFrame]] namespace ensemble create -map { - show ::tk::fontchooser::Show - hide ::tk::fontchooser::Hide - configure ::tk::fontchooser::Configure + show ::tk::fontchooser::Show + hide ::tk::fontchooser::Hide + configure ::tk::fontchooser::Configure } } ::tk::fontchooser::Setup proc ::tk::fontchooser::Show {} { @@ -76,23 +76,23 @@ variable S Canonical if {![winfo exists $S(W)]} { - Create - wm transient $S(W) [winfo toplevel $S(-parent)] - tk::PlaceWindow $S(W) widget $S(-parent) - if {[string trim $S(-title)] eq ""} { - wm title $S(W) [::msgcat::mc "Font"] - } else { - wm title $S(W) $S(-title) - } + Create + wm transient $S(W) [winfo toplevel $S(-parent)] + tk::PlaceWindow $S(W) widget $S(-parent) + if {[string trim $S(-title)] eq ""} { + wm title $S(W) [::msgcat::mc "Font"] + } else { + wm title $S(W) $S(-title) + } } set S(fonts) [lsort -dictionary -unique [font families]] set S(fonts,lcase) {} foreach font $S(fonts) { - lappend S(fonts,lcase) [string tolower $font] + lappend S(fonts,lcase) [string tolower $font] } wm deiconify $S(W) } proc ::tk::fontchooser::Hide {} { @@ -102,207 +102,207 @@ proc ::tk::fontchooser::Configure {args} { variable S set specs { - {-parent "" "" . } - {-title "" "" ""} - {-font "" "" ""} - {-command "" "" ""} + {-parent "" "" . } + {-title "" "" ""} + {-font "" "" ""} + {-command "" "" ""} } if {[llength $args] == 0} { - set result {} - foreach spec $specs { - foreach {name xx yy default} $spec break - lappend result $name \ - [expr {[info exists S($name)] ? $S($name) : $default}] - } - lappend result -visible \ - [expr {[winfo exists $S(W)] && [winfo ismapped $S(W)]}] - return $result + set result {} + foreach spec $specs { + foreach {name xx yy default} $spec break + lappend result $name \ + [expr {[info exists S($name)] ? $S($name) : $default}] + } + lappend result -visible \ + [expr {[winfo exists $S(W)] && [winfo ismapped $S(W)]}] + return $result } if {[llength $args] == 1} { - set option [lindex $args 0] - if {[string equal $option "-visible"]} { - return [expr {[winfo exists $S(W)] && [winfo ismapped $S(W)]}] - } elseif {[info exists S($option)]} { - return $S($option) - } - return -code error -errorcode [list TK LOOKUP OPTION $option] \ - "bad option \"$option\": must be\ - -command, -font, -parent, -title or -visible" + set option [lindex $args 0] + if {[string equal $option "-visible"]} { + return [expr {[winfo exists $S(W)] && [winfo ismapped $S(W)]}] + } elseif {[info exists S($option)]} { + return $S($option) + } + return -code error -errorcode [list TK LOOKUP OPTION $option] \ + "bad option \"$option\": must be\ + -command, -font, -parent, -title or -visible" } set cache [dict create -parent $S(-parent) -title $S(-title) \ - -font $S(-font) -command $S(-command)] + -font $S(-font) -command $S(-command)] set r [tclParseConfigSpec [namespace which -variable S] $specs DONTSETDEFAULTS $args] if {![winfo exists $S(-parent)]} { - set code [list TK LOOKUP WINDOW $S(-parent)] - set err "bad window path name \"$S(-parent)\"" - array set S $cache - return -code error -errorcode $code $err + set code [list TK LOOKUP WINDOW $S(-parent)] + set err "bad window path name \"$S(-parent)\"" + array set S $cache + return -code error -errorcode $code $err } if {[winfo exists $S(W)]} { - if {{-font} in $args} { - Init $S(-font) - event generate $S(-parent) <> - } - - if {[string trim $S(-title)] eq {}} { - wm title $S(W) [::msgcat::mc Font] - } else { - wm title $S(W) $S(-title) - } - $S(W).ok configure -state $S(nstate) - $S(W).apply configure -state $S(nstate) + if {{-font} in $args} { + Init $S(-font) + event generate $S(-parent) <> + } + + if {[string trim $S(-title)] eq {}} { + wm title $S(W) [::msgcat::mc Font] + } else { + wm title $S(W) $S(-title) + } + $S(W).ok configure -state $S(nstate) + $S(W).apply configure -state $S(nstate) } return $r } proc ::tk::fontchooser::Create {} { variable S set windowName __tk__fontchooser if {$S(-parent) eq "."} { - set S(W) .$windowName + set S(W) .$windowName } else { - set S(W) $S(-parent).$windowName + set S(W) $S(-parent).$windowName } # Now build the dialog if {![winfo exists $S(W)]} { - toplevel $S(W) -class TkFontDialog - if {[package provide tcltest] ne {}} { - set ::tk_dialog $S(W) - } - wm withdraw $S(W) - wm title $S(W) $S(-title) - wm transient $S(W) [winfo toplevel $S(-parent)] - - set outer [::ttk::frame $S(W).outer -padding {7.5p 7.5p}] - ::tk::AmpWidget ::ttk::label $S(W).font -text [::msgcat::mc "&Font:"] - ::tk::AmpWidget ::ttk::label $S(W).style -text [::msgcat::mc "Font st&yle:"] - ::tk::AmpWidget ::ttk::label $S(W).size -text [::msgcat::mc "&Size:"] - ttk::entry $S(W).efont -width 18 \ - -textvariable [namespace which -variable S](font) - ttk::entry $S(W).estyle -width 10 \ - -textvariable [namespace which -variable S](style) - ttk::entry $S(W).esize -textvariable [namespace which -variable S](size) \ - -width 3 -validate key -validatecommand {regexp -- {^-*[0-9]*$} %P} - - ttk_slistbox $S(W).lfonts -height 7 -exportselection 0 \ - -selectmode browse -activestyle none \ - -listvariable [namespace which -variable S](fonts) - ttk_slistbox $S(W).lstyles -width 5 -height 7 -exportselection 0 \ - -selectmode browse -activestyle none \ - -listvariable [namespace which -variable S](styles) - ttk_slistbox $S(W).lsizes -width 4 -height 7 -exportselection 0 \ - -selectmode browse -activestyle none \ - -listvariable [namespace which -variable S](sizes) - - set WE $S(W).effects - ::ttk::labelframe $WE -text [::msgcat::mc "Effects"] - ::tk::AmpWidget ::ttk::checkbutton $WE.strike \ - -variable [namespace which -variable S](strike) \ - -text [::msgcat::mc "Stri&keout"] \ - -command [namespace code [list Click strike]] - ::tk::AmpWidget ::ttk::checkbutton $WE.under \ - -variable [namespace which -variable S](under) \ - -text [::msgcat::mc "&Underline"] \ - -command [namespace code [list Click under]] - - set bbox [::ttk::frame $S(W).bbox] - ::ttk::button $S(W).ok -text [::msgcat::mc OK] -default active\ - -command [namespace code [list Done 1]] - ::ttk::button $S(W).cancel -text [::msgcat::mc Cancel] \ - -command [namespace code [list Done 0]] - ::tk::AmpWidget ::ttk::button $S(W).apply -text [::msgcat::mc "&Apply"] \ - -command [namespace code [list Apply]] - wm protocol $S(W) WM_DELETE_WINDOW [namespace code [list Done 0]] - - # Calculate minimum sizes - ttk::scrollbar $S(W).tmpvs - set scroll_width [winfo reqwidth $S(W).tmpvs] - destroy $S(W).tmpvs - set minsize(gap) [::tk::ScaleNum 10] - set minsize(bbox) [winfo reqwidth $S(W).ok] - set minsize(fonts) \ - [expr {[font measure TkDefaultFont "Helvetica"] + $scroll_width}] - set minsize(styles) \ - [expr {[font measure TkDefaultFont "Bold Italic"] + $scroll_width}] - set minsize(sizes) \ - [expr {[font measure TkDefaultFont "-99"] + $scroll_width}] - set min [expr {$minsize(gap) * 4}] - foreach {what width} [array get minsize] { - incr min $width - } - wm minsize $S(W) $min [::tk::ScaleNum 260] - - bind $S(W) [namespace code [list Done 1]] - bind $S(W) [namespace code [list Done 0]] - bind $S(W) [namespace code [list Visibility %W 1]] - bind $S(W) [namespace code [list Visibility %W 0]] - bind $S(W) [namespace code [list Visibility %W 0]] - bind $S(W).lfonts.list <> [namespace code [list Click font]] - bind $S(W).lstyles.list <> [namespace code [list Click style]] - bind $S(W).lsizes.list <> [namespace code [list Click size]] - bind $S(W) [list ::tk::AltKeyInDialog $S(W) %A] - bind $S(W).font <> [list ::focus $S(W).efont] - bind $S(W).style <> [list ::focus $S(W).estyle] - bind $S(W).size <> [list ::focus $S(W).esize] - bind $S(W).apply <> [namespace code [list Apply]] - bind $WE.strike <> [list $WE.strike invoke] - bind $WE.under <> [list $WE.under invoke] - - set WS $S(W).sample - ::ttk::labelframe $WS -text [::msgcat::mc "Sample"] - ::ttk::label $WS.sample -relief sunken -anchor center \ - -textvariable [namespace which -variable S](sampletext) - set S(sample) $WS.sample - grid $WS.sample -sticky news -padx 4.5p -pady 3p - grid rowconfigure $WS 0 -weight 1 - grid columnconfigure $WS 0 -weight 1 - grid propagate $WS 0 - - grid $S(W).ok -in $bbox -sticky new -pady {0 1.5p} - grid $S(W).cancel -in $bbox -sticky new -pady 1.5p - grid $S(W).apply -in $bbox -sticky new -pady 1.5p - grid columnconfigure $bbox 0 -weight 1 - - grid $WE.strike -sticky w -padx 7.5p - grid $WE.under -sticky w -padx 7.5p -pady {0 22.5p} - grid columnconfigure $WE 1 -weight 1 - - grid $S(W).font x $S(W).style x $S(W).size x -in $outer -sticky w - grid $S(W).efont x $S(W).estyle x $S(W).esize x $bbox -in $outer -sticky ew - grid $S(W).lfonts x $S(W).lstyles x $S(W).lsizes x ^ -in $outer -sticky news - grid $WE x $WS - - x ^ -in $outer -sticky news -pady {11p 22.5p} - grid configure $bbox -sticky n - grid rowconfigure $outer 2 -weight 1 - grid columnconfigure $outer {1 3 5} -minsize $minsize(gap) - grid columnconfigure $outer {0 2 4} -weight 1 - grid columnconfigure $outer 0 -minsize $minsize(fonts) - grid columnconfigure $outer 2 -minsize $minsize(styles) - grid columnconfigure $outer 4 -minsize $minsize(sizes) - grid columnconfigure $outer 6 -minsize $minsize(bbox) - - grid $outer -sticky news - grid rowconfigure $S(W) 0 -weight 1 - grid columnconfigure $S(W) 0 -weight 1 - - Init $S(-font) - - trace add variable [namespace which -variable S](size) \ - write [namespace code [list Tracer]] - trace add variable [namespace which -variable S](style) \ - write [namespace code [list Tracer]] - trace add variable [namespace which -variable S](font) \ - write [namespace code [list Tracer]] - trace add variable [namespace which -variable S](strike) \ - write [namespace code [list Tracer]] - trace add variable [namespace which -variable S](under) \ - write [namespace code [list Tracer]] + toplevel $S(W) -class TkFontDialog + if {[package provide tcltest] ne {}} { + set ::tk_dialog $S(W) + } + wm withdraw $S(W) + wm title $S(W) $S(-title) + wm transient $S(W) [winfo toplevel $S(-parent)] + + set outer [::ttk::frame $S(W).outer -padding {7.5p 7.5p}] + ::tk::AmpWidget ::ttk::label $S(W).font -text [::msgcat::mc "&Font:"] + ::tk::AmpWidget ::ttk::label $S(W).style -text [::msgcat::mc "Font st&yle:"] + ::tk::AmpWidget ::ttk::label $S(W).size -text [::msgcat::mc "&Size:"] + ttk::entry $S(W).efont -width 18 \ + -textvariable [namespace which -variable S](font) + ttk::entry $S(W).estyle -width 10 \ + -textvariable [namespace which -variable S](style) + ttk::entry $S(W).esize -textvariable [namespace which -variable S](size) \ + -width 3 -validate key -validatecommand {regexp -- {^-*[0-9]*$} %P} + + ttk_slistbox $S(W).lfonts -height 7 -exportselection 0 \ + -selectmode browse -activestyle none \ + -listvariable [namespace which -variable S](fonts) + ttk_slistbox $S(W).lstyles -width 5 -height 7 -exportselection 0 \ + -selectmode browse -activestyle none \ + -listvariable [namespace which -variable S](styles) + ttk_slistbox $S(W).lsizes -width 4 -height 7 -exportselection 0 \ + -selectmode browse -activestyle none \ + -listvariable [namespace which -variable S](sizes) + + set WE $S(W).effects + ::ttk::labelframe $WE -text [::msgcat::mc "Effects"] + ::tk::AmpWidget ::ttk::checkbutton $WE.strike \ + -variable [namespace which -variable S](strike) \ + -text [::msgcat::mc "Stri&keout"] \ + -command [namespace code [list Click strike]] + ::tk::AmpWidget ::ttk::checkbutton $WE.under \ + -variable [namespace which -variable S](under) \ + -text [::msgcat::mc "&Underline"] \ + -command [namespace code [list Click under]] + + set bbox [::ttk::frame $S(W).bbox] + ::ttk::button $S(W).ok -text [::msgcat::mc OK] -default active\ + -command [namespace code [list Done 1]] + ::ttk::button $S(W).cancel -text [::msgcat::mc Cancel] \ + -command [namespace code [list Done 0]] + ::tk::AmpWidget ::ttk::button $S(W).apply -text [::msgcat::mc "&Apply"] \ + -command [namespace code [list Apply]] + wm protocol $S(W) WM_DELETE_WINDOW [namespace code [list Done 0]] + + # Calculate minimum sizes + ttk::scrollbar $S(W).tmpvs + set scroll_width [winfo reqwidth $S(W).tmpvs] + destroy $S(W).tmpvs + set minsize(gap) [::tk::ScaleNum 10] + set minsize(bbox) [winfo reqwidth $S(W).ok] + set minsize(fonts) \ + [expr {[font measure TkDefaultFont "Helvetica"] + $scroll_width}] + set minsize(styles) \ + [expr {[font measure TkDefaultFont "Bold Italic"] + $scroll_width}] + set minsize(sizes) \ + [expr {[font measure TkDefaultFont "-99"] + $scroll_width}] + set min [expr {$minsize(gap) * 4}] + foreach {what width} [array get minsize] { + incr min $width + } + wm minsize $S(W) $min [::tk::ScaleNum 260] + + bind $S(W) [namespace code [list Done 1]] + bind $S(W) [namespace code [list Done 0]] + bind $S(W) [namespace code [list Visibility %W 1]] + bind $S(W) [namespace code [list Visibility %W 0]] + bind $S(W) [namespace code [list Visibility %W 0]] + bind $S(W).lfonts.list <> [namespace code [list Click font]] + bind $S(W).lstyles.list <> [namespace code [list Click style]] + bind $S(W).lsizes.list <> [namespace code [list Click size]] + bind $S(W) [list ::tk::AltKeyInDialog $S(W) %A] + bind $S(W).font <> [list ::focus $S(W).efont] + bind $S(W).style <> [list ::focus $S(W).estyle] + bind $S(W).size <> [list ::focus $S(W).esize] + bind $S(W).apply <> [namespace code [list Apply]] + bind $WE.strike <> [list $WE.strike invoke] + bind $WE.under <> [list $WE.under invoke] + + set WS $S(W).sample + ::ttk::labelframe $WS -text [::msgcat::mc "Sample"] + ::ttk::label $WS.sample -relief sunken -anchor center \ + -textvariable [namespace which -variable S](sampletext) + set S(sample) $WS.sample + grid $WS.sample -sticky news -padx 4.5p -pady 3p + grid rowconfigure $WS 0 -weight 1 + grid columnconfigure $WS 0 -weight 1 + grid propagate $WS 0 + + grid $S(W).ok -in $bbox -sticky new -pady {0 1.5p} + grid $S(W).cancel -in $bbox -sticky new -pady 1.5p + grid $S(W).apply -in $bbox -sticky new -pady 1.5p + grid columnconfigure $bbox 0 -weight 1 + + grid $WE.strike -sticky w -padx 7.5p + grid $WE.under -sticky w -padx 7.5p -pady {0 22.5p} + grid columnconfigure $WE 1 -weight 1 + + grid $S(W).font x $S(W).style x $S(W).size x -in $outer -sticky w + grid $S(W).efont x $S(W).estyle x $S(W).esize x $bbox -in $outer -sticky ew + grid $S(W).lfonts x $S(W).lstyles x $S(W).lsizes x ^ -in $outer -sticky news + grid $WE x $WS - - x ^ -in $outer -sticky news -pady {11p 22.5p} + grid configure $bbox -sticky n + grid rowconfigure $outer 2 -weight 1 + grid columnconfigure $outer {1 3 5} -minsize $minsize(gap) + grid columnconfigure $outer {0 2 4} -weight 1 + grid columnconfigure $outer 0 -minsize $minsize(fonts) + grid columnconfigure $outer 2 -minsize $minsize(styles) + grid columnconfigure $outer 4 -minsize $minsize(sizes) + grid columnconfigure $outer 6 -minsize $minsize(bbox) + + grid $outer -sticky news + grid rowconfigure $S(W) 0 -weight 1 + grid columnconfigure $S(W) 0 -weight 1 + + Init $S(-font) + + trace add variable [namespace which -variable S](size) \ + write [namespace code [list Tracer]] + trace add variable [namespace which -variable S](style) \ + write [namespace code [list Tracer]] + trace add variable [namespace which -variable S](font) \ + write [namespace code [list Tracer]] + trace add variable [namespace which -variable S](strike) \ + write [namespace code [list Tracer]] + trace add variable [namespace which -variable S](under) \ + write [namespace code [list Tracer]] } Init $S(-font) return @@ -317,23 +317,23 @@ # proc ::tk::fontchooser::Done {ok} { variable S if {! $ok} { - set S(result) "" + set S(result) "" } trace remove variable S(size) write [namespace code [list Tracer]] trace remove variable S(style) write [namespace code [list Tracer]] trace remove variable S(font) write [namespace code [list Tracer]] trace remove variable S(strike) write [namespace code [list Tracer]] trace remove variable S(under) write [namespace code [list Tracer]] destroy $S(W) if {$ok} { - if {$S(-command) ne ""} { - uplevel #0 $S(-command) [list $S(result)] - } - event generate $S(-parent) <> + if {$S(-command) ne ""} { + uplevel #0 $S(-command) [list $S(result)] + } + event generate $S(-parent) <> } } # ::tk::fontchooser::Apply -- # @@ -341,13 +341,13 @@ # Errors are reported via the background error mechanism # proc ::tk::fontchooser::Apply {} { variable S if {$S(-command) ne ""} { - if {[catch {uplevel #0 $S(-command) [list $S(result)]} err]} { - ::bgerror $err - } + if {[catch {uplevel #0 $S(-command) [list $S(result)]} err]} { + ::bgerror $err + } } event generate $S(-parent) <> } # ::tk::fontchooser::Init -- @@ -359,29 +359,29 @@ # proc ::tk::fontchooser::Init {{defaultFont ""}} { variable S if {$S(first) || $defaultFont ne ""} { - Canonical - if {$defaultFont eq ""} { - set defaultFont [[entry .___e] cget -font] - destroy .___e - } - array set F [font actual $defaultFont] - set S(font) $F(-family) - set S(style) [::msgcat::mc "Regular"] - set S(size) $F(-size) - set S(strike) $F(-overstrike) - set S(under) $F(-underline) - if {$F(-weight) eq "bold" && $F(-slant) eq "italic"} { - set S(style) [::msgcat::mc "Bold Italic"] - } elseif {$F(-weight) eq "bold"} { - set S(style) [::msgcat::mc "Bold"] - } elseif {$F(-slant) eq "italic"} { - set S(style) [::msgcat::mc "Italic"] - } - set S(first) 0 + Canonical + if {$defaultFont eq ""} { + set defaultFont [[entry .___e] cget -font] + destroy .___e + } + array set F [font actual $defaultFont] + set S(font) $F(-family) + set S(style) [::msgcat::mc "Regular"] + set S(size) $F(-size) + set S(strike) $F(-overstrike) + set S(under) $F(-underline) + if {$F(-weight) eq "bold" && $F(-slant) eq "italic"} { + set S(style) [::msgcat::mc "Bold Italic"] + } elseif {$F(-weight) eq "bold"} { + set S(style) [::msgcat::mc "Bold"] + } elseif {$F(-slant) eq "italic"} { + set S(style) [::msgcat::mc "Italic"] + } + set S(first) 0 } } # ::tk::fontchooser::Click -- # @@ -391,15 +391,15 @@ # who which widget got pressed # proc ::tk::fontchooser::Click {who} { variable S if {$who eq "font"} { - set S(font) [$S(W).lfonts get [$S(W).lfonts curselection]] + set S(font) [$S(W).lfonts get [$S(W).lfonts curselection]] } elseif {$who eq "style"} { - set S(style) [$S(W).lstyles get [$S(W).lstyles curselection]] + set S(style) [$S(W).lstyles get [$S(W).lstyles curselection]] } elseif {$who eq "size"} { - set S(size) [$S(W).lsizes get [$S(W).lsizes curselection]] + set S(size) [$S(W).lsizes get [$S(W).lsizes curselection]] } } # ::tk::fontchooser::Tracer -- # @@ -410,42 +410,42 @@ # proc ::tk::fontchooser::Tracer {var1 var2 op} { variable S # We don't need to process strike and under if {$var2 ni [list strike under]} { - # Make selection in listbox - set value [string tolower $S($var2)] - $S(W).l${var2}s selection clear 0 end - set n [lsearch -exact $S(${var2}s,lcase) $value] - $S(W).l${var2}s selection set $n - if {$n >= 0} { - set S($var2) [lindex $S(${var2}s) $n] - $S(W).e$var2 icursor end - $S(W).e$var2 selection clear - if {[set i [lsearch $S(bad) $var2]] >= 0} { - set S(bad) [lreplace $S(bad) $i $i] - } - } else { - # No match, try prefix - set n [lsearch -glob $S(${var2}s,lcase) "$value*"] - if {$var2 ne "size" || !([regexp -- {^(-[0-9]+|[0-9]+)$} $value] && $value >= -4096 && $value <= 4096)} { - if {[lsearch $S(bad) $var2] < 0} { - lappend S(bad) $var2 - } - } else { - if {[set i [lsearch $S(bad) $var2]] >= 0} { - set S(bad) [lreplace $S(bad) $i $i] - } - } - } - $S(W).l${var2}s see $n + # Make selection in listbox + set value [string tolower $S($var2)] + $S(W).l${var2}s selection clear 0 end + set n [lsearch -exact $S(${var2}s,lcase) $value] + $S(W).l${var2}s selection set $n + if {$n >= 0} { + set S($var2) [lindex $S(${var2}s) $n] + $S(W).e$var2 icursor end + $S(W).e$var2 selection clear + if {[set i [lsearch $S(bad) $var2]] >= 0} { + set S(bad) [lreplace $S(bad) $i $i] + } + } else { + # No match, try prefix + set n [lsearch -glob $S(${var2}s,lcase) "$value*"] + if {$var2 ne "size" || !([regexp -- {^(-[0-9]+|[0-9]+)$} $value] && $value >= -4096 && $value <= 4096)} { + if {[lsearch $S(bad) $var2] < 0} { + lappend S(bad) $var2 + } + } else { + if {[set i [lsearch $S(bad) $var2]] >= 0} { + set S(bad) [lreplace $S(bad) $i $i] + } + } + } + $S(W).l${var2}s see $n } if {[llength $S(bad)] == 0} { - set S(nstate) normal - Update + set S(nstate) normal + Update } else { - set S(nstate) disabled + set S(nstate) disabled } $S(W).ok configure -state $S(nstate) $S(W).apply configure -state $S(nstate) } @@ -456,23 +456,23 @@ proc ::tk::fontchooser::Update {} { variable S set S(result) [list $S(font) $S(size)] if {$S(style) eq [::msgcat::mc "Bold"]} { - lappend S(result) bold + lappend S(result) bold } if {$S(style) eq [::msgcat::mc "Italic"]} { - lappend S(result) italic + lappend S(result) italic } if {$S(style) eq [::msgcat::mc "Bold Italic"]} { - lappend S(result) bold italic + lappend S(result) bold italic } if {$S(strike)} { - lappend S(result) overstrike + lappend S(result) overstrike } if {$S(under)} { - lappend S(result) underline + lappend S(result) underline } $S(sample) configure -font $S(result) set S(-font) $S(result) } @@ -482,11 +482,11 @@ # Notify the parent when the dialog visibility changes # proc ::tk::fontchooser::Visibility {w visible} { variable S if {$w eq $S(W)} { - event generate $S(-parent) <> + event generate $S(-parent) <> } } # ::tk::fontchooser::ttk_slistbox -- # @@ -494,19 +494,19 @@ # This is exactly right on XP but may need adjusting on other platforms. # proc ::tk::fontchooser::ttk_slistbox {w args} { set f [ttk::frame $w -style FontchooserFrame -padding 1.5p] if {[catch { - listbox $f.list -relief flat -highlightthickness 0 -borderwidth 0 {*}$args - ttk::scrollbar $f.vs -command [list $f.list yview] - $f.list configure -yscrollcommand [list $f.vs set] - grid $f.list $f.vs -sticky news - grid rowconfigure $f 0 -weight 1 - grid columnconfigure $f 0 -weight 1 - interp hide {} $w - interp alias {} $w {} $f.list + listbox $f.list -relief flat -highlightthickness 0 -borderwidth 0 {*}$args + ttk::scrollbar $f.vs -command [list $f.list yview] + $f.list configure -yscrollcommand [list $f.vs set] + grid $f.list $f.vs -sticky news + grid rowconfigure $f 0 -weight 1 + grid columnconfigure $f 0 -weight 1 + interp hide {} $w + interp alias {} $w {} $f.list } err opt]} { - destroy $f - return -options $opt $err + destroy $f + return -options $opt $err } return $w } Index: library/iconbadges.tcl ================================================================== --- library/iconbadges.tcl +++ library/iconbadges.tcl @@ -218,11 +218,11 @@ if {[lsearch -exact [image names] $::tk::icons::base_icon($win)] <= 0} { return -code error "can't use \"$::tk::icons::base_icon($win)\" as iconphoto: not a photo image" } if {!([string is integer -strict $badgenumber] && $badgenumber > 0) - && $badgenumber ne "!" && $badgenumber ne ""} { + && $badgenumber ne "!" && $badgenumber ne ""} { return -code error "can't use \"$badgenumber\" as icon badge" } wm iconphoto $win $::tk::icons::base_icon($win) @@ -241,13 +241,13 @@ } default { set badge ::tk::icons::9plus-badge } - } + } overlay copy $::tk::icons::base_icon($win) overlay copy $badge -from 0 0 18 18 -to 18 0 wm iconphoto $win overlay } } Index: library/iconlist.tcl ================================================================== --- library/iconlist.tcl +++ library/iconlist.tcl @@ -451,13 +451,13 @@ bind $canvas <> [namespace code {my LeftRight -1}] bind $canvas <> [namespace code {my LeftRight 1}] bind $canvas [namespace code {my ReturnKey}] bind $canvas [namespace code {my KeyPress %A}] bind $canvas {# nothing} - bind $canvas {# nothing} - bind $canvas {# nothing} - bind $canvas {# nothing} + bind $canvas {# nothing} + bind $canvas {# nothing} + bind $canvas {# nothing} bind $canvas {# nothing} bind $canvas [namespace code {my FocusIn}] bind $canvas [namespace code {my FocusOut}] Index: library/listbox.tcl ================================================================== --- library/listbox.tcl +++ library/listbox.tcl @@ -161,11 +161,11 @@ tk::ListboxSelectAll %W } bind Listbox <> { if {[%W cget -selectmode] ne "browse"} { %W selection clear 0 end - tk::FireListboxSelectEvent %W + tk::FireListboxSelectEvent %W } } # Additional Tk bindings that aren't part of the Motif look and feel: @@ -186,19 +186,18 @@ } bind Listbox { tk::MouseWheel %W x %D -12.0 units } bind Listbox { - if {%# %% 5 != 0} { - return - } - lassign [tk::PreciseScrollDeltas %D] tk::Priv(deltaX) tk::Priv(deltaY) - if {$tk::Priv(deltaX) != 0} { - %W xview scroll [expr {-$tk::Priv(deltaX)}] units - } - if {$tk::Priv(deltaY) != 0} { - %W yview scroll [expr {-$tk::Priv(deltaY)}] units + if {%# %% 5 == 0} { + lassign [tk::PreciseScrollDeltas %D] tk::Priv(deltaX) tk::Priv(deltaY) + if {$tk::Priv(deltaX) != 0} { + %W xview scroll [expr {-$tk::Priv(deltaX)}] units + } + if {$tk::Priv(deltaY) != 0} { + %W yview scroll [expr {-$tk::Priv(deltaY)}] units + } } } # ::tk::ListboxBeginSelect -- # @@ -441,11 +440,11 @@ proc ::tk::ListboxDataExtend {w el} { set mode [$w cget -selectmode] if {$mode eq "extended"} { $w activate $el $w see $el - if {[$w selection includes anchor]} { + if {[$w selection includes anchor]} { ListboxMotion $w $el } } elseif {$mode eq "multiple"} { $w activate $el $w see $el @@ -516,8 +515,8 @@ # Arguments: # w - The listbox widget. proc ::tk::FireListboxSelectEvent w { if {[$w cget -state] eq "normal"} { - event generate $w <> + event generate $w <> } } Index: library/menu.tcl ================================================================== --- library/menu.tcl +++ library/menu.tcl @@ -406,11 +406,11 @@ # also outside menubuttons when a menubutton has a grab (e.g. when a # menu selection operation is in progress). # # Arguments: # w - The name of the menubutton widget. -# upDown - "down" means button 1 is pressed, "up" means +# upDown - "down" means button 1 is pressed, "up" means # it isn't. # rootx, rooty - Coordinates of mouse, in (virtual?) root window. proc ::tk::MbMotion {w upDown rootx rooty} { variable ::tk::Priv @@ -485,10 +485,11 @@ $menu activate @$x,$y GenerateMenuSelect $menu } set index [$menu index @$x,$y] if {[info exists Priv(menuActivated)] \ + && $index ne "none" \ && $index >= 0 \ && $index ne $activeindex} { set mode [option get $menu clickToFocus ClickToFocus] if {[string is false $mode]} { set delay [expr {[$menu cget -type] eq "menubar" ? 0 : 50}] @@ -527,11 +528,12 @@ variable ::tk::Priv if {![winfo viewable $menu]} { return } - if {[$menu index active] < 0} { + set activeindex [$menu index active] + if {($activeindex eq "none") || ($activeindex < 0)} { if {[$menu cget -type] ne "menubar" } { set Priv(window) {} } return } @@ -585,11 +587,12 @@ # state - Modifier state. proc ::tk::MenuLeave {menu rootx rooty state} { variable ::tk::Priv set Priv(window) {} - if {[$menu index active] < 0} { + set activeindex [$menu index active] + if {($activeindex eq "none") || ($activeindex < 0)} { return } if {[$menu type active] eq "cascade" \ && [winfo containing $rootx $rooty] eq \ [$menu entrycget active -menu]} { @@ -652,11 +655,12 @@ if { !$isCascade } { uplevel #0 [list $w invoke $activeindex] } } else { - if {$Priv(popup) eq "" || [$w index active] >= 0} { + set activeindex [$w index active] + if {($Priv(popup) eq "") || (($activeindex ne "none") && ($activeindex >= 0))} { MenuUnpost $w } uplevel #0 [list $w invoke active] } } @@ -796,10 +800,11 @@ } set mb [lindex $buttons $i] if {[winfo class $mb] eq "Menubutton" \ && [$mb cget -state] ne "disabled" \ && [$mb cget -menu] ne "" \ + && [[$mb cget -menu] index last] ne "none" \ && [[$mb cget -menu] index last] >= 0} { break } if {$mb eq $w} { return @@ -819,17 +824,17 @@ # count - 1 means go to the next lower entry, # -1 means go to the next higher entry. proc ::tk::MenuNextEntry {menu count} { set last [$menu index last] - if {$last < 0} { + if {($last eq "none") || ($last < 0)} { return } set length [expr {$last+1}] set quitAfter $length set activeindex [$menu index active] - if {$activeindex < 0} { + if {($activeindex eq "none") || ($activeindex < 0)} { set i 0 } else { set i [expr {$activeindex + $count}] } while {1} { @@ -1025,10 +1030,13 @@ if {$char eq ""} { return } set char [string tolower $char] set last [$w index last] + if {$last eq "none"} { + return + } for {set i 0} {$i <= $last} {incr i} { if {[catch {set char2 [string index \ [$w entrycget $i -label] [$w entrycget $i -underline]]}]} { continue } @@ -1064,14 +1072,18 @@ proc ::tk::MenuFirstEntry menu { if {$menu eq ""} { return } tk_menuSetFocus $menu - if {[$menu index active] >= 0} { + set activeindex [$menu index active] + if {($activeindex ne "none") && ($activeindex >= 0)} { return } set last [$menu index last] + if {$last eq "none"} { + return + } for {set i 0} {$i <= $last} {incr i} { if {([catch {set state [$menu entrycget $i -state]}] == 0) \ && $state ne "disabled" && [$menu type $i] ne "tearoff"} { $menu activate $i GenerateMenuSelect $menu @@ -1107,10 +1119,13 @@ if {![regexp {^active$|^last$|^none$|^[0-9]|^@} $s]} { catch {set i [$menu index $s]} return $i } set last [$menu index last] + if {$last eq "none"} { + return "" + } for {set i 0} {$i <= $last} {incr i} { if {![catch {$menu entrycget $i -label} label]} { if {$label eq $s} { return $i } @@ -1197,22 +1212,22 @@ } right { incr x [expr {[winfo width $button]}] } default { # flush - if {[$button cget -indicatoron]} { - if {$cx ne ""} { - set x [expr {$cx - [winfo reqwidth $menu] / 2}] - set l [font metrics [$menu cget -font] -linespace] - set y [expr {$cy - $l/2 - 2}] - } else { - incr x [expr {([winfo width $button] - \ + if {[$button cget -indicatoron]} { + if {$cx ne ""} { + set x [expr {$cx - [winfo reqwidth $menu] / 2}] + set l [font metrics [$menu cget -font] -linespace] + set y [expr {$cy - $l/2 - 2}] + } else { + incr x [expr {([winfo width $button] - \ [winfo reqwidth $menu])/ 2}] - } - } else { - incr y [winfo height $button] - } + } + } else { + incr y [winfo height $button] + } } } PostOverPoint $menu $x $y $entry } } Index: library/msgbox.tcl ================================================================== --- library/msgbox.tcl +++ library/msgbox.tcl @@ -145,15 +145,15 @@ # causes the window title to be "foo" instead of the empty string. # set specs { {-default "" "" ""} {-detail "" "" ""} - {-icon "" "" "info"} - {-message "" "" ""} - {-parent "" "" .} - {-title "" "" " "} - {-type "" "" "ok"} + {-icon "" "" "info"} + {-message "" "" ""} + {-parent "" "" .} + {-title "" "" " "} + {-type "" "" "ok"} } tclParseConfigSpec $w $specs "" $args if {$data(-icon) ni {info warning error question}} { @@ -295,11 +295,11 @@ } if {$windowingsystem eq "aqua"} { ::tk::unsupported::MacWindowStyle style $w moveableModal {} } elseif {$windowingsystem eq "x11"} { - wm attributes $w -type dialog + wm attributes $w -type dialog } ttk::frame $w.bot grid anchor $w.bot center pack $w.bot -side bottom -fill both @@ -323,22 +323,22 @@ if {([winfo depth $w] < 4) || $tk_strictMotif} { # ttk::label has no -bitmap option label $w.bitmap -bitmap $data(-icon) -background $bg } else { switch $data(-icon) { - error { - ttk::label $w.bitmap -image ::tk::icons::error - } - info { - ttk::label $w.bitmap -image ::tk::icons::information - } - question { - ttk::label $w.bitmap -image ::tk::icons::question - } - default { - ttk::label $w.bitmap -image ::tk::icons::warning - } + error { + ttk::label $w.bitmap -image ::tk::icons::error + } + info { + ttk::label $w.bitmap -image ::tk::icons::information + } + question { + ttk::label $w.bitmap -image ::tk::icons::question + } + default { + ttk::label $w.bitmap -image ::tk::icons::warning + } } } } grid $w.bitmap $w.msg -in $w.top -sticky news -padx 2m -pady 2m grid configure $w.bitmap -sticky nw @@ -380,20 +380,20 @@ $tmp eq "ignore"} { grid columnconfigure $w.bot $i -minsize 90 } grid configure $w.$name -pady 7 } - incr i + incr i # create the binding for the key accelerator, based on the underline # - # set underIdx [$w.$name cget -under] - # if {$underIdx >= 0} { - # set key [string index [$w.$name cget -text] $underIdx] - # bind $w [list $w.$name invoke] - # bind $w [list $w.$name invoke] - # } + # set underIdx [$w.$name cget -under] + # if {$underIdx >= 0} { + # set key [string index [$w.$name cget -text] $underIdx] + # bind $w [list $w.$name invoke] + # bind $w [list $w.$name invoke] + # } } bind $w [list ::tk::AltKeyInDialog $w %A] if {$data(-default) ne ""} { bind $w { ADDED library/obsolete.tcl Index: library/obsolete.tcl ================================================================== --- /dev/null +++ library/obsolete.tcl @@ -0,0 +1,178 @@ +# obsolete.tcl -- +# +# This file contains obsolete procedures that people really shouldn't +# be using anymore, but which are kept around for backward compatibility. +# +# Copyright © 1994 The Regents of the University of California. +# Copyright © 1994 Sun Microsystems, Inc. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# + +# The procedures below are here strictly for backward compatibility with +# Tk version 3.6 and earlier. The procedures are no longer needed, so +# they are no-ops. You should not use these procedures anymore, since +# they may be removed in some future release. + +proc tk_menuBar args {} +proc tk_bindForTraversal args {} + +# ::tk::classic::restore -- +# +# Restore the pre-8.5 (Tk classic) look as the widget defaults for classic +# Tk widgets. +# +# The value following an 'option add' call is the new 8.5 value. +# +namespace eval ::tk::classic { + # This may need to be adjusted for some window managers that are + # more aggressive with their own Xdefaults (like KDE and CDE) + variable prio "widgetDefault" +} + +proc ::tk::classic::restore {args} { + # Restore classic (8.4) look to classic Tk widgets + variable prio + + if {[llength $args]} { + foreach what $args { + ::tk::classic::restore_$what + } + } else { + foreach cmd [info procs restore_*] { + $cmd + } + } +} + +proc ::tk::classic::restore_font {args} { + # Many widgets were adjusted from hard-coded defaults to using the + # TIP#145 fonts defined in fonts.tcl (eg TkDefaultFont, TkFixedFont, ...) + # For restoring compatibility, we only correct size and weighting changes, + # as the fonts themselves remained mostly the same. + if {[tk windowingsystem] eq "x11"} { + font configure TkDefaultFont -weight bold ; # normal + font configure TkFixedFont -size -12 ; # -10 + } + # Add these with prio 21 to override value in dialog/msgbox.tcl + if {[tk windowingsystem] eq "aqua"} { + option add *Dialog.msg.font system 21; # TkCaptionFont + option add *Dialog.dtl.font system 21; # TkCaptionFont + option add *ErrorDialog*Label.font system 21; # TkCaptionFont + } else { + option add *Dialog.msg.font {Times 12} 21; # TkCaptionFont + option add *Dialog.dtl.font {Times 10} 21; # TkCaptionFont + option add *ErrorDialog*Label.font {Times -18} 21; # TkCaptionFont + } +} + +proc ::tk::classic::restore_button {args} { + variable prio + if {[tk windowingsystem] eq "x11"} { + foreach cls {Button Radiobutton Checkbutton} { + option add *$cls.borderWidth 2 $prio; # 1 + } + } +} + +proc ::tk::classic::restore_entry {args} { + variable prio + # Entry and Spinbox share core defaults + foreach cls {Entry Spinbox} { + if {[tk windowingsystem] ne "aqua"} { + option add *$cls.borderWidth 2 $prio; # 1 + } + if {[tk windowingsystem] eq "x11"} { + option add *$cls.background "#d9d9d9" $prio; # "white" + option add *$cls.selectBorderWidth 1 $prio; # 0 + } + } +} + +proc ::tk::classic::restore_listbox {args} { + variable prio + if {[tk windowingsystem] ne "win32"} { + option add *Listbox.background "#d9d9d9" $prio; # "white" + option add *Listbox.activeStyle "underline" $prio; # "dotbox" + } + if {[tk windowingsystem] ne "aqua"} { + option add *Listbox.borderWidth 2 $prio; # 1 + } + if {[tk windowingsystem] eq "x11"} { + option add *Listbox.selectBorderWidth 1 $prio; # 0 + } + # Remove focus into Listbox added for 8.5 + bind Listbox { + if {[winfo exists %W]} { + tk::ListboxBeginSelect %W [%W index @%x,%y] + } + } +} + +proc ::tk::classic::restore_menu {args} { + variable prio + if {[tk windowingsystem] eq "x11"} { + option add *Menu.activeBorderWidth 2 $prio; # 1 + option add *Menu.borderWidth 2 $prio; # 1 + option add *Menu.clickToFocus true $prio + option add *Menu.useMotifHelp true $prio + } + if {[tk windowingsystem] ne "aqua"} { + option add *Menu.font "TkDefaultFont" $prio; # "TkMenuFont" + } +} + +proc ::tk::classic::restore_menubutton {args} { + variable prio + option add *Menubutton.borderWidth 2 $prio; # 1 +} + +proc ::tk::classic::restore_message {args} { + variable prio + option add *Message.borderWidth 2 $prio; # 1 +} + +proc ::tk::classic::restore_panedwindow {args} { + variable prio + option add *Panedwindow.borderWidth 2 $prio; # 1 + option add *Panedwindow.sashWidth 2 $prio; # 3 + option add *Panedwindow.sashPad 2 $prio; # 0 + option add *Panedwindow.sashRelief raised $prio; # flat + option add *Panedwindow.opaqueResize 0 $prio; # 1 + if {[tk windowingsystem] ne "win32"} { + option add *Panedwindow.showHandle 1 $prio; # 0 + } +} + +proc ::tk::classic::restore_scale {args} { + variable prio + option add *Scale.borderWidth 2 $prio; # 1 + if {[tk windowingsystem] eq "x11"} { + option add *Scale.troughColor "#c3c3c3" $prio; # "#b3b3b3" + } +} + +proc ::tk::classic::restore_scrollbar {args} { + variable prio + if {[tk windowingsystem] eq "x11"} { + option add *Scrollbar.borderWidth 2 $prio; # 1 + option add *Scrollbar.highlightThickness 1 $prio; # 0 + option add *Scrollbar.width 15 $prio; # 11 + option add *Scrollbar.troughColor "#c3c3c3" $prio; # "#b3b3b3" + } +} + +proc ::tk::classic::restore_text {args} { + variable prio + if {[tk windowingsystem] ne "aqua"} { + option add *Text.borderWidth 2 $prio; # 1 + } + if {[tk windowingsystem] eq "win32"} { + option add *Text.font "TkDefaultFont" $prio; # "TkFixedFont" + } + if {[tk windowingsystem] eq "x11"} { + option add *Text.background "#d9d9d9" $prio; # white + option add *Text.selectBorderWidth 1 $prio; # 0 + } +} Index: library/palette.tcl ================================================================== --- library/palette.tcl +++ library/palette.tcl @@ -187,13 +187,10 @@ # descendants are recolored. # colors - The name of an array variable in the caller, # which contains color information. Each element # is named after a widget configuration option, and # each value is the value for that option. -# Return Value: -# A list of commands which can be run to update -# the defaults database when exec'ed. proc ::tk::RecolorTree {w colors} { upvar $colors c set result {} set prototype .___tk_set_palette.[string tolower [winfo class $w]] @@ -201,36 +198,34 @@ unset prototype } foreach dbOption [array names c] { set option -[string tolower $dbOption] set class [string replace $dbOption 0 0 [string toupper \ - [string index $dbOption 0]]] - # Make sure this option is valid for this window. + [string index $dbOption 0]]] if {![catch {$w configure $option} value]} { - # Update the option for this window. - $w configure $option $c($dbOption) - # Retrieve a default value for this option. First check - # the option database. If it is not in the database use - # the value for the temporary prototype widget. + # if the option database has a preference for this + # dbOption, then use it, otherwise use the defaults + # for the widget. set defaultcolor [option get $w $dbOption $class] if {$defaultcolor eq "" || \ ([info exists prototype] && \ [$prototype cget $option] ne "$defaultcolor")} { set defaultcolor [lindex $value 3] } if {$defaultcolor ne ""} { set defaultcolor [winfo rgb . $defaultcolor] } - # If the color requested for this option differs from - # the default, append a command to update the default. - set requestcolor [lindex $value 4] - if {$requestcolor ne ""} { - set requestcolor [winfo rgb . $requestcolor] + set chosencolor [lindex $value 4] + if {$chosencolor ne ""} { + set chosencolor [winfo rgb . $chosencolor] } - if {![string match $defaultcolor $requestcolor]} { + if {[string match $defaultcolor $chosencolor]} { + # Change the option database so that future windows will get + # the same colors. append result ";\noption add [list \ *[winfo class $w].$dbOption $c($dbOption) 60]" + $w configure $option $c($dbOption) } } } foreach child [winfo children $w] { append result ";\n[::tk::RecolorTree $child c]" @@ -248,23 +243,23 @@ # percent: 50 means darken by 50%, 110 means brighten # by 10%. proc ::tk::Darken {color percent} { if {$percent < 0} { - return #000000 + return #000000 } elseif {$percent > 200} { - return #ffffff + return #ffffff } elseif {$percent <= 100} { - lassign [winfo rgb . $color] r g b - set r [expr {($r/256)*$percent/100}] - set g [expr {($g/256)*$percent/100}] - set b [expr {($b/256)*$percent/100}] + lassign [winfo rgb . $color] r g b + set r [expr {($r/256)*$percent/100}] + set g [expr {($g/256)*$percent/100}] + set b [expr {($b/256)*$percent/100}] } elseif {$percent > 100} { - lassign [winfo rgb . $color] r g b - set r [expr {255 - ((65535-$r)/256)*(200-$percent)/100}] - set g [expr {255 - ((65535-$g)/256)*(200-$percent)/100}] - set b [expr {255 - ((65535-$b)/256)*(200-$percent)/100}] + lassign [winfo rgb . $color] r g b + set r [expr {255 - ((65535-$r)/256)*(200-$percent)/100}] + set g [expr {255 - ((65535-$g)/256)*(200-$percent)/100}] + set b [expr {255 - ((65535-$b)/256)*(200-$percent)/100}] } return [format #%02x%02x%02x $r $g $b] } # ::tk_bisque -- Index: library/panedwindow.tcl ================================================================== --- library/panedwindow.tcl +++ library/panedwindow.tcl @@ -186,9 +186,9 @@ # Restores the default cursor # proc ::tk::panedwindow::Leave {w} { variable ::tk::Priv if {[info exists Priv($w,panecursor)]} { - $w configure -cursor $Priv($w,panecursor) - unset Priv($w,panecursor) + $w configure -cursor $Priv($w,panecursor) + unset Priv($w,panecursor) } } Index: library/print.tcl ================================================================== --- library/print.tcl +++ library/print.tcl @@ -74,11 +74,11 @@ _selectprinter #Next, set values. Some are taken from the printer, #some are sane defaults. - if {[info exists printer_name] && $printer_name ne ""} { + if {[info exists printer_name] && $printer_name ne ""} { set printargs(hDC) $printer_name set printargs(pw) $paper_width set printargs(pl) $paper_height set printargs(lm) 1000 set printargs(tm) 1000 @@ -662,11 +662,11 @@ # with printer info # cups print $printer $data ?$options? # print the data (binary) on a given printer # with the provided (supported) options: # -colormode -copies -format -margins -# -media -nup -orientation +# -media -nup -orientation # -prettyprint -title -tzoom # Some output configuration that on other platforms is managed through # the printer driver/dialog is configured through the canvas postscript command. if {[tk windowingsystem] eq "x11"} { Index: library/scale.tcl ================================================================== --- library/scale.tcl +++ library/scale.tcl @@ -141,14 +141,14 @@ set Priv(dragging) 1 set Priv(initValue) [$w get] set coords [$w coords] set Priv(deltaX) [expr {$x - [lindex $coords 0]}] set Priv(deltaY) [expr {$y - [lindex $coords 1]}] - switch -exact -- $Priv($w,relief) { - "raised" { $w configure -sliderrelief sunken } - "ridge" { $w configure -sliderrelief groove } - } + switch -exact -- $Priv($w,relief) { + "raised" { $w configure -sliderrelief sunken } + "ridge" { $w configure -sliderrelief groove } + } } } # ::tk::ScaleDrag -- # This procedure is called when the mouse is dragged with @@ -177,12 +177,12 @@ proc ::tk::ScaleEndDrag {w} { variable ::tk::Priv set Priv(dragging) 0 if {[info exists Priv($w,relief)]} { - $w configure -sliderrelief $Priv($w,relief) - unset Priv($w,relief) + $w configure -sliderrelief $Priv($w,relief) + unset Priv($w,relief) } } # ::tk::ScaleIncrement -- # This procedure is invoked to increment the value of a scale and @@ -207,12 +207,12 @@ # give the cancel callback a chance to be serviced if the execution time of # the -command script lasts longer than -repeatdelay set clockms [clock milliseconds] if {$repeat eq "again" && - [expr {$clockms - $Priv(clockms)}] > [expr {[$w cget -repeatinterval] * 1.1}]} { - set Priv(clockms) $clockms + [expr {$clockms - $Priv(clockms)}] > [expr {[$w cget -repeatinterval] * 1.1}]} { + set Priv(clockms) $clockms set Priv(afterId) [after [$w cget -repeatinterval] \ [list tk::ScaleIncrement $w $dir $big again]] return } @@ -226,24 +226,24 @@ } } else { set inc [$w cget -resolution] } if {([$w cget -from] > [$w cget -to]) ^ ($dir eq "up")} { - if {$inc > 0} { - set inc [expr {-$inc}] - } + if {$inc > 0} { + set inc [expr {-$inc}] + } } else { - if {$inc < 0} { - set inc [expr {-$inc}] - } + if {$inc < 0} { + set inc [expr {-$inc}] + } } # this will run the -command script (if any) during the redrawing # of the scale at idle time $w set [expr {[$w get] + $inc}] if {$repeat eq "again"} { - set Priv(clockms) $clockms + set Priv(clockms) $clockms set Priv(afterId) [after [$w cget -repeatinterval] \ [list tk::ScaleIncrement $w $dir $big again]] } elseif {$repeat eq "initial"} { set delay [$w cget -repeatdelay] if {$delay > 0} { Index: library/scrlbar.tcl ================================================================== --- library/scrlbar.tcl +++ library/scrlbar.tcl @@ -475,11 +475,11 @@ # x, y - Mouse coordinates within the widget. proc ::tk::ScrollButton2Down {w x y} { variable ::tk::Priv if {![winfo exists $w]} { - return + return } set element [$w identify $x $y] if {[string match {arrow[12]} $element]} { ScrollButtonDown $w $x $y return @@ -491,10 +491,10 @@ # back to reset the actual scrollbar position before we start the # slider drag. update idletasks if {[winfo exists $w]} { - $w configure -activerelief sunken - $w activate slider - ScrollStartDrag $w $x $y + $w configure -activerelief sunken + $w activate slider + ScrollStartDrag $w $x $y } } Index: library/spinbox.tcl ================================================================== --- library/spinbox.tcl +++ library/spinbox.tcl @@ -345,23 +345,23 @@ proc ::tk::spinbox::ArrowPress {w x y} { variable ::tk::Priv if {[$w cget -state] ne "disabled" && \ - [string match "button*" $Priv(element)]} { - $w selection element $Priv(element) - set Priv(repeated) 0 - set Priv(relief) [$w cget -$Priv(element)relief] - catch {after cancel $Priv(afterId)} - set delay [$w cget -repeatdelay] - if {$delay > 0} { - set Priv(afterId) [after $delay \ - [list ::tk::spinbox::Invoke $w $Priv(element)]] - } - if {[info exists Priv(outsideElement)]} { - unset Priv(outsideElement) - } + [string match "button*" $Priv(element)]} { + $w selection element $Priv(element) + set Priv(repeated) 0 + set Priv(relief) [$w cget -$Priv(element)relief] + catch {after cancel $Priv(afterId)} + set delay [$w cget -repeatdelay] + if {$delay > 0} { + set Priv(afterId) [after $delay \ + [list ::tk::spinbox::Invoke $w $Priv(element)]] + } + if {[info exists Priv(outsideElement)]} { + unset Priv(outsideElement) + } } } # ::tk::spinbox::ButtonDown -- # This procedure is invoked to handle button-1 presses in spinbox Index: library/systray.tcl ================================================================== --- library/systray.tcl +++ library/systray.tcl @@ -194,11 +194,11 @@ } # Fade the window into view. proc _fadeIn {w} { variable defaults - if {![winfo exists $w]} {return} + if {![winfo exists $w]} {return} if {[set alpha [option get $w alpha ""]] eq ""} { set alpha [dict get $defaults alpha] } raise $w set before [wm attributes $w -alpha] @@ -212,11 +212,11 @@ after 40 [namespace code [list _fadeIn $w]] } # Fade out and destroy window. proc _fadeOut {w} { - if {![winfo exists $w]} {return} + if {![winfo exists $w]} {return} set before [wm attributes $w -alpha] set new [expr { $before - 0.02 }] wm attributes $w -alpha $new set after [wm attributes $w -alpha] if {($after == 1.0) || ($before == $after)} { @@ -430,20 +430,20 @@ proc ::tk::systray::_check_options {argsList singleOk} { variable _options set len [llength $argsList] while {[llength $argsList] > 0} { - set opt [lindex $argsList 0] - if {![dict exists $_options $opt]} { - tailcall return -code error -errorcode {TK SYSTRAY OPTION} \ + set opt [lindex $argsList 0] + if {![dict exists $_options $opt]} { + tailcall return -code error -errorcode {TK SYSTRAY OPTION} \ "unknown option \"$opt\": must be -image, -text, -button1 or -button3" - } - if {[llength $argsList] == 1 && !($len == 1 && $singleOk)} { - tailcall return -code error -errorcode {TK SYSTRAY OPTION} \ + } + if {[llength $argsList] == 1 && !($len == 1 && $singleOk)} { + tailcall return -code error -errorcode {TK SYSTRAY OPTION} \ "missing value for option \"$opt\"" - } - set argsList [lrange $argsList 2 end] + } + set argsList [lrange $argsList 2 end] } } # tk sysnotify -- # This procedure implements a platform-specific system notification alert. @@ -477,7 +477,7 @@ #Add these commands to the tk command ensemble: tk systray, tk sysnotify #Thanks to Christian Gollwitzer for the guidance here namespace ensemble configure tk -map \ [dict merge [namespace ensemble configure tk -map] \ - {systray ::tk::systray sysnotify ::tk::sysnotify::sysnotify}] + {systray ::tk::systray sysnotify ::tk::sysnotify::sysnotify}] Index: library/tclIndex ================================================================== --- library/tclIndex +++ library/tclIndex @@ -4,249 +4,254 @@ # more commands. Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. -set auto_index(::tk::dialog::error::Return) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::Details) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::SaveToLog) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::Destroy) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::dialog::error::bgerror) [list source [file join $dir bgerror.tcl]] -set auto_index(bgerror) [list source [file join $dir bgerror.tcl]] -set auto_index(::tk::ButtonInvoke) [list source [file join $dir button.tcl]] -set auto_index(::tk::ButtonAutoInvoke) [list source [file join $dir button.tcl]] -set auto_index(::tk::CheckRadioInvoke) [list source [file join $dir button.tcl]] -set auto_index(::tk::dialog::file::chooseDir::) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::file::chooseDir::Config) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::file::chooseDir::OkCmd) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::file::chooseDir::DblClick) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::file::chooseDir::ListBrowse) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::file::chooseDir::Done) [list source [file join $dir choosedir.tcl]] -set auto_index(::tk::dialog::color::) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::InitValues) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::Config) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::BuildDialog) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::SetRGBValue) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::XToRgb) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::RgbToX) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::DrawColorScale) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::CreateSelector) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::RedrawFinalColor) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::RedrawColorBars) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::StartMove) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::MoveSelector) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::ReleaseMouse) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::ResizeColorBars) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::HandleSelEntry) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::HandleRGBEntry) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::EnterColorBar) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::LeaveColorBar) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::OkCmd) [list source [file join $dir clrpick.tcl]] -set auto_index(::tk::dialog::color::CancelCmd) [list source [file join $dir clrpick.tcl]] -set auto_index(tclParseConfigSpec) [list source [file join $dir comdlg.tcl]] -set auto_index(tclListValidFlags) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_Create) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_BindIn) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_BindOut) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_Destroy) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_In) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FocusGroup_Out) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::FDGetFileTypes) [list source [file join $dir comdlg.tcl]] -set auto_index(::tk::ConsoleInit) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleSource) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleInvoke) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleHistory) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsolePrompt) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleBind) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleInsert) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleOutput) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleExit) [list source [file join $dir console.tcl]] -set auto_index(::tk::ConsoleAbout) [list source [file join $dir console.tcl]] -set auto_index(tk_dialog) [list source [file join $dir dialog.tcl]] -set auto_index(::tk::EntryClosestGap) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryButton1) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryMouseSelect) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryPaste) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryAutoScan) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryKeySelect) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryInsert) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryBackspace) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntrySeeInsert) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntrySetCursor) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryTranspose) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryPreviousWord) [list source [file join $dir entry.tcl]] -set auto_index(::tk::EntryGetSelection) [list source [file join $dir entry.tcl]] -set auto_index(tk_focusNext) [list source [file join $dir focus.tcl]] -set auto_index(tk_focusPrev) [list source [file join $dir focus.tcl]] -set auto_index(::tk::FocusOK) [list source [file join $dir focus.tcl]] -set auto_index(tk_focusFollowsMouse) [list source [file join $dir focus.tcl]] -set auto_index(::tk::IconList) [list source [file join $dir iconlist.tcl]] -set auto_index(::tk::ListboxBeginSelect) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxMotion) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxBeginExtend) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxBeginToggle) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxAutoScan) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxUpDown) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxExtendUpDown) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxDataExtend) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxCancel) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::ListboxSelectAll) [list source [file join $dir listbox.tcl]] -set auto_index(::tk::Megawidget) [list source [file join $dir megawidget.tcl]] -set auto_index(::tk::MbEnter) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MbLeave) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MbPost) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuUnpost) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MbMotion) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MbButtonUp) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuMotion) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuButtonDown) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuLeave) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuInvoke) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuEscape) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuUpArrow) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuDownArrow) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuLeftArrow) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuRightArrow) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuNextMenu) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuNextEntry) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuFind) [list source [file join $dir menu.tcl]] -set auto_index(::tk::TraverseToMenu) [list source [file join $dir menu.tcl]] -set auto_index(::tk::FirstMenu) [list source [file join $dir menu.tcl]] -set auto_index(::tk::TraverseWithinMenu) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuFirstEntry) [list source [file join $dir menu.tcl]] -set auto_index(::tk::MenuFindName) [list source [file join $dir menu.tcl]] -set auto_index(::tk::PostOverPoint) [list source [file join $dir menu.tcl]] -set auto_index(::tk::SaveGrabInfo) [list source [file join $dir menu.tcl]] -set auto_index(::tk::RestoreOldGrab) [list source [file join $dir menu.tcl]] -set auto_index(tk_menuSetFocus) [list source [file join $dir menu.tcl]] -set auto_index(::tk::GenerateMenuSelect) [list source [file join $dir menu.tcl]] -set auto_index(tk_popup) [list source [file join $dir menu.tcl]] -set auto_index(::tk::ensure_psenc_is_loaded) [list source [file join $dir mkpsenc.tcl]] -set auto_index(::tk::MessageBox) [list source [file join $dir msgbox.tcl]] -set auto_index(tk_optionMenu) [list source [file join $dir optMenu.tcl]] -set auto_index(tk_setPalette) [list source [file join $dir palette.tcl]] -set auto_index(::tk::RecolorTree) [list source [file join $dir palette.tcl]] -set auto_index(::tk::Darken) [list source [file join $dir palette.tcl]] -set auto_index(tk_bisque) [list source [file join $dir palette.tcl]] -set auto_index(::safe::tkInterpInit) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::loadTk) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::TkInit) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::allowTk) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::disallowTk) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::tkDelete) [list source [file join $dir safetk.tcl]] -set auto_index(::safe::tkTopLevel) [list source [file join $dir safetk.tcl]] -set auto_index(::tk::ScaleActivate) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleButtonDown) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleDrag) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleEndDrag) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleIncrement) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleControlPress) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScaleButton2Down) [list source [file join $dir scale.tcl]] -set auto_index(::tk::ScalingPct) [list source [file join $dir scaling.tcl]] -set auto_index(::tk::ScaleNum) [list source [file join $dir scaling.tcl]] -set auto_index(::tk::FontScalingFactor) [list source [file join $dir scaling.tcl]] -set auto_index(::tk::ScanMonitorsFile) [list source [file join $dir scaling.tcl]] -set auto_index(::tk::ScrollButtonDown) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollButtonUp) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollSelect) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollStartDrag) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollDrag) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollEndDrag) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollByUnits) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollByPages) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollToPos) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollTopBottom) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::ScrollButton2Down) [list source [file join $dir scrlbar.tcl]] -set auto_index(::tk::spinbox::Invoke) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::ClosestGap) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::ButtonDown) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::ButtonUp) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::MouseSelect) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::Paste) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::Motion) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::AutoScan) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::KeySelect) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::Insert) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::Backspace) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::SeeInsert) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::SetCursor) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::Transpose) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::PreviousWord) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::spinbox::GetSelection) [list source [file join $dir spinbox.tcl]] -set auto_index(::tk::TearOffMenu) [list source [file join $dir tearoff.tcl]] -set auto_index(::tk::MenuDup) [list source [file join $dir tearoff.tcl]] -set auto_index(::tk::TextClosestGap) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextButton1) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextSelectTo) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextKeyExtend) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextPaste) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextAutoScan) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextSetCursor) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextKeySelect) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextResetAnchor) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextInsert) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextUpDownLine) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextPrevPara) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextNextPara) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextScrollPages) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextTranspose) [list source [file join $dir text.tcl]] -set auto_index(tk_textCopy) [list source [file join $dir text.tcl]] -set auto_index(tk_textCut) [list source [file join $dir text.tcl]] -set auto_index(tk_textPaste) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextNextPos) [list source [file join $dir text.tcl]] -set auto_index(::tk::TextPrevPos) [list source [file join $dir text.tcl]] -set auto_index(::tk::PlaceWindow) [list source [file join $dir tk.tcl]] -set auto_index(::tk::SetFocusGrab) [list source [file join $dir tk.tcl]] -set auto_index(::tk::RestoreFocusGrab) [list source [file join $dir tk.tcl]] -set auto_index(::tk::ScreenChanged) [list source [file join $dir tk.tcl]] -set auto_index(::tk::EventMotifBindings) [list source [file join $dir tk.tcl]] -set auto_index(::tk::CancelRepeat) [list source [file join $dir tk.tcl]] -set auto_index(::tk::MouseWheel) [list source [file join $dir tk.tcl]] -set auto_index(::tk::TabToWindow) [list source [file join $dir tk.tcl]] -set auto_index(::tk::dialog::file::) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::Config) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::Create) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::SetSelectMode) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::UpdateWhenIdle) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::Update) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::SetPathSilently) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::SetPath) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::SetFilter) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::ResolveFile) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::EntFocusIn) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::EntFocusOut) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::ActivateEnt) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::VerifyFileName) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::InvokeBtn) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::UpDirCmd) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::JoinFile) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::OkCmd) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::CancelCmd) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::ListBrowse) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::ListInvoke) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::dialog::file::Done) [list source [file join $dir tkfbox.tcl]] -set auto_index(::tk::MotifFDialog) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_Create) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_FileTypes) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_SetFilter) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_Config) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_BuildUI) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_SetListMode) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_MakeSList) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_InterpFilter) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_Update) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_LoadFiles) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_BrowseDList) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_ActivateDList) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_BrowseFList) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_ActivateFList) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_ActivateFEnt) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_ActivateSEnt) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_OkCmd) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_FilterCmd) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::MotifFDialog_CancelCmd) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::ListBoxKeyAccel_Set) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::ListBoxKeyAccel_Unset) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::ListBoxKeyAccel_Key) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::ListBoxKeyAccel_Goto) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::ListBoxKeyAccel_Reset) [list source [file join $dir xmfbox.tcl]] -set auto_index(::tk::fontchooser) [list source [file join $dir fontchooser.tcl]] +set auto_index(::tk::dialog::error::Return) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::Details) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::SaveToLog) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::Destroy) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(::tk::dialog::error::bgerror) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(bgerror) [list source -encoding utf-8 [file join $dir bgerror.tcl]] +set auto_index(::tk::ButtonInvoke) [list source -encoding utf-8 [file join $dir button.tcl]] +set auto_index(::tk::ButtonAutoInvoke) [list source -encoding utf-8 [file join $dir button.tcl]] +set auto_index(::tk::CheckRadioInvoke) [list source -encoding utf-8 [file join $dir button.tcl]] +set auto_index(::tk::dialog::file::chooseDir::) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::file::chooseDir::Config) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::file::chooseDir::OkCmd) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::file::chooseDir::DblClick) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::file::chooseDir::ListBrowse) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::file::chooseDir::Done) [list source -encoding utf-8 [file join $dir choosedir.tcl]] +set auto_index(::tk::dialog::color::) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::InitValues) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::Config) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::BuildDialog) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::SetRGBValue) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::XToRgb) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::RgbToX) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::DrawColorScale) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::CreateSelector) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::RedrawFinalColor) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::RedrawColorBars) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::StartMove) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::MoveSelector) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::ReleaseMouse) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::ResizeColorBars) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::HandleSelEntry) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::HandleRGBEntry) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::EnterColorBar) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::LeaveColorBar) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::OkCmd) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(::tk::dialog::color::CancelCmd) [list source -encoding utf-8 [file join $dir clrpick.tcl]] +set auto_index(tclParseConfigSpec) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(tclListValidFlags) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_Create) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_BindIn) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_BindOut) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_Destroy) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_In) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FocusGroup_Out) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::FDGetFileTypes) [list source -encoding utf-8 [file join $dir comdlg.tcl]] +set auto_index(::tk::ConsoleInit) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleSource) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleInvoke) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleHistory) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsolePrompt) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleBind) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleInsert) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleOutput) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleExit) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(::tk::ConsoleAbout) [list source -encoding utf-8 [file join $dir console.tcl]] +set auto_index(tk_dialog) [list source -encoding utf-8 [file join $dir dialog.tcl]] +set auto_index(::tk::EntryClosestGap) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryButton1) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryMouseSelect) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryPaste) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryAutoScan) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryKeySelect) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryInsert) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryBackspace) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntrySeeInsert) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntrySetCursor) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryTranspose) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryPreviousWord) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(::tk::EntryGetSelection) [list source -encoding utf-8 [file join $dir entry.tcl]] +set auto_index(tk_focusNext) [list source -encoding utf-8 [file join $dir focus.tcl]] +set auto_index(tk_focusPrev) [list source -encoding utf-8 [file join $dir focus.tcl]] +set auto_index(::tk::FocusOK) [list source -encoding utf-8 [file join $dir focus.tcl]] +set auto_index(tk_focusFollowsMouse) [list source -encoding utf-8 [file join $dir focus.tcl]] +set auto_index(::tk::IconList) [list source -encoding utf-8 [file join $dir iconlist.tcl]] +set auto_index(::tk::ListboxBeginSelect) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxMotion) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxBeginExtend) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxBeginToggle) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxAutoScan) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxUpDown) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxExtendUpDown) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxDataExtend) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxCancel) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::ListboxSelectAll) [list source -encoding utf-8 [file join $dir listbox.tcl]] +set auto_index(::tk::Megawidget) [list source -encoding utf-8 [file join $dir megawidget.tcl]] +set auto_index(::tk::MbEnter) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MbLeave) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MbPost) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuUnpost) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MbMotion) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MbButtonUp) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuMotion) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuButtonDown) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuLeave) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuInvoke) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuEscape) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuUpArrow) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuDownArrow) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuLeftArrow) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuRightArrow) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuNextMenu) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuNextEntry) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuFind) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::TraverseToMenu) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::FirstMenu) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::TraverseWithinMenu) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuFirstEntry) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::MenuFindName) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::PostOverPoint) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::SaveGrabInfo) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::RestoreOldGrab) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(tk_menuSetFocus) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::GenerateMenuSelect) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(tk_popup) [list source -encoding utf-8 [file join $dir menu.tcl]] +set auto_index(::tk::ensure_psenc_is_loaded) [list source -encoding utf-8 [file join $dir mkpsenc.tcl]] +set auto_index(::tk::MessageBox) [list source -encoding utf-8 [file join $dir msgbox.tcl]] +set auto_index(tk_menuBar) [list source -encoding utf-8 [file join $dir obsolete.tcl]] +set auto_index(tk_bindForTraversal) [list source -encoding utf-8 [file join $dir obsolete.tcl]] +set auto_index(::tk::classic::restore) [list source -encoding utf-8 [file join $dir obsolete.tcl]] +set auto_index(tk_optionMenu) [list source -encoding utf-8 [file join $dir optMenu.tcl]] +set auto_index(tk_setPalette) [list source -encoding utf-8 [file join $dir palette.tcl]] +set auto_index(::tk::RecolorTree) [list source -encoding utf-8 [file join $dir palette.tcl]] +set auto_index(::tk::Darken) [list source -encoding utf-8 [file join $dir palette.tcl]] +set auto_index(tk_bisque) [list source -encoding utf-8 [file join $dir palette.tcl]] +set auto_index(::safe::tkInterpInit) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::loadTk) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::TkInit) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::allowTk) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::disallowTk) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::tkDelete) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::safe::tkTopLevel) [list source -encoding utf-8 [file join $dir safetk.tcl]] +set auto_index(::tk::ScaleActivate) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleButtonDown) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleDrag) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleEndDrag) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleIncrement) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleControlPress) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScaleButton2Down) [list source -encoding utf-8 [file join $dir scale.tcl]] +set auto_index(::tk::ScalingPct) [list source -encoding utf-8 [file join $dir scaling.tcl]] +set auto_index(::tk::ScaleNum) [list source -encoding utf-8 [file join $dir scaling.tcl]] +set auto_index(::tk::FontScalingFactor) [list source -encoding utf-8 [file join $dir scaling.tcl]] +set auto_index(::tk::ScanMonitorsFile) [list source -encoding utf-8 [file join $dir scaling.tcl]] +set auto_index(::tk::ScrollButtonDown) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollButtonUp) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollSelect) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollStartDrag) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollDrag) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollEndDrag) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollByUnits) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollByPages) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollToPos) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollTopBottom) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::ScrollButton2Down) [list source -encoding utf-8 [file join $dir scrlbar.tcl]] +set auto_index(::tk::spinbox::Invoke) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::ClosestGap) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::ButtonDown) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::ButtonUp) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::MouseSelect) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::Paste) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::Motion) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::AutoScan) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::KeySelect) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::Insert) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::Backspace) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::SeeInsert) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::SetCursor) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::Transpose) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::PreviousWord) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::spinbox::GetSelection) [list source -encoding utf-8 [file join $dir spinbox.tcl]] +set auto_index(::tk::TearOffMenu) [list source -encoding utf-8 [file join $dir tearoff.tcl]] +set auto_index(::tk::MenuDup) [list source -encoding utf-8 [file join $dir tearoff.tcl]] +set auto_index(::tk::TextClosestGap) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextButton1) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextSelectTo) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextKeyExtend) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextPaste) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextAutoScan) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextSetCursor) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextKeySelect) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextResetAnchor) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextInsert) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextUpDownLine) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextPrevPara) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextNextPara) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextScrollPages) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextTranspose) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(tk_textCopy) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(tk_textCut) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(tk_textPaste) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextNextPos) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::TextPrevPos) [list source -encoding utf-8 [file join $dir text.tcl]] +set auto_index(::tk::PlaceWindow) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::SetFocusGrab) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::RestoreFocusGrab) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::ScreenChanged) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::EventMotifBindings) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::CancelRepeat) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::MouseWheel) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::TabToWindow) [list source -encoding utf-8 [file join $dir tk.tcl]] +set auto_index(::tk::dialog::file::) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::Config) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::Create) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::SetSelectMode) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::UpdateWhenIdle) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::Update) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::SetPathSilently) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::SetPath) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::SetFilter) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::ResolveFile) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::EntFocusIn) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::EntFocusOut) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::ActivateEnt) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::VerifyFileName) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::InvokeBtn) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::UpDirCmd) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::JoinFile) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::OkCmd) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::CancelCmd) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::ListBrowse) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::ListInvoke) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::dialog::file::Done) [list source -encoding utf-8 [file join $dir tkfbox.tcl]] +set auto_index(::tk::MotifFDialog) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_Create) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_FileTypes) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_SetFilter) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_Config) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_BuildUI) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_SetListMode) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_MakeSList) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_InterpFilter) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_Update) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_LoadFiles) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_BrowseDList) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_ActivateDList) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_BrowseFList) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_ActivateFList) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_ActivateFEnt) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_ActivateSEnt) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_OkCmd) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_FilterCmd) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::MotifFDialog_CancelCmd) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::ListBoxKeyAccel_Set) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::ListBoxKeyAccel_Unset) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::ListBoxKeyAccel_Key) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::ListBoxKeyAccel_Goto) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::ListBoxKeyAccel_Reset) [list source -encoding utf-8 [file join $dir xmfbox.tcl]] +set auto_index(::tk::unsupported::ExposePrivateCommand) [list source -encoding utf-8 [file join $dir unsupported.tcl]] +set auto_index(::tk::unsupported::ExposePrivateVariable) [list source -encoding utf-8 [file join $dir unsupported.tcl]] +set auto_index(::tk::fontchooser) [list source -encoding utf-8 [file join $dir fontchooser.tcl]] Index: library/tearoff.tcl ================================================================== --- library/tearoff.tcl +++ library/tearoff.tcl @@ -136,16 +136,18 @@ eval $cmd # Copy the meny entries, if any set last [$src index last] - for {set i [$src cget -tearoff]} {$i <= $last} {incr i} { - set cmd [list $dst add [$src type $i] [$src id $i]] - foreach option [$src entryconfigure $i] { - lappend cmd [lindex $option 0] [lindex $option 4] + if {$last ne "none"} { + for {set i [$src cget -tearoff]} {$i <= $last} {incr i} { + set cmd [list $dst add [$src type $i] [$src id $i]] + foreach option [$src entryconfigure $i] { + lappend cmd [lindex $option 0] [lindex $option 4] + } + eval $cmd } - eval $cmd } # Duplicate the binding tags from the source menu, replacing src with dst set tags [bindtags $src] Index: library/text.tcl ================================================================== --- library/text.tcl +++ library/text.tcl @@ -496,11 +496,11 @@ } # The check on y coord of the line bbox with dlineinfo is to fix # [a9cf210a42] to properly handle selecting and moving the mouse # out of the widget. if {$y < [lindex [$w dlineinfo $pos] 1] || - $x - [lindex $bbox 0] < [lindex $bbox 2]/2} { + $x - [lindex $bbox 0] < [lindex $bbox 2]/2} { return $pos } $w index "$pos + 1 char" } @@ -550,18 +550,18 @@ # anchor is considered private to Tk, hence the name 'tk::anchor$w'. # # Arguments: # w - The text window in which the button was pressed. # x - Mouse x position. -# y - Mouse y position. +# y - Mouse y position. set ::tk::Priv(textanchoruid) 0 proc ::tk::TextAnchor {w} { variable Priv if {![info exists Priv(textanchor,$w)]} { - set Priv(textanchor,$w) tk::anchor[incr Priv(textanchoruid)] + set Priv(textanchor,$w) tk::anchor[incr Priv(textanchoruid)] } return $Priv(textanchor,$w) } proc ::tk::TextSelectTo {w x y {extend 0}} { @@ -663,11 +663,11 @@ # This procedure sets the insertion cursor to the mouse position, # inserts the selection, and sets the focus to the window. # # Arguments: # w - The text window. -# x, y - Position of the mouse. +# x, y - Position of the mouse. proc ::tk::TextPasteSelection {w x y} { $w mark set insert [TextClosestGap $w $x $y] if {![catch {::tk::GetSelection $w PRIMARY} sel]} { set oldSeparator [$w cget -autoseparators] @@ -757,13 +757,13 @@ } else { $w tag add sel insert $new } $w mark set $anchorname insert } else { - if {[catch {$w index $anchorname}]} { - $w mark set $anchorname insert - } + if {[catch {$w index $anchorname}]} { + $w mark set $anchorname insert + } if {[$w compare $new < $anchorname]} { set first $new set last $anchorname } else { set first $anchorname @@ -902,12 +902,12 @@ set lines [$w count -displaylines $Priv(textPosOrig) $i] set new [$w index \ "$Priv(textPosOrig) + [expr {$lines + $n}] displaylines"] set Priv(prevPos) $new if {[$w compare $new == "end display lineend"] \ - || [$w compare $new == "insert display linestart"]} { - set Priv(textPosOrig) $new + || [$w compare $new == "insert display linestart"]} { + set Priv(textPosOrig) $new } return $new } # ::tk::TextPrevPara -- @@ -1043,12 +1043,12 @@ # Arguments: # w - Name of a text widget. proc ::tk_textCut w { if {![catch {set data [$w get sel.first sel.last]}]} { - # make <> an atomic operation on the Undo stack, - # i.e. separate it from other delete operations on either side + # make <> an atomic operation on the Undo stack, + # i.e. separate it from other delete operations on either side set oldSeparator [$w cget -autoseparators] if {([$w cget -state] eq "normal") && $oldSeparator} { $w edit separator } clipboard clear -displayof $w @@ -1215,13 +1215,13 @@ set indices {} set undoMarks {} # only consider the temporary marks set by an undo/redo action foreach mark [$w mark names] { - if {[string range $mark 0 11] eq "tk::undoMark"} { - lappend undoMarks $mark - } + if {[string range $mark 0 11] eq "tk::undoMark"} { + lappend undoMarks $mark + } } # transform marks into indices # the number of undo/redo marks is always even, each right mark # completes a left mark to give a range @@ -1246,50 +1246,50 @@ } else { set Lmarks {} } set Rmarks [lrange $undoMarks $n [llength $undoMarks]] foreach Lmark $Lmarks Rmark $Rmarks { - lappend indices [$w index $Lmark] [$w index $Rmark] - $w mark unset $Lmark $Rmark + lappend indices [$w index $Lmark] [$w index $Rmark] + $w mark unset $Lmark $Rmark } # process ranges to: # - remove those already fully included in another range # - merge overlapping ranges set ind [lsort -dictionary -stride 2 $indices] set indices {} for {set i 0} {$i < $nUndoMarks} {incr i 2} { - set il1 [lindex $ind $i] - set ir1 [lindex $ind [expr {$i + 1}]] - lappend indices $il1 $ir1 - - for {set j [expr {$i + 2}]} {$j < $nUndoMarks} {incr j 2} { - set il2 [lindex $ind $j] - set ir2 [lindex $ind [expr {$j + 1}]] - - if {[$w compare $il2 > $ir1]} { - # second range starts after the end of first range - # -> further second ranges do not need to be considered - # because ranges were sorted by increasing first index - set j $nUndoMarks - } else { - if {[$w compare $ir2 > $ir1]} { - # second range overlaps first range - # -> merge them into a single range - set indices [lreplace $indices end-1 end] - lappend indices $il1 $ir2 - } else { - # second range is fully included in first range - # -> ignore it - } - # in both cases above, the second range shall be - # trimmed out from the list of ranges - set ind [lreplace $ind $j [expr {$j + 1}]] - incr j -2 - incr nUndoMarks -2 - } - } + set il1 [lindex $ind $i] + set ir1 [lindex $ind [expr {$i + 1}]] + lappend indices $il1 $ir1 + + for {set j [expr {$i + 2}]} {$j < $nUndoMarks} {incr j 2} { + set il2 [lindex $ind $j] + set ir2 [lindex $ind [expr {$j + 1}]] + + if {[$w compare $il2 > $ir1]} { + # second range starts after the end of first range + # -> further second ranges do not need to be considered + # because ranges were sorted by increasing first index + set j $nUndoMarks + } else { + if {[$w compare $ir2 > $ir1]} { + # second range overlaps first range + # -> merge them into a single range + set indices [lreplace $indices end-1 end] + lappend indices $il1 $ir2 + } else { + # second range is fully included in first range + # -> ignore it + } + # in both cases above, the second range shall be + # trimmed out from the list of ranges + set ind [lreplace $ind $j [expr {$j + 1}]] + incr j -2 + incr nUndoMarks -2 + } + } } return $indices } Index: library/tk.tcl ================================================================== --- library/tk.tcl +++ library/tk.tcl @@ -9,11 +9,11 @@ # # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # Verify that we have Tk binary and script components from the same release -package require -exact tk 9.0b4 +package require -exact tk 8.7b1 # Create a ::tk namespace namespace eval ::tk { # Set up the msgcat commands namespace eval msgcat { @@ -426,11 +426,11 @@ } "win32" { event add <> event add <> event add <> - event add <> + event add <> event add <> event add <> event add <> event add <> @@ -496,11 +496,11 @@ # Read in files that define all of the class bindings. # ---------------------------------------------------------------------- if {$::tk_library ne ""} { proc ::tk::SourceLibFile {file} { - namespace eval :: [list source [file join $::tk_library $file.tcl]] + namespace eval :: [list source -encoding utf-8 [file join $::tk_library $file.tcl]] } namespace eval ::tk { SourceLibFile icons SourceLibFile iconbadges SourceLibFile button @@ -711,11 +711,11 @@ if {[tk windowingsystem] eq "aqua"} { #stub procedures to respond to "do script" Apple Events proc ::tk::mac::DoScriptFile {file} { uplevel #0 $file - source $file + source -encoding utf-8 $file } proc ::tk::mac::DoScriptText {script} { uplevel #0 $script eval $script } @@ -839,13 +839,13 @@ option add *Scrollbar.width 8.25p widgetDefault } # Run the Ttk themed widget set initialization if {$::ttk::library ne ""} { - uplevel \#0 [list source $::ttk::library/ttk.tcl] + uplevel \#0 [list source -encoding utf-8 $::ttk::library/ttk.tcl] } # Local Variables: # mode: tcl # fill-column: 78 # End: Index: library/tkfbox.tcl ================================================================== --- library/tkfbox.tcl +++ library/tkfbox.tcl @@ -648,11 +648,11 @@ $w configure -cursor $dlgCursor } # ::tk::dialog::file::SetPathSilently -- # -# Sets data(selectPath) without invoking the trace procedure +# Sets data(selectPath) without invoking the trace procedure # proc ::tk::dialog::file::SetPathSilently {w path} { upvar ::tk::dialog::file::[winfo name $w] data set cb [list ::tk::dialog::file::SetPath $w] Index: library/ttk/altTheme.tcl ================================================================== --- library/ttk/altTheme.tcl +++ library/ttk/altTheme.tcl @@ -4,37 +4,37 @@ namespace eval ttk::theme::alt { variable colors array set colors { - -frame "#d9d9d9" + -frame "#d9d9d9" -window "#ffffff" -alternate "#f0f0f0" - -darker "#c3c3c3" + -darker "#c3c3c3" -border "#414141" - -activebg "#ececec" + -activebg "#ececec" -disabledfg "#a3a3a3" -selectbg "#4a6984" -selectfg "#ffffff" -altindicator "#aaaaaa" } ttk::style theme settings alt { ttk::style configure "." \ - -background $colors(-frame) \ - -foreground black \ + -background $colors(-frame) \ + -foreground black \ -troughcolor $colors(-darker) \ -bordercolor $colors(-border) \ - -selectbackground $colors(-selectbg) \ - -selectforeground $colors(-selectfg) \ - -font TkDefaultFont + -selectbackground $colors(-selectbg) \ + -selectforeground $colors(-selectfg) \ + -font TkDefaultFont ttk::style map "." -background \ [list disabled $colors(-frame) active $colors(-activebg)] ttk::style map "." -foreground [list disabled $colors(-disabledfg)] - ttk::style map "." -embossed [list disabled 1] + ttk::style map "." -embossed [list disabled 1] ttk::style configure TButton \ -anchor center -width -11 -padding 0.75p \ -relief raised -shiftrelief 1 \ -highlightthickness 1 -highlightcolor $colors(-frame) @@ -47,16 +47,16 @@ -indicatormargin {0 1.5p 3p 1.5p} -padding 1.5p ttk::style configure TRadiobutton -indicatorcolor "#ffffff" \ -indicatormargin {0 1.5p 3p 1.5p} -padding 1.5p ttk::style map TCheckbutton -indicatorcolor \ [list pressed $colors(-frame) \ - alternate $colors(-altindicator) \ - disabled $colors(-frame)] + alternate $colors(-altindicator) \ + disabled $colors(-frame)] ttk::style map TRadiobutton -indicatorcolor \ [list pressed $colors(-frame) \ - alternate $colors(-altindicator) \ - disabled $colors(-frame)] + alternate $colors(-altindicator) \ + disabled $colors(-frame)] ttk::style configure TMenubutton \ -width -11 -padding 2.25p -arrowsize 3.75p -relief raised ttk::style configure TEntry -padding 1 \ Index: library/ttk/aquaTheme.tcl ================================================================== --- library/ttk/aquaTheme.tcl +++ library/ttk/aquaTheme.tcl @@ -28,12 +28,12 @@ ttk::style configure TButton -anchor center \ -foreground systemControlTextColor ttk::style map TButton \ -foreground { pressed white - {alternate !pressed !background} white - disabled systemDisabledControlTextColor} + {alternate !pressed !background} white + disabled systemDisabledControlTextColor} # Menubutton ttk::style configure TMenubutton -anchor center -padding {2 0 0 2} # Toolbutton @@ -150,11 +150,11 @@ -foreground systemTextColor \ -background systemWindowBackgroundColor ttk::style configure Treeview -rowheight 18 \ -background systemControlBackgroundColor \ -stripedbackground systemControlAlternatingRowColor \ - -foreground systemTextColor \ + -foreground systemTextColor \ -fieldbackground systemTextBackgroundColor ttk::style map Treeview \ -background { selected systemSelectedTextBackgroundColor } Index: library/ttk/button.tcl ================================================================== --- library/ttk/button.tcl +++ library/ttk/button.tcl @@ -16,14 +16,14 @@ # the pressed state if the button is currently active. # namespace eval ttk::button {} -bind TButton { %W instate !disabled {%W state active} } +bind TButton { %W instate !disabled {%W state active} } bind TButton { %W state !active } bind TButton { ttk::button::activate %W } -bind TButton <> { ttk::button::activate %W } +bind TButton <> { ttk::button::activate %W } bind TButton \ { %W instate !disabled { ttk::clickToFocus %W; %W state pressed } } bind TButton \ { %W instate pressed { %W state !pressed; %W instate !disabled { %W invoke } } } @@ -37,12 +37,12 @@ ttk::copyBindings TButton TCheckbutton ttk::copyBindings TButton TRadiobutton # ...plus a few more: -bind TRadiobutton { ttk::button::RadioTraverse %W -1 } -bind TRadiobutton { ttk::button::RadioTraverse %W +1 } +bind TRadiobutton { ttk::button::RadioTraverse %W -1 } +bind TRadiobutton { ttk::button::RadioTraverse %W +1 } # bind TCheckbutton <+> { %W select } # bind TCheckbutton { %W deselect } # activate -- @@ -56,11 +56,11 @@ $w state $oldState $w invoke } # RadioTraverse -- up/down keyboard traversal for radiobutton groups. -# Set focus to previous/next radiobutton in a group. +# Set focus to previous/next radiobutton in a group. # A radiobutton group consists of all the radiobuttons with # the same parent and -variable; this is a pretty good heuristic # that works most of the time. # proc ttk::button::RadioTraverse {w dir} { Index: library/ttk/clamTheme.tcl ================================================================== --- library/ttk/clamTheme.tcl +++ library/ttk/clamTheme.tcl @@ -7,17 +7,17 @@ namespace eval ttk::theme::clam { variable colors array set colors { -disabledfg "#999999" - -frame "#dcdad5" - -window "#ffffff" + -frame "#dcdad5" + -window "#ffffff" -dark "#cfcdc8" - -darker "#bab5ab" + -darker "#bab5ab" -darkest "#9e9a91" -lighter "#eeebe7" - -lightest "#ffffff" + -lightest "#ffffff" -selectbg "#4a6984" -selectfg "#ffffff" -altindicator "#5895bc" -disabledaltindicator "#a0a0a0" } @@ -113,11 +113,11 @@ -relief solid -borderwidth 1 ttk::style configure TSpinbox -arrowsize 7.5p -padding {1.5p 0 7.5p 0} ttk::style map TSpinbox \ -background [list readonly $colors(-frame)] \ - -arrowcolor [list disabled $colors(-disabledfg)] \ + -arrowcolor [list disabled $colors(-disabledfg)] \ -bordercolor [list focus $colors(-selectbg)] ttk::style configure TNotebook.Tab -padding {4.5p 1.5p 4.5p 1.5p} ttk::style map TNotebook.Tab \ -padding {selected {4.5p 3p 4.5p 1.5p}} \ @@ -143,20 +143,20 @@ ttk::style configure TLabelframe \ -labeloutside true -labelmargins {0 0 0 3p} \ -borderwidth 2 -relief raised - ttk::style configure TScrollbar -gripsize 7.5p \ + ttk::style configure TScrollbar -gripcount 3.75p \ -arrowsize 10.5p -width 10.5p - ttk::style configure TScale -gripsize 7.5p \ + ttk::style configure TScale -gripcount 3.75p \ -arrowsize 10.5p -sliderlength 22.5p ttk::style configure TProgressbar -background $colors(-frame) \ -arrowsize 10.5p -sliderlength 22.5p - ttk::style configure Sash -sashthickness 4.5p -gripsize 15p + ttk::style configure Sash -sashthickness 4.5p -gripcount 7.5p } } # ttk::theme::clam::configureNotebookStyle -- # Index: library/ttk/combobox.tcl ================================================================== --- library/ttk/combobox.tcl +++ library/ttk/combobox.tcl @@ -40,17 +40,17 @@ # Duplicate the Entry bindings, override if needed: # ttk::copyBindings TEntry TCombobox -bind TCombobox { ttk::combobox::Post %W } -bind TCombobox { ttk::combobox::Unpost %W } +bind TCombobox { ttk::combobox::Post %W } +bind TCombobox { ttk::combobox::Unpost %W } -bind TCombobox { ttk::combobox::Press "" %W %x %y } +bind TCombobox { ttk::combobox::Press "" %W %x %y } bind TCombobox { ttk::combobox::Press "s" %W %x %y } -bind TCombobox { ttk::combobox::Press "2" %W %x %y } -bind TCombobox { ttk::combobox::Press "3" %W %x %y } +bind TCombobox { ttk::combobox::Press "2" %W %x %y } +bind TCombobox { ttk::combobox::Press "3" %W %x %y } bind TCombobox { ttk::combobox::Drag %W %x } bind TCombobox { ttk::combobox::Motion %W %x %y } ttk::bindMouseWheel TCombobox { ttk::combobox::Scroll %W } bind TCombobox { @@ -61,11 +61,11 @@ # TouchpadScroll events fire about 60 times per second. if {$tk::Priv(deltaY) != 0 && %# %% 15 == 0} { ttk::combobox::Scroll %W [expr {$tk::Priv(deltaY) > 0 ? -1 : 1}] } } -bind TCombobox <> { ttk::combobox::TraverseIn %W } +bind TCombobox <> { ttk::combobox::TraverseIn %W } ### Combobox listbox bindings. # bind ComboboxListbox { ttk::combobox::LBSelected %W } bind ComboboxListbox { ttk::combobox::LBSelected %W } @@ -127,13 +127,13 @@ }] focus $w if {$State(entryPress)} { switch -- $mode { - s { ttk::entry::Shift-Press $w $x ; # Shift } - 2 { ttk::entry::Select $w $x word ; # Double click} - 3 { ttk::entry::Select $w $x line ; # Triple click } + s { ttk::entry::Shift-Press $w $x ; # Shift } + 2 { ttk::entry::Select $w $x word ; # Double click} + 3 { ttk::entry::Select $w $x line ; # Triple click } "" - default { ttk::entry::Press $w $x } } } else { Post $w @@ -156,11 +156,11 @@ # proc ttk::combobox::Motion {w x y} { variable State ttk::saveCursor $w State(userConfCursor) [ttk::cursor text] if { [$w identify $x $y] eq "textarea" - && [$w instate {!readonly !disabled}] + && [$w instate {!readonly !disabled}] } { ttk::setCursor $w text } else { ttk::setCursor $w $State(userConfCursor) } @@ -354,11 +354,11 @@ set popdown [PopdownWindow $cb].f set values [$cb cget -values] set current [$cb current] if {$current < 0} { - set current 0 ;# no current entry, highlight first one + set current 0 ;# no current entry, highlight first one } set Values($cb) $values $popdown.l selection clear 0 end $popdown.l selection set $current $popdown.l activate $current @@ -365,24 +365,24 @@ $popdown.l see $current set height [llength $values] if {$height > [$cb cget -height]} { set height [$cb cget -height] grid $popdown.sb - grid configure $popdown.l -padx {1 0} + grid configure $popdown.l -padx {1 0} } else { grid remove $popdown.sb - grid configure $popdown.l -padx 1 + grid configure $popdown.l -padx 1 } $popdown.l configure -height $height } proc ttk::combobox::ConfigureAquaMenu {cb width} { set popdown [PopdownWindow $cb] set values [$cb cget -values] set current [$cb current] if {$current < 0} { - set current 0 ;# no current entry, highlight first one + set current 0 ;# no current entry, highlight first one } $cb.popdown.menu delete 0 end $cb.spacer configure -width [expr {$width - 40}] -height 1 set i 0 foreach item $values { @@ -442,11 +442,11 @@ set w [winfo width $cb] set h [winfo height $cb] set style [$cb cget -style] set postoffset [ttk::style lookup $style -postoffset {} {0 0 0 0}] foreach var {x y w h} delta $postoffset { - incr $var $delta + incr $var $delta } wm geometry $popdown ${w}x${h}+${x}+${y} return [list $x $y $w $h] } Index: library/ttk/cursors.tcl ================================================================== --- library/ttk/cursors.tcl +++ library/ttk/cursors.tcl @@ -45,23 +45,23 @@ array set Cursors { "" "" none none standard left_ptr - text xterm + text xterm link hand2 crosshair crosshair busy watch forbidden pirate - hresize sb_h_double_arrow - vresize sb_v_double_arrow + hresize sb_h_double_arrow + vresize sb_v_double_arrow - nresize top_side - sresize bottom_side - wresize left_side - eresize right_side + nresize top_side + sresize bottom_side + wresize left_side + eresize right_side nwresize top_left_corner neresize top_right_corner swresize bottom_left_corner seresize bottom_right_corner move fleur @@ -80,17 +80,17 @@ link hand2 crosshair crosshair busy wait forbidden no - vresize size_ns - nresize size_ns + vresize size_ns + nresize size_ns sresize size_ns wresize size_we eresize size_we - hresize size_we + hresize size_we nwresize size_nw_se swresize size_ne_sw neresize size_ne_sw @@ -99,22 +99,22 @@ } "aqua" { array set Cursors { standard arrow - text ibeam - link pointinghand + text ibeam + link pointinghand crosshair crosshair - busy watch + busy watch forbidden notallowed - hresize resizeleftright - vresize resizeupdown - nresize resizeup - sresize resizedown - wresize resizeleft - eresize resizeright + hresize resizeleftright + vresize resizeupdown + nresize resizeup + sresize resizedown + wresize resizeleft + eresize resizeright } } } } @@ -136,16 +136,16 @@ # proc ttk::setCursor {w name} { variable Cursors if {[info exists Cursors($name)]} { - set cursorname $Cursors($name) + set cursorname $Cursors($name) } else { - set cursorname $name + set cursorname $name } if {[$w cget -cursor] ne $cursorname} { - $w configure -cursor $cursorname + $w configure -cursor $cursorname } } ## ttk::saveCursor $w $saveVar $excludeList -- # Set variable $saveVar to the -cursor value from widget $w, @@ -155,14 +155,14 @@ # $excludeList proc ttk::saveCursor {w saveVar excludeList} { upvar $saveVar sv if {![info exists sv]} { - set sv [$w cget -cursor] + set sv [$w cget -cursor] } if {[$w cget -cursor] ni $excludeList} { - set sv [$w cget -cursor] + set sv [$w cget -cursor] } } ## Interactive test harness: # Index: library/ttk/defaults.tcl ================================================================== --- library/ttk/defaults.tcl +++ library/ttk/defaults.tcl @@ -8,15 +8,15 @@ array set colors { -frame "#d9d9d9" -foreground "#000000" -window "#ffffff" -alternate "#e8e8e8" - -text "#000000" + -text "#000000" -activebg "#ececec" -selectbg "#4a6984" -selectfg "#ffffff" - -darker "#c3c3c3" + -darker "#c3c3c3" -disabledfg "#a3a3a3" -indicator "#4a6984" -disabledindicator "#a3a3a3" -pressedindicator "#5895bc" } @@ -83,18 +83,18 @@ # The definition of the 'default' theme. ttk::style theme settings default { ttk::style configure "." \ - -borderwidth 1 \ - -background $colors(-frame) \ - -foreground $colors(-foreground) \ - -troughcolor $colors(-darker) \ - -font TkDefaultFont \ + -borderwidth 1 \ + -background $colors(-frame) \ + -foreground $colors(-foreground) \ + -troughcolor $colors(-darker) \ + -font TkDefaultFont \ -selectbackground $colors(-selectbg) \ -selectforeground $colors(-selectfg) \ - -insertwidth 1 \ + -insertwidth 1 \ -insertcolor $colors(-foreground) \ -focuscolor $colors(-text) ttk::style map "." -background \ [list disabled $colors(-frame) active $colors(-activebg)] @@ -202,11 +202,11 @@ # Combobox popdown frame ttk::style layout ComboboxPopdownFrame { ComboboxPopdownFrame.border -sticky nswe } - ttk::style configure ComboboxPopdownFrame \ + ttk::style configure ComboboxPopdownFrame \ -borderwidth 1 -relief solid # # Toolbar buttons: # Index: library/ttk/entry.tcl ================================================================== --- library/ttk/entry.tcl +++ library/ttk/entry.tcl @@ -58,25 +58,25 @@ # and I'll put it back. # ## Clipboard events: # -bind TEntry <> { ttk::entry::Cut %W } -bind TEntry <> { ttk::entry::Copy %W } -bind TEntry <> { ttk::entry::Paste %W } -bind TEntry <> { ttk::entry::Clear %W } +bind TEntry <> { ttk::entry::Cut %W } +bind TEntry <> { ttk::entry::Copy %W } +bind TEntry <> { ttk::entry::Paste %W } +bind TEntry <> { ttk::entry::Clear %W } ## Button1 bindings: # Used for selection and navigation. # -bind TEntry { ttk::entry::Press %W %x } +bind TEntry { ttk::entry::Press %W %x } bind TEntry { ttk::entry::Shift-Press %W %x } -bind TEntry { ttk::entry::Select %W %x word } -bind TEntry { ttk::entry::Select %W %x line } +bind TEntry { ttk::entry::Select %W %x word } +bind TEntry { ttk::entry::Select %W %x line } bind TEntry { ttk::entry::Drag %W %x } -bind TEntry { ttk::entry::DragOut %W %m } +bind TEntry { ttk::entry::DragOut %W %m } bind TEntry { ttk::entry::DragIn %W } bind TEntry { ttk::entry::Release %W } bind TEntry <> { %W instate {!readonly !disabled} { %W icursor @%x ; focus %W } @@ -85,53 +85,53 @@ ## Button2 bindings: # Used for scanning and primary transfer. # Note: ButtonRelease-2 # is mapped to <> in tk.tcl. # -bind TEntry { ttk::entry::ScanMark %W %x } -bind TEntry { ttk::entry::ScanDrag %W %x } +bind TEntry { ttk::entry::ScanMark %W %x } +bind TEntry { ttk::entry::ScanDrag %W %x } bind TEntry { ttk::entry::ScanRelease %W %x } bind TEntry <> { ttk::entry::ScanRelease %W %x } ## Keyboard navigation bindings: # bind TEntry <> { ttk::entry::Move %W prevchar } -bind TEntry <> { ttk::entry::Move %W nextchar } +bind TEntry <> { ttk::entry::Move %W nextchar } bind TEntry <> { ttk::entry::Move %W prevword } bind TEntry <> { ttk::entry::Move %W nextword } bind TEntry <> { ttk::entry::Move %W home } bind TEntry <> { ttk::entry::Move %W end } -bind TEntry <> { ttk::entry::Extend %W prevchar } +bind TEntry <> { ttk::entry::Extend %W prevchar } bind TEntry <> { ttk::entry::Extend %W nextchar } bind TEntry <> { ttk::entry::Extend %W prevword } bind TEntry <> { ttk::entry::Extend %W selectnextword } bind TEntry <> { ttk::entry::Extend %W home } bind TEntry <> { ttk::entry::Extend %W end } -bind TEntry <> { %W selection range 0 end } -bind TEntry <> { %W selection clear } +bind TEntry <> { %W selection range 0 end } +bind TEntry <> { %W selection clear } -bind TEntry <> { %W selection range 0 end; %W icursor end } +bind TEntry <> { %W selection range 0 end; %W icursor end } ## Edit bindings: # -bind TEntry { ttk::entry::Insert %W %A } +bind TEntry { ttk::entry::Insert %W %A } bind TEntry { ttk::entry::Delete %W } -bind TEntry { ttk::entry::Backspace %W } +bind TEntry { ttk::entry::Backspace %W } # Ignore all Alt, Meta, Control, Command, and Fn keypresses unless explicitly bound. # Otherwise, the class binding will fire and insert the character. # Ditto for Escape, Return, and Tab. # bind TEntry {# nothing} bind TEntry {# nothing} -bind TEntry {# nothing} -bind TEntry {# nothing} -bind TEntry {# nothing} -bind TEntry {# nothing} -bind TEntry {# nothing} +bind TEntry {# nothing} +bind TEntry {# nothing} +bind TEntry {# nothing} +bind TEntry {# nothing} +bind TEntry {# nothing} bind TEntry {# nothing} bind TEntry {# nothing} # Tk-on-Cocoa generates characters for these two keys. [Bug 2971663] bind TEntry <> {# nothing} @@ -225,11 +225,11 @@ ### Navigation procedures. # ## ClosestGap -- Find closest boundary between characters. -# Returns the index of the character just after the boundary. +# Returns the index of the character just after the boundary. # proc ttk::entry::ClosestGap {w x} { set pos [$w index @$x] set bbox [$w bbox $pos] if {$x - [lindex $bbox 0] > [lindex $bbox 2]/2} { @@ -321,11 +321,11 @@ ## RelIndex -- Compute character/word/line-relative index. # proc ttk::entry::RelIndex {w where {index insert}} { switch -- $where { prevchar { PrevChar $w $index } - nextchar { NextChar $w $index } + nextchar { NextChar $w $index } prevword { PrevWord $w $index } nextword { NextWord $w $index } selectnextword { SelectNextWord $w $index } home { return 0 } end { $w index end } @@ -483,11 +483,11 @@ ttk::Repeatedly ttk::entry::AutoScroll $w } } ## binding -# Suspend autoscroll. +# Suspend autoscroll. # proc ttk::entry::DragIn {w} { ttk::CancelRepeat } @@ -494,11 +494,11 @@ ## binding # proc ttk::entry::Release {w} { variable State set State(selectMode) none - ttk::CancelRepeat ;# suspend autoscroll + ttk::CancelRepeat ;# suspend autoscroll } ## AutoScroll # Called repeatedly when the mouse is outside an entry window # with Button 1 down. Scroll the window left or right, Index: library/ttk/fonts.tcl ================================================================== --- library/ttk/fonts.tcl +++ library/ttk/fonts.tcl @@ -18,11 +18,11 @@ # # +++ Platform notes: # # Windows: # The default system font changed from "MS Sans Serif" to "Tahoma" -# in Windows XP/Windows 2000. +# in Windows XP/Windows 2000. # # MS documentation says to use "Tahoma 8" in Windows 2000/XP, # although many MS programs still use "MS Sans Serif 8" # # Should use SystemParametersInfo() instead. @@ -65,24 +65,24 @@ if {!$tip145} {apply {{} { global tcl_platform switch -- [tk windowingsystem] { win32 { - # In safe interps there is no osVersion element. + # In safe interps there is no osVersion element. if {[info exists tcl_platform(osVersion)]} { - if {$tcl_platform(osVersion) >= 5.0} { - set family "Tahoma" - } else { - set family "MS Sans Serif" - } - } else { - if {[lsearch -exact [font families] Tahoma] >= 0} { - set family "Tahoma" - } else { - set family "MS Sans Serif" - } - } + if {$tcl_platform(osVersion) >= 5.0} { + set family "Tahoma" + } else { + set family "MS Sans Serif" + } + } else { + if {[lsearch -exact [font families] Tahoma] >= 0} { + set family "Tahoma" + } else { + set family "MS Sans Serif" + } + } set size 8 font configure TkDefaultFont -family $family -size $size font configure TkTextFont -family $family -size $size font configure TkHeadingFont -family $family -size $size Index: library/ttk/menubutton.tcl ================================================================== --- library/ttk/menubutton.tcl +++ library/ttk/menubutton.tcl @@ -45,16 +45,16 @@ } bind TMenubutton { %W instate !disabled {%W state active } } bind TMenubutton { %W state !active } bind TMenubutton { ttk::menubutton::Popdown %W } -bind TMenubutton <> { ttk::menubutton::Popdown %W } +bind TMenubutton <> { ttk::menubutton::Popdown %W } if {[tk windowingsystem] eq "x11"} { - bind TMenubutton { ttk::menubutton::Pulldown %W } + bind TMenubutton { ttk::menubutton::Pulldown %W } bind TMenubutton { ttk::menubutton::TransferGrab %W } - bind TMenubutton { ttk::menubutton::TransferGrab %W } + bind TMenubutton { ttk::menubutton::TransferGrab %W } } else { bind TMenubutton \ { %W state pressed ; ttk::menubutton::Popdown %W } bind TMenubutton \ { if {[winfo exists %W]} { %W state {!pressed}} } @@ -136,11 +136,11 @@ set entry "" incr y -$mh # if we go offscreen to the top, show as 'below' if {$y < [winfo vrooty $mb]} { set y [expr {[winfo vrooty $mb] + [winfo rooty $mb]\ - + [winfo reqheight $mb]}] + + [winfo reqheight $mb]}] } } below { set entry "" incr y $bh Index: library/ttk/notebook.tcl ================================================================== --- library/ttk/notebook.tcl +++ library/ttk/notebook.tcl @@ -168,11 +168,11 @@ if {![info exists TLNotebooks($top)]} { # Augment $top bindings: # bind $top {+ttk::notebook::TLCycleTab %W 1} bind $top {+ttk::notebook::TLCycleTab %W -1} - bind $top {+ttk::notebook::TLCycleTab %W 1} + bind $top {+ttk::notebook::TLCycleTab %W 1} bind $top {+ttk::notebook::TLCycleTab %W -1} catch { bind $top {+ttk::notebook::TLCycleTab %W -1} } bind $top \ @@ -197,11 +197,11 @@ proc ttk::notebook::Cleanup {nb} { variable TLNotebooks set top [winfo toplevel $nb] if {[info exists TLNotebooks($top)]} { set index [lsearch -exact $TLNotebooks($top) $nb] - set TLNotebooks($top) [lreplace $TLNotebooks($top) $index $index] + set TLNotebooks($top) [lreplace $TLNotebooks($top) $index $index] } } # EnclosingNotebook $w -- # Return the nearest traversal-enabled notebook widget Index: library/ttk/panedwindow.tcl ================================================================== --- library/ttk/panedwindow.tcl +++ library/ttk/panedwindow.tcl @@ -6,24 +6,24 @@ variable State array set State { pressed 0 pressX - pressY - - sash - + sash - sashPos - } } ## Bindings: # -bind TPanedwindow { ttk::panedwindow::Press %W %x %y } +bind TPanedwindow { ttk::panedwindow::Press %W %x %y } bind TPanedwindow { ttk::panedwindow::Drag %W %x %y } -bind TPanedwindow { ttk::panedwindow::Release %W %x %y } +bind TPanedwindow { ttk::panedwindow::Release %W %x %y } -bind TPanedwindow { ttk::panedwindow::SetCursor %W %x %y } -bind TPanedwindow { ttk::panedwindow::SetCursor %W %x %y } -bind TPanedwindow { ttk::panedwindow::ResetCursor %W } +bind TPanedwindow { ttk::panedwindow::SetCursor %W %x %y } +bind TPanedwindow { ttk::panedwindow::SetCursor %W %x %y } +bind TPanedwindow { ttk::panedwindow::ResetCursor %W } ## Sash movement: # proc ttk::panedwindow::Press {w x y} { variable State @@ -31,23 +31,23 @@ set sash [$w identify $x $y] if {$sash eq ""} { set State(pressed) 0 return } - set State(pressed) 1 - set State(pressX) $x - set State(pressY) $y - set State(sash) $sash + set State(pressed) 1 + set State(pressX) $x + set State(pressY) $y + set State(sash) $sash set State(sashPos) [$w sashpos $sash] } proc ttk::panedwindow::Drag {w x y} { variable State if {!$State(pressed)} { return } switch -glob -- [$w cget -orient] { - h* { set delta [expr {$x - $State(pressX)}] } - v* { set delta [expr {$y - $State(pressY)}] } + h* { set delta [expr {$x - $State(pressX)}] } + v* { set delta [expr {$y - $State(pressY)}] } } $w sashpos $State(sash) [expr {$State(sashPos) + $delta}] } proc ttk::panedwindow::Release {w x y} { @@ -60,11 +60,11 @@ # proc ttk::panedwindow::ResetCursor {w} { variable State ttk::saveCursor $w State(userConfCursor) \ - [list [ttk::cursor hresize] [ttk::cursor vresize]] + [list [ttk::cursor hresize] [ttk::cursor vresize]] if {!$State(pressed)} { ttk::setCursor $w $State(userConfCursor) } } @@ -71,11 +71,11 @@ proc ttk::panedwindow::SetCursor {w x y} { variable State ttk::saveCursor $w State(userConfCursor) \ - [list [ttk::cursor hresize] [ttk::cursor vresize]] + [list [ttk::cursor hresize] [ttk::cursor vresize]] set cursor $State(userConfCursor) if {[llength [$w identify $x $y]]} { # Assume we're over a sash. switch -glob -- [$w cget -orient] { Index: library/ttk/scale.tcl ================================================================== --- library/ttk/scale.tcl +++ library/ttk/scale.tcl @@ -39,18 +39,18 @@ variable State set State(dragging) 0 switch -glob -- [$w identify $x $y] { *track - - *trough { - set inc [expr {([$w get $x $y] <= [$w get]) ^ ([$w cget -from] > [$w cget -to]) ? -1 : 1}] - ttk::Repeatedly Increment $w $inc - } - *slider { - set State(dragging) 1 - set State(initial) [$w get] - } + *trough { + set inc [expr {([$w get $x $y] <= [$w get]) ^ ([$w cget -from] > [$w cget -to]) ? -1 : 1}] + ttk::Repeatedly Increment $w $inc + } + *slider { + set State(dragging) 1 + set State(initial) [$w get] + } } } # scale::Jump -- Button-2/3 binding for scale acts like # Press except that clicking in the trough jumps to the @@ -59,18 +59,18 @@ variable State set State(dragging) 0 switch -glob -- [$w identify $x $y] { *track - - *trough { - $w set [$w get $x $y] - set State(dragging) 1 - set State(initial) [$w get] - } - *slider { - Press $w $x $y - } + *trough { + $w set [$w get $x $y] + set State(dragging) 1 + set State(initial) [$w get] + } + *slider { + Press $w $x $y + } } } proc ttk::scale::Drag {w x y} { variable State Index: library/ttk/scrollbar.tcl ================================================================== --- library/ttk/scrollbar.tcl +++ library/ttk/scrollbar.tcl @@ -7,15 +7,15 @@ # State(xPress) -- # State(yPress) -- initial position of mouse at start of drag. # State(first) -- value of -first at start of drag. } -bind TScrollbar { ttk::scrollbar::Press %W %x %y } +bind TScrollbar { ttk::scrollbar::Press %W %x %y } bind TScrollbar { ttk::scrollbar::Drag %W %x %y } bind TScrollbar { ttk::scrollbar::Release %W %x %y } -bind TScrollbar { ttk::scrollbar::Jump %W %x %y } +bind TScrollbar { ttk::scrollbar::Jump %W %x %y } bind TScrollbar { ttk::scrollbar::Drag %W %x %y } bind TScrollbar { ttk::scrollbar::Release %W %x %y } # Copy the mouse wheel event bindings from Scrollbar to TScrollbar # @@ -95,11 +95,11 @@ unset -nocomplain State(xPress) State(yPress) State(first) ttk::CancelRepeat } # scrollbar::Jump -- Button-2 binding for scrollbars. -# Behaves exactly like scrollbar::Press, except that +# Behaves exactly like scrollbar::Press, except that # clicking in the trough jumps to the the selected position. # proc ttk::scrollbar::Jump {w x y} { variable State Index: library/ttk/sizegrip.tcl ================================================================== --- library/ttk/sizegrip.tcl +++ library/ttk/sizegrip.tcl @@ -17,26 +17,26 @@ } namespace eval ttk::sizegrip { variable State array set State { - pressed 0 - pressX 0 - pressY 0 - width 0 - height 0 + pressed 0 + pressX 0 + pressY 0 + width 0 + height 0 widthInc 1 heightInc 1 - resizeX 1 - resizeY 1 - toplevel {} + resizeX 1 + resizeY 1 + toplevel {} } } -bind TSizegrip { ttk::sizegrip::Press %W %X %Y } -bind TSizegrip { ttk::sizegrip::Drag %W %X %Y } -bind TSizegrip { ttk::sizegrip::Release %W %X %Y } +bind TSizegrip { ttk::sizegrip::Press %W %X %Y } +bind TSizegrip { ttk::sizegrip::Drag %W %X %Y } +bind TSizegrip { ttk::sizegrip::Release %W %X %Y } proc ttk::sizegrip::Press {W X Y} { variable State if {[$W instate disabled]} { return } @@ -44,11 +44,11 @@ set top [winfo toplevel $W] # If the toplevel is not resizable then bail foreach {State(resizeX) State(resizeY)} [wm resizable $top] break if {!$State(resizeX) && !$State(resizeY)} { - return + return } # Sanity-checks: # If a negative X or Y position was specified for [wm geometry], # just bail out -- there's no way to handle this cleanly. @@ -81,14 +81,14 @@ variable State if {!$State(pressed)} { return } set w $State(width) set h $State(height) if {$State(resizeX)} { - set w [expr {$w + ($X - $State(pressX))/$State(widthInc)}] + set w [expr {$w + ($X - $State(pressX))/$State(widthInc)}] } if {$State(resizeY)} { - set h [expr {$h + ($Y - $State(pressY))/$State(heightInc)}] + set h [expr {$h + ($Y - $State(pressY))/$State(heightInc)}] } if {$w <= 0} { set w 1 } if {$h <= 0} { set h 1 } set x $State(x) ; set y $State(y) wm geometry $State(toplevel) ${w}x${h}+${x}+${y} Index: library/ttk/spinbox.tcl ================================================================== --- library/ttk/spinbox.tcl +++ library/ttk/spinbox.tcl @@ -10,22 +10,22 @@ # ttk::copyBindings TEntry TSpinbox bind TSpinbox { ttk::spinbox::Motion %W %x %y } -bind TSpinbox { ttk::spinbox::Press %W %x %y } -bind TSpinbox { ttk::spinbox::Release %W } -bind TSpinbox { ttk::spinbox::DoubleClick %W %x %y } -bind TSpinbox {} ;# disable TEntry triple-click +bind TSpinbox { ttk::spinbox::Press %W %x %y } +bind TSpinbox { ttk::spinbox::Release %W } +bind TSpinbox { ttk::spinbox::DoubleClick %W %x %y } +bind TSpinbox {} ;# disable TEntry triple-click bind TSpinbox { event generate %W <> } -bind TSpinbox { event generate %W <> } +bind TSpinbox { event generate %W <> } bind TSpinbox <> { ttk::spinbox::Spin %W +1 } -bind TSpinbox <> { ttk::spinbox::Spin %W -1 } +bind TSpinbox <> { ttk::spinbox::Spin %W -1 } -ttk::bindMouseWheel TSpinbox { ttk::spinbox::Spin %W } +ttk::bindMouseWheel TSpinbox { ttk::spinbox::Spin %W } bind TSpinbox { # Ignore the event } bind TSpinbox { lassign [tk::PreciseScrollDeltas %D] tk::Priv(deltaX) tk::Priv(deltaY) @@ -56,11 +56,11 @@ if {[$w instate disabled]} { return } focus $w switch -glob -- [$w identify $x $y] { *textarea { ttk::entry::Press $w $x } *rightarrow - - *uparrow { ttk::Repeatedly event generate $w <> } + *uparrow { ttk::Repeatedly event generate $w <> } *leftarrow - *downarrow { ttk::Repeatedly event generate $w <> } *spinbutton { if {$y * 2 >= [winfo height $w]} { set event <> @@ -88,11 +88,11 @@ ttk::CancelRepeat } ## MouseWheel -- # Mousewheel callback. Turn these into <> (-1, up) -# or < (+1, down) events. Not used any more. +# or < (+1, down) events. Not used any more. # proc ttk::spinbox::MouseWheel {w dir {factor 1.0}} { if {[$w instate disabled]} { return } if {($dir < 0) ^ ($factor < 0)} { event generate $w <> Index: library/ttk/treeview.tcl ================================================================== --- library/ttk/treeview.tcl +++ library/ttk/treeview.tcl @@ -5,44 +5,44 @@ namespace eval ttk::treeview { variable State # Enter/Leave/Motion # - set State(activeWidget) {} - set State(activeHeading) {} + set State(activeWidget) {} + set State(activeHeading) {} # Press/drag/release: # - set State(pressMode) none + set State(pressMode) none set State(pressX) 0 # For pressMode == "resize" set State(resizeColumn) #0 # For pressmode == "heading" - set State(heading) {} + set State(heading) {} set State(cellAnchor) {} set State(cellAnchorOp) "set" } ### Widget bindings. # -bind Treeview { ttk::treeview::Motion %W %x %y } +bind Treeview { ttk::treeview::Motion %W %x %y } bind Treeview { #nothing } bind Treeview { ttk::treeview::ActivateHeading {} {}} -bind Treeview { ttk::treeview::Press %W %x %y } -bind Treeview { ttk::treeview::DoubleClick %W %x %y } -bind Treeview { ttk::treeview::Release %W %x %y } -bind Treeview { ttk::treeview::Drag %W %x %y } -bind Treeview { ttk::treeview::Keynav %W up } -bind Treeview { ttk::treeview::Keynav %W down } -bind Treeview { ttk::treeview::Keynav %W right } -bind Treeview { ttk::treeview::Keynav %W left } +bind Treeview { ttk::treeview::Press %W %x %y } +bind Treeview { ttk::treeview::DoubleClick %W %x %y } +bind Treeview { ttk::treeview::Release %W %x %y } +bind Treeview { ttk::treeview::Drag %W %x %y } +bind Treeview { ttk::treeview::Keynav %W up } +bind Treeview { ttk::treeview::Keynav %W down } +bind Treeview { ttk::treeview::Keynav %W right } +bind Treeview { ttk::treeview::Keynav %W left } bind Treeview { %W yview scroll -1 pages } -bind Treeview { %W yview scroll 1 pages } +bind Treeview { %W yview scroll 1 pages } bind Treeview { ttk::treeview::ToggleFocus %W } bind Treeview { ttk::treeview::ToggleFocus %W } bind Treeview \ { ttk::treeview::Select %W %x %y extend } @@ -64,80 +64,80 @@ if {$focus eq ""} { return } set cells [expr {[$w cget -selecttype] eq "cell"}] if {$cells} { - lassign $State(cellAnchor) _ colAnchor - # Just in case, give it a valid value - if {$colAnchor eq ""} { - set colAnchor "#1" - } + lassign $State(cellAnchor) _ colAnchor + # Just in case, give it a valid value + if {$colAnchor eq ""} { + set colAnchor "#1" + } } switch -- $dir { up { if {[set up [$w prev $focus]] eq ""} { - set focus [$w parent $focus] + set focus [$w parent $focus] } else { while {[$w item $up -open] && [llength [$w children $up]]} { set up [lindex [$w children $up] end] } set focus $up } } down { if {[$w item $focus -open] && [llength [$w children $focus]]} { - set focus [lindex [$w children $focus] 0] + set focus [lindex [$w children $focus] 0] } else { set up $focus while {$up ne "" && [set down [$w next $up]] eq ""} { set up [$w parent $up] } set focus $down } } left { - if {$cells} { - # This assumes that colAnchor is of the "#N" format. - set colNo [string range $colAnchor 1 end] - set firstCol [expr {"tree" ni [$w cget -show]}] - if {$colNo > $firstCol} { - incr colNo -1 - set colAnchor "#$colNo" - } - } elseif {[$w item $focus -open] && [llength [$w children $focus]]} { + if {$cells} { + # This assumes that colAnchor is of the "#N" format. + set colNo [string range $colAnchor 1 end] + set firstCol [expr {"tree" ni [$w cget -show]}] + if {$colNo > $firstCol} { + incr colNo -1 + set colAnchor "#$colNo" + } + } elseif {[$w item $focus -open] && [llength [$w children $focus]]} { CloseItem $w $focus } else { set focus [$w parent $focus] } } right { - if {$cells} { - set colNo [string range $colAnchor 1 end] - set dispCol [$w cget -displaycolumns] - if {$dispCol eq "#all"} { - set lastCol [llength [$w cget -columns]] - } else { - set lastCol [llength $dispCol] - } - if {$colNo < ($lastCol - 1)} { - incr colNo - set colAnchor "#$colNo" - } - } else { - OpenItem $w $focus - } + if {$cells} { + set colNo [string range $colAnchor 1 end] + set dispCol [$w cget -displaycolumns] + if {$dispCol eq "#all"} { + set lastCol [llength [$w cget -columns]] + } else { + set lastCol [llength $dispCol] + } + if {$colNo < ($lastCol - 1)} { + incr colNo + set colAnchor "#$colNo" + } + } else { + OpenItem $w $focus + } } } if {$focus != {}} { - if {$cells} { - set cell [list $focus $colAnchor] - SelectOp $w $focus $cell choose - } else { - SelectOp $w $focus "" choose - } + if {$cells} { + set cell [list $focus $colAnchor] + SelectOp $w $focus $cell choose + } else { + SelectOp $w $focus "" choose + } } } ## Motion -- pointer motion binding. # Sets cursor, active element ... @@ -190,13 +190,13 @@ # Only active when -selecttype is "cell", and leaves cell empty otherwise. # Down the call chain it is enough to check cell to know the selecttype. proc ttk::treeview::IdentifyCell {w x y} { set cell {} if {[$w cget -selecttype] eq "cell"} { - # Later handling assumes that the column in the cell ID is of the - # format #N, which is always the case from "identify cell" - set cell [$w identify cell $x $y] + # Later handling assumes that the column in the cell ID is of the + # format #N, which is always the case from "identify cell" + set cell [$w identify cell $x $y] } return $cell } ## Select $w $x $y $selectop @@ -203,11 +203,11 @@ # Binding procedure for selection operations. # See "Selection modes", below. # proc ttk::treeview::Select {w x y op} { if {[set item [$w identify row $x $y]] ne "" } { - set cell [IdentifyCell $w $x $y] + set cell [IdentifyCell $w $x $y] SelectOp $w $item $cell $op } } ## DoubleClick -- Double-Button-1 binding. @@ -229,11 +229,11 @@ heading { heading.press $w $x $y } separator { resize.press $w $x $y } tree - cell { set item [$w identify item $x $y] - set cell [IdentifyCell $w $x $y] + set cell [IdentifyCell $w $x $y] SelectOp $w $item $cell choose switch -glob -- [$w identify element $x $y] { *indicator - *disclosure { Toggle $w $item } @@ -291,11 +291,11 @@ } proc ttk::treeview::heading.drag {w x y} { variable State if { [$w identify region $x $y] eq "heading" - && [$w identify column $x $y] eq $State(heading) + && [$w identify column $x $y] eq $State(heading) } { $w heading $State(heading) state pressed } else { $w heading $State(heading) state !pressed } @@ -338,31 +338,31 @@ BrowseTo $w $item $cell } proc ttk::treeview::select.toggle.extended {w item cell} { variable State if {$cell ne ""} { - $w cellselection toggle [list $cell] - set State(cellAnchor) $cell - set State(cellAnchorOp) add + $w cellselection toggle [list $cell] + set State(cellAnchor) $cell + set State(cellAnchorOp) add } else { - $w selection toggle [list $item] + $w selection toggle [list $item] } } proc ttk::treeview::select.extend.extended {w item cell} { variable State if {$cell ne ""} { - if {$State(cellAnchor) ne ""} { - $w cellselection $State(cellAnchorOp) $State(cellAnchor) $cell - } else { - BrowseTo $w $item $cell - } - } else { - if {[set anchor [$w focus]] ne ""} { - $w selection set [between $w $anchor $item] - } else { - BrowseTo $w $item $cell - } + if {$State(cellAnchor) ne ""} { + $w cellselection $State(cellAnchorOp) $State(cellAnchor) $cell + } else { + BrowseTo $w $item $cell + } + } else { + if {[set anchor [$w focus]] ne ""} { + $w selection set [between $w $anchor $item] + } else { + BrowseTo $w $item $cell + } } } ### Tree structure utilities. # @@ -424,11 +424,11 @@ # proc ttk::treeview::Toggle {w item} { # don't allow toggling on indicators that # are not present in front of leaf items if {[$w children $item] == {}} { - return + return } # not a leaf, toggle! if {[$w item $item -open]} { CloseItem $w $item } else { @@ -453,12 +453,12 @@ $w see $item $w focus $item set State(cellAnchor) $cell set State(cellAnchorOp) set if {$cell ne ""} { - $w cellselection set [list $cell] + $w cellselection set [list $cell] } else { - $w selection set [list $item] + $w selection set [list $item] } } #*EOF* Index: library/ttk/ttk.tcl ================================================================== --- library/ttk/ttk.tcl +++ library/ttk/ttk.tcl @@ -167,21 +167,21 @@ # "default" always present: uplevel #0 [list source -encoding utf-8 [file join $library defaults.tcl]] set builtinThemes [style theme names] foreach {theme scripts} { - classic classicTheme.tcl - alt altTheme.tcl - clam clamTheme.tcl + classic classicTheme.tcl + alt altTheme.tcl + clam clamTheme.tcl winnative winTheme.tcl xpnative {xpTheme.tcl vistaTheme.tcl} - aqua aquaTheme.tcl + aqua aquaTheme.tcl } { if {[lsearch -exact $builtinThemes $theme] >= 0} { - foreach script $scripts { - uplevel #0 [list source -encoding utf-8 [file join $library $script]] - } + foreach script $scripts { + uplevel #0 [list source -encoding utf-8 [file join $library $script]] + } } } } ttk::LoadThemes; rename ::ttk::LoadThemes {} Index: library/ttk/utils.tcl ================================================================== --- library/ttk/utils.tcl +++ library/ttk/utils.tcl @@ -44,11 +44,11 @@ # return 0; } ## ttk::traverseTo $w -- -# Set the keyboard focus to the specified window. +# Set the keyboard focus to the specified window. # proc ttk::traverseTo {w} { set focus [focus] if {$focus ne ""} { event generate $focus <> @@ -117,11 +117,11 @@ # appears on the grab stack. # # See #1239190 and #1411983 for more discussion. # namespace eval ttk { - variable Grab ;# map: window name -> grab token + variable Grab ;# map: window name -> grab token # grab token details: # Two-element list containing: # 1) a script to evaluate to restore the previous grab (if any); # 2) a script to evaluate to restore the focus (if any) @@ -302,17 +302,16 @@ { tk::MouseWheel %W x %D -12.0 } ## Touchpad scrolling # bind TtkScrollable { - if {%# %% 5 != 0} { - return - } - lassign [tk::PreciseScrollDeltas %D] tk::Priv(deltaX) tk::Priv(deltaY) - if {$tk::Priv(deltaX) != 0} { - %W xview scroll [expr {-$tk::Priv(deltaX)}] units - } - if {$tk::Priv(deltaY) != 0} { - %W yview scroll [expr {-$tk::Priv(deltaY)}] units + if {%# %% 5 == 0} { + lassign [tk::PreciseScrollDeltas %D] tk::Priv(deltaX) tk::Priv(deltaY) + if {$tk::Priv(deltaX) != 0} { + %W xview scroll [expr {-$tk::Priv(deltaX)}] units + } + if {$tk::Priv(deltaY) != 0} { + %W yview scroll [expr {-$tk::Priv(deltaY)}] units + } } } #*EOF* Index: library/ttk/vistaTheme.tcl ================================================================== --- library/ttk/vistaTheme.tcl +++ library/ttk/vistaTheme.tcl @@ -14,11 +14,11 @@ namespace eval ttk::theme::vista { ttk::style theme settings vista { - ttk::style configure . \ + ttk::style configure . \ -background SystemButtonFace \ -foreground SystemWindowText \ -selectforeground SystemHighlightText \ -selectbackground SystemHighlight \ -insertcolor SystemWindowText \ @@ -40,192 +40,192 @@ ttk::style map TNotebook.Tab -expand {selected {2 2 2 2}} # Treeview: ttk::style configure Heading -font TkHeadingFont ttk::style configure Treeview -background SystemWindow \ - -stripedbackground System3dLight + -stripedbackground System3dLight ttk::style configure Treeview.Separator \ - -background System3dLight + -background System3dLight ttk::style map Treeview \ -background [list disabled SystemButtonFace \ selected SystemHighlight] \ -foreground [list disabled SystemGrayText \ selected SystemHighlightText] - # Label and Toolbutton + # Label and Toolbutton ttk::style configure TLabelframe.Label -foreground SystemButtonText ttk::style configure Toolbutton -padding 3p - # Combobox + # Combobox ttk::style configure TCombobox -padding 1.5p - ttk::style element create Combobox.border vsapi \ - COMBOBOX 4 {disabled 4 focus 3 active 2 hover 2 {} 1} - ttk::style element create Combobox.background vsapi \ - EDIT 3 {disabled 3 readonly 5 focus 4 hover 2 {} 1} - ttk::style element create Combobox.rightdownarrow vsapi \ - COMBOBOX 6 {disabled 4 pressed 3 active 2 {} 1} \ - -syssize {SM_CXVSCROLL SM_CYVSCROLL} - ttk::style layout TCombobox { - Combobox.border -sticky nswe -border 0 -children { - Combobox.rightdownarrow -side right -sticky ns - Combobox.padding -sticky nswe -children { - Combobox.background -sticky nswe -children { - Combobox.focus -sticky nswe -children { - Combobox.textarea -sticky nswe - } - } - } - } - } - # Vista.Combobox droplist frame - ttk::style element create ComboboxPopdownFrame.background vsapi\ - LISTBOX 3 {disabled 4 active 3 focus 2 {} 1} - ttk::style layout ComboboxPopdownFrame { - ComboboxPopdownFrame.background -sticky news -border 1 -children { - ComboboxPopdownFrame.padding -sticky news - } - } + ttk::style element create Combobox.border vsapi \ + COMBOBOX 4 {disabled 4 focus 3 active 2 hover 2 {} 1} + ttk::style element create Combobox.background vsapi \ + EDIT 3 {disabled 3 readonly 5 focus 4 hover 2 {} 1} + ttk::style element create Combobox.rightdownarrow vsapi \ + COMBOBOX 6 {disabled 4 pressed 3 active 2 {} 1} \ + -syssize {SM_CXVSCROLL SM_CYVSCROLL} + ttk::style layout TCombobox { + Combobox.border -sticky nswe -border 0 -children { + Combobox.rightdownarrow -side right -sticky ns + Combobox.padding -sticky nswe -children { + Combobox.background -sticky nswe -children { + Combobox.focus -sticky nswe -children { + Combobox.textarea -sticky nswe + } + } + } + } + } + # Vista.Combobox droplist frame + ttk::style element create ComboboxPopdownFrame.background vsapi\ + LISTBOX 3 {disabled 4 active 3 focus 2 {} 1} + ttk::style layout ComboboxPopdownFrame { + ComboboxPopdownFrame.background -sticky news -border 1 -children { + ComboboxPopdownFrame.padding -sticky news + } + } ttk::style map TCombobox \ -selectbackground [list !focus SystemWindow] \ -selectforeground [list !focus SystemWindowText] \ -foreground [list \ disabled SystemGrayText \ {readonly focus} SystemHighlightText \ ] \ -focusfill [list {readonly focus} SystemHighlight] - # Entry - ttk::style configure TEntry -padding {1 1 1 1} ;# Needs lookup - ttk::style element create Entry.field vsapi \ - EDIT 6 {disabled 4 focus 3 hover 2 {} 1} -padding {2 2 2 2} - ttk::style element create Entry.background vsapi \ - EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1} - ttk::style layout TEntry { - Entry.field -sticky news -border 0 -children { - Entry.background -sticky news -children { - Entry.padding -sticky news -children { - Entry.textarea -sticky news - } - } - } - } + # Entry + ttk::style configure TEntry -padding {1 1 1 1} ;# Needs lookup + ttk::style element create Entry.field vsapi \ + EDIT 6 {disabled 4 focus 3 hover 2 {} 1} -padding {2 2 2 2} + ttk::style element create Entry.background vsapi \ + EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1} + ttk::style layout TEntry { + Entry.field -sticky news -border 0 -children { + Entry.background -sticky news -children { + Entry.padding -sticky news -children { + Entry.textarea -sticky news + } + } + } + } ttk::style map TEntry \ -selectbackground [list !focus SystemWindow] \ -selectforeground [list !focus SystemWindowText] - # Spinbox - ttk::style configure TSpinbox -padding 0 - ttk::style element create Spinbox.field vsapi \ - EDIT 9 {disabled 4 focus 3 hover 2 {} 1} -padding {1 1 1 2} - ttk::style element create Spinbox.background vsapi \ - EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1} - ttk::style element create Spinbox.innerbg vsapi \ - EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1}\ - -padding {2 0 15 2} - ttk::style element create Spinbox.uparrow vsapi \ - SPIN 1 {disabled 4 pressed 3 active 2 {} 1} \ - -padding 1 -halfheight 1 \ - -syssize { SM_CXVSCROLL SM_CYVSCROLL } - ttk::style element create Spinbox.downarrow vsapi \ - SPIN 2 {disabled 4 pressed 3 active 2 {} 1} \ - -padding 1 -halfheight 1 \ - -syssize { SM_CXVSCROLL SM_CYVSCROLL } - ttk::style layout TSpinbox { - Spinbox.field -sticky nswe -children { - Spinbox.background -sticky news -children { - Spinbox.padding -sticky news -children { - Spinbox.innerbg -sticky news -children { - Spinbox.textarea - } - } - Spinbox.uparrow -side top -sticky ens - Spinbox.downarrow -side bottom -sticky ens - } - } - } + # Spinbox + ttk::style configure TSpinbox -padding 0 + ttk::style element create Spinbox.field vsapi \ + EDIT 9 {disabled 4 focus 3 hover 2 {} 1} -padding {1 1 1 2} + ttk::style element create Spinbox.background vsapi \ + EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1} + ttk::style element create Spinbox.innerbg vsapi \ + EDIT 3 {disabled 3 readonly 3 focus 4 hover 2 {} 1}\ + -padding {2 0 15 2} + ttk::style element create Spinbox.uparrow vsapi \ + SPIN 1 {disabled 4 pressed 3 active 2 {} 1} \ + -padding 1 -halfheight 1 \ + -syssize { SM_CXVSCROLL SM_CYVSCROLL } + ttk::style element create Spinbox.downarrow vsapi \ + SPIN 2 {disabled 4 pressed 3 active 2 {} 1} \ + -padding 1 -halfheight 1 \ + -syssize { SM_CXVSCROLL SM_CYVSCROLL } + ttk::style layout TSpinbox { + Spinbox.field -sticky nswe -children { + Spinbox.background -sticky news -children { + Spinbox.padding -sticky news -children { + Spinbox.innerbg -sticky news -children { + Spinbox.textarea + } + } + Spinbox.uparrow -side top -sticky ens + Spinbox.downarrow -side bottom -sticky ens + } + } + } ttk::style map TSpinbox \ -selectbackground [list !focus SystemWindow] \ -selectforeground [list !focus SystemWindowText] - # SCROLLBAR elements (Vista includes a state for 'hover') - ttk::style element create Vertical.Scrollbar.uparrow vsapi \ - SCROLLBAR 1 {disabled 4 pressed 3 active 2 hover 17 {} 1} \ - -syssize {SM_CXVSCROLL SM_CYVSCROLL} - ttk::style element create Vertical.Scrollbar.downarrow vsapi \ - SCROLLBAR 1 {disabled 8 pressed 7 active 6 hover 18 {} 5} \ - -syssize {SM_CXVSCROLL SM_CYVSCROLL} - ttk::style element create Vertical.Scrollbar.trough vsapi \ - SCROLLBAR 7 {disabled 4 pressed 3 active 2 hover 5 {} 1} - ttk::style element create Vertical.Scrollbar.thumb vsapi \ - SCROLLBAR 3 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ - -syssize {SM_CXVSCROLL SM_CYVSCROLL} - ttk::style element create Vertical.Scrollbar.grip vsapi \ - SCROLLBAR 9 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ - -syssize {SM_CXVSCROLL SM_CYVSCROLL} - ttk::style element create Horizontal.Scrollbar.leftarrow vsapi \ - SCROLLBAR 1 {disabled 12 pressed 11 active 10 hover 19 {} 9} \ - -syssize {SM_CXHSCROLL SM_CYHSCROLL} - ttk::style element create Horizontal.Scrollbar.rightarrow vsapi \ - SCROLLBAR 1 {disabled 16 pressed 15 active 14 hover 20 {} 13} \ - -syssize {SM_CXHSCROLL SM_CYHSCROLL} - ttk::style element create Horizontal.Scrollbar.trough vsapi \ - SCROLLBAR 5 {disabled 4 pressed 3 active 2 hover 5 {} 1} - ttk::style element create Horizontal.Scrollbar.thumb vsapi \ - SCROLLBAR 2 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ - -syssize {SM_CXHSCROLL SM_CYHSCROLL} - ttk::style element create Horizontal.Scrollbar.grip vsapi \ - SCROLLBAR 8 {disabled 4 pressed 3 active 2 hover 5 {} 1} - - # Progressbar - ttk::style element create Horizontal.Progressbar.pbar vsapi \ - PROGRESS 3 {{} 1} -padding 8 - ttk::style layout Horizontal.TProgressbar { - Horizontal.Progressbar.trough -sticky nswe -children { - Horizontal.Progressbar.pbar -side left -sticky ns - Horizontal.Progressbar.ctext -sticky nesw - } - } - ttk::style element create Vertical.Progressbar.pbar vsapi \ - PROGRESS 3 {{} 1} -padding 8 - ttk::style layout Vertical.TProgressbar { - Vertical.Progressbar.trough -sticky nswe -children { - Vertical.Progressbar.pbar -side bottom -sticky we - } - } - - # Scale - ttk::style element create Horizontal.Scale.slider vsapi \ - TRACKBAR 3 {disabled 5 focus 4 pressed 3 active 2 {} 1} \ - -width 6 -height 12 - ttk::style layout Horizontal.TScale { - Scale.focus -sticky nswe -children { - Horizontal.Scale.trough -sticky nswe -children { - Horizontal.Scale.track -sticky we - Horizontal.Scale.slider -side left -sticky {} - } - } - } - ttk::style element create Vertical.Scale.slider vsapi \ - TRACKBAR 6 {disabled 5 focus 4 pressed 3 active 2 {} 1} \ - -width 12 -height 6 - ttk::style layout Vertical.TScale { - Scale.focus -sticky nswe -children { - Vertical.Scale.trough -sticky nswe -children { - Vertical.Scale.track -sticky ns - Vertical.Scale.slider -side top -sticky {} - } - } - } - - # Treeview - ttk::style configure Item -padding {3p 0 0 0} + # SCROLLBAR elements (Vista includes a state for 'hover') + ttk::style element create Vertical.Scrollbar.uparrow vsapi \ + SCROLLBAR 1 {disabled 4 pressed 3 active 2 hover 17 {} 1} \ + -syssize {SM_CXVSCROLL SM_CYVSCROLL} + ttk::style element create Vertical.Scrollbar.downarrow vsapi \ + SCROLLBAR 1 {disabled 8 pressed 7 active 6 hover 18 {} 5} \ + -syssize {SM_CXVSCROLL SM_CYVSCROLL} + ttk::style element create Vertical.Scrollbar.trough vsapi \ + SCROLLBAR 7 {disabled 4 pressed 3 active 2 hover 5 {} 1} + ttk::style element create Vertical.Scrollbar.thumb vsapi \ + SCROLLBAR 3 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ + -syssize {SM_CXVSCROLL SM_CYVSCROLL} + ttk::style element create Vertical.Scrollbar.grip vsapi \ + SCROLLBAR 9 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ + -syssize {SM_CXVSCROLL SM_CYVSCROLL} + ttk::style element create Horizontal.Scrollbar.leftarrow vsapi \ + SCROLLBAR 1 {disabled 12 pressed 11 active 10 hover 19 {} 9} \ + -syssize {SM_CXHSCROLL SM_CYHSCROLL} + ttk::style element create Horizontal.Scrollbar.rightarrow vsapi \ + SCROLLBAR 1 {disabled 16 pressed 15 active 14 hover 20 {} 13} \ + -syssize {SM_CXHSCROLL SM_CYHSCROLL} + ttk::style element create Horizontal.Scrollbar.trough vsapi \ + SCROLLBAR 5 {disabled 4 pressed 3 active 2 hover 5 {} 1} + ttk::style element create Horizontal.Scrollbar.thumb vsapi \ + SCROLLBAR 2 {disabled 4 pressed 3 active 2 hover 5 {} 1} \ + -syssize {SM_CXHSCROLL SM_CYHSCROLL} + ttk::style element create Horizontal.Scrollbar.grip vsapi \ + SCROLLBAR 8 {disabled 4 pressed 3 active 2 hover 5 {} 1} + + # Progressbar + ttk::style element create Horizontal.Progressbar.pbar vsapi \ + PROGRESS 3 {{} 1} -padding 8 + ttk::style layout Horizontal.TProgressbar { + Horizontal.Progressbar.trough -sticky nswe -children { + Horizontal.Progressbar.pbar -side left -sticky ns + Horizontal.Progressbar.ctext -sticky nesw + } + } + ttk::style element create Vertical.Progressbar.pbar vsapi \ + PROGRESS 3 {{} 1} -padding 8 + ttk::style layout Vertical.TProgressbar { + Vertical.Progressbar.trough -sticky nswe -children { + Vertical.Progressbar.pbar -side bottom -sticky we + } + } + + # Scale + ttk::style element create Horizontal.Scale.slider vsapi \ + TRACKBAR 3 {disabled 5 focus 4 pressed 3 active 2 {} 1} \ + -width 6 -height 12 + ttk::style layout Horizontal.TScale { + Scale.focus -sticky nswe -children { + Horizontal.Scale.trough -sticky nswe -children { + Horizontal.Scale.track -sticky we + Horizontal.Scale.slider -side left -sticky {} + } + } + } + ttk::style element create Vertical.Scale.slider vsapi \ + TRACKBAR 6 {disabled 5 focus 4 pressed 3 active 2 {} 1} \ + -width 12 -height 6 + ttk::style layout Vertical.TScale { + Scale.focus -sticky nswe -children { + Vertical.Scale.trough -sticky nswe -children { + Vertical.Scale.track -sticky ns + Vertical.Scale.slider -side top -sticky {} + } + } + } + + # Treeview + ttk::style configure Item -padding {3p 0 0 0} ttk::style configure Treeview -indent 15p ttk::setTreeviewRowHeight - package provide ttk::theme::vista 1.0 + package provide ttk::theme::vista 1.0 } } # ttk::theme::vista::configureNotebookStyle -- # Index: library/ttk/winTheme.tcl ================================================================== --- library/ttk/winTheme.tcl +++ library/ttk/winTheme.tcl @@ -15,11 +15,11 @@ -insertcolor SystemWindowText \ -troughcolor SystemScrollbar \ -font TkDefaultFont ttk::style map "." -foreground {disabled SystemGrayText} - ttk::style map "." -embossed {disabled 1} + ttk::style map "." -embossed {disabled 1} ttk::style configure TButton \ -anchor center -width -11 -relief raised -shiftrelief 1 ttk::style map TButton -relief {{!disabled pressed} sunken} @@ -79,11 +79,11 @@ -background [list disabled SystemButtonFace \ selected SystemHighlight] \ -foreground [list disabled SystemGrayText \ selected SystemHighlightText] - ttk::style configure TProgressbar \ + ttk::style configure TProgressbar \ -background SystemHighlight -borderwidth 0 \ -barsize 22.5p -thickness 11.25p } } ADDED library/unsupported.tcl Index: library/unsupported.tcl ================================================================== --- /dev/null +++ library/unsupported.tcl @@ -0,0 +1,269 @@ +# unsupported.tcl -- +# +# Commands provided by Tk without official support. Use them at your +# own risk. They may change or go away without notice. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +# ---------------------------------------------------------------------- +# Unsupported compatibility interface for folks accessing Tk's private +# commands and variable against recommended usage. +# ---------------------------------------------------------------------- + +namespace eval ::tk::unsupported { + + # Map from the old global names of Tk private commands to their + # new namespace-encapsulated names. + + variable PrivateCommands + array set PrivateCommands { + tkButtonAutoInvoke ::tk::ButtonAutoInvoke + tkButtonDown ::tk::ButtonDown + tkButtonEnter ::tk::ButtonEnter + tkButtonInvoke ::tk::ButtonInvoke + tkButtonLeave ::tk::ButtonLeave + tkButtonUp ::tk::ButtonUp + tkCancelRepeat ::tk::CancelRepeat + tkCheckRadioDown ::tk::CheckRadioDown + tkCheckRadioEnter ::tk::CheckRadioEnter + tkCheckRadioInvoke ::tk::CheckRadioInvoke + tkColorDialog ::tk::dialog::color:: + tkColorDialog_BuildDialog ::tk::dialog::color::BuildDialog + tkColorDialog_CancelCmd ::tk::dialog::color::CancelCmd + tkColorDialog_Config ::tk::dialog::color::Config + tkColorDialog_CreateSelector ::tk::dialog::color::CreateSelector + tkColorDialog_DrawColorScale ::tk::dialog::color::DrawColorScale + tkColorDialog_EnterColorBar ::tk::dialog::color::EnterColorBar + tkColorDialog_InitValues ::tk::dialog::color::InitValues + tkColorDialog_HandleRGBEntry ::tk::dialog::color::HandleRGBEntry + tkColorDialog_HandleSelEntry ::tk::dialog::color::HandleSelEntry + tkColorDialog_LeaveColorBar ::tk::dialog::color::LeaveColorBar + tkColorDialog_MoveSelector ::tk::dialog::color::MoveSelector + tkColorDialog_OkCmd ::tk::dialog::color::OkCmd + tkColorDialog_RedrawColorBars ::tk::dialog::color::RedrawColorBars + tkColorDialog_RedrawFinalColor ::tk::dialog::color::RedrawFinalColor + tkColorDialog_ReleaseMouse ::tk::dialog::color::ReleaseMouse + tkColorDialog_ResizeColorBars ::tk::dialog::color::ResizeColorBars + tkColorDialog_RgbToX ::tk::dialog::color::RgbToX + tkColorDialog_SetRGBValue ::tk::dialog::color::SetRGBValue + tkColorDialog_StartMove ::tk::dialog::color::StartMove + tkColorDialog_XToRgb ::tk::dialog::color::XToRGB + tkConsoleAbout ::tk::ConsoleAbout + tkConsoleBind ::tk::ConsoleBind + tkConsoleExit ::tk::ConsoleExit + tkConsoleHistory ::tk::ConsoleHistory + tkConsoleInit ::tk::ConsoleInit + tkConsoleInsert ::tk::ConsoleInsert + tkConsoleInvoke ::tk::ConsoleInvoke + tkConsoleOutput ::tk::ConsoleOutput + tkConsolePrompt ::tk::ConsolePrompt + tkConsoleSource ::tk::ConsoleSource + tkDarken ::tk::Darken + tkEntryAutoScan ::tk::EntryAutoScan + tkEntryBackspace ::tk::EntryBackspace + tkEntryButton1 ::tk::EntryButton1 + tkEntryClosestGap ::tk::EntryClosestGap + tkEntryGetSelection ::tk::EntryGetSelection + tkEntryInsert ::tk::EntryInsert + tkEntryKeySelect ::tk::EntryKeySelect + tkEntryMouseSelect ::tk::EntryMouseSelect + tkEntryNextWord ::tk::EntryNextWord + tkEntryPaste ::tk::EntryPaste + tkEntryPreviousWord ::tk::EntryPreviousWord + tkEntrySeeInsert ::tk::EntrySeeInsert + tkEntrySetCursor ::tk::EntrySetCursor + tkEntryTranspose ::tk::EntryTranspose + tkEventMotifBindings ::tk::EventMotifBindings + tkFDGetFileTypes ::tk::FDGetFileTypes + tkFirstMenu ::tk::FirstMenu + tkFocusGroup_BindIn ::tk::FocusGroup_BindIn + tkFocusGroup_BindOut ::tk::FocusGroup_BindOut + tkFocusGroup_Create ::tk::FocusGroup_Create + tkFocusGroup_Destroy ::tk::FocusGroup_Destroy + tkFocusGroup_In ::tk::FocusGroup_In + tkFocusGroup_Out ::tk::FocusGroup_Out + tkFocusOK ::tk::FocusOK + tkGenerateMenuSelect ::tk::GenerateMenuSelect + tkIconList ::tk::IconList + tkListbox ::tk::Listbox + tkListboxAutoScan ::tk::ListboxAutoScan + tkListboxBeginExtend ::tk::ListboxBeginExtend + tkListboxBeginSelect ::tk::ListboxBeginSelect + tkListboxBeginToggle ::tk::ListboxBeginToggle + tkListboxCancel ::tk::ListboxCancel + tkListboxDataExtend ::tk::ListboxDataExtend + tkListboxExtendUpDown ::tk::ListboxExtendUpDown + tkListboxKeyAccel_Goto ::tk::ListboxKeyAccel_Goto + tkListboxKeyAccel_Key ::tk::ListboxKeyAccel_Key + tkListboxKeyAccel_Reset ::tk::ListboxKeyAccel_Reset + tkListboxKeyAccel_Set ::tk::ListboxKeyAccel_Set + tkListboxKeyAccel_Unset ::tk::ListboxKeyAccel_Unxet + tkListboxMotion ::tk::ListboxMotion + tkListboxSelectAll ::tk::ListboxSelectAll + tkListboxUpDown ::tk::ListboxUpDown + tkListboxBeginToggle ::tk::ListboxBeginToggle + tkMbButtonUp ::tk::MbButtonUp + tkMbEnter ::tk::MbEnter + tkMbLeave ::tk::MbLeave + tkMbMotion ::tk::MbMotion + tkMbPost ::tk::MbPost + tkMenuButtonDown ::tk::MenuButtonDown + tkMenuDownArrow ::tk::MenuDownArrow + tkMenuDup ::tk::MenuDup + tkMenuEscape ::tk::MenuEscape + tkMenuFind ::tk::MenuFind + tkMenuFindName ::tk::MenuFindName + tkMenuFirstEntry ::tk::MenuFirstEntry + tkMenuInvoke ::tk::MenuInvoke + tkMenuLeave ::tk::MenuLeave + tkMenuLeftArrow ::tk::MenuLeftArrow + tkMenuMotion ::tk::MenuMotion + tkMenuNextEntry ::tk::MenuNextEntry + tkMenuNextMenu ::tk::MenuNextMenu + tkMenuRightArrow ::tk::MenuRightArrow + tkMenuUnpost ::tk::MenuUnpost + tkMenuUpArrow ::tk::MenuUpArrow + tkMessageBox ::tk::MessageBox + tkMotifFDialog ::tk::MotifFDialog + tkMotifFDialog_ActivateDList ::tk::MotifFDialog_ActivateDList + tkMotifFDialog_ActivateFList ::tk::MotifFDialog_ActivateFList + tkMotifFDialog_ActivateFEnt ::tk::MotifFDialog_ActivateFEnt + tkMotifFDialog_ActivateSEnt ::tk::MotifFDialog_ActivateSEnt + tkMotifFDialog ::tk::MotifFDialog + tkMotifFDialog_BrowseDList ::tk::MotifFDialog_BrowseDList + tkMotifFDialog_BrowseFList ::tk::MotifFDialog_BrowseFList + tkMotifFDialog_BuildUI ::tk::MotifFDialog_BuildUI + tkMotifFDialog_CancelCmd ::tk::MotifFDialog_CancelCmd + tkMotifFDialog_Config ::tk::MotifFDialog_Config + tkMotifFDialog_Create ::tk::MotifFDialog_Create + tkMotifFDialog_FileTypes ::tk::MotifFDialog_FileTypes + tkMotifFDialog_FilterCmd ::tk::MotifFDialog_FilterCmd + tkMotifFDialog_InterpFilter ::tk::MotifFDialog_InterpFilter + tkMotifFDialog_LoadFiles ::tk::MotifFDialog_LoadFiles + tkMotifFDialog_MakeSList ::tk::MotifFDialog_MakeSList + tkMotifFDialog_OkCmd ::tk::MotifFDialog_OkCmd + tkMotifFDialog_SetFilter ::tk::MotifFDialog_SetFilter + tkMotifFDialog_SetListMode ::tk::MotifFDialog_SetListMode + tkMotifFDialog_Update ::tk::MotifFDialog_Update + tkPostOverPoint ::tk::PostOverPoint + tkRecolorTree ::tk::RecolorTree + tkRestoreOldGrab ::tk::RestoreOldGrab + tkSaveGrabInfo ::tk::SaveGrabInfo + tkScaleActivate ::tk::ScaleActivate + tkScaleButtonDown ::tk::ScaleButtonDown + tkScaleButton2Down ::tk::ScaleButton2Down + tkScaleControlPress ::tk::ScaleControlPress + tkScaleDrag ::tk::ScaleDrag + tkScaleEndDrag ::tk::ScaleEndDrag + tkScaleIncrement ::tk::ScaleIncrement + tkScreenChanged ::tk::ScreenChanged + tkScrollButtonDown ::tk::ScrollButtonDown + tkScrollButton2Down ::tk::ScrollButton2Down + tkScrollButtonDrag ::tk::ScrollButtonDrag + tkScrollButtonUp ::tk::ScrollButtonUp + tkScrollByPages ::tk::ScrollByPages + tkScrollByUnits ::tk::ScrollByUnits + tkScrollEndDrag ::tk::ScrollEndDrag + tkScrollSelect ::tk::ScrollSelect + tkScrollStartDrag ::tk::ScrollStartDrag + tkScrollTopBottom ::tk::ScrollTopBottom + tkScrollToPos ::tk::ScrollToPos + tkTabToWindow ::tk::TabToWindow + tkTearOffMenu ::tk::TearOffMenu + tkTextAutoScan ::tk::TextAutoScan + tkTextButton1 ::tk::TextButton1 + tkTextClosestGap ::tk::TextClosestGap + tkTextInsert ::tk::TextInsert + tkTextKeyExtend ::tk::TextKeyExtend + tkTextKeySelect ::tk::TextKeySelect + tkTextNextPara ::tk::TextNextPara + tkTextNextPos ::tk::TextNextPos + tkTextNextWord ::tk::TextNextWord + tkTextPaste ::tk::TextPaste + tkTextPrevPara ::tk::TextPrevPara + tkTextPrevPos ::tk::TextPrevPos + tkTextPrevWord ::tk::TextPrevWord + tkTextResetAnchor ::tk::TextResetAnchor + tkTextScrollPages ::tk::TextScrollPages + tkTextSelectTo ::tk::TextSelectTo + tkTextSetCursor ::tk::TextSetCursor + tkTextTranspose ::tk::TextTranspose + tkTextUpDownLine ::tk::TextUpDownLine + tkTraverseToMenu ::tk::TraverseToMenu + tkTraverseWithinMenu ::tk::TraverseWithinMenu + unsupported1 ::tk::unsupported::MacWindowStyle + } + + # Map from the old global names of Tk private variable to their + # new namespace-encapsulated names. + + variable PrivateVariables + array set PrivateVariables { + droped_to_start ::tk::mac::Droped_to_start + histNum ::tk::HistNum + stub_location ::tk::mac::Stub_location + tkFocusIn ::tk::FocusIn + tkFocusOut ::tk::FocusOut + tkPalette ::tk::Palette + tkPriv ::tk::Priv + tkPrivMsgBox ::tk::PrivMsgBox + } +} + +# ::tk::unsupported::ExposePrivateCommand -- +# +# Expose one of Tk's private commands to be visible under its +# old global name +# +# Arguments: +# cmd Global name by which the command was once known, +# or a glob-style pattern. +# +# Results: +# None. +# +# Side effects: +# The old command name in the global namespace is aliased to the +# new private name. + +proc ::tk::unsupported::ExposePrivateCommand {cmd} { + variable PrivateCommands + set cmds [array get PrivateCommands $cmd] + if {[llength $cmds] == 0} { + return -code error -errorcode {TK EXPOSE_PRIVATE_COMMAND} \ + "No compatibility support for \[$cmd]" + } + foreach {old new} $cmds { + namespace eval :: [list interp alias {} $old {}] $new + } +} + +# ::tk::unsupported::ExposePrivateVariable -- +# +# Expose one of Tk's private variables to be visible under its +# old global name +# +# Arguments: +# var Global name by which the variable was once known, +# or a glob-style pattern. +# +# Results: +# None. +# +# Side effects: +# The old variable name in the global namespace is aliased to the +# new private name. + +proc ::tk::unsupported::ExposePrivateVariable {var} { + variable PrivateVariables + set vars [array get PrivateVariables $var] + if {[llength $vars] == 0} { + return -code error -errorcode {TK EXPOSE_PRIVATE_VARIABLE} \ + "No compatibility support for \$$var" + } + namespace eval ::tk::mac {} + foreach {old new} $vars { + namespace eval :: [list upvar "#0" $new $old] + } +} Index: library/xmfbox.tcl ================================================================== --- library/xmfbox.tcl +++ library/xmfbox.tcl @@ -313,14 +313,14 @@ # ::tk::MotifFDialog_BuildUI -- # # Builds the UI components of the Motif file dialog. # # Arguments: -# w Pathname of the dialog to build. +# w Pathname of the dialog to build. # # Results: -# None. +# None. proc ::tk::MotifFDialog_BuildUI {w} { set dataName [lindex [split $w .] end] upvar ::tk::dialog::file::$dataName data @@ -474,13 +474,13 @@ # # Arguments: # w pathname of the dialog box. # # Results: -# A list of two elements. The first element is the directory -# specified # by the filter. The second element is the filter -# pattern itself. +# A list of two elements. The first element is the directory +# specified # by the filter. The second element is the filter +# pattern itself. proc ::tk::MotifFDialog_InterpFilter {w} { upvar ::tk::dialog::file::[winfo name $w] data set text [string trim [$data(fEnt) get]] @@ -536,11 +536,11 @@ # # Load the files and synchronize the "filter" and "selection" fields # boxes. # # Arguments: -# w pathname of the dialog box. +# w pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_Update {w} { @@ -560,11 +560,11 @@ # # Loads the files and directories into the two listboxes according # to the filter setting. # # Arguments: -# w pathname of the dialog box. +# w pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_LoadFiles {w} { @@ -621,11 +621,11 @@ # # This procedure is called when the directory list is browsed # (clicked-over) by the user. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_BrowseDList {w} { @@ -667,11 +667,11 @@ # # This procedure is called when the directory list is activated # (double-clicked) by the user. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_ActivateDList {w} { @@ -715,11 +715,11 @@ # # This procedure is called when the file list is browsed # (clicked-over) by the user. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_BrowseFList {w} { @@ -757,11 +757,11 @@ # # This procedure is called when the file list is activated # (double-clicked) by the user. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_ActivateFList {w} { @@ -783,11 +783,11 @@ # This procedure is called when the user presses Return inside # the "filter" entry. It updates the dialog according to the # text inside the filter entry. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_ActivateFEnt {w} { @@ -806,11 +806,11 @@ # the "selection" entry. It sets the ::tk::Priv(selectFilePath) # variable so that the vwait loop in tk::MotifFDialog will be # terminated. # # Arguments: -# w The pathname of the dialog box. +# w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_ActivateSEnt {w} { @@ -924,11 +924,11 @@ # over a listbox widget. It arranges an idle event to move the # selection of the listbox to the entry that begins with the # keystrokes. # # Arguments: -# w The pathname of the listbox. +# w The pathname of the listbox. # key The key which the user just pressed. # # Results: # None. Index: macosx/README ================================================================== --- macosx/README +++ macosx/README @@ -364,17 +364,10 @@ directories are named differently, e.g. '../../tcl8.7' and '../../tk8.7', you need to manually change the TCL_SRCROOT and TK_SRCROOT settings by editing your ${USER}.pbxuser file (located inside the Tk.xcodeproj bundle directory) with a text editor. -- To enable weak-linking, set the MACOSX_DEPLOYMENT_TARGET environment variable -to the minimal OS version the binaries should be able to run on, e.g: - export MACOSX_DEPLOYMENT_TARGET=10.6 -This requires at least gcc 3.1; with gcc 4 or later, set/add to CFLAGS instead: - export CFLAGS="-mmacosx-version-min=10.6" -Support for weak-linking was added with 8.4.14/8.5a5. - Detailed Instructions for building with macosx/GNUmakefile ---------------------------------------------------------- - Unpack the Tcl and Tk source release archives and place the tcl and tk source trees in a common parent directory. @@ -388,12 +381,12 @@ "tcl${ver}" and "tk${ver}" (where ${ver} is a shell variable containing the Tcl/Tk version number, e.g. '8.7'). Setup this shell variable as follows: ver="8.7" -- Setup environment variables as desired, e.g. for a universal build on 10.5: - CFLAGS="-arch x86_64 -arch arm64 -mmacosx-version-min=10.5" +- Setup environment variables as desired, e.g. for a universal build on 10.9: + CFLAGS="-arch x86_64 -arch arm64 -mmacosx-version-min=10.9" export CFLAGS - Change to the directory containing the Tcl and Tk source trees and build: make -C tcl${ver}/macosx make -C tk${ver}/macosx @@ -475,13 +468,13 @@ The main program in a typical OSX application looks like this (see https://developer.apple.com/library/mac/documentation/Cocoa/\ Reference/ApplicationKit/Classes/NSApplication_Class) void NSApplicationMain(int argc, char *argv[]) { - [NSApplication sharedApplication]; - [NSBundle loadNibNamed:@"myMain" owner:NSApp]; - [NSApp run]; + [NSApplication sharedApplication]; + [NSBundle loadNibNamed:@"myMain" owner:NSApp]; + [NSApp run]; } Here NSApp is a standard global variable, initialized by the OS, which points to an object in a subclass of NSApplication (called TKApplication in the case of the macOS port of Tk). DELETED macosx/Tk-Common.xcconfig Index: macosx/Tk-Common.xcconfig ================================================================== --- macosx/Tk-Common.xcconfig +++ /dev/null @@ -1,45 +0,0 @@ -// -// Tk-Common.xcconfig -- -// -// This file contains the Xcode build settings comon to all -// project configurations in Wish.xcodeproj. -// -// Copyright © 2007-2009 Daniel A. Steffen -// Copyright © 2008-2009 Apple Inc. -// -// See the file "license.terms" for information on usage and redistribution -// of this file, and for a DISCLAIMER OF ALL WARRANTIES. - -HEADER_SEARCH_PATHS = $(TK_SRCROOT)/generic $(TK_SRCROOT)/xlib "$(DERIVED_FILE_DIR)/tcl" "$(DERIVED_FILE_DIR)/tk" $(HEADER_SEARCH_PATHS) -REZ_SEARCH_PATHS = $(TK_SRCROOT)/generic $(TCL_SRCROOT)/generic $(REZ_SEARCH_PATHS) -OTHER_LDFLAGS = -headerpad_max_install_names -sectcreate __TEXT __info_plist "$(DERIVED_FILE_DIR)/tk/Wish-Info.plist" $(OTHER_LDFLAGS) -OTHER_LDFLAGS_AQUA = -INSTALL_PATH = $(APPLICATION_INSTALL_PATH) -INSTALL_MODE_FLAG = go-w,a+rX -GCC_PREFIX_HEADER = $(DERIVED_FILE_DIR)/tk/tkConfig.h -OTHER_CFLAGS = -imacros "$(DERIVED_FILE_DIR)/tcl/tclConfig.h" $(OTHER_CFLAGS) -GCC_GENERATE_DEBUGGING_SYMBOLS = YES -GCC_NO_COMMON_BLOCKS = YES -GCC_DYNAMIC_NO_PIC = YES -GCC_VERSION = 4.2 -GCC = gcc-$(GCC_VERSION) -WARNING_CFLAGS = -Wall -Wextra -Wshadow -Wundef -Wwrite-strings -Wpointer-arith -Winit-self -Wcast-align -Wdisabled-optimization -Winline $(WARNING_CFLAGS) -REZ_RESOURCE_MAP_READ_ONLY = YES -APPLICATION_INSTALL_PATH = /Applications/Utilities -BINDIR = $(PREFIX)/bin -CFLAGS = $(CFLAGS) -CPPFLAGS = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET) $(CPPFLAGS) -FRAMEWORK_INSTALL_PATH = /Library/Frameworks -INCLUDEDIR = $(PREFIX)/include -LIBDIR = $(PREFIX)/lib -MANDIR = $(PREFIX)/man -PREFIX = /usr/local -TCL_BUILD_DIR = $(OBJROOT)/../tcl/Tcl.build/$(CONFIGURATION)/Tcl.build/Objects -TCL_CONFIGURE_ARGS = --enable-dtrace -TCL_FRAMEWORK_DIR = $(SYMROOT)/../tcl/$(CONFIGURATION) -TCL_LIBRARY = $(LIBDIR)/tcl$(VERSION) -TCL_PACKAGE_PATH = "$(LIBDIR)" -TCL_DEFS = HAVE_TCL_CONFIG_H -TK_LIBRARY = $(LIBDIR)/tk$(VERSION) -TK_DEFS = HAVE_TK_CONFIG_H -VERSION = 8.7 DELETED macosx/Tk-Debug.xcconfig Index: macosx/Tk-Debug.xcconfig ================================================================== --- macosx/Tk-Debug.xcconfig +++ /dev/null @@ -1,19 +0,0 @@ -// -// Tk-Debug.xcconfig -- -// -// This file contains the Xcode build settings for all Debug -// project configurations in Wish.xcodeproj. -// -// Copyright © 2007 Daniel A. Steffen -// -// See the file "license.terms" for information on usage and redistribution -// of this file, and for a DISCLAIMER OF ALL WARRANTIES. - -#include "Tk-Common.xcconfig" - -DEBUG_INFORMATION_FORMAT = dwarf -DEPLOYMENT_POSTPROCESSING = NO -GCC_OPTIMIZATION_LEVEL = 0 -GCC_PREPROCESSOR_DEFINITIONS = DEBUGLEVEL=4 $(TCL_DEFS) $(TK_DEFS) $(GCC_PREPROCESSOR_DEFINITIONS) -CONFIGURE_ARGS = --enable-symbols $(TCL_CONFIGURE_ARGS) $(CONFIGURE_ARGS) -MAKE_TARGET = develop DELETED macosx/Tk-Release.xcconfig Index: macosx/Tk-Release.xcconfig ================================================================== --- macosx/Tk-Release.xcconfig +++ /dev/null @@ -1,19 +0,0 @@ -// -// Tk-Release.xcconfig -- -// -// This file contains the Xcode build settings for all Release -// project configurations in Wish.xcodeproj. -// -// Copyright © 2007 Daniel A. Steffen -// -// See the file "license.terms" for information on usage and redistribution -// of this file, and for a DISCLAIMER OF ALL WARRANTIES. - -#include "Tk-Common.xcconfig" - -DEBUG_INFORMATION_FORMAT = dwarf-with-dsym -// DEPLOYMENT_POSTPROCESSING = YES -GCC_OPTIMIZATION_LEVEL = 2 -GCC_PREPROCESSOR_DEFINITIONS = NDEBUG $(TCL_DEFS) $(TK_DEFS) $(GCC_PREPROCESSOR_DEFINITIONS) -CONFIGURE_ARGS = --disable-symbols $(TCL_CONFIGURE_ARGS) $(CONFIGURE_ARGS) -MAKE_TARGET = deploy DELETED macosx/Tk.xcodeproj/default.pbxuser Index: macosx/Tk.xcodeproj/default.pbxuser ================================================================== --- macosx/Tk.xcodeproj/default.pbxuser +++ /dev/null @@ -1,399 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = F9E61D1C090A4282002B3151 /* Wish */; - activeTarget = F9E61D16090A3E94002B3151 /* Tk */; - codeSenseManager = F944EB9D08F798180049FDD4 /* Code sense */; - executables = ( - F9E61D1C090A4282002B3151 /* Wish */, - F944EB8F08F798100049FDD4 /* tktest */, - F9FD31F50CC1AD070073837D /* tktest-X11 */, - ); - perUserDictionary = { - com.apple.ide.smrt.PBXUserSmartGroupsKey.Rev10 = <040b73747265616d747970656481e8038401408484840e4e534d757461626c654172726179008484074e534172726179008484084e534f626a65637400858401690192848484134e534d757461626c6544696374696f6e6172790084840c4e5344696374696f6e6172790095960792848484084e53537472696e67019584012b046e616d658692849a9a14496d706c656d656e746174696f6e2046696c65738692849a9a195042585472616e7369656e744c6f636174696f6e4174546f708692849a9a06626f74746f6d8692849a9a0b707265666572656e63657386928497960892849a9a0669734c6561668692848484084e534e756d626572008484074e5356616c7565009584012a849696008692849a9a04726f6f748692849a9a093c50524f4a4543543e8692849a9a09726563757273697665869284a29da496018692849a9a05696d6167658692849a9a0b536d617274466f6c6465728692849a9a0763616e536176658692a892849a9a1250425850726f6a65637453636f70654b65798692849a9a035945538692849a9a0572656765788692849a9a065c2e286329248692849a9a07666e6d617463688692849a9a00868692849a9a146162736f6c75746550617468546f42756e646c658692849a9a008692849a9a0b6465736372697074696f6e8692849a9a103c6e6f206465736372697074696f6e3e8692849a9a08676c6f62616c49448692849a9a183143433045413430303433353045463930303434343130428692849a9a03636c7a8692849a9a1550425846696c656e616d65536d61727447726f7570868686>; - }; - sourceControlManager = F944EB9C08F798180049FDD4 /* Source Control */; - userBuildSettings = { - SYMROOT = "${SRCROOT}/../../build/tk"; - TCL_SRCROOT = "${SRCROOT}/../../tcl"; - TK_SRCROOT = "${SRCROOT}/../../tk"; - }; - }; - 8DD76FA90486AB0100D96B5E /* tktest */ = { - activeExec = 0; - executables = ( - F944EB8F08F798100049FDD4 /* tktest */, - ); - }; - F944EB8F08F798100049FDD4 /* tktest */ = { - isa = PBXExecutable; - activeArgIndices = ( - YES, - NO, - NO, - NO, - NO, - NO, - NO, - ); - argumentStrings = ( - "${TK_SRCROOT}/library/demos/widget", - "${TK_SRCROOT}/tests/all.tcl", - "${TK_SRCROOT}/tests/ttk/all.tcl", - "-geometry +0+0", - "-singleproc 1", - "-verbose \"bet\"", - "-skip window-2.9", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - "PBXLSLaunchAction-0" = { - PBXLSLaunchAction = 0; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXLSRunLaunchConfig; - displayName = "Executable Runner"; - identifier = com.apple.Xcode.launch.runConfig; - remoteHostInfo = ""; - startActionInfo = ""; - }; - "PBXLSLaunchAction-1" = { - PBXLSLaunchAction = 1; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXGDB_LaunchConfig; - displayName = GDB; - identifier = com.apple.Xcode.launch.GDBMI_Config; - remoteHostInfo = ""; - startActionInfo = ""; - }; - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 0; - environmentEntries = ( - { - active = YES; - name = TCL_LIBRARY; - value = "${TCL_SRCROOT}/library"; - }, - { - active = YES; - name = TK_LIBRARY; - value = "${TK_SRCROOT}/library"; - }, - { - active = YES; - name = TCLLIBPATH; - value = /Library/Tcl; - }, - { - active = YES; - name = TK_SRCROOT; - value = "${TK_SRCROOT}"; - }, - { - active = NO; - name = TK_CONSOLE; - value = 1; - }, - { - active = NO; - name = DYLD_PRINT_LIBRARIES; - }, - { - active = NO; - name = NSTraceEvents; - value = YES; - }, - { - active = NO; - name = MallocBadFreeAbort; - value = 1; - }, - { - active = NO; - name = MallocLogFile; - value = /tmp/malloc.log; - }, - { - active = NO; - name = MallocStackLogging; - value = 1; - }, - { - active = NO; - name = MallocStackLoggingNoCompact; - value = 1; - }, - { - active = NO; - name = MallocPreScribble; - value = 1; - }, - { - active = NO; - name = MallocScribble; - value = 1; - }, - { - active = NO; - name = NSZombieEnabled; - value = YES; - }, - { - active = NO; - name = NSDeallocateZombies; - value = YES; - }, - { - active = NO; - name = NSAutoreleaseFreedObjectCheckEnabled; - value = YES; - }, - { - active = NO; - name = NSEnableAutoreleasePool; - value = NO; - }, - { - active = NO; - name = AUTO_LOG_ALL; - value = YES; - }, - { - active = NO; - name = AUTO_LOG_NOISY; - value = YES; - }, - { - active = NO; - name = AUTO_REFERENCE_COUNT_LOGGING; - value = YES; - }, - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = tktest; - showTypeColumn = 0; - sourceDirectories = ( - ); - }; - F944EB9C08F798180049FDD4 /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - repositoryNamesForRoots = { - .. = ""; - }; - scmConfiguration = { - CVSToolPath = /usr/bin/cvs; - CVSUseSSH = NO; - SubversionToolPath = /usr/bin/svn; - repositoryNamesForRoots = { - .. = ""; - }; - }; - scmType = scm.cvs; - }; - F944EB9D08F798180049FDD4 /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - F97258A50A86873C00096C78 /* tktest-X11 */ = { - activeExec = 0; - executables = ( - F9FD31F50CC1AD070073837D /* tktest-X11 */, - ); - }; - F9E61D16090A3E94002B3151 /* Tk */ = { - activeExec = 0; - executables = ( - F9E61D1C090A4282002B3151 /* Wish */, - ); - }; - F9E61D1C090A4282002B3151 /* Wish */ = { - isa = PBXExecutable; - activeArgIndices = ( - YES, - ); - argumentStrings = ( - "${TK_SRCROOT}/library/demos/widget", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - "PBXLSLaunchAction-0" = { - PBXLSLaunchAction = 0; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXLSRunLaunchConfig; - displayName = "Executable Runner"; - identifier = com.apple.Xcode.launch.runConfig; - remoteHostInfo = ""; - startActionInfo = ""; - }; - "PBXLSLaunchAction-1" = { - PBXLSLaunchAction = 1; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXGDB_LaunchConfig; - displayName = GDB; - identifier = com.apple.Xcode.launch.GDBMI_Config; - remoteHostInfo = ""; - startActionInfo = ""; - }; - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 0; - environmentEntries = ( - { - active = NO; - name = DYLD_PRINT_LIBRARIES; - }, - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = Wish; - showTypeColumn = 0; - sourceDirectories = ( - ); - }; - F9FD31F50CC1AD070073837D /* tktest-X11 */ = { - isa = PBXExecutable; - activeArgIndices = ( - YES, - NO, - NO, - NO, - NO, - NO, - NO, - ); - argumentStrings = ( - "${TK_SRCROOT}/library/demos/widget", - "${TK_SRCROOT}/tests/all.tcl", - "${TK_SRCROOT}/tests/ttk/all.tcl", - "-geometry +0+0", - "-singleproc 1", - "-verbose \"bet\"", - "-skip window-2.9", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - "PBXLSLaunchAction-0" = { - PBXLSLaunchAction = 0; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXLSRunLaunchConfig; - displayName = "Executable Runner"; - identifier = com.apple.Xcode.launch.runConfig; - remoteHostInfo = ""; - startActionInfo = ""; - }; - "PBXLSLaunchAction-1" = { - PBXLSLaunchAction = 1; - PBXLSLaunchStartAction = 1; - PBXLSLaunchStdioStyle = 2; - PBXLSLaunchStyle = 0; - class = PBXGDB_LaunchConfig; - displayName = GDB; - identifier = com.apple.Xcode.launch.GDBMI_Config; - remoteHostInfo = ""; - startActionInfo = ""; - }; - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 0; - environmentEntries = ( - { - active = YES; - name = TCL_LIBRARY; - value = "${TCL_SRCROOT}/library"; - }, - { - active = YES; - name = TK_LIBRARY; - value = "${TK_SRCROOT}/library"; - }, - { - active = YES; - name = TCLLIBPATH; - value = /Library/Tcl; - }, - { - active = YES; - name = DISPLAY; - value = ":0"; - }, - { - active = NO; - name = DYLD_PRINT_LIBRARIES; - }, - { - active = NO; - name = MallocBadFreeAbort; - value = 1; - }, - { - active = NO; - name = MallocLogFile; - value = /tmp/malloc.log; - }, - { - active = NO; - name = MallocStackLogging; - value = 1; - }, - { - active = NO; - name = MallocStackLoggingNoCompact; - value = 1; - }, - { - active = NO; - name = MallocPreScribble; - value = 1; - }, - { - active = NO; - name = MallocScribble; - value = 1; - }, - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = "tktest-X11"; - showTypeColumn = 0; - sourceDirectories = ( - ); - }; -} DELETED macosx/Tk.xcodeproj/project.pbxproj Index: macosx/Tk.xcodeproj/project.pbxproj ================================================================== --- macosx/Tk.xcodeproj/project.pbxproj +++ /dev/null @@ -1,5713 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - F9152B090EAF8A5000CD5C7B /* tkBusy.c in Sources */ = {isa = PBXBuildFile; fileRef = F9152B080EAF8A5000CD5C7B /* tkBusy.c */; }; - F9152B0A0EAF8A5700CD5C7B /* tkBusy.c in Sources */ = {isa = PBXBuildFile; fileRef = F9152B080EAF8A5000CD5C7B /* tkBusy.c */; }; - F92EE8BF0E62F846001A6E80 /* tkImgPhInstance.c in Sources */ = {isa = PBXBuildFile; fileRef = F92EE8BE0E62F846001A6E80 /* tkImgPhInstance.c */; }; - F92EE8D30E62F939001A6E80 /* tkImgPhInstance.c in Sources */ = {isa = PBXBuildFile; fileRef = F92EE8BE0E62F846001A6E80 /* tkImgPhInstance.c */; }; - F93599B30DF1F75400E04F67 /* tclOO.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B20DF1F75400E04F67 /* tclOO.c */; }; - F93599B70DF1F76100E04F67 /* tclOOBasic.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B60DF1F76100E04F67 /* tclOOBasic.c */; }; - F93599B90DF1F76600E04F67 /* tclOOCall.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B80DF1F76600E04F67 /* tclOOCall.c */; }; - F93599BC0DF1F77000E04F67 /* tclOODefineCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599BB0DF1F77000E04F67 /* tclOODefineCmds.c */; }; - F93599BE0DF1F77400E04F67 /* tclOOInfo.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599BD0DF1F77400E04F67 /* tclOOInfo.c */; }; - F93599C20DF1F78300E04F67 /* tclOOMethod.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C10DF1F78300E04F67 /* tclOOMethod.c */; }; - F93599C40DF1F78800E04F67 /* tclOOStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C30DF1F78800E04F67 /* tclOOStubInit.c */; }; - F93599C60DF1F78D00E04F67 /* tclOOStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C50DF1F78D00E04F67 /* tclOOStubLib.c */; }; - F94523A20E6FC2AC00C1D987 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F94523A10E6FC2AC00C1D987 /* Cocoa.framework */; }; - F95D77EA0DFD820D00A8BF6F /* tclIORTrans.c in Sources */ = {isa = PBXBuildFile; fileRef = F95D77E90DFD820D00A8BF6F /* tclIORTrans.c */; }; - F96437CA0EF0D4B2003F468E /* tclZlib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96437C90EF0D4B2003F468E /* tclZlib.c */; }; - F96437CB0EF0D4B2003F468E /* tclZlib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96437C90EF0D4B2003F468E /* tclZlib.c */; }; - F96437E70EF0D652003F468E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F96437E60EF0D652003F468E /* libz.dylib */; }; - F96437E80EF0D652003F468E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F96437E60EF0D652003F468E /* libz.dylib */; }; - F966BDCF08F27A3F005CB29B /* tk3d.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAC08F27A39005CB29B /* tk3d.c */; }; - F966BDD108F27A3F005CB29B /* tkArgv.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAE08F27A39005CB29B /* tkArgv.c */; }; - F966BDD208F27A3F005CB29B /* tkAtom.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAF08F27A39005CB29B /* tkAtom.c */; }; - F966BDD308F27A3F005CB29B /* tkBind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB008F27A39005CB29B /* tkBind.c */; }; - F966BDD408F27A3F005CB29B /* tkBitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB108F27A39005CB29B /* tkBitmap.c */; }; - F966BDD508F27A3F005CB29B /* tkButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB208F27A39005CB29B /* tkButton.c */; }; - F966BDD708F27A3F005CB29B /* tkCanvArc.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB408F27A39005CB29B /* tkCanvArc.c */; }; - F966BDD808F27A3F005CB29B /* tkCanvas.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB508F27A39005CB29B /* tkCanvas.c */; }; - F966BDDA08F27A3F005CB29B /* tkCanvBmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB708F27A39005CB29B /* tkCanvBmap.c */; }; - F966BDDB08F27A3F005CB29B /* tkCanvImg.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB808F27A39005CB29B /* tkCanvImg.c */; }; - F966BDDC08F27A3F005CB29B /* tkCanvLine.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB908F27A39005CB29B /* tkCanvLine.c */; }; - F966BDDD08F27A3F005CB29B /* tkCanvPoly.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABA08F27A39005CB29B /* tkCanvPoly.c */; }; - F966BDDE08F27A3F005CB29B /* tkCanvPs.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABB08F27A39005CB29B /* tkCanvPs.c */; }; - F966BDE008F27A3F005CB29B /* tkCanvText.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABD08F27A39005CB29B /* tkCanvText.c */; }; - F966BDE108F27A3F005CB29B /* tkCanvUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABE08F27A39005CB29B /* tkCanvUtil.c */; }; - F966BDE208F27A3F005CB29B /* tkCanvWind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABF08F27A39005CB29B /* tkCanvWind.c */; }; - F966BDE308F27A3F005CB29B /* tkClipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC008F27A39005CB29B /* tkClipboard.c */; }; - F966BDE408F27A3F005CB29B /* tkCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC108F27A39005CB29B /* tkCmds.c */; }; - F966BDE508F27A3F005CB29B /* tkColor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC208F27A39005CB29B /* tkColor.c */; }; - F966BDE708F27A3F005CB29B /* tkConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC408F27A39005CB29B /* tkConfig.c */; }; - F966BDE808F27A3F005CB29B /* tkConsole.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC508F27A39005CB29B /* tkConsole.c */; }; - F966BDE908F27A3F005CB29B /* tkCursor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC608F27A39005CB29B /* tkCursor.c */; }; - F966BDEB08F27A3F005CB29B /* tkEntry.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC808F27A39005CB29B /* tkEntry.c */; }; - F966BDED08F27A3F005CB29B /* tkError.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACA08F27A39005CB29B /* tkError.c */; }; - F966BDEE08F27A3F005CB29B /* tkEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACB08F27A39005CB29B /* tkEvent.c */; }; - F966BDEF08F27A3F005CB29B /* tkFileFilter.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACC08F27A39005CB29B /* tkFileFilter.c */; }; - F966BDF108F27A3F005CB29B /* tkFocus.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACE08F27A39005CB29B /* tkFocus.c */; }; - F966BDF208F27A3F005CB29B /* tkFont.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACF08F27A39005CB29B /* tkFont.c */; }; - F966BDF408F27A3F005CB29B /* tkFrame.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD108F27A39005CB29B /* tkFrame.c */; }; - F966BDF508F27A3F005CB29B /* tkGC.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD208F27A39005CB29B /* tkGC.c */; }; - F966BDF608F27A3F005CB29B /* tkGeometry.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD308F27A39005CB29B /* tkGeometry.c */; }; - F966BDF708F27A3F005CB29B /* tkGet.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD408F27A39005CB29B /* tkGet.c */; }; - F966BDF808F27A3F005CB29B /* tkGrab.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD508F27A39005CB29B /* tkGrab.c */; }; - F966BDF908F27A3F005CB29B /* tkGrid.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD608F27A39005CB29B /* tkGrid.c */; }; - F966BDFA08F27A3F005CB29B /* tkImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD708F27A39005CB29B /* tkImage.c */; }; - F966BDFB08F27A3F005CB29B /* tkImgBmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD808F27A39005CB29B /* tkImgBmap.c */; }; - F966BDFC08F27A3F005CB29B /* tkImgGIF.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD908F27A39005CB29B /* tkImgGIF.c */; }; - F966BDFD08F27A3F005CB29B /* tkImgPhoto.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BADA08F27A39005CB29B /* tkImgPhoto.c */; }; - F966BDFE08F27A3F005CB29B /* tkImgPPM.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BADB08F27A39005CB29B /* tkImgPPM.c */; }; - F966BE0708F27A3F005CB29B /* tkListbox.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE408F27A39005CB29B /* tkListbox.c */; }; - F966BE0808F27A3F005CB29B /* tkMacWinMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE508F27A39005CB29B /* tkMacWinMenu.c */; }; - F966BE0908F27A3F005CB29B /* tkMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE608F27A39005CB29B /* tkMain.c */; }; - F966BE0A08F27A3F005CB29B /* tkMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE708F27A39005CB29B /* tkMenu.c */; }; - F966BE0C08F27A3F005CB29B /* tkMenubutton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE908F27A39005CB29B /* tkMenubutton.c */; }; - F966BE0E08F27A3F005CB29B /* tkMenuDraw.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEB08F27A39005CB29B /* tkMenuDraw.c */; }; - F966BE0F08F27A3F005CB29B /* tkMessage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEC08F27A39005CB29B /* tkMessage.c */; }; - F966BE1008F27A3F005CB29B /* tkObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAED08F27A39005CB29B /* tkObj.c */; }; - F966BE1108F27A3F005CB29B /* tkOldConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEE08F27A39005CB29B /* tkOldConfig.c */; }; - F966BE1208F27A3F005CB29B /* tkOption.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEF08F27A39005CB29B /* tkOption.c */; }; - F966BE1308F27A3F005CB29B /* tkPack.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF008F27A39005CB29B /* tkPack.c */; }; - F966BE1408F27A3F005CB29B /* tkPanedWindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF108F27A39005CB29B /* tkPanedWindow.c */; }; - F966BE1508F27A3F005CB29B /* tkPlace.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF208F27A39005CB29B /* tkPlace.c */; }; - F966BE1708F27A3F005CB29B /* tkPointer.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF408F27A39005CB29B /* tkPointer.c */; }; - F966BE1908F27A3F005CB29B /* tkRectOval.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF608F27A39005CB29B /* tkRectOval.c */; }; - F966BE1A08F27A3F005CB29B /* tkScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF708F27A39005CB29B /* tkScale.c */; }; - F966BE1C08F27A40005CB29B /* tkScrollbar.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF908F27A39005CB29B /* tkScrollbar.c */; }; - F966BE1E08F27A40005CB29B /* tkSelect.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFB08F27A39005CB29B /* tkSelect.c */; }; - F966BE2008F27A40005CB29B /* tkSquare.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFD08F27A39005CB29B /* tkSquare.c */; }; - F966BE2208F27A40005CB29B /* tkStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFF08F27A39005CB29B /* tkStubInit.c */; }; - F966BE2308F27A40005CB29B /* tkStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0008F27A39005CB29B /* tkStubLib.c */; }; - F966BE2408F27A40005CB29B /* tkStyle.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0108F27A39005CB29B /* tkStyle.c */; }; - F966BE2508F27A40005CB29B /* tkTest.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0208F27A39005CB29B /* tkTest.c */; }; - F966BE2608F27A40005CB29B /* tkText.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0308F27A39005CB29B /* tkText.c */; }; - F966BE2808F27A40005CB29B /* tkTextBTree.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0508F27A39005CB29B /* tkTextBTree.c */; }; - F966BE2908F27A40005CB29B /* tkTextDisp.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0608F27A39005CB29B /* tkTextDisp.c */; }; - F966BE2B08F27A40005CB29B /* tkTextImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0808F27A39005CB29B /* tkTextImage.c */; }; - F966BE2C08F27A40005CB29B /* tkTextIndex.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0908F27A39005CB29B /* tkTextIndex.c */; }; - F966BE2D08F27A40005CB29B /* tkTextMark.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0A08F27A39005CB29B /* tkTextMark.c */; }; - F966BE2E08F27A40005CB29B /* tkTextTag.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0B08F27A39005CB29B /* tkTextTag.c */; }; - F966BE2F08F27A40005CB29B /* tkTextWind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0C08F27A39005CB29B /* tkTextWind.c */; }; - F966BE3008F27A40005CB29B /* tkTrig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0D08F27A39005CB29B /* tkTrig.c */; }; - F966BE3108F27A40005CB29B /* tkUndo.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0E08F27A39005CB29B /* tkUndo.c */; }; - F966BE3308F27A40005CB29B /* tkUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1008F27A39005CB29B /* tkUtil.c */; }; - F966BE3408F27A40005CB29B /* tkVisual.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1108F27A39005CB29B /* tkVisual.c */; }; - F966BE3508F27A40005CB29B /* tkWindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1208F27A39005CB29B /* tkWindow.c */; }; - F966BEDB08F27A40005CB29B /* tkMacOSXBitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBC508F27A3B005CB29B /* tkMacOSXBitmap.c */; }; - F966BEDC08F27A40005CB29B /* tkMacOSXButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBC608F27A3B005CB29B /* tkMacOSXButton.c */; }; - F966BEDE08F27A40005CB29B /* tkMacOSXClipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBC808F27A3B005CB29B /* tkMacOSXClipboard.c */; }; - F966BEDF08F27A40005CB29B /* tkMacOSXColor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBC908F27A3B005CB29B /* tkMacOSXColor.c */; }; - F966BEE008F27A40005CB29B /* tkMacOSXConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBCA08F27A3B005CB29B /* tkMacOSXConfig.c */; }; - F966BEE108F27A40005CB29B /* tkMacOSXCursor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBCB08F27A3B005CB29B /* tkMacOSXCursor.c */; }; - F966BEE308F27A40005CB29B /* tkMacOSXDebug.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBCD08F27A3B005CB29B /* tkMacOSXDebug.c */; }; - F966BEE608F27A40005CB29B /* tkMacOSXDialog.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD008F27A3B005CB29B /* tkMacOSXDialog.c */; }; - F966BEE708F27A40005CB29B /* tkMacOSXDraw.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD108F27A3B005CB29B /* tkMacOSXDraw.c */; }; - F966BEE808F27A40005CB29B /* tkMacOSXEmbed.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD208F27A3B005CB29B /* tkMacOSXEmbed.c */; }; - F966BEE908F27A40005CB29B /* tkMacOSXEntry.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD308F27A3B005CB29B /* tkMacOSXEntry.c */; }; - F966BEEA08F27A40005CB29B /* tkMacOSXEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD408F27A3B005CB29B /* tkMacOSXEvent.c */; }; - F966BEEC08F27A40005CB29B /* tkMacOSXFont.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD608F27A3B005CB29B /* tkMacOSXFont.c */; }; - F966BEED08F27A40005CB29B /* tkMacOSXHLEvents.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD708F27A3B005CB29B /* tkMacOSXHLEvents.c */; }; - F966BEEE08F27A40005CB29B /* tkMacOSXInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBD808F27A3B005CB29B /* tkMacOSXInit.c */; settings = {COMPILER_FLAGS = "-DTK_LIBRARY=\\\"$(TK_LIBRARY)\\\""; }; }; - F966BEF108F27A40005CB29B /* tkMacOSXKeyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBDB08F27A3B005CB29B /* tkMacOSXKeyboard.c */; }; - F966BEF208F27A40005CB29B /* tkMacOSXKeyEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBDC08F27A3B005CB29B /* tkMacOSXKeyEvent.c */; }; - F966BEF308F27A40005CB29B /* tkMacOSXMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBDD08F27A3B005CB29B /* tkMacOSXMenu.c */; }; - F966BEF608F27A40005CB29B /* tkMacOSXMenubutton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBE008F27A3B005CB29B /* tkMacOSXMenubutton.c */; }; - F966BEF708F27A40005CB29B /* tkMacOSXMenus.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBE108F27A3B005CB29B /* tkMacOSXMenus.c */; }; - F966BEF808F27A40005CB29B /* tkMacOSXMouseEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBE208F27A3B005CB29B /* tkMacOSXMouseEvent.c */; }; - F966BEF908F27A40005CB29B /* tkMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBE308F27A3B005CB29B /* tkMacOSXNotify.c */; }; - F966BF0108F27A40005CB29B /* tkMacOSXRegion.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBEB08F27A3C005CB29B /* tkMacOSXRegion.c */; }; - F966BF0308F27A40005CB29B /* tkMacOSXScrlbr.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBED08F27A3C005CB29B /* tkMacOSXScrlbr.c */; }; - F966BF0408F27A40005CB29B /* tkMacOSXSend.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBEE08F27A3C005CB29B /* tkMacOSXSend.c */; }; - F966BF0508F27A40005CB29B /* tkMacOSXSubwindows.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBEF08F27A3C005CB29B /* tkMacOSXSubwindows.c */; }; - F966BF0608F27A40005CB29B /* tkMacOSXTest.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBF008F27A3C005CB29B /* tkMacOSXTest.c */; }; - F966BF0708F27A40005CB29B /* tkMacOSXWindowEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBF108F27A3C005CB29B /* tkMacOSXWindowEvent.c */; }; - F966BF0808F27A40005CB29B /* tkMacOSXWm.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBF208F27A3C005CB29B /* tkMacOSXWm.c */; }; - F966BF0B08F27A40005CB29B /* tkMacOSXXStubs.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BBF508F27A3C005CB29B /* tkMacOSXXStubs.c */; }; - F966BF7F08F27A41005CB29B /* tkAppInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7508F27A3D005CB29B /* tkAppInit.c */; settings = {COMPILER_FLAGS = "-DTK_TEST"; }; }; - F966BF8308F27A41005CB29B /* tkUnix3d.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7908F27A3D005CB29B /* tkUnix3d.c */; }; - F966BF9608F27A41005CB29B /* tkUnixScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8C08F27A3D005CB29B /* tkUnixScale.c */; }; - F966C02A08F27A42005CB29B /* xcolors.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BD2408F27A3F005CB29B /* xcolors.c */; }; - F966C02B08F27A42005CB29B /* xdraw.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BD2508F27A3F005CB29B /* xdraw.c */; }; - F966C02C08F27A42005CB29B /* xgc.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BD2608F27A3F005CB29B /* xgc.c */; }; - F966C02D08F27A42005CB29B /* ximage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BD2708F27A3F005CB29B /* ximage.c */; }; - F966C02E08F27A42005CB29B /* xutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BD2808F27A3F005CB29B /* xutil.c */; }; - F966C07508F2820D005CB29B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F966C07408F2820D005CB29B /* CoreFoundation.framework */; }; - F966C07708F2821B005CB29B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F966C07608F2821B005CB29B /* Carbon.framework */; }; - F966C07908F28233005CB29B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F966C07808F28233005CB29B /* IOKit.framework */; }; - F96888050AF786D5000797B5 /* ttkBlink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E10AF786D5000797B5 /* ttkBlink.c */; }; - F96888060AF786D5000797B5 /* ttkButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E20AF786D5000797B5 /* ttkButton.c */; }; - F96888070AF786D5000797B5 /* ttkCache.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E30AF786D5000797B5 /* ttkCache.c */; }; - F96888080AF786D5000797B5 /* ttkClamTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E40AF786D5000797B5 /* ttkClamTheme.c */; }; - F96888090AF786D5000797B5 /* ttkClassicTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E50AF786D5000797B5 /* ttkClassicTheme.c */; }; - F968880A0AF786D5000797B5 /* ttkDefaultTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E70AF786D5000797B5 /* ttkDefaultTheme.c */; }; - F968880B0AF786D5000797B5 /* ttkElements.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E80AF786D5000797B5 /* ttkElements.c */; }; - F968880C0AF786D5000797B5 /* ttkEntry.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E90AF786D5000797B5 /* ttkEntry.c */; }; - F968880D0AF786D5000797B5 /* ttkFrame.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EA0AF786D5000797B5 /* ttkFrame.c */; }; - F968880E0AF786D5000797B5 /* ttkImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EB0AF786D5000797B5 /* ttkImage.c */; }; - F968880F0AF786D5000797B5 /* ttkInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EC0AF786D5000797B5 /* ttkInit.c */; }; - F96888100AF786D5000797B5 /* ttkLabel.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887ED0AF786D5000797B5 /* ttkLabel.c */; }; - F96888110AF786D5000797B5 /* ttkLayout.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EE0AF786D5000797B5 /* ttkLayout.c */; }; - F96888120AF786D5000797B5 /* ttkManager.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EF0AF786D5000797B5 /* ttkManager.c */; }; - F96888130AF786D5000797B5 /* ttkNotebook.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F10AF786D5000797B5 /* ttkNotebook.c */; }; - F96888140AF786D5000797B5 /* ttkPanedwindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F20AF786D5000797B5 /* ttkPanedwindow.c */; }; - F96888150AF786D5000797B5 /* ttkProgress.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F30AF786D5000797B5 /* ttkProgress.c */; }; - F96888160AF786D5000797B5 /* ttkScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F40AF786D5000797B5 /* ttkScale.c */; }; - F96888170AF786D5000797B5 /* ttkScroll.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F50AF786D5000797B5 /* ttkScroll.c */; }; - F96888180AF786D5000797B5 /* ttkScrollbar.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F60AF786D5000797B5 /* ttkScrollbar.c */; }; - F96888190AF786D5000797B5 /* ttkSeparator.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F70AF786D5000797B5 /* ttkSeparator.c */; }; - F968881A0AF786D5000797B5 /* ttkSquare.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F80AF786D5000797B5 /* ttkSquare.c */; }; - F968881B0AF786D5000797B5 /* ttkState.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F90AF786D5000797B5 /* ttkState.c */; }; - F968881C0AF786D5000797B5 /* ttkStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FA0AF786D5000797B5 /* ttkStubInit.c */; }; - F968881D0AF786D5000797B5 /* ttkStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FB0AF786D5000797B5 /* ttkStubLib.c */; }; - F968881E0AF786D5000797B5 /* ttkTagSet.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FC0AF786D5000797B5 /* ttkTagSet.c */; }; - F968881F0AF786D5000797B5 /* ttkTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FD0AF786D5000797B5 /* ttkTheme.c */; }; - F96888200AF786D5000797B5 /* ttkTrace.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888000AF786D5000797B5 /* ttkTrace.c */; }; - F96888210AF786D5000797B5 /* ttkTrack.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888010AF786D5000797B5 /* ttkTrack.c */; }; - F96888220AF786D5000797B5 /* ttkTreeview.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888020AF786D5000797B5 /* ttkTreeview.c */; }; - F96888230AF786D5000797B5 /* ttkWidget.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888030AF786D5000797B5 /* ttkWidget.c */; }; - F96888850AF78938000797B5 /* ttkMacOSXTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888840AF78938000797B5 /* ttkMacOSXTheme.c */; }; - F96D456F08F272BB004A47F5 /* regcomp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED008F272A7004A47F5 /* regcomp.c */; }; - F96D457208F272BB004A47F5 /* regerror.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED308F272A7004A47F5 /* regerror.c */; }; - F96D457508F272BB004A47F5 /* regexec.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED608F272A7004A47F5 /* regexec.c */; }; - F96D457608F272BB004A47F5 /* regfree.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED708F272A7004A47F5 /* regfree.c */; }; - F96D457B08F272BB004A47F5 /* tclAlloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDC08F272A7004A47F5 /* tclAlloc.c */; settings = {COMPILER_FLAGS = "-DUSE_TCLALLOC=0"; }; }; - F96D457C08F272BB004A47F5 /* tclAsync.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDD08F272A7004A47F5 /* tclAsync.c */; }; - F96D457D08F272BB004A47F5 /* tclBasic.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDE08F272A7004A47F5 /* tclBasic.c */; }; - F96D457E08F272BC004A47F5 /* tclBinary.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDF08F272A7004A47F5 /* tclBinary.c */; }; - F96D457F08F272BC004A47F5 /* tclCkalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE008F272A7004A47F5 /* tclCkalloc.c */; }; - F96D458008F272BC004A47F5 /* tclClock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE108F272A7004A47F5 /* tclClock.c */; }; - F96D458108F272BC004A47F5 /* tclCmdAH.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE208F272A7004A47F5 /* tclCmdAH.c */; }; - F96D458208F272BC004A47F5 /* tclCmdIL.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE308F272A7004A47F5 /* tclCmdIL.c */; }; - F96D458308F272BC004A47F5 /* tclCmdMZ.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE408F272A7004A47F5 /* tclCmdMZ.c */; }; - F96D458408F272BC004A47F5 /* tclCompCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE508F272A7004A47F5 /* tclCompCmds.c */; }; - F96D458508F272BC004A47F5 /* tclCompExpr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE608F272A7004A47F5 /* tclCompExpr.c */; }; - F96D458608F272BC004A47F5 /* tclCompile.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE708F272A7004A47F5 /* tclCompile.c */; }; - F96D458808F272BC004A47F5 /* tclConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE908F272A7004A47F5 /* tclConfig.c */; }; - F96D458908F272BC004A47F5 /* tclDate.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEA08F272A7004A47F5 /* tclDate.c */; }; - F96D458B08F272BC004A47F5 /* tclDictObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEC08F272A7004A47F5 /* tclDictObj.c */; }; - F96D458C08F272BC004A47F5 /* tclEncoding.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EED08F272A7004A47F5 /* tclEncoding.c */; }; - F96D458D08F272BC004A47F5 /* tclEnv.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEE08F272A7004A47F5 /* tclEnv.c */; }; - F96D458E08F272BC004A47F5 /* tclEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEF08F272A7004A47F5 /* tclEvent.c */; }; - F96D458F08F272BC004A47F5 /* tclExecute.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF008F272A7004A47F5 /* tclExecute.c */; }; - F96D459008F272BC004A47F5 /* tclFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF108F272A7004A47F5 /* tclFCmd.c */; }; - F96D459108F272BC004A47F5 /* tclFileName.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF208F272A7004A47F5 /* tclFileName.c */; }; - F96D459308F272BC004A47F5 /* tclGet.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF408F272A7004A47F5 /* tclGet.c */; }; - F96D459508F272BC004A47F5 /* tclHash.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF608F272A7004A47F5 /* tclHash.c */; }; - F96D459608F272BC004A47F5 /* tclHistory.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF708F272A7004A47F5 /* tclHistory.c */; }; - F96D459708F272BC004A47F5 /* tclIndexObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF808F272A7004A47F5 /* tclIndexObj.c */; }; - F96D459B08F272BC004A47F5 /* tclInterp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EFC08F272A7004A47F5 /* tclInterp.c */; }; - F96D459D08F272BC004A47F5 /* tclIO.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EFE08F272A7004A47F5 /* tclIO.c */; }; - F96D459F08F272BC004A47F5 /* tclIOCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0008F272A7004A47F5 /* tclIOCmd.c */; }; - F96D45A008F272BC004A47F5 /* tclIOGT.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0108F272A7004A47F5 /* tclIOGT.c */; }; - F96D45A108F272BC004A47F5 /* tclIORChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0208F272A7004A47F5 /* tclIORChan.c */; }; - F96D45A208F272BC004A47F5 /* tclIOSock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0308F272A7004A47F5 /* tclIOSock.c */; }; - F96D45A308F272BC004A47F5 /* tclIOUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0408F272A7004A47F5 /* tclIOUtil.c */; }; - F96D45A408F272BC004A47F5 /* tclLink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0508F272A7004A47F5 /* tclLink.c */; }; - F96D45A508F272BC004A47F5 /* tclListObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0608F272A7004A47F5 /* tclListObj.c */; }; - F96D45A608F272BC004A47F5 /* tclLiteral.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0708F272A7004A47F5 /* tclLiteral.c */; }; - F96D45A708F272BC004A47F5 /* tclLoad.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0808F272A7004A47F5 /* tclLoad.c */; }; - F96D45A908F272BC004A47F5 /* tclMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0A08F272A7004A47F5 /* tclMain.c */; }; - F96D45AA08F272BC004A47F5 /* tclNamesp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0B08F272A7004A47F5 /* tclNamesp.c */; }; - F96D45AB08F272BC004A47F5 /* tclNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0C08F272A7004A47F5 /* tclNotify.c */; }; - F96D45AC08F272BC004A47F5 /* tclObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0D08F272A7004A47F5 /* tclObj.c */; }; - F96D45AD08F272BC004A47F5 /* tclPanic.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0E08F272A7004A47F5 /* tclPanic.c */; }; - F96D45AE08F272BC004A47F5 /* tclParse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0F08F272A7004A47F5 /* tclParse.c */; }; - F96D45B008F272BC004A47F5 /* tclPathObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1108F272A7004A47F5 /* tclPathObj.c */; }; - F96D45B108F272BC004A47F5 /* tclPipe.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1208F272A7004A47F5 /* tclPipe.c */; }; - F96D45B208F272BC004A47F5 /* tclPkg.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1308F272A7004A47F5 /* tclPkg.c */; }; - F96D45B308F272BC004A47F5 /* tclPkgConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1408F272A7004A47F5 /* tclPkgConfig.c */; settings = {COMPILER_FLAGS = "-DCFG_INSTALL_LIBDIR=\\\"$(LIBDIR)\\\" -DCFG_INSTALL_BINDIR=\\\"$(BINDIR)\\\" -DCFG_INSTALL_SCRDIR=\\\"$(TCL_LIBRARY)\\\" -DCFG_INSTALL_INCDIR=\\\"$(INCLUDEDIR)\\\" -DCFG_INSTALL_DOCDIR=\\\"$(MANDIR)\\\" -DCFG_RUNTIME_LIBDIR=\\\"$(LIBDIR)\\\" -DCFG_RUNTIME_BINDIR=\\\"$(BINDIR)\\\" -DCFG_RUNTIME_SCRDIR=\\\"$(TCL_LIBRARY)\\\" -DCFG_RUNTIME_INCDIR=\\\"$(INCLUDEDIR)\\\" -DCFG_RUNTIME_DOCDIR=\\\"$(MANDIR)\\\""; }; }; - F96D45B608F272BC004A47F5 /* tclPosixStr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1708F272A7004A47F5 /* tclPosixStr.c */; }; - F96D45B708F272BC004A47F5 /* tclPreserve.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1808F272A7004A47F5 /* tclPreserve.c */; }; - F96D45B808F272BC004A47F5 /* tclProc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1908F272A7004A47F5 /* tclProc.c */; }; - F96D45B908F272BC004A47F5 /* tclRegexp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1A08F272A7004A47F5 /* tclRegexp.c */; }; - F96D45BB08F272BC004A47F5 /* tclResolve.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1C08F272A7004A47F5 /* tclResolve.c */; }; - F96D45BC08F272BC004A47F5 /* tclResult.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1D08F272A7004A47F5 /* tclResult.c */; }; - F96D45BD08F272BC004A47F5 /* tclScan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1E08F272A7004A47F5 /* tclScan.c */; }; - F96D45BE08F272BC004A47F5 /* tclStringObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1F08F272A7004A47F5 /* tclStringObj.c */; }; - F96D45C308F272BC004A47F5 /* tclStrToD.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2408F272A7004A47F5 /* tclStrToD.c */; }; - F96D45C408F272BC004A47F5 /* tclStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2508F272A7004A47F5 /* tclStubInit.c */; }; - F96D45C508F272BC004A47F5 /* tclStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2608F272A7004A47F5 /* tclStubLib.c */; }; - F96D45C908F272BC004A47F5 /* tclThread.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2A08F272A7004A47F5 /* tclThread.c */; }; - F96D45CA08F272BC004A47F5 /* tclThreadAlloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2B08F272A7004A47F5 /* tclThreadAlloc.c */; }; - F96D45CB08F272BC004A47F5 /* tclThreadJoin.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2C08F272A7004A47F5 /* tclThreadJoin.c */; }; - F96D45CC08F272BC004A47F5 /* tclThreadStorage.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2D08F272A7004A47F5 /* tclThreadStorage.c */; }; - F96D45CE08F272BC004A47F5 /* tclTimer.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2F08F272A7004A47F5 /* tclTimer.c */; }; - F96D45D008F272BC004A47F5 /* tclTomMathInterface.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3108F272A7004A47F5 /* tclTomMathInterface.c */; }; - F96D45D108F272BC004A47F5 /* tclTrace.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3208F272A7004A47F5 /* tclTrace.c */; }; - F96D45D308F272BC004A47F5 /* tclUtf.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3408F272A7004A47F5 /* tclUtf.c */; }; - F96D45D408F272BC004A47F5 /* tclUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3508F272A7004A47F5 /* tclUtil.c */; }; - F96D45D508F272BC004A47F5 /* tclVar.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3608F272A7004A47F5 /* tclVar.c */; }; - F96D48E208F272C3004A47F5 /* bn_fast_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426408F272B3004A47F5 /* bn_fast_s_mp_mul_digs.c */; }; - F96D48E408F272C3004A47F5 /* bn_fast_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426608F272B3004A47F5 /* bn_fast_s_mp_sqr.c */; }; - F96D48E708F272C3004A47F5 /* bn_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426908F272B3004A47F5 /* bn_mp_add.c */; }; - F96D48E808F272C3004A47F5 /* bn_mp_add_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426A08F272B3004A47F5 /* bn_mp_add_d.c */; }; - F96D48EB08F272C3004A47F5 /* bn_mp_clamp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426D08F272B3004A47F5 /* bn_mp_clamp.c */; }; - F96D48EC08F272C3004A47F5 /* bn_mp_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426E08F272B3004A47F5 /* bn_mp_clear.c */; }; - F96D48ED08F272C3004A47F5 /* bn_mp_clear_multi.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426F08F272B3004A47F5 /* bn_mp_clear_multi.c */; }; - F96D48EE08F272C3004A47F5 /* bn_mp_cmp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427008F272B3004A47F5 /* bn_mp_cmp.c */; }; - F96D48F008F272C3004A47F5 /* bn_mp_cmp_mag.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427208F272B3004A47F5 /* bn_mp_cmp_mag.c */; }; - F96D48F208F272C3004A47F5 /* bn_mp_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427408F272B3004A47F5 /* bn_mp_copy.c */; }; - F96D48F308F272C3004A47F5 /* bn_mp_count_bits.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427508F272B3004A47F5 /* bn_mp_count_bits.c */; }; - F96D48F408F272C3004A47F5 /* bn_mp_div.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427608F272B3004A47F5 /* bn_mp_div.c */; }; - F96D48F508F272C3004A47F5 /* bn_mp_div_2.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427708F272B3004A47F5 /* bn_mp_div_2.c */; }; - F96D48F608F272C3004A47F5 /* bn_mp_div_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427808F272B3004A47F5 /* bn_mp_div_2d.c */; }; - F96D48F708F272C3004A47F5 /* bn_mp_div_3.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427908F272B3004A47F5 /* bn_mp_div_3.c */; }; - F96D48F808F272C3004A47F5 /* bn_mp_div_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427A08F272B3004A47F5 /* bn_mp_div_d.c */; }; - F96D48FC08F272C3004A47F5 /* bn_mp_exch.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427E08F272B3004A47F5 /* bn_mp_exch.c */; }; - F96D490508F272C3004A47F5 /* bn_mp_grow.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428708F272B3004A47F5 /* bn_mp_grow.c */; }; - F96D490608F272C3004A47F5 /* bn_mp_init.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428808F272B3004A47F5 /* bn_mp_init.c */; }; - F96D490708F272C3004A47F5 /* bn_mp_init_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428908F272B3004A47F5 /* bn_mp_init_copy.c */; }; - F96D490808F272C3004A47F5 /* bn_mp_init_multi.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428A08F272B3004A47F5 /* bn_mp_init_multi.c */; }; - F96D490908F272C3004A47F5 /* bn_mp_init_set.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428B08F272B3004A47F5 /* bn_mp_init_set.c */; }; - F96D490B08F272C3004A47F5 /* bn_mp_init_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428D08F272B3004A47F5 /* bn_mp_init_size.c */; }; - F96D491008F272C3004A47F5 /* bn_mp_karatsuba_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429208F272B3004A47F5 /* bn_mp_karatsuba_mul.c */; }; - F96D491108F272C3004A47F5 /* bn_mp_karatsuba_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429308F272B3004A47F5 /* bn_mp_karatsuba_sqr.c */; }; - F96D491308F272C3004A47F5 /* bn_mp_lshd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429508F272B3004A47F5 /* bn_mp_lshd.c */; }; - F96D491408F272C3004A47F5 /* bn_mp_mod.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429608F272B3004A47F5 /* bn_mp_mod.c */; }; - F96D491508F272C3004A47F5 /* bn_mp_mod_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429708F272B3004A47F5 /* bn_mp_mod_2d.c */; }; - F96D491A08F272C3004A47F5 /* bn_mp_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429C08F272B3004A47F5 /* bn_mp_mul.c */; }; - F96D491B08F272C3004A47F5 /* bn_mp_mul_2.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429D08F272B3004A47F5 /* bn_mp_mul_2.c */; }; - F96D491C08F272C3004A47F5 /* bn_mp_mul_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429E08F272B3004A47F5 /* bn_mp_mul_2d.c */; }; - F96D491D08F272C3004A47F5 /* bn_mp_mul_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429F08F272B3004A47F5 /* bn_mp_mul_d.c */; }; - F96D492908F272C3004A47F5 /* bn_mp_radix_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AB08F272B3004A47F5 /* bn_mp_radix_size.c */; }; - F96D492A08F272C3004A47F5 /* bn_mp_radix_smap.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AC08F272B3004A47F5 /* bn_mp_radix_smap.c */; }; - F96D492C08F272C3004A47F5 /* bn_mp_read_radix.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AE08F272B3004A47F5 /* bn_mp_read_radix.c */; }; - F96D493708F272C3004A47F5 /* bn_mp_rshd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42B908F272B3004A47F5 /* bn_mp_rshd.c */; }; - F96D493808F272C3004A47F5 /* bn_mp_set.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BA08F272B3004A47F5 /* bn_mp_set.c */; }; - F96D493C08F272C3004A47F5 /* bn_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BE08F272B3004A47F5 /* bn_mp_sqr.c */; }; - F96D493F08F272C3004A47F5 /* bn_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C108F272B3004A47F5 /* bn_mp_sub.c */; }; - F96D494008F272C3004A47F5 /* bn_mp_sub_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C208F272B3004A47F5 /* bn_mp_sub_d.c */; }; - F96D494608F272C3004A47F5 /* bn_mp_toom_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C808F272B3004A47F5 /* bn_mp_toom_mul.c */; }; - F96D494708F272C3004A47F5 /* bn_mp_toom_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C908F272B3004A47F5 /* bn_mp_toom_sqr.c */; }; - F96D494908F272C3004A47F5 /* bn_mp_toradix_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */; }; - F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */; }; - F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D008F272B3004A47F5 /* bn_reverse.c */; }; - F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */; }; - F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; }; - F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; }; - F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; }; - F96D495508F272C3004A47F5 /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; }; - F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; }; - F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; }; - F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; }; - F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445B08F272B9004A47F5 /* tclLoadDyld.c */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; - F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445F08F272B9004A47F5 /* tclUnixChan.c */; }; - F96D4ACB08F272C9004A47F5 /* tclUnixEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446008F272B9004A47F5 /* tclUnixEvent.c */; }; - F96D4ACC08F272C9004A47F5 /* tclUnixFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446108F272B9004A47F5 /* tclUnixFCmd.c */; }; - F96D4ACD08F272C9004A47F5 /* tclUnixFile.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446208F272B9004A47F5 /* tclUnixFile.c */; }; - F96D4ACE08F272C9004A47F5 /* tclUnixInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446308F272B9004A47F5 /* tclUnixInit.c */; settings = {COMPILER_FLAGS = "-DTCL_LIBRARY=\\\"$(TCL_LIBRARY)\\\" -DTCL_PACKAGE_PATH=\\\"$(TCL_PACKAGE_PATH)\\\""; }; }; - F96D4ACF08F272C9004A47F5 /* tclUnixNotfy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446408F272B9004A47F5 /* tclUnixNotfy.c */; }; - F96D4AD008F272C9004A47F5 /* tclUnixPipe.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446508F272B9004A47F5 /* tclUnixPipe.c */; }; - F96D4AD208F272CA004A47F5 /* tclUnixSock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446708F272B9004A47F5 /* tclUnixSock.c */; }; - F96D4AD408F272CA004A47F5 /* tclUnixThrd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446908F272B9004A47F5 /* tclUnixThrd.c */; }; - F96D4AD608F272CA004A47F5 /* tclUnixTime.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446B08F272B9004A47F5 /* tclUnixTime.c */; }; - F9C9CC000E84059800E00935 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9C9CBFF0E84059800E00935 /* ApplicationServices.framework */; }; - F9DD99BD0F07DF850018B2E4 /* tkImgPNG.c in Sources */ = {isa = PBXBuildFile; fileRef = F9DD99BC0F07DF850018B2E4 /* tkImgPNG.c */; }; - F9DD99BE0F07DF850018B2E4 /* tkImgPNG.c in Sources */ = {isa = PBXBuildFile; fileRef = F9DD99BC0F07DF850018B2E4 /* tkImgPNG.c */; }; - F9E61D28090A481F002B3151 /* bn_mp_cmp_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427108F272B3004A47F5 /* bn_mp_cmp_d.c */; }; - F9E61D29090A486C002B3151 /* bn_mp_neg.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42A208F272B3004A47F5 /* bn_mp_neg.c */; }; - F9E61D2A090A4891002B3151 /* bn_mp_sqrt.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C008F272B3004A47F5 /* bn_mp_sqrt.c */; }; - F9E61D2B090A48A4002B3151 /* bn_mp_and.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426C08F272B3004A47F5 /* bn_mp_and.c */; }; - F9E61D2C090A48AC002B3151 /* bn_mp_expt_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427F08F272B3004A47F5 /* bn_mp_expt_d.c */; }; - F9E61D2D090A48BB002B3151 /* bn_mp_xor.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */; }; - F9E61D2E090A48BF002B3151 /* bn_mp_or.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42A308F272B3004A47F5 /* bn_mp_or.c */; }; - F9E61D2F090A48C7002B3151 /* bn_mp_shrink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BC08F272B3004A47F5 /* bn_mp_shrink.c */; }; - F9E61D30090A48E2002B3151 /* bn_mp_to_unsigned_bin_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C708F272B3004A47F5 /* bn_mp_to_unsigned_bin_n.c */; }; - F9E61D31090A48F9002B3151 /* bn_mp_to_unsigned_bin.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C608F272B3004A47F5 /* bn_mp_to_unsigned_bin.c */; }; - F9E61D32090A48FA002B3151 /* bn_mp_unsigned_bin_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CC08F272B3004A47F5 /* bn_mp_unsigned_bin_size.c */; }; - F9F4415E0C8BAE6F00BCCD67 /* tclDTrace.d in Sources */ = {isa = PBXBuildFile; fileRef = F9F4415D0C8BAE6F00BCCD67 /* tclDTrace.d */; }; - F9FC77B80AB29E9100B7077D /* tclUnixCompat.c in Sources */ = {isa = PBXBuildFile; fileRef = F9FC77B70AB29E9100B7077D /* tclUnixCompat.c */; }; - F9FD30BC0CC1AD070073837D /* regcomp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED008F272A7004A47F5 /* regcomp.c */; }; - F9FD30BD0CC1AD070073837D /* regerror.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED308F272A7004A47F5 /* regerror.c */; }; - F9FD30BE0CC1AD070073837D /* regexec.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED608F272A7004A47F5 /* regexec.c */; }; - F9FD30BF0CC1AD070073837D /* regfree.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3ED708F272A7004A47F5 /* regfree.c */; }; - F9FD30C00CC1AD070073837D /* tclAlloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDC08F272A7004A47F5 /* tclAlloc.c */; settings = {COMPILER_FLAGS = "-DUSE_TCLALLOC=0"; }; }; - F9FD30C10CC1AD070073837D /* tclAsync.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDD08F272A7004A47F5 /* tclAsync.c */; }; - F9FD30C20CC1AD070073837D /* tclBasic.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDE08F272A7004A47F5 /* tclBasic.c */; }; - F9FD30C30CC1AD070073837D /* tclBinary.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EDF08F272A7004A47F5 /* tclBinary.c */; }; - F9FD30C40CC1AD070073837D /* tclCkalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE008F272A7004A47F5 /* tclCkalloc.c */; }; - F9FD30C50CC1AD070073837D /* tclClock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE108F272A7004A47F5 /* tclClock.c */; }; - F9FD30C60CC1AD070073837D /* tclCmdAH.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE208F272A7004A47F5 /* tclCmdAH.c */; }; - F9FD30C70CC1AD070073837D /* tclCmdIL.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE308F272A7004A47F5 /* tclCmdIL.c */; }; - F9FD30C80CC1AD070073837D /* tclCmdMZ.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE408F272A7004A47F5 /* tclCmdMZ.c */; }; - F9FD30C90CC1AD070073837D /* tclCompCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE508F272A7004A47F5 /* tclCompCmds.c */; }; - F9FD30CA0CC1AD070073837D /* tclCompExpr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE608F272A7004A47F5 /* tclCompExpr.c */; }; - F9FD30CB0CC1AD070073837D /* tclCompile.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE708F272A7004A47F5 /* tclCompile.c */; }; - F9FD30CC0CC1AD070073837D /* tclConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EE908F272A7004A47F5 /* tclConfig.c */; }; - F9FD30CD0CC1AD070073837D /* tclDate.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEA08F272A7004A47F5 /* tclDate.c */; }; - F9FD30CE0CC1AD070073837D /* tclDictObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEC08F272A7004A47F5 /* tclDictObj.c */; }; - F9FD30CF0CC1AD070073837D /* tclEncoding.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EED08F272A7004A47F5 /* tclEncoding.c */; }; - F9FD30D00CC1AD070073837D /* tclEnv.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEE08F272A7004A47F5 /* tclEnv.c */; }; - F9FD30D10CC1AD070073837D /* tclEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EEF08F272A7004A47F5 /* tclEvent.c */; }; - F9FD30D20CC1AD070073837D /* tclExecute.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF008F272A7004A47F5 /* tclExecute.c */; }; - F9FD30D30CC1AD070073837D /* tclFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF108F272A7004A47F5 /* tclFCmd.c */; }; - F9FD30D40CC1AD070073837D /* tclFileName.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF208F272A7004A47F5 /* tclFileName.c */; }; - F9FD30D50CC1AD070073837D /* tclGet.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF408F272A7004A47F5 /* tclGet.c */; }; - F9FD30D60CC1AD070073837D /* tclHash.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF608F272A7004A47F5 /* tclHash.c */; }; - F9FD30D70CC1AD070073837D /* tclHistory.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF708F272A7004A47F5 /* tclHistory.c */; }; - F9FD30D80CC1AD070073837D /* tclIndexObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EF808F272A7004A47F5 /* tclIndexObj.c */; }; - F9FD30D90CC1AD070073837D /* tclInterp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EFC08F272A7004A47F5 /* tclInterp.c */; }; - F9FD30DA0CC1AD070073837D /* tclIO.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3EFE08F272A7004A47F5 /* tclIO.c */; }; - F9FD30DB0CC1AD070073837D /* tclIOCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0008F272A7004A47F5 /* tclIOCmd.c */; }; - F9FD30DC0CC1AD070073837D /* tclIOGT.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0108F272A7004A47F5 /* tclIOGT.c */; }; - F9FD30DD0CC1AD070073837D /* tclIORChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0208F272A7004A47F5 /* tclIORChan.c */; }; - F9FD30DE0CC1AD070073837D /* tclIOSock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0308F272A7004A47F5 /* tclIOSock.c */; }; - F9FD30DF0CC1AD070073837D /* tclIOUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0408F272A7004A47F5 /* tclIOUtil.c */; }; - F9FD30E00CC1AD070073837D /* tclLink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0508F272A7004A47F5 /* tclLink.c */; }; - F9FD30E10CC1AD070073837D /* tclListObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0608F272A7004A47F5 /* tclListObj.c */; }; - F9FD30E20CC1AD070073837D /* tclLiteral.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0708F272A7004A47F5 /* tclLiteral.c */; }; - F9FD30E30CC1AD070073837D /* tclLoad.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0808F272A7004A47F5 /* tclLoad.c */; }; - F9FD30E40CC1AD070073837D /* tclMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0A08F272A7004A47F5 /* tclMain.c */; }; - F9FD30E50CC1AD070073837D /* tclNamesp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0B08F272A7004A47F5 /* tclNamesp.c */; }; - F9FD30E60CC1AD070073837D /* tclNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0C08F272A7004A47F5 /* tclNotify.c */; }; - F9FD30E70CC1AD070073837D /* tclObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0D08F272A7004A47F5 /* tclObj.c */; }; - F9FD30E80CC1AD070073837D /* tclPanic.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0E08F272A7004A47F5 /* tclPanic.c */; }; - F9FD30E90CC1AD070073837D /* tclParse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F0F08F272A7004A47F5 /* tclParse.c */; }; - F9FD30EA0CC1AD070073837D /* tclPathObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1108F272A7004A47F5 /* tclPathObj.c */; }; - F9FD30EB0CC1AD070073837D /* tclPipe.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1208F272A7004A47F5 /* tclPipe.c */; }; - F9FD30EC0CC1AD070073837D /* tclPkg.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1308F272A7004A47F5 /* tclPkg.c */; }; - F9FD30ED0CC1AD070073837D /* tclPkgConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1408F272A7004A47F5 /* tclPkgConfig.c */; settings = {COMPILER_FLAGS = "-DCFG_INSTALL_LIBDIR=\\\"$(LIBDIR)\\\" -DCFG_INSTALL_BINDIR=\\\"$(BINDIR)\\\" -DCFG_INSTALL_SCRDIR=\\\"$(TCL_LIBRARY)\\\" -DCFG_INSTALL_INCDIR=\\\"$(INCLUDEDIR)\\\" -DCFG_INSTALL_DOCDIR=\\\"$(MANDIR)\\\" -DCFG_RUNTIME_LIBDIR=\\\"$(LIBDIR)\\\" -DCFG_RUNTIME_BINDIR=\\\"$(BINDIR)\\\" -DCFG_RUNTIME_SCRDIR=\\\"$(TCL_LIBRARY)\\\" -DCFG_RUNTIME_INCDIR=\\\"$(INCLUDEDIR)\\\" -DCFG_RUNTIME_DOCDIR=\\\"$(MANDIR)\\\""; }; }; - F9FD30EE0CC1AD070073837D /* tclPosixStr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1708F272A7004A47F5 /* tclPosixStr.c */; }; - F9FD30EF0CC1AD070073837D /* tclPreserve.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1808F272A7004A47F5 /* tclPreserve.c */; }; - F9FD30F00CC1AD070073837D /* tclProc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1908F272A7004A47F5 /* tclProc.c */; }; - F9FD30F10CC1AD070073837D /* tclRegexp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1A08F272A7004A47F5 /* tclRegexp.c */; }; - F9FD30F20CC1AD070073837D /* tclResolve.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1C08F272A7004A47F5 /* tclResolve.c */; }; - F9FD30F30CC1AD070073837D /* tclResult.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1D08F272A7004A47F5 /* tclResult.c */; }; - F9FD30F40CC1AD070073837D /* tclScan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1E08F272A7004A47F5 /* tclScan.c */; }; - F9FD30F50CC1AD070073837D /* tclStringObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F1F08F272A7004A47F5 /* tclStringObj.c */; }; - F9FD30F60CC1AD070073837D /* tclStrToD.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2408F272A7004A47F5 /* tclStrToD.c */; }; - F9FD30F70CC1AD070073837D /* tclStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2508F272A7004A47F5 /* tclStubInit.c */; }; - F9FD30F80CC1AD070073837D /* tclStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2608F272A7004A47F5 /* tclStubLib.c */; }; - F9FD30F90CC1AD070073837D /* tclThread.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2A08F272A7004A47F5 /* tclThread.c */; }; - F9FD30FA0CC1AD070073837D /* tclThreadAlloc.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2B08F272A7004A47F5 /* tclThreadAlloc.c */; }; - F9FD30FB0CC1AD070073837D /* tclThreadJoin.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2C08F272A7004A47F5 /* tclThreadJoin.c */; }; - F9FD30FC0CC1AD070073837D /* tclThreadStorage.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2D08F272A7004A47F5 /* tclThreadStorage.c */; }; - F9FD30FD0CC1AD070073837D /* tclTimer.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F2F08F272A7004A47F5 /* tclTimer.c */; }; - F9FD30FE0CC1AD070073837D /* tclTomMathInterface.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3108F272A7004A47F5 /* tclTomMathInterface.c */; }; - F9FD30FF0CC1AD070073837D /* tclTrace.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3208F272A7004A47F5 /* tclTrace.c */; }; - F9FD31000CC1AD070073837D /* tclUtf.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3408F272A7004A47F5 /* tclUtf.c */; }; - F9FD31010CC1AD070073837D /* tclUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3508F272A7004A47F5 /* tclUtil.c */; }; - F9FD31020CC1AD070073837D /* tclVar.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D3F3608F272A7004A47F5 /* tclVar.c */; }; - F9FD31030CC1AD070073837D /* bn_fast_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426408F272B3004A47F5 /* bn_fast_s_mp_mul_digs.c */; }; - F9FD31040CC1AD070073837D /* bn_fast_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426608F272B3004A47F5 /* bn_fast_s_mp_sqr.c */; }; - F9FD31050CC1AD070073837D /* bn_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426908F272B3004A47F5 /* bn_mp_add.c */; }; - F9FD31060CC1AD070073837D /* bn_mp_add_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426A08F272B3004A47F5 /* bn_mp_add_d.c */; }; - F9FD31070CC1AD070073837D /* bn_mp_and.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426C08F272B3004A47F5 /* bn_mp_and.c */; }; - F9FD31080CC1AD070073837D /* bn_mp_clamp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426D08F272B3004A47F5 /* bn_mp_clamp.c */; }; - F9FD31090CC1AD070073837D /* bn_mp_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426E08F272B3004A47F5 /* bn_mp_clear.c */; }; - F9FD310A0CC1AD070073837D /* bn_mp_clear_multi.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D426F08F272B3004A47F5 /* bn_mp_clear_multi.c */; }; - F9FD310B0CC1AD070073837D /* bn_mp_cmp.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427008F272B3004A47F5 /* bn_mp_cmp.c */; }; - F9FD310C0CC1AD070073837D /* bn_mp_cmp_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427108F272B3004A47F5 /* bn_mp_cmp_d.c */; }; - F9FD310D0CC1AD070073837D /* bn_mp_cmp_mag.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427208F272B3004A47F5 /* bn_mp_cmp_mag.c */; }; - F9FD310E0CC1AD070073837D /* bn_mp_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427408F272B3004A47F5 /* bn_mp_copy.c */; }; - F9FD310F0CC1AD070073837D /* bn_mp_count_bits.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427508F272B3004A47F5 /* bn_mp_count_bits.c */; }; - F9FD31100CC1AD070073837D /* bn_mp_div.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427608F272B3004A47F5 /* bn_mp_div.c */; }; - F9FD31110CC1AD070073837D /* bn_mp_div_2.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427708F272B3004A47F5 /* bn_mp_div_2.c */; }; - F9FD31120CC1AD070073837D /* bn_mp_div_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427808F272B3004A47F5 /* bn_mp_div_2d.c */; }; - F9FD31130CC1AD070073837D /* bn_mp_div_3.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427908F272B3004A47F5 /* bn_mp_div_3.c */; }; - F9FD31140CC1AD070073837D /* bn_mp_div_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427A08F272B3004A47F5 /* bn_mp_div_d.c */; }; - F9FD31150CC1AD070073837D /* bn_mp_exch.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427E08F272B3004A47F5 /* bn_mp_exch.c */; }; - F9FD31160CC1AD070073837D /* bn_mp_expt_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D427F08F272B3004A47F5 /* bn_mp_expt_d.c */; }; - F9FD31170CC1AD070073837D /* bn_mp_grow.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428708F272B3004A47F5 /* bn_mp_grow.c */; }; - F9FD31180CC1AD070073837D /* bn_mp_init.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428808F272B3004A47F5 /* bn_mp_init.c */; }; - F9FD31190CC1AD070073837D /* bn_mp_init_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428908F272B3004A47F5 /* bn_mp_init_copy.c */; }; - F9FD311A0CC1AD070073837D /* bn_mp_init_multi.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428A08F272B3004A47F5 /* bn_mp_init_multi.c */; }; - F9FD311B0CC1AD070073837D /* bn_mp_init_set.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428B08F272B3004A47F5 /* bn_mp_init_set.c */; }; - F9FD311C0CC1AD070073837D /* bn_mp_init_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D428D08F272B3004A47F5 /* bn_mp_init_size.c */; }; - F9FD311D0CC1AD070073837D /* bn_mp_karatsuba_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429208F272B3004A47F5 /* bn_mp_karatsuba_mul.c */; }; - F9FD311E0CC1AD070073837D /* bn_mp_karatsuba_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429308F272B3004A47F5 /* bn_mp_karatsuba_sqr.c */; }; - F9FD311F0CC1AD070073837D /* bn_mp_lshd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429508F272B3004A47F5 /* bn_mp_lshd.c */; }; - F9FD31200CC1AD070073837D /* bn_mp_mod.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429608F272B3004A47F5 /* bn_mp_mod.c */; }; - F9FD31210CC1AD070073837D /* bn_mp_mod_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429708F272B3004A47F5 /* bn_mp_mod_2d.c */; }; - F9FD31220CC1AD070073837D /* bn_mp_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429C08F272B3004A47F5 /* bn_mp_mul.c */; }; - F9FD31230CC1AD070073837D /* bn_mp_mul_2.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429D08F272B3004A47F5 /* bn_mp_mul_2.c */; }; - F9FD31240CC1AD070073837D /* bn_mp_mul_2d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429E08F272B3004A47F5 /* bn_mp_mul_2d.c */; }; - F9FD31250CC1AD070073837D /* bn_mp_mul_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D429F08F272B3004A47F5 /* bn_mp_mul_d.c */; }; - F9FD31260CC1AD070073837D /* bn_mp_neg.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42A208F272B3004A47F5 /* bn_mp_neg.c */; }; - F9FD31270CC1AD070073837D /* bn_mp_or.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42A308F272B3004A47F5 /* bn_mp_or.c */; }; - F9FD31280CC1AD070073837D /* bn_mp_radix_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AB08F272B3004A47F5 /* bn_mp_radix_size.c */; }; - F9FD31290CC1AD070073837D /* bn_mp_radix_smap.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AC08F272B3004A47F5 /* bn_mp_radix_smap.c */; }; - F9FD312A0CC1AD070073837D /* bn_mp_read_radix.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42AE08F272B3004A47F5 /* bn_mp_read_radix.c */; }; - F9FD312B0CC1AD070073837D /* bn_mp_rshd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42B908F272B3004A47F5 /* bn_mp_rshd.c */; }; - F9FD312C0CC1AD070073837D /* bn_mp_set.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BA08F272B3004A47F5 /* bn_mp_set.c */; }; - F9FD312D0CC1AD070073837D /* bn_mp_shrink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BC08F272B3004A47F5 /* bn_mp_shrink.c */; }; - F9FD312E0CC1AD070073837D /* bn_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42BE08F272B3004A47F5 /* bn_mp_sqr.c */; }; - F9FD312F0CC1AD070073837D /* bn_mp_sqrt.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C008F272B3004A47F5 /* bn_mp_sqrt.c */; }; - F9FD31300CC1AD070073837D /* bn_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C108F272B3004A47F5 /* bn_mp_sub.c */; }; - F9FD31310CC1AD070073837D /* bn_mp_sub_d.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C208F272B3004A47F5 /* bn_mp_sub_d.c */; }; - F9FD31320CC1AD070073837D /* bn_mp_to_unsigned_bin_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C708F272B3004A47F5 /* bn_mp_to_unsigned_bin_n.c */; }; - F9FD31330CC1AD070073837D /* bn_mp_to_unsigned_bin.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C608F272B3004A47F5 /* bn_mp_to_unsigned_bin.c */; }; - F9FD31340CC1AD070073837D /* bn_mp_toom_mul.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C808F272B3004A47F5 /* bn_mp_toom_mul.c */; }; - F9FD31350CC1AD070073837D /* bn_mp_toom_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42C908F272B3004A47F5 /* bn_mp_toom_sqr.c */; }; - F9FD31360CC1AD070073837D /* bn_mp_toradix_n.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */; }; - F9FD31370CC1AD070073837D /* bn_mp_unsigned_bin_size.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CC08F272B3004A47F5 /* bn_mp_unsigned_bin_size.c */; }; - F9FD31380CC1AD070073837D /* bn_mp_xor.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */; }; - F9FD31390CC1AD070073837D /* bn_mp_zero.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */; }; - F9FD313A0CC1AD070073837D /* bn_reverse.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D008F272B3004A47F5 /* bn_reverse.c */; }; - F9FD313B0CC1AD070073837D /* bn_s_mp_add.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */; }; - F9FD313C0CC1AD070073837D /* bn_s_mp_mul_digs.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */; }; - F9FD313D0CC1AD070073837D /* bn_s_mp_sqr.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */; }; - F9FD313E0CC1AD070073837D /* bn_s_mp_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */; }; - F9FD313F0CC1AD070073837D /* bncore.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D42D708F272B3004A47F5 /* bncore.c */; }; - F9FD31400CC1AD070073837D /* tclMacOSXBundle.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */; }; - F9FD31410CC1AD070073837D /* tclMacOSXFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */; }; - F9FD31420CC1AD070073837D /* tclMacOSXNotify.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */; }; - F9FD31430CC1AD070073837D /* tclLoadDyld.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445B08F272B9004A47F5 /* tclLoadDyld.c */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; - F9FD31440CC1AD070073837D /* tclUnixChan.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D445F08F272B9004A47F5 /* tclUnixChan.c */; }; - F9FD31450CC1AD070073837D /* tclUnixCompat.c in Sources */ = {isa = PBXBuildFile; fileRef = F9FC77B70AB29E9100B7077D /* tclUnixCompat.c */; }; - F9FD31460CC1AD070073837D /* tclUnixEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446008F272B9004A47F5 /* tclUnixEvent.c */; }; - F9FD31470CC1AD070073837D /* tclUnixFCmd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446108F272B9004A47F5 /* tclUnixFCmd.c */; }; - F9FD31480CC1AD070073837D /* tclUnixFile.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446208F272B9004A47F5 /* tclUnixFile.c */; }; - F9FD31490CC1AD070073837D /* tclUnixInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446308F272B9004A47F5 /* tclUnixInit.c */; settings = {COMPILER_FLAGS = "-DTCL_LIBRARY=\\\"$(TCL_LIBRARY)\\\" -DTCL_PACKAGE_PATH=\\\"$(TCL_PACKAGE_PATH)\\\""; }; }; - F9FD314A0CC1AD070073837D /* tclUnixNotfy.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446408F272B9004A47F5 /* tclUnixNotfy.c */; }; - F9FD314B0CC1AD070073837D /* tclUnixPipe.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446508F272B9004A47F5 /* tclUnixPipe.c */; }; - F9FD314C0CC1AD070073837D /* tclUnixSock.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446708F272B9004A47F5 /* tclUnixSock.c */; }; - F9FD314D0CC1AD070073837D /* tclUnixThrd.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446908F272B9004A47F5 /* tclUnixThrd.c */; }; - F9FD314E0CC1AD070073837D /* tclUnixTime.c in Sources */ = {isa = PBXBuildFile; fileRef = F96D446B08F272B9004A47F5 /* tclUnixTime.c */; }; - F9FD314F0CC1AD070073837D /* tk3d.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAC08F27A39005CB29B /* tk3d.c */; }; - F9FD31500CC1AD070073837D /* tkArgv.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAE08F27A39005CB29B /* tkArgv.c */; }; - F9FD31510CC1AD070073837D /* tkAtom.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAAF08F27A39005CB29B /* tkAtom.c */; }; - F9FD31520CC1AD070073837D /* tkBind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB008F27A39005CB29B /* tkBind.c */; }; - F9FD31530CC1AD070073837D /* tkBitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB108F27A39005CB29B /* tkBitmap.c */; }; - F9FD31540CC1AD070073837D /* tkButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB208F27A39005CB29B /* tkButton.c */; }; - F9FD31550CC1AD070073837D /* tkCanvArc.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB408F27A39005CB29B /* tkCanvArc.c */; }; - F9FD31560CC1AD070073837D /* tkCanvas.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB508F27A39005CB29B /* tkCanvas.c */; }; - F9FD31570CC1AD070073837D /* tkCanvBmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB708F27A39005CB29B /* tkCanvBmap.c */; }; - F9FD31580CC1AD070073837D /* tkCanvImg.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB808F27A39005CB29B /* tkCanvImg.c */; }; - F9FD31590CC1AD070073837D /* tkCanvLine.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAB908F27A39005CB29B /* tkCanvLine.c */; }; - F9FD315A0CC1AD070073837D /* tkCanvPoly.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABA08F27A39005CB29B /* tkCanvPoly.c */; }; - F9FD315B0CC1AD070073837D /* tkCanvPs.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABB08F27A39005CB29B /* tkCanvPs.c */; }; - F9FD315C0CC1AD070073837D /* tkCanvText.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABD08F27A39005CB29B /* tkCanvText.c */; }; - F9FD315D0CC1AD070073837D /* tkCanvUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABE08F27A39005CB29B /* tkCanvUtil.c */; }; - F9FD315E0CC1AD070073837D /* tkCanvWind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BABF08F27A39005CB29B /* tkCanvWind.c */; }; - F9FD315F0CC1AD070073837D /* tkClipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC008F27A39005CB29B /* tkClipboard.c */; }; - F9FD31600CC1AD070073837D /* tkCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC108F27A39005CB29B /* tkCmds.c */; }; - F9FD31610CC1AD070073837D /* tkColor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC208F27A39005CB29B /* tkColor.c */; }; - F9FD31620CC1AD070073837D /* tkConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC408F27A39005CB29B /* tkConfig.c */; }; - F9FD31630CC1AD070073837D /* tkConsole.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC508F27A39005CB29B /* tkConsole.c */; }; - F9FD31640CC1AD070073837D /* tkCursor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC608F27A39005CB29B /* tkCursor.c */; }; - F9FD31650CC1AD070073837D /* tkEntry.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAC808F27A39005CB29B /* tkEntry.c */; }; - F9FD31660CC1AD070073837D /* tkError.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACA08F27A39005CB29B /* tkError.c */; }; - F9FD31670CC1AD070073837D /* tkEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACB08F27A39005CB29B /* tkEvent.c */; }; - F9FD31680CC1AD070073837D /* tkFileFilter.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACC08F27A39005CB29B /* tkFileFilter.c */; }; - F9FD31690CC1AD070073837D /* tkFocus.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACE08F27A39005CB29B /* tkFocus.c */; }; - F9FD316A0CC1AD070073837D /* tkFont.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BACF08F27A39005CB29B /* tkFont.c */; }; - F9FD316B0CC1AD070073837D /* tkFrame.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD108F27A39005CB29B /* tkFrame.c */; }; - F9FD316C0CC1AD070073837D /* tkGC.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD208F27A39005CB29B /* tkGC.c */; }; - F9FD316D0CC1AD070073837D /* tkGeometry.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD308F27A39005CB29B /* tkGeometry.c */; }; - F9FD316E0CC1AD070073837D /* tkGet.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD408F27A39005CB29B /* tkGet.c */; }; - F9FD316F0CC1AD070073837D /* tkGrab.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD508F27A39005CB29B /* tkGrab.c */; }; - F9FD31700CC1AD070073837D /* tkGrid.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD608F27A39005CB29B /* tkGrid.c */; }; - F9FD31710CC1AD070073837D /* tkImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD708F27A39005CB29B /* tkImage.c */; }; - F9FD31720CC1AD070073837D /* tkImgBmap.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD808F27A39005CB29B /* tkImgBmap.c */; }; - F9FD31730CC1AD070073837D /* tkImgGIF.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAD908F27A39005CB29B /* tkImgGIF.c */; }; - F9FD31740CC1AD070073837D /* tkImgPhoto.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BADA08F27A39005CB29B /* tkImgPhoto.c */; }; - F9FD31750CC1AD070073837D /* tkImgPPM.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BADB08F27A39005CB29B /* tkImgPPM.c */; }; - F9FD31760CC1AD070073837D /* tkListbox.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE408F27A39005CB29B /* tkListbox.c */; }; - F9FD31770CC1AD070073837D /* tkMacWinMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE508F27A39005CB29B /* tkMacWinMenu.c */; }; - F9FD31780CC1AD070073837D /* tkMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE608F27A39005CB29B /* tkMain.c */; }; - F9FD31790CC1AD070073837D /* tkMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE708F27A39005CB29B /* tkMenu.c */; }; - F9FD317A0CC1AD070073837D /* tkMenubutton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAE908F27A39005CB29B /* tkMenubutton.c */; }; - F9FD317B0CC1AD070073837D /* tkMenuDraw.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEB08F27A39005CB29B /* tkMenuDraw.c */; }; - F9FD317C0CC1AD070073837D /* tkMessage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEC08F27A39005CB29B /* tkMessage.c */; }; - F9FD317D0CC1AD070073837D /* tkObj.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAED08F27A39005CB29B /* tkObj.c */; }; - F9FD317E0CC1AD070073837D /* tkOldConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEE08F27A39005CB29B /* tkOldConfig.c */; }; - F9FD31800CC1AD070073837D /* tkOption.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAEF08F27A39005CB29B /* tkOption.c */; }; - F9FD31810CC1AD070073837D /* tkPack.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF008F27A39005CB29B /* tkPack.c */; }; - F9FD31820CC1AD070073837D /* tkPanedWindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF108F27A39005CB29B /* tkPanedWindow.c */; }; - F9FD31830CC1AD070073837D /* tkPlace.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF208F27A39005CB29B /* tkPlace.c */; }; - F9FD31850CC1AD070073837D /* tkRectOval.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF608F27A39005CB29B /* tkRectOval.c */; }; - F9FD31860CC1AD070073837D /* tkScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF708F27A39005CB29B /* tkScale.c */; }; - F9FD31870CC1AD070073837D /* tkScrollbar.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAF908F27A39005CB29B /* tkScrollbar.c */; }; - F9FD31880CC1AD070073837D /* tkSelect.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFB08F27A39005CB29B /* tkSelect.c */; }; - F9FD31890CC1AD070073837D /* tkSquare.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFD08F27A39005CB29B /* tkSquare.c */; }; - F9FD318A0CC1AD070073837D /* tkStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BAFF08F27A39005CB29B /* tkStubInit.c */; }; - F9FD318B0CC1AD070073837D /* tkStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0008F27A39005CB29B /* tkStubLib.c */; }; - F9FD318C0CC1AD070073837D /* tkStyle.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0108F27A39005CB29B /* tkStyle.c */; }; - F9FD318D0CC1AD070073837D /* tkTest.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0208F27A39005CB29B /* tkTest.c */; }; - F9FD318E0CC1AD070073837D /* tkText.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0308F27A39005CB29B /* tkText.c */; }; - F9FD318F0CC1AD070073837D /* tkTextBTree.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0508F27A39005CB29B /* tkTextBTree.c */; }; - F9FD31900CC1AD070073837D /* tkTextDisp.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0608F27A39005CB29B /* tkTextDisp.c */; }; - F9FD31910CC1AD070073837D /* tkTextImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0808F27A39005CB29B /* tkTextImage.c */; }; - F9FD31920CC1AD070073837D /* tkTextIndex.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0908F27A39005CB29B /* tkTextIndex.c */; }; - F9FD31930CC1AD070073837D /* tkTextMark.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0A08F27A39005CB29B /* tkTextMark.c */; }; - F9FD31940CC1AD070073837D /* tkTextTag.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0B08F27A39005CB29B /* tkTextTag.c */; }; - F9FD31950CC1AD070073837D /* tkTextWind.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0C08F27A39005CB29B /* tkTextWind.c */; }; - F9FD31960CC1AD070073837D /* tkTrig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0D08F27A39005CB29B /* tkTrig.c */; }; - F9FD31970CC1AD070073837D /* tkUndo.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB0E08F27A39005CB29B /* tkUndo.c */; }; - F9FD31980CC1AD070073837D /* tkUtil.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1008F27A39005CB29B /* tkUtil.c */; }; - F9FD31990CC1AD070073837D /* tkVisual.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1108F27A39005CB29B /* tkVisual.c */; }; - F9FD319A0CC1AD070073837D /* tkWindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BB1208F27A39005CB29B /* tkWindow.c */; }; - F9FD319B0CC1AD070073837D /* ttkBlink.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E10AF786D5000797B5 /* ttkBlink.c */; }; - F9FD319C0CC1AD070073837D /* ttkButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E20AF786D5000797B5 /* ttkButton.c */; }; - F9FD319D0CC1AD070073837D /* ttkCache.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E30AF786D5000797B5 /* ttkCache.c */; }; - F9FD319E0CC1AD070073837D /* ttkClamTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E40AF786D5000797B5 /* ttkClamTheme.c */; }; - F9FD319F0CC1AD070073837D /* ttkClassicTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E50AF786D5000797B5 /* ttkClassicTheme.c */; }; - F9FD31A00CC1AD070073837D /* ttkDefaultTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E70AF786D5000797B5 /* ttkDefaultTheme.c */; }; - F9FD31A10CC1AD070073837D /* ttkElements.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E80AF786D5000797B5 /* ttkElements.c */; }; - F9FD31A20CC1AD070073837D /* ttkEntry.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887E90AF786D5000797B5 /* ttkEntry.c */; }; - F9FD31A30CC1AD070073837D /* ttkFrame.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EA0AF786D5000797B5 /* ttkFrame.c */; }; - F9FD31A40CC1AD070073837D /* ttkImage.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EB0AF786D5000797B5 /* ttkImage.c */; }; - F9FD31A50CC1AD070073837D /* ttkInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EC0AF786D5000797B5 /* ttkInit.c */; }; - F9FD31A60CC1AD070073837D /* ttkLabel.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887ED0AF786D5000797B5 /* ttkLabel.c */; }; - F9FD31A70CC1AD070073837D /* ttkLayout.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EE0AF786D5000797B5 /* ttkLayout.c */; }; - F9FD31A80CC1AD070073837D /* ttkManager.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887EF0AF786D5000797B5 /* ttkManager.c */; }; - F9FD31A90CC1AD070073837D /* ttkNotebook.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F10AF786D5000797B5 /* ttkNotebook.c */; }; - F9FD31AA0CC1AD070073837D /* ttkPanedwindow.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F20AF786D5000797B5 /* ttkPanedwindow.c */; }; - F9FD31AB0CC1AD070073837D /* ttkProgress.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F30AF786D5000797B5 /* ttkProgress.c */; }; - F9FD31AC0CC1AD070073837D /* ttkScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F40AF786D5000797B5 /* ttkScale.c */; }; - F9FD31AD0CC1AD070073837D /* ttkScroll.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F50AF786D5000797B5 /* ttkScroll.c */; }; - F9FD31AE0CC1AD070073837D /* ttkScrollbar.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F60AF786D5000797B5 /* ttkScrollbar.c */; }; - F9FD31AF0CC1AD070073837D /* ttkSeparator.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F70AF786D5000797B5 /* ttkSeparator.c */; }; - F9FD31B00CC1AD070073837D /* ttkSquare.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F80AF786D5000797B5 /* ttkSquare.c */; }; - F9FD31B10CC1AD070073837D /* ttkState.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887F90AF786D5000797B5 /* ttkState.c */; }; - F9FD31B20CC1AD070073837D /* ttkStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FA0AF786D5000797B5 /* ttkStubInit.c */; }; - F9FD31B30CC1AD070073837D /* ttkStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FB0AF786D5000797B5 /* ttkStubLib.c */; }; - F9FD31B40CC1AD070073837D /* ttkTagSet.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FC0AF786D5000797B5 /* ttkTagSet.c */; }; - F9FD31B50CC1AD070073837D /* ttkTheme.c in Sources */ = {isa = PBXBuildFile; fileRef = F96887FD0AF786D5000797B5 /* ttkTheme.c */; }; - F9FD31B60CC1AD070073837D /* ttkTrace.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888000AF786D5000797B5 /* ttkTrace.c */; }; - F9FD31B70CC1AD070073837D /* ttkTrack.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888010AF786D5000797B5 /* ttkTrack.c */; }; - F9FD31B80CC1AD070073837D /* ttkTreeview.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888020AF786D5000797B5 /* ttkTreeview.c */; }; - F9FD31B90CC1AD070073837D /* ttkWidget.c in Sources */ = {isa = PBXBuildFile; fileRef = F96888030AF786D5000797B5 /* ttkWidget.c */; }; - F9FD31DA0CC1AD070073837D /* tkAppInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7508F27A3D005CB29B /* tkAppInit.c */; settings = {COMPILER_FLAGS = "-DTK_TEST"; }; }; - F9FD31DB0CC1AD070073837D /* tkUnix3d.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7908F27A3D005CB29B /* tkUnix3d.c */; }; - F9FD31DC0CC1AD070073837D /* tkUnixScale.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8C08F27A3D005CB29B /* tkUnixScale.c */; }; - F9FD31E20CC1AD070073837D /* tclDTrace.d in Sources */ = {isa = PBXBuildFile; fileRef = F9F4415D0C8BAE6F00BCCD67 /* tclDTrace.d */; }; - F9FD31E40CC1AD070073837D /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F966C07408F2820D005CB29B /* CoreFoundation.framework */; }; - F9FD31F80CC1ADB70073837D /* tkUnixCursor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7D08F27A3D005CB29B /* tkUnixCursor.c */; }; - F9FD31FA0CC1ADB70073837D /* tkUnixKey.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8708F27A3D005CB29B /* tkUnixKey.c */; }; - F9FD31FB0CC1ADB70073837D /* tkUnixXId.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC9108F27A3D005CB29B /* tkUnixXId.c */; }; - F9FD31FC0CC1ADB70073837D /* tkUnixInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8508F27A3D005CB29B /* tkUnixInit.c */; }; - F9FD31FD0CC1ADB70073837D /* tkUnixEmbed.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8108F27A3D005CB29B /* tkUnixEmbed.c */; }; - F9FD31FE0CC1ADB70073837D /* tkUnixSend.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8F08F27A3D005CB29B /* tkUnixSend.c */; }; - F9FD31FF0CC1ADB70073837D /* tkUnixFocus.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8308F27A3D005CB29B /* tkUnixFocus.c */; }; - F9FD32000CC1ADB70073837D /* tkUnixWm.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC9008F27A3D005CB29B /* tkUnixWm.c */; }; - F9FD32010CC1ADB70073837D /* tkUnixRFont.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8B08F27A3D005CB29B /* tkUnixRFont.c */; }; - F9FD32020CC1ADB70073837D /* tkUnix.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7808F27A3D005CB29B /* tkUnix.c */; }; - F9FD32030CC1ADB70073837D /* tkUnixMenu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8808F27A3D005CB29B /* tkUnixMenu.c */; }; - F9FD32040CC1ADB70073837D /* tkUnixConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7C08F27A3D005CB29B /* tkUnixConfig.c */; }; - F9FD32050CC1ADB70073837D /* tkUnixDraw.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8008F27A3D005CB29B /* tkUnixDraw.c */; }; - F9FD32070CC1ADB70073837D /* tkUnixSelect.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8E08F27A3D005CB29B /* tkUnixSelect.c */; }; - F9FD32080CC1ADB70073837D /* tkUnixEvent.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8208F27A3D005CB29B /* tkUnixEvent.c */; }; - F9FD32090CC1ADB70073837D /* tkUnixColor.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7B08F27A3D005CB29B /* tkUnixColor.c */; }; - F9FD320A0CC1ADB70073837D /* tkUnixButton.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC7A08F27A3D005CB29B /* tkUnixButton.c */; }; - F9FD320B0CC1ADB70073837D /* tkUnixMenubu.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8908F27A3D005CB29B /* tkUnixMenubu.c */; }; - F9FD320C0CC1ADB70073837D /* tkUnixScrlbr.c in Sources */ = {isa = PBXBuildFile; fileRef = F966BC8D08F27A3D005CB29B /* tkUnixScrlbr.c */; }; - F9FD32170CC1AF170073837D /* libX11.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD32140CC1AF170073837D /* libX11.dylib */; }; - F9FD32180CC1AF170073837D /* libXext.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD32150CC1AF170073837D /* libXext.dylib */; }; - F9FD32190CC1AF170073837D /* libXss.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD32160CC1AF170073837D /* libXss.dylib */; }; - F9FD349B0CC1BB0D0073837D /* libfreetype.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD34990CC1BB0D0073837D /* libfreetype.dylib */; }; - F9FD349C0CC1BB0D0073837D /* libXft.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD349A0CC1BB0D0073837D /* libXft.dylib */; }; - F9FD34C40CC1BBD70073837D /* libfontconfig.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FD34C30CC1BBD70073837D /* libfontconfig.dylib */; }; - F9FFAF1D0DFDDB26007F8A6A /* tclIORTrans.c in Sources */ = {isa = PBXBuildFile; fileRef = F95D77E90DFD820D00A8BF6F /* tclIORTrans.c */; }; - F9FFAF1F0DFDDB2F007F8A6A /* tclOO.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B20DF1F75400E04F67 /* tclOO.c */; }; - F9FFAF200DFDDB32007F8A6A /* tclOOBasic.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B60DF1F76100E04F67 /* tclOOBasic.c */; }; - F9FFAF210DFDDB32007F8A6A /* tclOOCall.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599B80DF1F76600E04F67 /* tclOOCall.c */; }; - F9FFAF220DFDDB34007F8A6A /* tclOODefineCmds.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599BB0DF1F77000E04F67 /* tclOODefineCmds.c */; }; - F9FFAF230DFDDB35007F8A6A /* tclOOInfo.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599BD0DF1F77400E04F67 /* tclOOInfo.c */; }; - F9FFAF240DFDDB36007F8A6A /* tclOOMethod.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C10DF1F78300E04F67 /* tclOOMethod.c */; }; - F9FFAF250DFDDB37007F8A6A /* tclOOStubInit.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C30DF1F78800E04F67 /* tclOOStubInit.c */; }; - F9FFAF260DFDDB38007F8A6A /* tclOOStubLib.c in Sources */ = {isa = PBXBuildFile; fileRef = F93599C50DF1F78D00E04F67 /* tclOOStubLib.c */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 8DD76FB20486AB0100D96B5E /* tktest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tktest; sourceTree = BUILT_PRODUCTS_DIR; }; - F9099B8A0CC67D30005A9580 /* textpeer.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textpeer.tcl; sourceTree = ""; }; - F9099B8B0CC67D3E005A9580 /* ttkbut.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttkbut.tcl; sourceTree = ""; }; - F9152B080EAF8A5000CD5C7B /* tkBusy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkBusy.c; sourceTree = ""; }; - F91543270EF201A90032D1E8 /* fontchoose.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fontchoose.tcl; sourceTree = ""; }; - F915432A0EF201CF0032D1E8 /* zlib.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = zlib.test; sourceTree = ""; }; - F915432D0EF201EE0032D1E8 /* zlib.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = zlib.n; sourceTree = ""; }; - F9183E640EFC80CD0030B814 /* throw.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = throw.n; sourceTree = ""; }; - F9183E650EFC80D70030B814 /* try.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = try.n; sourceTree = ""; }; - F9183E6A0EFC81560030B814 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F9183E8F0EFC817B0030B814 /* tdbc */ = {isa = PBXFileReference; lastKnownFileType = folder; path = tdbc; sourceTree = ""; }; - F91DC23C0E44C51B002CB8D1 /* nre.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = nre.test; sourceTree = ""; }; - F91E62260C1AE686006C9D96 /* Tclsh-Info.plist.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Tclsh-Info.plist.in"; sourceTree = ""; }; - F92240290D7C620F005EC715 /* knightstour.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = knightstour.tcl; sourceTree = ""; }; - F92D7F100DE777240033A13A /* tsdPerf.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tsdPerf.tcl; sourceTree = ""; }; - F92EE8BE0E62F846001A6E80 /* tkImgPhInstance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgPhInstance.c; sourceTree = ""; }; - F93599B20DF1F75400E04F67 /* tclOO.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOO.c; sourceTree = ""; }; - F93599B40DF1F75900E04F67 /* tclOO.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclOO.decls; sourceTree = ""; }; - F93599B50DF1F75D00E04F67 /* tclOO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclOO.h; sourceTree = ""; }; - F93599B60DF1F76100E04F67 /* tclOOBasic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOBasic.c; sourceTree = ""; }; - F93599B80DF1F76600E04F67 /* tclOOCall.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOCall.c; sourceTree = ""; }; - F93599BA0DF1F76A00E04F67 /* tclOODecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclOODecls.h; sourceTree = ""; }; - F93599BB0DF1F77000E04F67 /* tclOODefineCmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOODefineCmds.c; sourceTree = ""; }; - F93599BD0DF1F77400E04F67 /* tclOOInfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOInfo.c; sourceTree = ""; }; - F93599BF0DF1F77900E04F67 /* tclOOInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclOOInt.h; sourceTree = ""; }; - F93599C00DF1F77D00E04F67 /* tclOOIntDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclOOIntDecls.h; sourceTree = ""; }; - F93599C10DF1F78300E04F67 /* tclOOMethod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOMethod.c; sourceTree = ""; }; - F93599C30DF1F78800E04F67 /* tclOOStubInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOStubInit.c; sourceTree = ""; }; - F93599C50DF1F78D00E04F67 /* tclOOStubLib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclOOStubLib.c; sourceTree = ""; }; - F93599C80DF1F81900E04F67 /* oo.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = oo.test; sourceTree = ""; }; - F93599CF0DF1F87F00E04F67 /* Class.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Class.3; sourceTree = ""; }; - F93599D00DF1F89E00E04F67 /* class.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = class.n; sourceTree = ""; }; - F93599D20DF1F8DF00E04F67 /* copy.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = copy.n; sourceTree = ""; }; - F93599D30DF1F8F500E04F67 /* define.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = define.n; sourceTree = ""; }; - F93599D40DF1F91900E04F67 /* Method.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Method.3; sourceTree = ""; }; - F93599D50DF1F93700E04F67 /* my.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = my.n; sourceTree = ""; }; - F93599D60DF1F95000E04F67 /* next.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = next.n; sourceTree = ""; }; - F93599D70DF1F96800E04F67 /* object.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = object.n; sourceTree = ""; }; - F93599D80DF1F98300E04F67 /* self.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = self.n; sourceTree = ""; }; - F936FCD70CCD984500716967 /* ttkprogress.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttkprogress.tcl; sourceTree = ""; }; - F936FCD80CCD984600716967 /* tree.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tree.tcl; sourceTree = ""; }; - F936FCD90CCD984600716967 /* toolbar.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = toolbar.tcl; sourceTree = ""; }; - F936FCDA0CCD984600716967 /* ttknote.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttknote.tcl; sourceTree = ""; }; - F936FCDB0CCD984600716967 /* combo.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = combo.tcl; sourceTree = ""; }; - F93E5EFD09CF8711008FA367 /* tkMacOSXFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXFont.h; sourceTree = ""; }; - F94523A10E6FC2AC00C1D987 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - F946FB8B0FBE3AED00CD6495 /* itcl */ = {isa = PBXFileReference; lastKnownFileType = folder; path = itcl; sourceTree = ""; }; - F95D77E90DFD820D00A8BF6F /* tclIORTrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIORTrans.c; sourceTree = ""; }; - F95D8D4B0F1715610006B020 /* Tk.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Tk.icns; sourceTree = ""; }; - F95D8D4C0F1715610006B020 /* Tk.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Tk.tiff; sourceTree = ""; }; - F95FAFF90B34F1130072E431 /* macOSXLoad.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = macOSXLoad.test; sourceTree = ""; }; - F962F7C60DADC26200648DB8 /* vsapi.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = vsapi.test; sourceTree = ""; }; - F96437C90EF0D4B2003F468E /* tclZlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclZlib.c; sourceTree = ""; }; - F96437E60EF0D652003F468E /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; - F966BA0408F27A37005CB29B /* error.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = error.xbm; sourceTree = ""; }; - F966BA0508F27A37005CB29B /* gray12.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = gray12.xbm; sourceTree = ""; }; - F966BA0608F27A37005CB29B /* gray25.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = gray25.xbm; sourceTree = ""; }; - F966BA0708F27A37005CB29B /* gray50.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = gray50.xbm; sourceTree = ""; }; - F966BA0808F27A37005CB29B /* gray75.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = gray75.xbm; sourceTree = ""; }; - F966BA0908F27A37005CB29B /* hourglass.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = hourglass.xbm; sourceTree = ""; }; - F966BA0A08F27A37005CB29B /* info.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = info.xbm; sourceTree = ""; }; - F966BA0B08F27A37005CB29B /* questhead.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = questhead.xbm; sourceTree = ""; }; - F966BA0C08F27A37005CB29B /* question.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = question.xbm; sourceTree = ""; }; - F966BA0D08F27A37005CB29B /* warning.xbm */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = warning.xbm; sourceTree = ""; }; - F966BA0F08F27A37005CB29B /* changes.md */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = changes.md; sourceTree = ""; }; - F966BA1108F27A37005CB29B /* 3DBorder.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = 3DBorder.3; sourceTree = ""; }; - F966BA1208F27A37005CB29B /* AddOption.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = AddOption.3; sourceTree = ""; }; - F966BA1308F27A37005CB29B /* bell.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = bell.n; sourceTree = ""; }; - F966BA1408F27A37005CB29B /* bind.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = bind.n; sourceTree = ""; }; - F966BA1508F27A37005CB29B /* BindTable.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = BindTable.3; sourceTree = ""; }; - F966BA1608F27A37005CB29B /* bindtags.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = bindtags.n; sourceTree = ""; }; - F966BA1708F27A37005CB29B /* bitmap.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = bitmap.n; sourceTree = ""; }; - F966BA1808F27A37005CB29B /* button.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = button.n; sourceTree = ""; }; - F966BA1908F27A37005CB29B /* canvas.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = canvas.n; sourceTree = ""; }; - F966BA1A08F27A37005CB29B /* CanvPsY.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CanvPsY.3; sourceTree = ""; }; - F966BA1B08F27A37005CB29B /* CanvTkwin.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CanvTkwin.3; sourceTree = ""; }; - F966BA1C08F27A37005CB29B /* CanvTxtInfo.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CanvTxtInfo.3; sourceTree = ""; }; - F966BA1D08F27A37005CB29B /* checkbutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = checkbutton.n; sourceTree = ""; }; - F966BA1E08F27A37005CB29B /* chooseColor.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = chooseColor.n; sourceTree = ""; }; - F966BA1F08F27A37005CB29B /* chooseDirectory.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = chooseDirectory.n; sourceTree = ""; }; - F966BA2008F27A37005CB29B /* Clipboard.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Clipboard.3; sourceTree = ""; }; - F966BA2108F27A37005CB29B /* clipboard.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = clipboard.n; sourceTree = ""; }; - F966BA2208F27A37005CB29B /* ClrSelect.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ClrSelect.3; sourceTree = ""; }; - F966BA2308F27A37005CB29B /* colors.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = colors.n; sourceTree = ""; }; - F966BA2408F27A37005CB29B /* ConfigWidg.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ConfigWidg.3; sourceTree = ""; }; - F966BA2508F27A37005CB29B /* ConfigWind.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ConfigWind.3; sourceTree = ""; }; - F966BA2608F27A37005CB29B /* console.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = console.n; sourceTree = ""; }; - F966BA2708F27A37005CB29B /* CoordToWin.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CoordToWin.3; sourceTree = ""; }; - F966BA2808F27A37005CB29B /* CrtCmHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtCmHdlr.3; sourceTree = ""; }; - F966BA2908F27A37005CB29B /* CrtErrHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtErrHdlr.3; sourceTree = ""; }; - F966BA2A08F27A37005CB29B /* CrtGenHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtGenHdlr.3; sourceTree = ""; }; - F966BA2B08F27A37005CB29B /* CrtImgType.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtImgType.3; sourceTree = ""; }; - F966BA2C08F27A37005CB29B /* CrtItemType.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtItemType.3; sourceTree = ""; }; - F966BA2D08F27A37005CB29B /* CrtPhImgFmt.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtPhImgFmt.3; sourceTree = ""; }; - F966BA2E08F27A37005CB29B /* CrtSelHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtSelHdlr.3; sourceTree = ""; }; - F966BA2F08F27A37005CB29B /* CrtWindow.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtWindow.3; sourceTree = ""; }; - F966BA3008F27A37005CB29B /* cursors.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = cursors.n; sourceTree = ""; }; - F966BA3108F27A37005CB29B /* DeleteImg.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DeleteImg.3; sourceTree = ""; }; - F966BA3208F27A37005CB29B /* destroy.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = destroy.n; sourceTree = ""; }; - F966BA3308F27A37005CB29B /* dialog.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = dialog.n; sourceTree = ""; }; - F966BA3408F27A37005CB29B /* DrawFocHlt.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DrawFocHlt.3; sourceTree = ""; }; - F966BA3508F27A37005CB29B /* entry.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = entry.n; sourceTree = ""; }; - F966BA3608F27A37005CB29B /* event.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = event.n; sourceTree = ""; }; - F966BA3708F27A37005CB29B /* EventHndlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = EventHndlr.3; sourceTree = ""; }; - F966BA3808F27A37005CB29B /* FindPhoto.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = FindPhoto.3; sourceTree = ""; }; - F966BA3908F27A37005CB29B /* focus.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = focus.n; sourceTree = ""; }; - F966BA3A08F27A37005CB29B /* focusNext.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = focusNext.n; sourceTree = ""; }; - F966BA3B08F27A37005CB29B /* font.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = font.n; sourceTree = ""; }; - F966BA3C08F27A37005CB29B /* FontId.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = FontId.3; sourceTree = ""; }; - F966BA3D08F27A37005CB29B /* frame.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = frame.n; sourceTree = ""; }; - F966BA3E08F27A37005CB29B /* FreeXId.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = FreeXId.3; sourceTree = ""; }; - F966BA3F08F27A37005CB29B /* GeomReq.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GeomReq.3; sourceTree = ""; }; - F966BA4008F27A37005CB29B /* GetAnchor.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetAnchor.3; sourceTree = ""; }; - F966BA4108F27A37005CB29B /* GetBitmap.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetBitmap.3; sourceTree = ""; }; - F966BA4208F27A37005CB29B /* GetCapStyl.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetCapStyl.3; sourceTree = ""; }; - F966BA4308F27A37005CB29B /* GetClrmap.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetClrmap.3; sourceTree = ""; }; - F966BA4408F27A37005CB29B /* GetColor.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetColor.3; sourceTree = ""; }; - F966BA4508F27A37005CB29B /* GetCursor.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetCursor.3; sourceTree = ""; }; - F966BA4608F27A37005CB29B /* GetDash.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetDash.3; sourceTree = ""; }; - F966BA4708F27A37005CB29B /* GetFont.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetFont.3; sourceTree = ""; }; - F966BA4808F27A37005CB29B /* GetGC.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetGC.3; sourceTree = ""; }; - F966BA4908F27A37005CB29B /* GetHINSTANCE.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetHINSTANCE.3; sourceTree = ""; }; - F966BA4A08F27A37005CB29B /* GetHWND.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetHWND.3; sourceTree = ""; }; - F966BA4B08F27A37005CB29B /* GetImage.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetImage.3; sourceTree = ""; }; - F966BA4C08F27A37005CB29B /* GetJoinStl.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetJoinStl.3; sourceTree = ""; }; - F966BA4D08F27A37005CB29B /* GetJustify.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetJustify.3; sourceTree = ""; }; - F966BA4E08F27A37005CB29B /* getOpenFile.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = getOpenFile.n; sourceTree = ""; }; - F966BA4F08F27A37005CB29B /* GetOption.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetOption.3; sourceTree = ""; }; - F966BA5008F27A38005CB29B /* GetPixels.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetPixels.3; sourceTree = ""; }; - F966BA5108F27A38005CB29B /* GetPixmap.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetPixmap.3; sourceTree = ""; }; - F966BA5208F27A38005CB29B /* GetRelief.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetRelief.3; sourceTree = ""; }; - F966BA5308F27A38005CB29B /* GetRootCrd.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetRootCrd.3; sourceTree = ""; }; - F966BA5408F27A38005CB29B /* GetScroll.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetScroll.3; sourceTree = ""; }; - F966BA5508F27A38005CB29B /* GetSelect.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetSelect.3; sourceTree = ""; }; - F966BA5608F27A38005CB29B /* GetUid.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetUid.3; sourceTree = ""; }; - F966BA5708F27A38005CB29B /* GetVisual.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetVisual.3; sourceTree = ""; }; - F966BA5808F27A38005CB29B /* GetVRoot.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetVRoot.3; sourceTree = ""; }; - F966BA5908F27A38005CB29B /* Grab.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Grab.3; sourceTree = ""; }; - F966BA5A08F27A38005CB29B /* grab.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = grab.n; sourceTree = ""; }; - F966BA5B08F27A38005CB29B /* grid.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = grid.n; sourceTree = ""; }; - F966BA5C08F27A38005CB29B /* HandleEvent.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = HandleEvent.3; sourceTree = ""; }; - F966BA5D08F27A38005CB29B /* HWNDToWindow.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = HWNDToWindow.3; sourceTree = ""; }; - F966BA5E08F27A38005CB29B /* IdToWindow.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = IdToWindow.3; sourceTree = ""; }; - F966BA5F08F27A38005CB29B /* image.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = image.n; sourceTree = ""; }; - F966BA6008F27A38005CB29B /* ImgChanged.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ImgChanged.3; sourceTree = ""; }; - F966BA6108F27A38005CB29B /* Inactive.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Inactive.3; sourceTree = ""; }; - F966BA6208F27A38005CB29B /* InternAtom.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = InternAtom.3; sourceTree = ""; }; - F966BA6308F27A38005CB29B /* keysyms.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = keysyms.n; sourceTree = ""; }; - F966BA6408F27A38005CB29B /* label.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = label.n; sourceTree = ""; }; - F966BA6508F27A38005CB29B /* labelframe.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = labelframe.n; sourceTree = ""; }; - F966BA6608F27A38005CB29B /* listbox.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = listbox.n; sourceTree = ""; }; - F966BA6708F27A38005CB29B /* loadTk.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = loadTk.n; sourceTree = ""; }; - F966BA6808F27A38005CB29B /* lower.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lower.n; sourceTree = ""; }; - F966BA6908F27A38005CB29B /* MainLoop.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MainLoop.3; sourceTree = ""; }; - F966BA6A08F27A38005CB29B /* MaintGeom.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MaintGeom.3; sourceTree = ""; }; - F966BA6B08F27A38005CB29B /* MainWin.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MainWin.3; sourceTree = ""; }; - F966BA6D08F27A38005CB29B /* ManageGeom.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ManageGeom.3; sourceTree = ""; }; - F966BA6E08F27A38005CB29B /* MapWindow.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MapWindow.3; sourceTree = ""; }; - F966BA6F08F27A38005CB29B /* MeasureChar.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MeasureChar.3; sourceTree = ""; }; - F966BA7008F27A38005CB29B /* menu.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = menu.n; sourceTree = ""; }; - F966BA7208F27A38005CB29B /* menubutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = menubutton.n; sourceTree = ""; }; - F966BA7308F27A38005CB29B /* message.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = message.n; sourceTree = ""; }; - F966BA7408F27A38005CB29B /* messageBox.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = messageBox.n; sourceTree = ""; }; - F966BA7508F27A38005CB29B /* MoveToplev.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = MoveToplev.3; sourceTree = ""; }; - F966BA7608F27A38005CB29B /* Name.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Name.3; sourceTree = ""; }; - F966BA7708F27A38005CB29B /* NameOfImg.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = NameOfImg.3; sourceTree = ""; }; - F966BA7808F27A38005CB29B /* option.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = option.n; sourceTree = ""; }; - F966BA7908F27A38005CB29B /* optionMenu.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = optionMenu.n; sourceTree = ""; }; - F966BA7A08F27A38005CB29B /* options.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = options.n; sourceTree = ""; }; - F966BA7B08F27A38005CB29B /* OwnSelect.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = OwnSelect.3; sourceTree = ""; }; - F966BA7D08F27A38005CB29B /* pack.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = pack.n; sourceTree = ""; }; - F966BA7E08F27A38005CB29B /* palette.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = palette.n; sourceTree = ""; }; - F966BA7F08F27A38005CB29B /* panedwindow.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = panedwindow.n; sourceTree = ""; }; - F966BA8008F27A38005CB29B /* ParseArgv.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ParseArgv.3; sourceTree = ""; }; - F966BA8108F27A38005CB29B /* photo.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = photo.n; sourceTree = ""; }; - F966BA8208F27A38005CB29B /* place.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = place.n; sourceTree = ""; }; - F966BA8308F27A38005CB29B /* popup.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = popup.n; sourceTree = ""; }; - F966BA8408F27A38005CB29B /* QWinEvent.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = QWinEvent.3; sourceTree = ""; }; - F966BA8508F27A38005CB29B /* radiobutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = radiobutton.n; sourceTree = ""; }; - F966BA8608F27A38005CB29B /* raise.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = raise.n; sourceTree = ""; }; - F966BA8708F27A38005CB29B /* Restack.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Restack.3; sourceTree = ""; }; - F966BA8808F27A38005CB29B /* RestrictEv.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = RestrictEv.3; sourceTree = ""; }; - F966BA8908F27A38005CB29B /* scale.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = scale.n; sourceTree = ""; }; - F966BA8A08F27A38005CB29B /* scrollbar.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = scrollbar.n; sourceTree = ""; }; - F966BA8B08F27A38005CB29B /* selection.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = selection.n; sourceTree = ""; }; - F966BA8C08F27A38005CB29B /* send.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = send.n; sourceTree = ""; }; - F966BA8D08F27A38005CB29B /* SetAppName.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetAppName.3; sourceTree = ""; }; - F966BA8E08F27A38005CB29B /* SetCaret.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetCaret.3; sourceTree = ""; }; - F966BA8F08F27A38005CB29B /* SetClass.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetClass.3; sourceTree = ""; }; - F966BA9008F27A38005CB29B /* SetClassProcs.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetClassProcs.3; sourceTree = ""; }; - F966BA9108F27A38005CB29B /* SetGrid.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetGrid.3; sourceTree = ""; }; - F966BA9208F27A38005CB29B /* SetOptions.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetOptions.3; sourceTree = ""; }; - F966BA9308F27A38005CB29B /* SetVisual.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetVisual.3; sourceTree = ""; }; - F966BA9408F27A38005CB29B /* spinbox.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = spinbox.n; sourceTree = ""; }; - F966BA9508F27A38005CB29B /* StrictMotif.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = StrictMotif.3; sourceTree = ""; }; - F966BA9608F27A38005CB29B /* text.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = text.n; sourceTree = ""; }; - F966BA9708F27A38005CB29B /* TextLayout.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TextLayout.3; sourceTree = ""; }; - F966BA9808F27A38005CB29B /* tk.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tk.n; sourceTree = ""; }; - F966BA9A08F27A38005CB29B /* Tk_Init.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Tk_Init.3; sourceTree = ""; }; - F966BA9B08F27A38005CB29B /* Tk_Main.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Tk_Main.3; sourceTree = ""; }; - F966BA9C08F27A38005CB29B /* tkerror.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tkerror.n; sourceTree = ""; }; - F966BA9D08F27A38005CB29B /* TkInitStubs.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TkInitStubs.3; sourceTree = ""; }; - F966BA9E08F27A38005CB29B /* tkvars.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tkvars.n; sourceTree = ""; }; - F966BA9F08F27A38005CB29B /* tkwait.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tkwait.n; sourceTree = ""; }; - F966BAA008F27A38005CB29B /* toplevel.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = toplevel.n; sourceTree = ""; }; - F966BAA108F27A38005CB29B /* WindowId.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = WindowId.3; sourceTree = ""; }; - F966BAA208F27A38005CB29B /* winfo.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = winfo.n; sourceTree = ""; }; - F966BAA308F27A38005CB29B /* wish.1 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = wish.1; sourceTree = ""; }; - F966BAA408F27A38005CB29B /* wm.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = wm.n; sourceTree = ""; }; - F966BAA608F27A38005CB29B /* default.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = default.h; sourceTree = ""; }; - F966BAA708F27A38005CB29B /* ks_names.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ks_names.h; sourceTree = ""; }; - F966BAA908F27A39005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BAAA08F27A39005CB29B /* tk.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tk.decls; sourceTree = ""; }; - F966BAAB08F27A39005CB29B /* tk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tk.h; sourceTree = ""; }; - F966BAAC08F27A39005CB29B /* tk3d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tk3d.c; sourceTree = ""; }; - F966BAAD08F27A39005CB29B /* tk3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tk3d.h; sourceTree = ""; }; - F966BAAE08F27A39005CB29B /* tkArgv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkArgv.c; sourceTree = ""; }; - F966BAAF08F27A39005CB29B /* tkAtom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkAtom.c; sourceTree = ""; }; - F966BAB008F27A39005CB29B /* tkBind.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkBind.c; sourceTree = ""; }; - F966BAB108F27A39005CB29B /* tkBitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkBitmap.c; sourceTree = ""; }; - F966BAB208F27A39005CB29B /* tkButton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkButton.c; sourceTree = ""; }; - F966BAB308F27A39005CB29B /* tkButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkButton.h; sourceTree = ""; }; - F966BAB408F27A39005CB29B /* tkCanvArc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvArc.c; sourceTree = ""; }; - F966BAB508F27A39005CB29B /* tkCanvas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvas.c; sourceTree = ""; }; - F966BAB608F27A39005CB29B /* tkCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkCanvas.h; sourceTree = ""; }; - F966BAB708F27A39005CB29B /* tkCanvBmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvBmap.c; sourceTree = ""; }; - F966BAB808F27A39005CB29B /* tkCanvImg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvImg.c; sourceTree = ""; }; - F966BAB908F27A39005CB29B /* tkCanvLine.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvLine.c; sourceTree = ""; }; - F966BABA08F27A39005CB29B /* tkCanvPoly.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvPoly.c; sourceTree = ""; }; - F966BABB08F27A39005CB29B /* tkCanvPs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvPs.c; sourceTree = ""; }; - F966BABD08F27A39005CB29B /* tkCanvText.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvText.c; sourceTree = ""; }; - F966BABE08F27A39005CB29B /* tkCanvUtil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvUtil.c; sourceTree = ""; }; - F966BABF08F27A39005CB29B /* tkCanvWind.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCanvWind.c; sourceTree = ""; }; - F966BAC008F27A39005CB29B /* tkClipboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkClipboard.c; sourceTree = ""; }; - F966BAC108F27A39005CB29B /* tkCmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCmds.c; sourceTree = ""; }; - F966BAC208F27A39005CB29B /* tkColor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkColor.c; sourceTree = ""; }; - F966BAC308F27A39005CB29B /* tkColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkColor.h; sourceTree = ""; }; - F966BAC408F27A39005CB29B /* tkConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkConfig.c; sourceTree = ""; }; - F966BAC508F27A39005CB29B /* tkConsole.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkConsole.c; sourceTree = ""; }; - F966BAC608F27A39005CB29B /* tkCursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkCursor.c; sourceTree = ""; }; - F966BAC708F27A39005CB29B /* tkDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkDecls.h; sourceTree = ""; }; - F966BAC808F27A39005CB29B /* tkEntry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkEntry.c; sourceTree = ""; }; - F966BAC908F27A39005CB29B /* tkEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkEntry.h; sourceTree = ""; }; - F966BACA08F27A39005CB29B /* tkError.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkError.c; sourceTree = ""; }; - F966BACB08F27A39005CB29B /* tkEvent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkEvent.c; sourceTree = ""; }; - F966BACC08F27A39005CB29B /* tkFileFilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkFileFilter.c; sourceTree = ""; }; - F966BACD08F27A39005CB29B /* tkFileFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkFileFilter.h; sourceTree = ""; }; - F966BACE08F27A39005CB29B /* tkFocus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkFocus.c; sourceTree = ""; }; - F966BACF08F27A39005CB29B /* tkFont.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkFont.c; sourceTree = ""; }; - F966BAD008F27A39005CB29B /* tkFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkFont.h; sourceTree = ""; }; - F966BAD108F27A39005CB29B /* tkFrame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkFrame.c; sourceTree = ""; }; - F966BAD208F27A39005CB29B /* tkGC.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkGC.c; sourceTree = ""; }; - F966BAD308F27A39005CB29B /* tkGeometry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkGeometry.c; sourceTree = ""; }; - F966BAD408F27A39005CB29B /* tkGet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkGet.c; sourceTree = ""; }; - F966BAD508F27A39005CB29B /* tkGrab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkGrab.c; sourceTree = ""; }; - F966BAD608F27A39005CB29B /* tkGrid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkGrid.c; sourceTree = ""; }; - F966BAD708F27A39005CB29B /* tkImage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImage.c; sourceTree = ""; }; - F966BAD808F27A39005CB29B /* tkImgBmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgBmap.c; sourceTree = ""; }; - F966BAD908F27A39005CB29B /* tkImgGIF.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgGIF.c; sourceTree = ""; }; - F966BADA08F27A39005CB29B /* tkImgPhoto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgPhoto.c; sourceTree = ""; }; - F966BADB08F27A39005CB29B /* tkImgPPM.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgPPM.c; sourceTree = ""; }; - F966BADC08F27A39005CB29B /* tkImgUtil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgUtil.c; sourceTree = ""; }; - F966BADE08F27A39005CB29B /* tkInt.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tkInt.decls; sourceTree = ""; }; - F966BADF08F27A39005CB29B /* tkInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkInt.h; sourceTree = ""; }; - F966BAE108F27A39005CB29B /* tkIntDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkIntDecls.h; sourceTree = ""; }; - F966BAE208F27A39005CB29B /* tkIntPlatDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkIntPlatDecls.h; sourceTree = ""; }; - F966BAE308F27A39005CB29B /* tkIntXlibDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkIntXlibDecls.h; sourceTree = ""; }; - F966BAE408F27A39005CB29B /* tkListbox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkListbox.c; sourceTree = ""; }; - F966BAE508F27A39005CB29B /* tkMacWinMenu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMacWinMenu.c; sourceTree = ""; }; - F966BAE608F27A39005CB29B /* tkMain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMain.c; sourceTree = ""; }; - F966BAE708F27A39005CB29B /* tkMenu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMenu.c; sourceTree = ""; }; - F966BAE808F27A39005CB29B /* tkMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMenu.h; sourceTree = ""; }; - F966BAE908F27A39005CB29B /* tkMenubutton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMenubutton.c; sourceTree = ""; }; - F966BAEA08F27A39005CB29B /* tkMenubutton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMenubutton.h; sourceTree = ""; }; - F966BAEB08F27A39005CB29B /* tkMenuDraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMenuDraw.c; sourceTree = ""; }; - F966BAEC08F27A39005CB29B /* tkMessage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkMessage.c; sourceTree = ""; }; - F966BAED08F27A39005CB29B /* tkObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkObj.c; sourceTree = ""; }; - F966BAEE08F27A39005CB29B /* tkOldConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkOldConfig.c; sourceTree = ""; }; - F966BAEF08F27A39005CB29B /* tkOption.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkOption.c; sourceTree = ""; }; - F966BAF008F27A39005CB29B /* tkPack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkPack.c; sourceTree = ""; }; - F966BAF108F27A39005CB29B /* tkPanedWindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkPanedWindow.c; sourceTree = ""; }; - F966BAF208F27A39005CB29B /* tkPlace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkPlace.c; sourceTree = ""; }; - F966BAF308F27A39005CB29B /* tkPlatDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkPlatDecls.h; sourceTree = ""; }; - F966BAF408F27A39005CB29B /* tkPointer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkPointer.c; sourceTree = ""; }; - F966BAF508F27A39005CB29B /* tkPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkPort.h; sourceTree = ""; }; - F966BAF608F27A39005CB29B /* tkRectOval.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkRectOval.c; sourceTree = ""; }; - F966BAF708F27A39005CB29B /* tkScale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkScale.c; sourceTree = ""; }; - F966BAF808F27A39005CB29B /* tkScale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkScale.h; sourceTree = ""; }; - F966BAF908F27A39005CB29B /* tkScrollbar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkScrollbar.c; sourceTree = ""; }; - F966BAFA08F27A39005CB29B /* tkScrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkScrollbar.h; sourceTree = ""; }; - F966BAFB08F27A39005CB29B /* tkSelect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkSelect.c; sourceTree = ""; }; - F966BAFC08F27A39005CB29B /* tkSelect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkSelect.h; sourceTree = ""; }; - F966BAFD08F27A39005CB29B /* tkSquare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkSquare.c; sourceTree = ""; }; - F966BAFF08F27A39005CB29B /* tkStubInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkStubInit.c; sourceTree = ""; }; - F966BB0008F27A39005CB29B /* tkStubLib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkStubLib.c; sourceTree = ""; }; - F966BB0108F27A39005CB29B /* tkStyle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkStyle.c; sourceTree = ""; }; - F966BB0208F27A39005CB29B /* tkTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTest.c; sourceTree = ""; }; - F966BB0308F27A39005CB29B /* tkText.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkText.c; sourceTree = ""; }; - F966BB0408F27A39005CB29B /* tkText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkText.h; sourceTree = ""; }; - F966BB0508F27A39005CB29B /* tkTextBTree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextBTree.c; sourceTree = ""; }; - F966BB0608F27A39005CB29B /* tkTextDisp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextDisp.c; sourceTree = ""; }; - F966BB0808F27A39005CB29B /* tkTextImage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextImage.c; sourceTree = ""; }; - F966BB0908F27A39005CB29B /* tkTextIndex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextIndex.c; sourceTree = ""; }; - F966BB0A08F27A39005CB29B /* tkTextMark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextMark.c; sourceTree = ""; }; - F966BB0B08F27A39005CB29B /* tkTextTag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextTag.c; sourceTree = ""; }; - F966BB0C08F27A39005CB29B /* tkTextWind.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTextWind.c; sourceTree = ""; }; - F966BB0D08F27A39005CB29B /* tkTrig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkTrig.c; sourceTree = ""; }; - F966BB0E08F27A39005CB29B /* tkUndo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUndo.c; sourceTree = ""; }; - F966BB0F08F27A39005CB29B /* tkUndo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkUndo.h; sourceTree = ""; }; - F966BB1008F27A39005CB29B /* tkUtil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUtil.c; sourceTree = ""; }; - F966BB1108F27A39005CB29B /* tkVisual.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkVisual.c; sourceTree = ""; }; - F966BB1208F27A39005CB29B /* tkWindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWindow.c; sourceTree = ""; }; - F966BB1408F27A39005CB29B /* bgerror.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bgerror.tcl; sourceTree = ""; }; - F966BB1508F27A39005CB29B /* button.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = button.tcl; sourceTree = ""; }; - F966BB1608F27A39005CB29B /* choosedir.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = choosedir.tcl; sourceTree = ""; }; - F966BB1708F27A39005CB29B /* clrpick.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clrpick.tcl; sourceTree = ""; }; - F966BB1808F27A39005CB29B /* comdlg.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = comdlg.tcl; sourceTree = ""; }; - F966BB1908F27A39005CB29B /* console.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = console.tcl; sourceTree = ""; }; - F966BB1B08F27A39005CB29B /* anilabel.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = anilabel.tcl; sourceTree = ""; }; - F966BB1C08F27A39005CB29B /* aniwave.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = aniwave.tcl; sourceTree = ""; }; - F966BB1D08F27A39005CB29B /* arrow.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = arrow.tcl; sourceTree = ""; }; - F966BB1E08F27A39005CB29B /* bind.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bind.tcl; sourceTree = ""; }; - F966BB1F08F27A39005CB29B /* bitmap.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bitmap.tcl; sourceTree = ""; }; - F966BB2008F27A39005CB29B /* browse */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = browse; sourceTree = ""; }; - F966BB2108F27A39005CB29B /* button.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = button.tcl; sourceTree = ""; }; - F966BB2208F27A39005CB29B /* check.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = check.tcl; sourceTree = ""; }; - F966BB2308F27A39005CB29B /* clrpick.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clrpick.tcl; sourceTree = ""; }; - F966BB2408F27A39005CB29B /* colors.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = colors.tcl; sourceTree = ""; }; - F966BB2508F27A39005CB29B /* cscroll.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cscroll.tcl; sourceTree = ""; }; - F966BB2608F27A39005CB29B /* ctext.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ctext.tcl; sourceTree = ""; }; - F966BB2708F27A39005CB29B /* dialog1.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dialog1.tcl; sourceTree = ""; }; - F966BB2808F27A39005CB29B /* dialog2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dialog2.tcl; sourceTree = ""; }; - F966BB2A08F27A39005CB29B /* entry1.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry1.tcl; sourceTree = ""; }; - F966BB2B08F27A39005CB29B /* entry2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry2.tcl; sourceTree = ""; }; - F966BB2C08F27A39005CB29B /* entry3.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry3.tcl; sourceTree = ""; }; - F966BB2D08F27A39005CB29B /* filebox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = filebox.tcl; sourceTree = ""; }; - F966BB2E08F27A39005CB29B /* floor.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = floor.tcl; sourceTree = ""; }; - F966BB2F08F27A39005CB29B /* form.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = form.tcl; sourceTree = ""; }; - F966BB3008F27A39005CB29B /* goldberg.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = goldberg.tcl; sourceTree = ""; }; - F966BB3108F27A39005CB29B /* hello */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = hello; sourceTree = ""; }; - F966BB3208F27A39005CB29B /* hscale.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = hscale.tcl; sourceTree = ""; }; - F966BB3308F27A39005CB29B /* icon.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = icon.tcl; sourceTree = ""; }; - F966BB3408F27A39005CB29B /* image1.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = image1.tcl; sourceTree = ""; }; - F966BB3508F27A39005CB29B /* image2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = image2.tcl; sourceTree = ""; }; - F966BB4208F27A3A005CB29B /* items.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = items.tcl; sourceTree = ""; }; - F966BB4308F27A3A005CB29B /* ixset */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ixset; sourceTree = ""; }; - F966BB4408F27A3A005CB29B /* label.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = label.tcl; sourceTree = ""; }; - F966BB4508F27A3A005CB29B /* labelframe.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = labelframe.tcl; sourceTree = ""; }; - F966BB4608F27A3A005CB29B /* menu.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menu.tcl; sourceTree = ""; }; - F966BB4708F27A3A005CB29B /* menubu.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menubu.tcl; sourceTree = ""; }; - F966BB4808F27A3A005CB29B /* msgbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = msgbox.tcl; sourceTree = ""; }; - F966BB4A08F27A3A005CB29B /* paned1.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = paned1.tcl; sourceTree = ""; }; - F966BB4B08F27A3A005CB29B /* paned2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = paned2.tcl; sourceTree = ""; }; - F966BB4C08F27A3A005CB29B /* pendulum.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pendulum.tcl; sourceTree = ""; }; - F966BB4D08F27A3A005CB29B /* plot.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = plot.tcl; sourceTree = ""; }; - F966BB4E08F27A3A005CB29B /* puzzle.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = puzzle.tcl; sourceTree = ""; }; - F966BB4F08F27A3A005CB29B /* radio.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = radio.tcl; sourceTree = ""; }; - F966BB5008F27A3A005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BB5108F27A3A005CB29B /* rmt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = rmt; sourceTree = ""; }; - F966BB5208F27A3A005CB29B /* rolodex */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = rolodex; sourceTree = ""; }; - F966BB5308F27A3A005CB29B /* ruler.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ruler.tcl; sourceTree = ""; }; - F966BB5408F27A3A005CB29B /* sayings.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = sayings.tcl; sourceTree = ""; }; - F966BB5508F27A3A005CB29B /* search.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = search.tcl; sourceTree = ""; }; - F966BB5608F27A3A005CB29B /* spin.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = spin.tcl; sourceTree = ""; }; - F966BB5708F27A3A005CB29B /* square */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = square; sourceTree = ""; }; - F966BB5808F27A3A005CB29B /* states.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = states.tcl; sourceTree = ""; }; - F966BB5908F27A3A005CB29B /* style.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = style.tcl; sourceTree = ""; }; - F966BB5A08F27A3A005CB29B /* tclIndex */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclIndex; sourceTree = ""; }; - F966BB5B08F27A3A005CB29B /* tcolor */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = tcolor; sourceTree = ""; }; - F966BB5C08F27A3A005CB29B /* text.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = text.tcl; sourceTree = ""; }; - F966BB5D08F27A3A005CB29B /* timer */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = timer; sourceTree = ""; }; - F966BB5E08F27A3A005CB29B /* twind.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = twind.tcl; sourceTree = ""; }; - F966BB5F08F27A3A005CB29B /* unicodeout.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unicodeout.tcl; sourceTree = ""; }; - F966BB6008F27A3A005CB29B /* vscale.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = vscale.tcl; sourceTree = ""; }; - F966BB6108F27A3A005CB29B /* widget */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = widget; sourceTree = ""; }; - F966BB6208F27A3A005CB29B /* dialog.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dialog.tcl; sourceTree = ""; }; - F966BB6308F27A3A005CB29B /* entry.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry.tcl; sourceTree = ""; }; - F966BB6408F27A3A005CB29B /* focus.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = focus.tcl; sourceTree = ""; }; - F966BB7308F27A3A005CB29B /* listbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = listbox.tcl; sourceTree = ""; }; - F966BB7408F27A3A005CB29B /* menu.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menu.tcl; sourceTree = ""; }; - F966BB7508F27A3A005CB29B /* mkpsenc.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = mkpsenc.tcl; sourceTree = ""; }; - F966BB7608F27A3A005CB29B /* msgbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = msgbox.tcl; sourceTree = ""; }; - F966BB8708F27A3A005CB29B /* optMenu.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = optMenu.tcl; sourceTree = ""; }; - F966BB8808F27A3A005CB29B /* palette.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = palette.tcl; sourceTree = ""; }; - F966BB8908F27A3B005CB29B /* panedwindow.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = panedwindow.tcl; sourceTree = ""; }; - F966BB8B08F27A3B005CB29B /* safetk.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = safetk.tcl; sourceTree = ""; }; - F966BB8C08F27A3B005CB29B /* scale.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scale.tcl; sourceTree = ""; }; - F966BB8D08F27A3B005CB29B /* scrlbar.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scrlbar.tcl; sourceTree = ""; }; - F966BB8E08F27A3B005CB29B /* spinbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = spinbox.tcl; sourceTree = ""; }; - F966BB8F08F27A3B005CB29B /* tclIndex */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclIndex; sourceTree = ""; }; - F966BB9008F27A3B005CB29B /* tearoff.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tearoff.tcl; sourceTree = ""; }; - F966BB9108F27A3B005CB29B /* text.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = text.tcl; sourceTree = ""; }; - F966BB9208F27A3B005CB29B /* tk.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tk.tcl; sourceTree = ""; }; - F966BB9308F27A3B005CB29B /* tkfbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tkfbox.tcl; sourceTree = ""; }; - F966BB9508F27A3B005CB29B /* xmfbox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = xmfbox.tcl; sourceTree = ""; }; - F966BB9608F27A3B005CB29B /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = ""; }; - F966BBBA08F27A3B005CB29B /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure.ac; sourceTree = ""; }; - F966BBBB08F27A3B005CB29B /* GNUmakefile */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = GNUmakefile; sourceTree = ""; }; - F966BBBE08F27A3B005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BBC008F27A3B005CB29B /* Tk-Info.plist.in */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = "Tk-Info.plist.in"; sourceTree = ""; }; - F966BBC208F27A3B005CB29B /* tkMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSX.h; sourceTree = ""; }; - F966BBC508F27A3B005CB29B /* tkMacOSXBitmap.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXBitmap.c; sourceTree = ""; }; - F966BBC608F27A3B005CB29B /* tkMacOSXButton.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXButton.c; sourceTree = ""; }; - F966BBC808F27A3B005CB29B /* tkMacOSXClipboard.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXClipboard.c; sourceTree = ""; }; - F966BBC908F27A3B005CB29B /* tkMacOSXColor.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXColor.c; sourceTree = ""; }; - F966BBCA08F27A3B005CB29B /* tkMacOSXConfig.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXConfig.c; sourceTree = ""; }; - F966BBCB08F27A3B005CB29B /* tkMacOSXCursor.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXCursor.c; sourceTree = ""; }; - F966BBCC08F27A3B005CB29B /* tkMacOSXCursors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXCursors.h; sourceTree = ""; }; - F966BBCD08F27A3B005CB29B /* tkMacOSXDebug.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXDebug.c; sourceTree = ""; }; - F966BBCE08F27A3B005CB29B /* tkMacOSXDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXDebug.h; sourceTree = ""; }; - F966BBCF08F27A3B005CB29B /* tkMacOSXDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXDefault.h; sourceTree = ""; }; - F966BBD008F27A3B005CB29B /* tkMacOSXDialog.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXDialog.c; sourceTree = ""; }; - F966BBD108F27A3B005CB29B /* tkMacOSXDraw.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXDraw.c; sourceTree = ""; }; - F966BBD208F27A3B005CB29B /* tkMacOSXEmbed.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXEmbed.c; sourceTree = ""; }; - F966BBD308F27A3B005CB29B /* tkMacOSXEntry.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXEntry.c; sourceTree = ""; }; - F966BBD408F27A3B005CB29B /* tkMacOSXEvent.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXEvent.c; sourceTree = ""; }; - F966BBD608F27A3B005CB29B /* tkMacOSXFont.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXFont.c; sourceTree = ""; }; - F966BBD708F27A3B005CB29B /* tkMacOSXHLEvents.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXHLEvents.c; sourceTree = ""; }; - F966BBD808F27A3B005CB29B /* tkMacOSXInit.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXInit.c; sourceTree = ""; }; - F966BBDA08F27A3B005CB29B /* tkMacOSXInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXInt.h; sourceTree = ""; }; - F966BBDB08F27A3B005CB29B /* tkMacOSXKeyboard.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXKeyboard.c; sourceTree = ""; }; - F966BBDC08F27A3B005CB29B /* tkMacOSXKeyEvent.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXKeyEvent.c; sourceTree = ""; }; - F966BBDD08F27A3B005CB29B /* tkMacOSXMenu.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXMenu.c; sourceTree = ""; }; - F966BBE008F27A3B005CB29B /* tkMacOSXMenubutton.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXMenubutton.c; sourceTree = ""; }; - F966BBE108F27A3B005CB29B /* tkMacOSXMenus.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXMenus.c; sourceTree = ""; }; - F966BBE208F27A3B005CB29B /* tkMacOSXMouseEvent.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXMouseEvent.c; sourceTree = ""; }; - F966BBE308F27A3B005CB29B /* tkMacOSXNotify.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXNotify.c; sourceTree = ""; }; - F966BBEA08F27A3C005CB29B /* tkMacOSXPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXPort.h; sourceTree = ""; }; - F966BBEB08F27A3C005CB29B /* tkMacOSXRegion.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXRegion.c; sourceTree = ""; }; - F966BBEC08F27A3C005CB29B /* tkMacOSXScale.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXScale.c; sourceTree = ""; }; - F966BBED08F27A3C005CB29B /* tkMacOSXScrlbr.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXScrlbr.c; sourceTree = ""; }; - F966BBEE08F27A3C005CB29B /* tkMacOSXSend.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXSend.c; sourceTree = ""; }; - F966BBEF08F27A3C005CB29B /* tkMacOSXSubwindows.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXSubwindows.c; sourceTree = ""; }; - F966BBF008F27A3C005CB29B /* tkMacOSXTest.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXTest.c; sourceTree = ""; }; - F966BBF108F27A3C005CB29B /* tkMacOSXWindowEvent.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXWindowEvent.c; sourceTree = ""; }; - F966BBF208F27A3C005CB29B /* tkMacOSXWm.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXWm.c; sourceTree = ""; }; - F966BBF308F27A3C005CB29B /* tkMacOSXWm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXWm.h; sourceTree = ""; }; - F966BBF408F27A3C005CB29B /* tkMacOSXXCursors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXXCursors.h; sourceTree = ""; }; - F966BBF508F27A3C005CB29B /* tkMacOSXXStubs.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = tkMacOSXXStubs.c; sourceTree = ""; }; - F966BBF708F27A3C005CB29B /* Wish-Info.plist.in */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = "Wish-Info.plist.in"; sourceTree = ""; }; - F966BC0308F27A3C005CB29B /* README */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = README; sourceTree = ""; }; - F966BC0508F27A3C005CB29B /* all.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = all.tcl; sourceTree = ""; }; - F966BC0608F27A3C005CB29B /* arc.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = arc.tcl; sourceTree = ""; }; - F966BC0708F27A3C005CB29B /* bell.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bell.test; sourceTree = ""; }; - F966BC0808F27A3C005CB29B /* bevel.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bevel.tcl; sourceTree = ""; }; - F966BC0908F27A3C005CB29B /* bgerror.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bgerror.test; sourceTree = ""; }; - F966BC0A08F27A3C005CB29B /* bind.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bind.test; sourceTree = ""; }; - F966BC0B08F27A3C005CB29B /* bitmap.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bitmap.test; sourceTree = ""; }; - F966BC0C08F27A3C005CB29B /* border.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = border.test; sourceTree = ""; }; - F966BC0D08F27A3C005CB29B /* bugs.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = bugs.tcl; sourceTree = ""; }; - F966BC0E08F27A3C005CB29B /* butGeom.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = butGeom.tcl; sourceTree = ""; }; - F966BC0F08F27A3C005CB29B /* butGeom2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = butGeom2.tcl; sourceTree = ""; }; - F966BC1008F27A3C005CB29B /* button.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = button.test; sourceTree = ""; }; - F966BC1108F27A3C005CB29B /* canvas.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvas.test; sourceTree = ""; }; - F966BC1208F27A3C005CB29B /* canvImg.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvImg.test; sourceTree = ""; }; - F966BC1308F27A3C005CB29B /* canvPs.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPs.test; sourceTree = ""; }; - F966BC1408F27A3C005CB29B /* canvPsArc.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPsArc.tcl; sourceTree = ""; }; - F966BC1508F27A3C005CB29B /* canvPsBmap.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPsBmap.tcl; sourceTree = ""; }; - F966BC1608F27A3C005CB29B /* canvPsGrph.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPsGrph.tcl; sourceTree = ""; }; - F966BC1708F27A3C005CB29B /* canvPsImg.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPsImg.tcl; sourceTree = ""; }; - F966BC1808F27A3C005CB29B /* canvPsText.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvPsText.tcl; sourceTree = ""; }; - F966BC1908F27A3C005CB29B /* canvRect.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvRect.test; sourceTree = ""; }; - F966BC1A08F27A3C005CB29B /* canvText.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvText.test; sourceTree = ""; }; - F966BC1B08F27A3C005CB29B /* canvWind.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = canvWind.test; sourceTree = ""; }; - F966BC1C08F27A3C005CB29B /* choosedir.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = choosedir.test; sourceTree = ""; }; - F966BC1D08F27A3C005CB29B /* clipboard.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clipboard.test; sourceTree = ""; }; - F966BC1E08F27A3C005CB29B /* clrpick.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clrpick.test; sourceTree = ""; }; - F966BC1F08F27A3C005CB29B /* cmap.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmap.tcl; sourceTree = ""; }; - F966BC2008F27A3C005CB29B /* cmds.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmds.test; sourceTree = ""; }; - F966BC2108F27A3C005CB29B /* color.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = color.test; sourceTree = ""; }; - F966BC2208F27A3C005CB29B /* config.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = config.test; sourceTree = ""; }; - F966BC2308F27A3C005CB29B /* constraints.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = constraints.tcl; sourceTree = ""; }; - F966BC2408F27A3C005CB29B /* cursor.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cursor.test; sourceTree = ""; }; - F966BC2508F27A3C005CB29B /* dialog.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dialog.test; sourceTree = ""; }; - F966BC2608F27A3C005CB29B /* embed.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = embed.test; sourceTree = ""; }; - F966BC2708F27A3C005CB29B /* entry.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry.test; sourceTree = ""; }; - F966BC2808F27A3C005CB29B /* event.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = event.test; sourceTree = ""; }; - F966BC2908F27A3C005CB29B /* filebox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = filebox.test; sourceTree = ""; }; - F966BC2A08F27A3C005CB29B /* focus.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = focus.test; sourceTree = ""; }; - F966BC2B08F27A3C005CB29B /* focusTcl.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = focusTcl.test; sourceTree = ""; }; - F966BC2C08F27A3C005CB29B /* font.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = font.test; sourceTree = ""; }; - F966BC2D08F27A3C005CB29B /* frame.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = frame.test; sourceTree = ""; }; - F966BC2E08F27A3C005CB29B /* geometry.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = geometry.test; sourceTree = ""; }; - F966BC2F08F27A3C005CB29B /* get.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = get.test; sourceTree = ""; }; - F966BC3008F27A3C005CB29B /* grab.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = grab.test; sourceTree = ""; }; - F966BC3108F27A3C005CB29B /* grid.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = grid.test; sourceTree = ""; }; - F966BC3308F27A3C005CB29B /* image.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = image.test; sourceTree = ""; }; - F966BC3408F27A3C005CB29B /* imgBmap.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = imgBmap.test; sourceTree = ""; }; - F966BC3508F27A3C005CB29B /* imgPhoto.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = imgPhoto.test; sourceTree = ""; }; - F966BC3608F27A3C005CB29B /* imgPPM.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = imgPPM.test; sourceTree = ""; }; - F966BC3708F27A3C005CB29B /* listbox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = listbox.test; sourceTree = ""; }; - F966BC3808F27A3C005CB29B /* main.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = main.test; sourceTree = ""; }; - F966BC3908F27A3C005CB29B /* menu.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menu.test; sourceTree = ""; }; - F966BC3A08F27A3C005CB29B /* menubut.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menubut.test; sourceTree = ""; }; - F966BC3B08F27A3C005CB29B /* menuDraw.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menuDraw.test; sourceTree = ""; }; - F966BC3C08F27A3C005CB29B /* message.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = message.test; sourceTree = ""; }; - F966BC3D08F27A3C005CB29B /* msgbox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = msgbox.test; sourceTree = ""; }; - F966BC3E08F27A3C005CB29B /* obj.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = obj.test; sourceTree = ""; }; - F966BC4008F27A3C005CB29B /* option.file1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = option.file1; sourceTree = ""; }; - F966BC4108F27A3C005CB29B /* option.file2 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = option.file2; sourceTree = ""; }; - F966BC4208F27A3C005CB29B /* option.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = option.test; sourceTree = ""; }; - F966BC4308F27A3C005CB29B /* pack.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pack.test; sourceTree = ""; }; - F966BC4408F27A3C005CB29B /* panedwindow.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = panedwindow.test; sourceTree = ""; }; - F966BC4508F27A3D005CB29B /* place.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = place.test; sourceTree = ""; }; - F966BC4608F27A3D005CB29B /* raise.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = raise.test; sourceTree = ""; }; - F966BC4708F27A3D005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BC4808F27A3D005CB29B /* safe.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = safe.test; sourceTree = ""; }; - F966BC4908F27A3D005CB29B /* scale.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scale.test; sourceTree = ""; }; - F966BC4A08F27A3D005CB29B /* scrollbar.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scrollbar.test; sourceTree = ""; }; - F966BC4B08F27A3D005CB29B /* select.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = select.test; sourceTree = ""; }; - F966BC4C08F27A3D005CB29B /* send.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = send.test; sourceTree = ""; }; - F966BC4D08F27A3D005CB29B /* spinbox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = spinbox.test; sourceTree = ""; }; - F966BC4E08F27A3D005CB29B /* text.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = text.test; sourceTree = ""; }; - F966BC4F08F27A3D005CB29B /* textBTree.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textBTree.test; sourceTree = ""; }; - F966BC5008F27A3D005CB29B /* textDisp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textDisp.test; sourceTree = ""; }; - F966BC5108F27A3D005CB29B /* textImage.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textImage.test; sourceTree = ""; }; - F966BC5208F27A3D005CB29B /* textIndex.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textIndex.test; sourceTree = ""; }; - F966BC5308F27A3D005CB29B /* textMark.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textMark.test; sourceTree = ""; }; - F966BC5408F27A3D005CB29B /* textTag.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textTag.test; sourceTree = ""; }; - F966BC5508F27A3D005CB29B /* textWind.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = textWind.test; sourceTree = ""; }; - F966BC5608F27A3D005CB29B /* tk.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tk.test; sourceTree = ""; }; - F966BC5708F27A3D005CB29B /* unixButton.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixButton.test; sourceTree = ""; }; - F966BC5808F27A3D005CB29B /* unixEmbed.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixEmbed.test; sourceTree = ""; }; - F966BC5908F27A3D005CB29B /* unixFont.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixFont.test; sourceTree = ""; }; - F966BC5A08F27A3D005CB29B /* unixMenu.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixMenu.test; sourceTree = ""; }; - F966BC5B08F27A3D005CB29B /* unixSelect.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixSelect.test; sourceTree = ""; }; - F966BC5C08F27A3D005CB29B /* unixWm.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixWm.test; sourceTree = ""; }; - F966BC5D08F27A3D005CB29B /* util.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = util.test; sourceTree = ""; }; - F966BC5E08F27A3D005CB29B /* visual.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = visual.test; sourceTree = ""; }; - F966BC5F08F27A3D005CB29B /* visual_bb.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = visual_bb.test; sourceTree = ""; }; - F966BC6008F27A3D005CB29B /* winButton.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winButton.test; sourceTree = ""; }; - F966BC6108F27A3D005CB29B /* winClipboard.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winClipboard.test; sourceTree = ""; }; - F966BC6208F27A3D005CB29B /* winDialog.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winDialog.test; sourceTree = ""; }; - F966BC6308F27A3D005CB29B /* window.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = window.test; sourceTree = ""; }; - F966BC6408F27A3D005CB29B /* winfo.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winfo.test; sourceTree = ""; }; - F966BC6508F27A3D005CB29B /* winFont.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winFont.test; sourceTree = ""; }; - F966BC6608F27A3D005CB29B /* winMenu.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winMenu.test; sourceTree = ""; }; - F966BC6708F27A3D005CB29B /* winSend.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winSend.test; sourceTree = ""; }; - F966BC6808F27A3D005CB29B /* winWm.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winWm.test; sourceTree = ""; }; - F966BC6908F27A3D005CB29B /* wm.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = wm.test; sourceTree = ""; }; - F966BC6A08F27A3D005CB29B /* xmfbox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = xmfbox.test; sourceTree = ""; }; - F966BC6C08F27A3D005CB29B /* aclocal.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = aclocal.m4; sourceTree = ""; }; - F966BC6D08F27A3D005CB29B /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - F966BC6E08F27A3D005CB29B /* configure.ac */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = configure.ac; sourceTree = ""; }; - F966BC6F08F27A3D005CB29B /* install-sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; - F966BC7008F27A3D005CB29B /* installManPage */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = installManPage; sourceTree = ""; }; - F966BC7108F27A3D005CB29B /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F966BC7208F27A3D005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BC7308F27A3D005CB29B /* tcl.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tcl.m4; sourceTree = ""; }; - F966BC7408F27A3D005CB29B /* tk.spec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tk.spec; sourceTree = ""; }; - F966BC7508F27A3D005CB29B /* tkAppInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkAppInit.c; sourceTree = ""; }; - F966BC7608F27A3D005CB29B /* tkConfig.h.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = tkConfig.h.in; sourceTree = ""; }; - F966BC7708F27A3D005CB29B /* tkConfig.sh.in */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tkConfig.sh.in; sourceTree = ""; }; - F966BC7808F27A3D005CB29B /* tkUnix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnix.c; sourceTree = ""; }; - F966BC7908F27A3D005CB29B /* tkUnix3d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnix3d.c; sourceTree = ""; }; - F966BC7A08F27A3D005CB29B /* tkUnixButton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixButton.c; sourceTree = ""; }; - F966BC7B08F27A3D005CB29B /* tkUnixColor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixColor.c; sourceTree = ""; }; - F966BC7C08F27A3D005CB29B /* tkUnixConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixConfig.c; sourceTree = ""; }; - F966BC7D08F27A3D005CB29B /* tkUnixCursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixCursor.c; sourceTree = ""; }; - F966BC7E08F27A3D005CB29B /* tkUnixDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkUnixDefault.h; sourceTree = ""; }; - F966BC8008F27A3D005CB29B /* tkUnixDraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixDraw.c; sourceTree = ""; }; - F966BC8108F27A3D005CB29B /* tkUnixEmbed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixEmbed.c; sourceTree = ""; }; - F966BC8208F27A3D005CB29B /* tkUnixEvent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixEvent.c; sourceTree = ""; }; - F966BC8308F27A3D005CB29B /* tkUnixFocus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixFocus.c; sourceTree = ""; }; - F966BC8408F27A3D005CB29B /* tkUnixFont.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixFont.c; sourceTree = ""; }; - F966BC8508F27A3D005CB29B /* tkUnixInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixInit.c; sourceTree = ""; }; - F966BC8608F27A3D005CB29B /* tkUnixInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkUnixInt.h; sourceTree = ""; }; - F966BC8708F27A3D005CB29B /* tkUnixKey.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixKey.c; sourceTree = ""; }; - F966BC8808F27A3D005CB29B /* tkUnixMenu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixMenu.c; sourceTree = ""; }; - F966BC8908F27A3D005CB29B /* tkUnixMenubu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixMenubu.c; sourceTree = ""; }; - F966BC8A08F27A3D005CB29B /* tkUnixPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkUnixPort.h; sourceTree = ""; }; - F966BC8B08F27A3D005CB29B /* tkUnixRFont.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixRFont.c; sourceTree = ""; }; - F966BC8C08F27A3D005CB29B /* tkUnixScale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixScale.c; sourceTree = ""; }; - F966BC8D08F27A3D005CB29B /* tkUnixScrlbr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixScrlbr.c; sourceTree = ""; }; - F966BC8E08F27A3D005CB29B /* tkUnixSelect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixSelect.c; sourceTree = ""; }; - F966BC8F08F27A3D005CB29B /* tkUnixSend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixSend.c; sourceTree = ""; }; - F966BC9008F27A3D005CB29B /* tkUnixWm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixWm.c; sourceTree = ""; }; - F966BC9108F27A3D005CB29B /* tkUnixXId.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkUnixXId.c; sourceTree = ""; }; - F966BC9408F27A3D005CB29B /* aclocal.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = aclocal.m4; sourceTree = ""; }; - F966BC9508F27A3D005CB29B /* buildall.vc.bat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = buildall.vc.bat; sourceTree = ""; }; - F966BC9608F27A3E005CB29B /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - F966BC9708F27A3E005CB29B /* configure.ac */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = configure.ac; sourceTree = ""; }; - F966BC9908F27A3E005CB29B /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F966BC9A08F27A3E005CB29B /* makefile.vc */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = makefile.vc; sourceTree = ""; }; - F966BC9C08F27A3E005CB29B /* nmakehlp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nmakehlp.c; sourceTree = ""; }; - F966BCEE08F27A3E005CB29B /* tk.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tk.rc; sourceTree = ""; }; - F966BCEF08F27A3E005CB29B /* tk_base.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tk_base.rc; sourceTree = ""; }; - F966BCF208F27A3E005CB29B /* wish.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = wish.rc; sourceTree = ""; }; - F966BCF308F27A3E005CB29B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F966BCF508F27A3F005CB29B /* rules.vc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rules.vc; sourceTree = ""; }; - F966BCF608F27A3F005CB29B /* stubs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stubs.c; sourceTree = ""; }; - F966BCF708F27A3F005CB29B /* tcl.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tcl.m4; sourceTree = ""; }; - F966BCF808F27A3F005CB29B /* tkConfig.sh.in */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tkConfig.sh.in; sourceTree = ""; }; - F966BCF908F27A3F005CB29B /* tkWin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkWin.h; sourceTree = ""; }; - F966BCFA08F27A3F005CB29B /* tkWin32Dll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWin32Dll.c; sourceTree = ""; }; - F966BCFB08F27A3F005CB29B /* tkWin3d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWin3d.c; sourceTree = ""; }; - F966BCFC08F27A3F005CB29B /* tkWinButton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinButton.c; sourceTree = ""; }; - F966BCFD08F27A3F005CB29B /* tkWinClipboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinClipboard.c; sourceTree = ""; }; - F966BCFE08F27A3F005CB29B /* tkWinColor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinColor.c; sourceTree = ""; }; - F966BCFF08F27A3F005CB29B /* tkWinConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinConfig.c; sourceTree = ""; }; - F966BD0008F27A3F005CB29B /* tkWinCursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinCursor.c; sourceTree = ""; }; - F966BD0108F27A3F005CB29B /* tkWinDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkWinDefault.h; sourceTree = ""; }; - F966BD0208F27A3F005CB29B /* tkWinDialog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinDialog.c; sourceTree = ""; }; - F966BD0308F27A3F005CB29B /* tkWinDraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinDraw.c; sourceTree = ""; }; - F966BD0408F27A3F005CB29B /* tkWinEmbed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinEmbed.c; sourceTree = ""; }; - F966BD0508F27A3F005CB29B /* tkWinFont.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinFont.c; sourceTree = ""; }; - F966BD0708F27A3F005CB29B /* tkWinImage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinImage.c; sourceTree = ""; }; - F966BD0808F27A3F005CB29B /* tkWinInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinInit.c; sourceTree = ""; }; - F966BD0908F27A3F005CB29B /* tkWinInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkWinInt.h; sourceTree = ""; }; - F966BD0A08F27A3F005CB29B /* tkWinKey.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinKey.c; sourceTree = ""; }; - F966BD0B08F27A3F005CB29B /* tkWinMenu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinMenu.c; sourceTree = ""; }; - F966BD0C08F27A3F005CB29B /* tkWinPixmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinPixmap.c; sourceTree = ""; }; - F966BD0D08F27A3F005CB29B /* tkWinPointer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinPointer.c; sourceTree = ""; }; - F966BD0E08F27A3F005CB29B /* tkWinPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkWinPort.h; sourceTree = ""; }; - F966BD0F08F27A3F005CB29B /* tkWinRegion.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinRegion.c; sourceTree = ""; }; - F966BD1008F27A3F005CB29B /* tkWinScrlbr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinScrlbr.c; sourceTree = ""; }; - F966BD1108F27A3F005CB29B /* tkWinSend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinSend.c; sourceTree = ""; }; - F966BD1208F27A3F005CB29B /* tkWinSendCom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinSendCom.c; sourceTree = ""; }; - F966BD1308F27A3F005CB29B /* tkWinSendCom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkWinSendCom.h; sourceTree = ""; }; - F966BD1408F27A3F005CB29B /* tkWinTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinTest.c; sourceTree = ""; }; - F966BD1508F27A3F005CB29B /* tkWinWindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinWindow.c; sourceTree = ""; }; - F966BD1608F27A3F005CB29B /* tkWinWm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinWm.c; sourceTree = ""; }; - F966BD1708F27A3F005CB29B /* tkWinX.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkWinX.c; sourceTree = ""; }; - F966BD1808F27A3F005CB29B /* winMain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = winMain.c; sourceTree = ""; }; - F966BD1B08F27A3F005CB29B /* cursorfont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursorfont.h; sourceTree = ""; }; - F966BD1C08F27A3F005CB29B /* keysym.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keysym.h; sourceTree = ""; }; - F966BD1D08F27A3F005CB29B /* keysymdef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keysymdef.h; sourceTree = ""; }; - F966BD1E08F27A3F005CB29B /* X.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = X.h; sourceTree = ""; }; - F966BD1F08F27A3F005CB29B /* Xatom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Xatom.h; sourceTree = ""; }; - F966BD2008F27A3F005CB29B /* Xfuncproto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Xfuncproto.h; sourceTree = ""; }; - F966BD2108F27A3F005CB29B /* Xlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Xlib.h; sourceTree = ""; }; - F966BD2208F27A3F005CB29B /* Xutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Xutil.h; sourceTree = ""; }; - F966BD2308F27A3F005CB29B /* xbytes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xbytes.h; sourceTree = ""; }; - F966BD2408F27A3F005CB29B /* xcolors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xcolors.c; sourceTree = ""; }; - F966BD2508F27A3F005CB29B /* xdraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xdraw.c; sourceTree = ""; }; - F966BD2608F27A3F005CB29B /* xgc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xgc.c; sourceTree = ""; }; - F966BD2708F27A3F005CB29B /* ximage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ximage.c; sourceTree = ""; }; - F966BD2808F27A3F005CB29B /* xutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xutil.c; sourceTree = ""; }; - F966C07408F2820D005CB29B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - F966C07608F2821B005CB29B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - F966C07808F28233005CB29B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - F96887E00AF786D5000797B5 /* ttk.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttk.decls; sourceTree = ""; }; - F96887E10AF786D5000797B5 /* ttkBlink.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkBlink.c; sourceTree = ""; }; - F96887E20AF786D5000797B5 /* ttkButton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkButton.c; sourceTree = ""; }; - F96887E30AF786D5000797B5 /* ttkCache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkCache.c; sourceTree = ""; }; - F96887E40AF786D5000797B5 /* ttkClamTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkClamTheme.c; sourceTree = ""; }; - F96887E50AF786D5000797B5 /* ttkClassicTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkClassicTheme.c; sourceTree = ""; }; - F96887E60AF786D5000797B5 /* ttkDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttkDecls.h; sourceTree = ""; }; - F96887E70AF786D5000797B5 /* ttkDefaultTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkDefaultTheme.c; sourceTree = ""; }; - F96887E80AF786D5000797B5 /* ttkElements.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkElements.c; sourceTree = ""; }; - F96887E90AF786D5000797B5 /* ttkEntry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkEntry.c; sourceTree = ""; }; - F96887EA0AF786D5000797B5 /* ttkFrame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkFrame.c; sourceTree = ""; }; - F96887EB0AF786D5000797B5 /* ttkImage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkImage.c; sourceTree = ""; }; - F96887EC0AF786D5000797B5 /* ttkInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkInit.c; sourceTree = ""; }; - F96887ED0AF786D5000797B5 /* ttkLabel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkLabel.c; sourceTree = ""; }; - F96887EE0AF786D5000797B5 /* ttkLayout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkLayout.c; sourceTree = ""; }; - F96887EF0AF786D5000797B5 /* ttkManager.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkManager.c; sourceTree = ""; }; - F96887F00AF786D5000797B5 /* ttkManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttkManager.h; sourceTree = ""; }; - F96887F10AF786D5000797B5 /* ttkNotebook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkNotebook.c; sourceTree = ""; }; - F96887F20AF786D5000797B5 /* ttkPanedwindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkPanedwindow.c; sourceTree = ""; }; - F96887F30AF786D5000797B5 /* ttkProgress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkProgress.c; sourceTree = ""; }; - F96887F40AF786D5000797B5 /* ttkScale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkScale.c; sourceTree = ""; }; - F96887F50AF786D5000797B5 /* ttkScroll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkScroll.c; sourceTree = ""; }; - F96887F60AF786D5000797B5 /* ttkScrollbar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkScrollbar.c; sourceTree = ""; }; - F96887F70AF786D5000797B5 /* ttkSeparator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkSeparator.c; sourceTree = ""; }; - F96887F80AF786D5000797B5 /* ttkSquare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkSquare.c; sourceTree = ""; }; - F96887F90AF786D5000797B5 /* ttkState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkState.c; sourceTree = ""; }; - F96887FA0AF786D5000797B5 /* ttkStubInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkStubInit.c; sourceTree = ""; }; - F96887FB0AF786D5000797B5 /* ttkStubLib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkStubLib.c; sourceTree = ""; }; - F96887FC0AF786D5000797B5 /* ttkTagSet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkTagSet.c; sourceTree = ""; }; - F96887FD0AF786D5000797B5 /* ttkTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkTheme.c; sourceTree = ""; }; - F96887FE0AF786D5000797B5 /* ttkTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttkTheme.h; sourceTree = ""; }; - F96887FF0AF786D5000797B5 /* ttkThemeInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttkThemeInt.h; sourceTree = ""; }; - F96888000AF786D5000797B5 /* ttkTrace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkTrace.c; sourceTree = ""; }; - F96888010AF786D5000797B5 /* ttkTrack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkTrack.c; sourceTree = ""; }; - F96888020AF786D5000797B5 /* ttkTreeview.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkTreeview.c; sourceTree = ""; }; - F96888030AF786D5000797B5 /* ttkWidget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkWidget.c; sourceTree = ""; }; - F96888040AF786D5000797B5 /* ttkWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttkWidget.h; sourceTree = ""; }; - F96888370AF787B3000797B5 /* altTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = altTheme.tcl; sourceTree = ""; }; - F96888380AF787B3000797B5 /* aquaTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = aquaTheme.tcl; sourceTree = ""; }; - F96888390AF787B3000797B5 /* button.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = button.tcl; sourceTree = ""; }; - F968883A0AF787B3000797B5 /* clamTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clamTheme.tcl; sourceTree = ""; }; - F968883B0AF787B3000797B5 /* classicTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = classicTheme.tcl; sourceTree = ""; }; - F968883C0AF787B3000797B5 /* combobox.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = combobox.tcl; sourceTree = ""; }; - F968883D0AF787B3000797B5 /* cursors.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cursors.tcl; sourceTree = ""; }; - F968883E0AF787B3000797B5 /* defaults.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = defaults.tcl; sourceTree = ""; }; - F96888400AF787B3000797B5 /* entry.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry.tcl; sourceTree = ""; }; - F96888410AF787B3000797B5 /* fonts.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fonts.tcl; sourceTree = ""; }; - F96888440AF787B3000797B5 /* menubutton.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = menubutton.tcl; sourceTree = ""; }; - F96888450AF787B3000797B5 /* notebook.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = notebook.tcl; sourceTree = ""; }; - F96888460AF787B3000797B5 /* panedwindow.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = panedwindow.tcl; sourceTree = ""; }; - F96888470AF787B3000797B5 /* progress.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = progress.tcl; sourceTree = ""; }; - F96888480AF787B3000797B5 /* scale.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scale.tcl; sourceTree = ""; }; - F96888490AF787B3000797B5 /* scrollbar.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scrollbar.tcl; sourceTree = ""; }; - F968884A0AF787B3000797B5 /* sizegrip.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = sizegrip.tcl; sourceTree = ""; }; - F968884B0AF787B3000797B5 /* treeview.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = treeview.tcl; sourceTree = ""; }; - F968884C0AF787B3000797B5 /* ttk.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttk.tcl; sourceTree = ""; }; - F968884D0AF787B3000797B5 /* utils.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = utils.tcl; sourceTree = ""; }; - F968884E0AF787B3000797B5 /* winTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winTheme.tcl; sourceTree = ""; }; - F968884F0AF787B3000797B5 /* xpTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = xpTheme.tcl; sourceTree = ""; }; - F96888540AF7880C000797B5 /* all.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = all.tcl; sourceTree = ""; }; - F96888560AF7880C000797B5 /* combobox.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = combobox.test; sourceTree = ""; }; - F96888570AF7880C000797B5 /* entry.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = entry.test; sourceTree = ""; }; - F96888580AF7880C000797B5 /* image.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = image.test; sourceTree = ""; }; - F96888590AF7880C000797B5 /* labelframe.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = labelframe.test; sourceTree = ""; }; - F968885A0AF7880C000797B5 /* layout.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = layout.test; sourceTree = ""; }; - F968885C0AF7880C000797B5 /* notebook.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = notebook.test; sourceTree = ""; }; - F968885D0AF7880C000797B5 /* panedwindow.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = panedwindow.test; sourceTree = ""; }; - F968885E0AF7880C000797B5 /* progressbar.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = progressbar.test; sourceTree = ""; }; - F968885F0AF7880C000797B5 /* scrollbar.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scrollbar.test; sourceTree = ""; }; - F96888600AF7880C000797B5 /* treetags.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = treetags.test; sourceTree = ""; }; - F96888610AF7880C000797B5 /* treeview.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = treeview.test; sourceTree = ""; }; - F96888620AF7880C000797B5 /* ttk.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ttk.test; sourceTree = ""; }; - F96888630AF7880C000797B5 /* validate.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = validate.test; sourceTree = ""; }; - F968886B0AF788F6000797B5 /* ttk_button.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_button.n; sourceTree = ""; }; - F968886C0AF788F6000797B5 /* ttk_checkbutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_checkbutton.n; sourceTree = ""; }; - F968886D0AF788F6000797B5 /* ttk_combobox.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_combobox.n; sourceTree = ""; }; - F968886F0AF788F6000797B5 /* ttk_entry.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_entry.n; sourceTree = ""; }; - F96888700AF788F6000797B5 /* ttk_frame.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_frame.n; sourceTree = ""; }; - F96888710AF788F6000797B5 /* ttk_Geometry.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_Geometry.3; sourceTree = ""; }; - F96888720AF788F6000797B5 /* ttk_image.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_image.n; sourceTree = ""; }; - F96888730AF788F6000797B5 /* ttk_intro.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_intro.n; sourceTree = ""; }; - F96888740AF788F6000797B5 /* ttk_label.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_label.n; sourceTree = ""; }; - F96888750AF788F6000797B5 /* ttk_labelframe.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_labelframe.n; sourceTree = ""; }; - F96888760AF788F6000797B5 /* ttk_menubutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_menubutton.n; sourceTree = ""; }; - F96888770AF788F6000797B5 /* ttk_notebook.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_notebook.n; sourceTree = ""; }; - F96888780AF788F6000797B5 /* ttk_panedwindow.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_panedwindow.n; sourceTree = ""; }; - F96888790AF788F6000797B5 /* ttk_progressbar.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_progressbar.n; sourceTree = ""; }; - F968887A0AF788F6000797B5 /* ttk_radiobutton.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_radiobutton.n; sourceTree = ""; }; - F968887B0AF788F6000797B5 /* ttk_scrollbar.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_scrollbar.n; sourceTree = ""; }; - F968887C0AF788F6000797B5 /* ttk_separator.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_separator.n; sourceTree = ""; }; - F968887D0AF788F6000797B5 /* ttk_sizegrip.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_sizegrip.n; sourceTree = ""; }; - F968887E0AF788F6000797B5 /* ttk_style.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_style.n; sourceTree = ""; }; - F968887F0AF788F6000797B5 /* ttk_Theme.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_Theme.3; sourceTree = ""; }; - F96888800AF788F6000797B5 /* ttk_treeview.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_treeview.n; sourceTree = ""; }; - F96888810AF788F6000797B5 /* ttk_widget.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ttk_widget.n; sourceTree = ""; }; - F96888840AF78938000797B5 /* ttkMacOSXTheme.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = ttkMacOSXTheme.c; sourceTree = ""; }; - F96888860AF78953000797B5 /* ttkWinMonitor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkWinMonitor.c; sourceTree = ""; }; - F96888870AF78953000797B5 /* ttkWinTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkWinTheme.c; sourceTree = ""; }; - F96888880AF78953000797B5 /* ttkWinXPTheme.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttkWinXPTheme.c; sourceTree = ""; }; - F96D3DFB08F272A4004A47F5 /* changes.md */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = changes.md; sourceTree = ""; }; - F96D3DFD08F272A4004A47F5 /* Access.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Access.3; sourceTree = ""; }; - F96D3DFE08F272A4004A47F5 /* AddErrInfo.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = AddErrInfo.3; sourceTree = ""; }; - F96D3DFF08F272A4004A47F5 /* after.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = after.n; sourceTree = ""; }; - F96D3E0008F272A4004A47F5 /* Alloc.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Alloc.3; sourceTree = ""; }; - F96D3E0108F272A4004A47F5 /* AllowExc.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = AllowExc.3; sourceTree = ""; }; - F96D3E0208F272A4004A47F5 /* append.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = append.n; sourceTree = ""; }; - F96D3E0308F272A4004A47F5 /* AppInit.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = AppInit.3; sourceTree = ""; }; - F96D3E0408F272A5004A47F5 /* array.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = array.n; sourceTree = ""; }; - F96D3E0508F272A5004A47F5 /* AssocData.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = AssocData.3; sourceTree = ""; }; - F96D3E0608F272A5004A47F5 /* Async.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Async.3; sourceTree = ""; }; - F96D3E0708F272A5004A47F5 /* BackgdErr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = BackgdErr.3; sourceTree = ""; }; - F96D3E0808F272A5004A47F5 /* Backslash.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Backslash.3; sourceTree = ""; }; - F96D3E0908F272A5004A47F5 /* bgerror.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = bgerror.n; sourceTree = ""; }; - F96D3E0A08F272A5004A47F5 /* binary.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = binary.n; sourceTree = ""; }; - F96D3E0B08F272A5004A47F5 /* BoolObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = BoolObj.3; sourceTree = ""; }; - F96D3E0C08F272A5004A47F5 /* break.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = break.n; sourceTree = ""; }; - F96D3E0D08F272A5004A47F5 /* ByteArrObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ByteArrObj.3; sourceTree = ""; }; - F96D3E0E08F272A5004A47F5 /* CallDel.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CallDel.3; sourceTree = ""; }; - F96D3E0F08F272A5004A47F5 /* case.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = case.n; sourceTree = ""; }; - F96D3E1008F272A5004A47F5 /* catch.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = catch.n; sourceTree = ""; }; - F96D3E1108F272A5004A47F5 /* cd.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = cd.n; sourceTree = ""; }; - F96D3E1208F272A5004A47F5 /* chan.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = chan.n; sourceTree = ""; }; - F96D3E1308F272A5004A47F5 /* ChnlStack.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ChnlStack.3; sourceTree = ""; }; - F96D3E1408F272A5004A47F5 /* clock.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = clock.n; sourceTree = ""; }; - F96D3E1508F272A5004A47F5 /* close.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = close.n; sourceTree = ""; }; - F96D3E1608F272A5004A47F5 /* CmdCmplt.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CmdCmplt.3; sourceTree = ""; }; - F96D3E1708F272A5004A47F5 /* Concat.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Concat.3; sourceTree = ""; }; - F96D3E1808F272A5004A47F5 /* concat.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = concat.n; sourceTree = ""; }; - F96D3E1908F272A5004A47F5 /* continue.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = continue.n; sourceTree = ""; }; - F96D3E1A08F272A5004A47F5 /* CrtChannel.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtChannel.3; sourceTree = ""; }; - F96D3E1B08F272A5004A47F5 /* CrtChnlHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtChnlHdlr.3; sourceTree = ""; }; - F96D3E1C08F272A5004A47F5 /* CrtCloseHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtCloseHdlr.3; sourceTree = ""; }; - F96D3E1D08F272A5004A47F5 /* CrtCommand.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtCommand.3; sourceTree = ""; }; - F96D3E1E08F272A5004A47F5 /* CrtFileHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtFileHdlr.3; sourceTree = ""; }; - F96D3E1F08F272A5004A47F5 /* CrtInterp.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtInterp.3; sourceTree = ""; }; - F96D3E2008F272A5004A47F5 /* CrtMathFnc.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtMathFnc.3; sourceTree = ""; }; - F96D3E2108F272A5004A47F5 /* CrtObjCmd.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtObjCmd.3; sourceTree = ""; }; - F96D3E2208F272A5004A47F5 /* CrtAlias.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtAlias.3; sourceTree = ""; }; - F96D3E2308F272A5004A47F5 /* CrtTimerHdlr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtTimerHdlr.3; sourceTree = ""; }; - F96D3E2408F272A5004A47F5 /* CrtTrace.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = CrtTrace.3; sourceTree = ""; }; - F96D3E2508F272A5004A47F5 /* dde.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = dde.n; sourceTree = ""; }; - F96D3E2608F272A5004A47F5 /* DetachPids.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DetachPids.3; sourceTree = ""; }; - F96D3E2708F272A5004A47F5 /* dict.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = dict.n; sourceTree = ""; }; - F96D3E2808F272A5004A47F5 /* DictObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DictObj.3; sourceTree = ""; }; - F96D3E2908F272A5004A47F5 /* DoOneEvent.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DoOneEvent.3; sourceTree = ""; }; - F96D3E2A08F272A5004A47F5 /* DoubleObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DoubleObj.3; sourceTree = ""; }; - F96D3E2B08F272A5004A47F5 /* DoWhenIdle.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DoWhenIdle.3; sourceTree = ""; }; - F96D3E2C08F272A5004A47F5 /* DString.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DString.3; sourceTree = ""; }; - F96D3E2D08F272A5004A47F5 /* DumpActiveMemory.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = DumpActiveMemory.3; sourceTree = ""; }; - F96D3E2E08F272A5004A47F5 /* Encoding.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Encoding.3; sourceTree = ""; }; - F96D3E2F08F272A5004A47F5 /* encoding.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = encoding.n; sourceTree = ""; }; - F96D3E3008F272A5004A47F5 /* Ensemble.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Ensemble.3; sourceTree = ""; }; - F96D3E3108F272A5004A47F5 /* Environment.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Environment.3; sourceTree = ""; }; - F96D3E3208F272A5004A47F5 /* eof.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = eof.n; sourceTree = ""; }; - F96D3E3308F272A5004A47F5 /* error.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = error.n; sourceTree = ""; }; - F96D3E3408F272A5004A47F5 /* Eval.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Eval.3; sourceTree = ""; }; - F96D3E3508F272A5004A47F5 /* eval.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = eval.n; sourceTree = ""; }; - F96D3E3608F272A5004A47F5 /* exec.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = exec.n; sourceTree = ""; }; - F96D3E3708F272A5004A47F5 /* Exit.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Exit.3; sourceTree = ""; }; - F96D3E3808F272A5004A47F5 /* exit.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = exit.n; sourceTree = ""; }; - F96D3E3908F272A5004A47F5 /* expr.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = expr.n; sourceTree = ""; }; - F96D3E3A08F272A5004A47F5 /* ExprLong.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ExprLong.3; sourceTree = ""; }; - F96D3E3B08F272A5004A47F5 /* ExprLongObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ExprLongObj.3; sourceTree = ""; }; - F96D3E3C08F272A5004A47F5 /* fblocked.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = fblocked.n; sourceTree = ""; }; - F96D3E3D08F272A5004A47F5 /* fconfigure.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = fconfigure.n; sourceTree = ""; }; - F96D3E3E08F272A5004A47F5 /* fcopy.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = fcopy.n; sourceTree = ""; }; - F96D3E3F08F272A5004A47F5 /* file.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = file.n; sourceTree = ""; }; - F96D3E4008F272A5004A47F5 /* fileevent.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = fileevent.n; sourceTree = ""; }; - F96D3E4108F272A5004A47F5 /* filename.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = filename.n; sourceTree = ""; }; - F96D3E4208F272A5004A47F5 /* FileSystem.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = FileSystem.3; sourceTree = ""; }; - F96D3E4308F272A5004A47F5 /* FindExec.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = FindExec.3; sourceTree = ""; }; - F96D3E4408F272A5004A47F5 /* flush.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = flush.n; sourceTree = ""; }; - F96D3E4508F272A5004A47F5 /* for.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = for.n; sourceTree = ""; }; - F96D3E4608F272A5004A47F5 /* foreach.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = foreach.n; sourceTree = ""; }; - F96D3E4708F272A5004A47F5 /* format.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = format.n; sourceTree = ""; }; - F96D3E4808F272A5004A47F5 /* GetCwd.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetCwd.3; sourceTree = ""; }; - F96D3E4908F272A5004A47F5 /* GetHostName.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetHostName.3; sourceTree = ""; }; - F96D3E4A08F272A5004A47F5 /* GetIndex.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetIndex.3; sourceTree = ""; }; - F96D3E4B08F272A5004A47F5 /* GetInt.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetInt.3; sourceTree = ""; }; - F96D3E4C08F272A5004A47F5 /* GetOpnFl.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetOpnFl.3; sourceTree = ""; }; - F96D3E4D08F272A5004A47F5 /* gets.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = gets.n; sourceTree = ""; }; - F96D3E4E08F272A5004A47F5 /* GetStdChan.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetStdChan.3; sourceTree = ""; }; - F96D3E4F08F272A5004A47F5 /* GetTime.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetTime.3; sourceTree = ""; }; - F96D3E5008F272A5004A47F5 /* GetVersion.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = GetVersion.3; sourceTree = ""; }; - F96D3E5108F272A5004A47F5 /* glob.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = glob.n; sourceTree = ""; }; - F96D3E5208F272A6004A47F5 /* global.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = global.n; sourceTree = ""; }; - F96D3E5308F272A6004A47F5 /* Hash.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Hash.3; sourceTree = ""; }; - F96D3E5408F272A6004A47F5 /* history.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = history.n; sourceTree = ""; }; - F96D3E5508F272A6004A47F5 /* http.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = http.n; sourceTree = ""; }; - F96D3E5608F272A6004A47F5 /* if.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = if.n; sourceTree = ""; }; - F96D3E5708F272A6004A47F5 /* incr.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = incr.n; sourceTree = ""; }; - F96D3E5808F272A6004A47F5 /* info.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = info.n; sourceTree = ""; }; - F96D3E5908F272A6004A47F5 /* Init.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Init.3; sourceTree = ""; }; - F96D3E5A08F272A6004A47F5 /* InitStubs.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = InitStubs.3; sourceTree = ""; }; - F96D3E5B08F272A6004A47F5 /* Interp.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Interp.3; sourceTree = ""; }; - F96D3E5C08F272A6004A47F5 /* interp.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = interp.n; sourceTree = ""; }; - F96D3E5D08F272A6004A47F5 /* IntObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = IntObj.3; sourceTree = ""; }; - F96D3E5E08F272A6004A47F5 /* join.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = join.n; sourceTree = ""; }; - F96D3E5F08F272A6004A47F5 /* lappend.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lappend.n; sourceTree = ""; }; - F96D3E6008F272A6004A47F5 /* lassign.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lassign.n; sourceTree = ""; }; - F96D3E6108F272A6004A47F5 /* library.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = library.n; sourceTree = ""; }; - F96D3E6208F272A6004A47F5 /* Limit.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Limit.3; sourceTree = ""; }; - F96D3E6308F272A6004A47F5 /* lindex.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lindex.n; sourceTree = ""; }; - F96D3E6408F272A6004A47F5 /* LinkVar.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = LinkVar.3; sourceTree = ""; }; - F96D3E6508F272A6004A47F5 /* linsert.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = linsert.n; sourceTree = ""; }; - F96D3E6608F272A6004A47F5 /* list.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = list.n; sourceTree = ""; }; - F96D3E6708F272A6004A47F5 /* ListObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ListObj.3; sourceTree = ""; }; - F96D3E6808F272A6004A47F5 /* llength.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = llength.n; sourceTree = ""; }; - F96D3E6908F272A6004A47F5 /* load.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = load.n; sourceTree = ""; }; - F96D3E6A08F272A6004A47F5 /* lrange.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lrange.n; sourceTree = ""; }; - F96D3E6B08F272A6004A47F5 /* lrepeat.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lrepeat.n; sourceTree = ""; }; - F96D3E6C08F272A6004A47F5 /* lreplace.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lreplace.n; sourceTree = ""; }; - F96D3E6D08F272A6004A47F5 /* lsearch.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lsearch.n; sourceTree = ""; }; - F96D3E6E08F272A6004A47F5 /* lset.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lset.n; sourceTree = ""; }; - F96D3E6F08F272A6004A47F5 /* lsort.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = lsort.n; sourceTree = ""; }; - F96D3E7008F272A6004A47F5 /* man.macros */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = man.macros; sourceTree = ""; }; - F96D3E7108F272A6004A47F5 /* mathfunc.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = mathfunc.n; sourceTree = ""; }; - F96D3E7208F272A6004A47F5 /* memory.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = memory.n; sourceTree = ""; }; - F96D3E7308F272A6004A47F5 /* msgcat.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = msgcat.n; sourceTree = ""; }; - F96D3E7408F272A6004A47F5 /* Namespace.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Namespace.3; sourceTree = ""; }; - F96D3E7508F272A6004A47F5 /* namespace.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = namespace.n; sourceTree = ""; }; - F96D3E7608F272A6004A47F5 /* Notifier.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Notifier.3; sourceTree = ""; }; - F96D3E7708F272A6004A47F5 /* Object.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Object.3; sourceTree = ""; }; - F96D3E7808F272A6004A47F5 /* ObjectType.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ObjectType.3; sourceTree = ""; }; - F96D3E7908F272A6004A47F5 /* open.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = open.n; sourceTree = ""; }; - F96D3E7A08F272A6004A47F5 /* OpenFileChnl.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = OpenFileChnl.3; sourceTree = ""; }; - F96D3E7B08F272A6004A47F5 /* OpenTcp.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = OpenTcp.3; sourceTree = ""; }; - F96D3E7C08F272A6004A47F5 /* package.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = package.n; sourceTree = ""; }; - F96D3E7D08F272A6004A47F5 /* packagens.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = packagens.n; sourceTree = ""; }; - F96D3E7E08F272A6004A47F5 /* Panic.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Panic.3; sourceTree = ""; }; - F96D3E7F08F272A6004A47F5 /* ParseCmd.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ParseCmd.3; sourceTree = ""; }; - F96D3E8008F272A6004A47F5 /* pid.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = pid.n; sourceTree = ""; }; - F96D3E8108F272A6004A47F5 /* pkgMkIndex.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = pkgMkIndex.n; sourceTree = ""; }; - F96D3E8208F272A6004A47F5 /* PkgRequire.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = PkgRequire.3; sourceTree = ""; }; - F96D3E8308F272A6004A47F5 /* Preserve.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Preserve.3; sourceTree = ""; }; - F96D3E8408F272A6004A47F5 /* PrintDbl.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = PrintDbl.3; sourceTree = ""; }; - F96D3E8508F272A6004A47F5 /* proc.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = proc.n; sourceTree = ""; }; - F96D3E8608F272A6004A47F5 /* puts.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = puts.n; sourceTree = ""; }; - F96D3E8708F272A6004A47F5 /* pwd.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = pwd.n; sourceTree = ""; }; - F96D3E8808F272A6004A47F5 /* re_syntax.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = re_syntax.n; sourceTree = ""; }; - F96D3E8908F272A6004A47F5 /* read.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = read.n; sourceTree = ""; }; - F96D3E8A08F272A6004A47F5 /* RecEvalObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = RecEvalObj.3; sourceTree = ""; }; - F96D3E8B08F272A6004A47F5 /* RecordEval.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = RecordEval.3; sourceTree = ""; }; - F96D3E8C08F272A6004A47F5 /* RegConfig.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = RegConfig.3; sourceTree = ""; }; - F96D3E8D08F272A6004A47F5 /* RegExp.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = RegExp.3; sourceTree = ""; }; - F96D3E8E08F272A6004A47F5 /* regexp.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = regexp.n; sourceTree = ""; }; - F96D3E8F08F272A6004A47F5 /* registry.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = registry.n; sourceTree = ""; }; - F96D3E9008F272A6004A47F5 /* regsub.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = regsub.n; sourceTree = ""; }; - F96D3E9108F272A6004A47F5 /* rename.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = rename.n; sourceTree = ""; }; - F96D3E9208F272A6004A47F5 /* return.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = return.n; sourceTree = ""; }; - F96D3E9308F272A6004A47F5 /* safe.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = safe.n; sourceTree = ""; }; - F96D3E9408F272A6004A47F5 /* SaveResult.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SaveResult.3; sourceTree = ""; }; - F96D3E9508F272A6004A47F5 /* scan.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = scan.n; sourceTree = ""; }; - F96D3E9608F272A6004A47F5 /* seek.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = seek.n; sourceTree = ""; }; - F96D3E9708F272A6004A47F5 /* set.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = set.n; sourceTree = ""; }; - F96D3E9808F272A6004A47F5 /* SetChanErr.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetChanErr.3; sourceTree = ""; }; - F96D3E9908F272A6004A47F5 /* SetErrno.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetErrno.3; sourceTree = ""; }; - F96D3E9A08F272A6004A47F5 /* SetRecLmt.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetRecLmt.3; sourceTree = ""; }; - F96D3E9B08F272A7004A47F5 /* SetResult.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetResult.3; sourceTree = ""; }; - F96D3E9C08F272A7004A47F5 /* SetVar.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SetVar.3; sourceTree = ""; }; - F96D3E9D08F272A7004A47F5 /* Signal.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Signal.3; sourceTree = ""; }; - F96D3E9E08F272A7004A47F5 /* Sleep.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Sleep.3; sourceTree = ""; }; - F96D3E9F08F272A7004A47F5 /* socket.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = socket.n; sourceTree = ""; }; - F96D3EA008F272A7004A47F5 /* source.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = source.n; sourceTree = ""; }; - F96D3EA108F272A7004A47F5 /* SourceRCFile.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SourceRCFile.3; sourceTree = ""; }; - F96D3EA208F272A7004A47F5 /* split.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = split.n; sourceTree = ""; }; - F96D3EA308F272A7004A47F5 /* SplitList.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SplitList.3; sourceTree = ""; }; - F96D3EA408F272A7004A47F5 /* SplitPath.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SplitPath.3; sourceTree = ""; }; - F96D3EA508F272A7004A47F5 /* StaticPkg.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = StaticPkg.3; sourceTree = ""; }; - F96D3EA608F272A7004A47F5 /* StdChannels.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = StdChannels.3; sourceTree = ""; }; - F96D3EA708F272A7004A47F5 /* string.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = string.n; sourceTree = ""; }; - F96D3EA808F272A7004A47F5 /* StringObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = StringObj.3; sourceTree = ""; }; - F96D3EA908F272A7004A47F5 /* StrMatch.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = StrMatch.3; sourceTree = ""; }; - F96D3EAA08F272A7004A47F5 /* subst.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = subst.n; sourceTree = ""; }; - F96D3EAB08F272A7004A47F5 /* SubstObj.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = SubstObj.3; sourceTree = ""; }; - F96D3EAC08F272A7004A47F5 /* switch.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = switch.n; sourceTree = ""; }; - F96D3EAD08F272A7004A47F5 /* Tcl.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Tcl.n; sourceTree = ""; }; - F96D3EAE08F272A7004A47F5 /* Tcl_Main.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Tcl_Main.3; sourceTree = ""; }; - F96D3EAF08F272A7004A47F5 /* TCL_MEM_DEBUG.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TCL_MEM_DEBUG.3; sourceTree = ""; }; - F96D3EB008F272A7004A47F5 /* tclsh.1 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tclsh.1; sourceTree = ""; }; - F96D3EB108F272A7004A47F5 /* tcltest.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tcltest.n; sourceTree = ""; }; - F96D3EB208F272A7004A47F5 /* tclvars.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tclvars.n; sourceTree = ""; }; - F96D3EB308F272A7004A47F5 /* tell.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tell.n; sourceTree = ""; }; - F96D3EB408F272A7004A47F5 /* Thread.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Thread.3; sourceTree = ""; }; - F96D3EB508F272A7004A47F5 /* time.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = time.n; sourceTree = ""; }; - F96D3EB608F272A7004A47F5 /* tm.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tm.n; sourceTree = ""; }; - F96D3EB708F272A7004A47F5 /* ToUpper.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = ToUpper.3; sourceTree = ""; }; - F96D3EB808F272A7004A47F5 /* trace.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = trace.n; sourceTree = ""; }; - F96D3EB908F272A7004A47F5 /* TraceCmd.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TraceCmd.3; sourceTree = ""; }; - F96D3EBA08F272A7004A47F5 /* TraceVar.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TraceVar.3; sourceTree = ""; }; - F96D3EBB08F272A7004A47F5 /* Translate.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Translate.3; sourceTree = ""; }; - F96D3EBC08F272A7004A47F5 /* UniCharIsAlpha.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = UniCharIsAlpha.3; sourceTree = ""; }; - F96D3EBD08F272A7004A47F5 /* unknown.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = unknown.n; sourceTree = ""; }; - F96D3EBE08F272A7004A47F5 /* unload.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = unload.n; sourceTree = ""; }; - F96D3EBF08F272A7004A47F5 /* unset.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = unset.n; sourceTree = ""; }; - F96D3EC008F272A7004A47F5 /* update.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = update.n; sourceTree = ""; }; - F96D3EC108F272A7004A47F5 /* uplevel.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = uplevel.n; sourceTree = ""; }; - F96D3EC208F272A7004A47F5 /* UpVar.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = UpVar.3; sourceTree = ""; }; - F96D3EC308F272A7004A47F5 /* upvar.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = upvar.n; sourceTree = ""; }; - F96D3EC408F272A7004A47F5 /* Utf.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = Utf.3; sourceTree = ""; }; - F96D3EC508F272A7004A47F5 /* variable.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = variable.n; sourceTree = ""; }; - F96D3EC608F272A7004A47F5 /* vwait.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = vwait.n; sourceTree = ""; }; - F96D3EC708F272A7004A47F5 /* while.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = while.n; sourceTree = ""; }; - F96D3EC808F272A7004A47F5 /* WrongNumArgs.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = WrongNumArgs.3; sourceTree = ""; }; - F96D3ECA08F272A7004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D3ECB08F272A7004A47F5 /* regc_color.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regc_color.c; sourceTree = ""; }; - F96D3ECC08F272A7004A47F5 /* regc_cvec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regc_cvec.c; sourceTree = ""; }; - F96D3ECD08F272A7004A47F5 /* regc_lex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regc_lex.c; sourceTree = ""; }; - F96D3ECE08F272A7004A47F5 /* regc_locale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regc_locale.c; sourceTree = ""; }; - F96D3ECF08F272A7004A47F5 /* regc_nfa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regc_nfa.c; sourceTree = ""; }; - F96D3ED008F272A7004A47F5 /* regcomp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regcomp.c; sourceTree = ""; }; - F96D3ED108F272A7004A47F5 /* regcustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regcustom.h; sourceTree = ""; }; - F96D3ED208F272A7004A47F5 /* rege_dfa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rege_dfa.c; sourceTree = ""; }; - F96D3ED308F272A7004A47F5 /* regerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regerror.c; sourceTree = ""; }; - F96D3ED408F272A7004A47F5 /* regerrs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regerrs.h; sourceTree = ""; }; - F96D3ED508F272A7004A47F5 /* regex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regex.h; sourceTree = ""; }; - F96D3ED608F272A7004A47F5 /* regexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regexec.c; sourceTree = ""; }; - F96D3ED708F272A7004A47F5 /* regfree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regfree.c; sourceTree = ""; }; - F96D3ED808F272A7004A47F5 /* regfronts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = regfronts.c; sourceTree = ""; }; - F96D3ED908F272A7004A47F5 /* regguts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regguts.h; sourceTree = ""; }; - F96D3EDA08F272A7004A47F5 /* tcl.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tcl.decls; sourceTree = ""; }; - F96D3EDB08F272A7004A47F5 /* tcl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcl.h; sourceTree = ""; }; - F96D3EDC08F272A7004A47F5 /* tclAlloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclAlloc.c; sourceTree = ""; }; - F96D3EDD08F272A7004A47F5 /* tclAsync.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclAsync.c; sourceTree = ""; }; - F96D3EDE08F272A7004A47F5 /* tclBasic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclBasic.c; sourceTree = ""; }; - F96D3EDF08F272A7004A47F5 /* tclBinary.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclBinary.c; sourceTree = ""; }; - F96D3EE008F272A7004A47F5 /* tclCkalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCkalloc.c; sourceTree = ""; }; - F96D3EE108F272A7004A47F5 /* tclClock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclClock.c; sourceTree = ""; }; - F96D3EE208F272A7004A47F5 /* tclCmdAH.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCmdAH.c; sourceTree = ""; }; - F96D3EE308F272A7004A47F5 /* tclCmdIL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCmdIL.c; sourceTree = ""; }; - F96D3EE408F272A7004A47F5 /* tclCmdMZ.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCmdMZ.c; sourceTree = ""; }; - F96D3EE508F272A7004A47F5 /* tclCompCmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCompCmds.c; sourceTree = ""; }; - F96D3EE608F272A7004A47F5 /* tclCompExpr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCompExpr.c; sourceTree = ""; }; - F96D3EE708F272A7004A47F5 /* tclCompile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclCompile.c; sourceTree = ""; }; - F96D3EE808F272A7004A47F5 /* tclCompile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclCompile.h; sourceTree = ""; }; - F96D3EE908F272A7004A47F5 /* tclConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclConfig.c; sourceTree = ""; }; - F96D3EEA08F272A7004A47F5 /* tclDate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclDate.c; sourceTree = ""; }; - F96D3EEB08F272A7004A47F5 /* tclDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclDecls.h; sourceTree = ""; }; - F96D3EEC08F272A7004A47F5 /* tclDictObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclDictObj.c; sourceTree = ""; }; - F96D3EED08F272A7004A47F5 /* tclEncoding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclEncoding.c; sourceTree = ""; }; - F96D3EEE08F272A7004A47F5 /* tclEnv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclEnv.c; sourceTree = ""; }; - F96D3EEF08F272A7004A47F5 /* tclEvent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclEvent.c; sourceTree = ""; }; - F96D3EF008F272A7004A47F5 /* tclExecute.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclExecute.c; sourceTree = ""; }; - F96D3EF108F272A7004A47F5 /* tclFCmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclFCmd.c; sourceTree = ""; }; - F96D3EF208F272A7004A47F5 /* tclFileName.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclFileName.c; sourceTree = ""; }; - F96D3EF308F272A7004A47F5 /* tclFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclFileSystem.h; sourceTree = ""; }; - F96D3EF408F272A7004A47F5 /* tclGet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclGet.c; sourceTree = ""; }; - F96D3EF508F272A7004A47F5 /* tclGetDate.y */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = tclGetDate.y; sourceTree = ""; }; - F96D3EF608F272A7004A47F5 /* tclHash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclHash.c; sourceTree = ""; }; - F96D3EF708F272A7004A47F5 /* tclHistory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclHistory.c; sourceTree = ""; }; - F96D3EF808F272A7004A47F5 /* tclIndexObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIndexObj.c; sourceTree = ""; }; - F96D3EF908F272A7004A47F5 /* tclInt.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclInt.decls; sourceTree = ""; }; - F96D3EFA08F272A7004A47F5 /* tclInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclInt.h; sourceTree = ""; }; - F96D3EFB08F272A7004A47F5 /* tclIntDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclIntDecls.h; sourceTree = ""; }; - F96D3EFC08F272A7004A47F5 /* tclInterp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclInterp.c; sourceTree = ""; }; - F96D3EFD08F272A7004A47F5 /* tclIntPlatDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclIntPlatDecls.h; sourceTree = ""; }; - F96D3EFE08F272A7004A47F5 /* tclIO.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIO.c; sourceTree = ""; }; - F96D3EFF08F272A7004A47F5 /* tclIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclIO.h; sourceTree = ""; }; - F96D3F0008F272A7004A47F5 /* tclIOCmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIOCmd.c; sourceTree = ""; }; - F96D3F0108F272A7004A47F5 /* tclIOGT.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIOGT.c; sourceTree = ""; }; - F96D3F0208F272A7004A47F5 /* tclIORChan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIORChan.c; sourceTree = ""; }; - F96D3F0308F272A7004A47F5 /* tclIOSock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIOSock.c; sourceTree = ""; }; - F96D3F0408F272A7004A47F5 /* tclIOUtil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclIOUtil.c; sourceTree = ""; }; - F96D3F0508F272A7004A47F5 /* tclLink.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLink.c; sourceTree = ""; }; - F96D3F0608F272A7004A47F5 /* tclListObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclListObj.c; sourceTree = ""; }; - F96D3F0708F272A7004A47F5 /* tclLiteral.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLiteral.c; sourceTree = ""; }; - F96D3F0808F272A7004A47F5 /* tclLoad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoad.c; sourceTree = ""; }; - F96D3F0908F272A7004A47F5 /* tclLoadNone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadNone.c; sourceTree = ""; }; - F96D3F0A08F272A7004A47F5 /* tclMain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclMain.c; sourceTree = ""; }; - F96D3F0B08F272A7004A47F5 /* tclNamesp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclNamesp.c; sourceTree = ""; }; - F96D3F0C08F272A7004A47F5 /* tclNotify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclNotify.c; sourceTree = ""; }; - F96D3F0D08F272A7004A47F5 /* tclObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclObj.c; sourceTree = ""; }; - F96D3F0E08F272A7004A47F5 /* tclPanic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPanic.c; sourceTree = ""; }; - F96D3F0F08F272A7004A47F5 /* tclParse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclParse.c; sourceTree = ""; }; - F96D3F1108F272A7004A47F5 /* tclPathObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPathObj.c; sourceTree = ""; }; - F96D3F1208F272A7004A47F5 /* tclPipe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPipe.c; sourceTree = ""; }; - F96D3F1308F272A7004A47F5 /* tclPkg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPkg.c; sourceTree = ""; }; - F96D3F1408F272A7004A47F5 /* tclPkgConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPkgConfig.c; sourceTree = ""; }; - F96D3F1508F272A7004A47F5 /* tclPlatDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclPlatDecls.h; sourceTree = ""; }; - F96D3F1608F272A7004A47F5 /* tclPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclPort.h; sourceTree = ""; }; - F96D3F1708F272A7004A47F5 /* tclPosixStr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPosixStr.c; sourceTree = ""; }; - F96D3F1808F272A7004A47F5 /* tclPreserve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclPreserve.c; sourceTree = ""; }; - F96D3F1908F272A7004A47F5 /* tclProc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclProc.c; sourceTree = ""; }; - F96D3F1A08F272A7004A47F5 /* tclRegexp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclRegexp.c; sourceTree = ""; }; - F96D3F1B08F272A7004A47F5 /* tclRegexp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclRegexp.h; sourceTree = ""; }; - F96D3F1C08F272A7004A47F5 /* tclResolve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclResolve.c; sourceTree = ""; }; - F96D3F1D08F272A7004A47F5 /* tclResult.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclResult.c; sourceTree = ""; }; - F96D3F1E08F272A7004A47F5 /* tclScan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclScan.c; sourceTree = ""; }; - F96D3F1F08F272A7004A47F5 /* tclStringObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclStringObj.c; sourceTree = ""; }; - F96D3F2408F272A7004A47F5 /* tclStrToD.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclStrToD.c; sourceTree = ""; }; - F96D3F2508F272A7004A47F5 /* tclStubInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclStubInit.c; sourceTree = ""; }; - F96D3F2608F272A7004A47F5 /* tclStubLib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclStubLib.c; sourceTree = ""; }; - F96D3F2708F272A7004A47F5 /* tclTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTest.c; sourceTree = ""; }; - F96D3F2808F272A7004A47F5 /* tclTestObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTestObj.c; sourceTree = ""; }; - F96D3F2908F272A7004A47F5 /* tclTestProcBodyObj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTestProcBodyObj.c; sourceTree = ""; }; - F96D3F2A08F272A7004A47F5 /* tclThread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclThread.c; sourceTree = ""; }; - F96D3F2B08F272A7004A47F5 /* tclThreadAlloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclThreadAlloc.c; sourceTree = ""; }; - F96D3F2C08F272A7004A47F5 /* tclThreadJoin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclThreadJoin.c; sourceTree = ""; }; - F96D3F2D08F272A7004A47F5 /* tclThreadStorage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclThreadStorage.c; sourceTree = ""; }; - F96D3F2E08F272A7004A47F5 /* tclThreadTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclThreadTest.c; sourceTree = ""; }; - F96D3F2F08F272A7004A47F5 /* tclTimer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTimer.c; sourceTree = ""; }; - F96D3F3008F272A7004A47F5 /* tclTomMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclTomMath.h; sourceTree = ""; }; - F96D3F3108F272A7004A47F5 /* tclTomMathInterface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTomMathInterface.c; sourceTree = ""; }; - F96D3F3208F272A7004A47F5 /* tclTrace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclTrace.c; sourceTree = ""; }; - F96D3F3308F272A7004A47F5 /* tclUniData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUniData.c; sourceTree = ""; }; - F96D3F3408F272A7004A47F5 /* tclUtf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUtf.c; sourceTree = ""; }; - F96D3F3508F272A7004A47F5 /* tclUtil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUtil.c; sourceTree = ""; }; - F96D3F3608F272A7004A47F5 /* tclVar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclVar.c; sourceTree = ""; }; - F96D3F3708F272A7004A47F5 /* tommath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath.h; sourceTree = ""; }; - F96D3F3908F272A8004A47F5 /* auto.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = auto.tcl; sourceTree = ""; }; - F96D3F3A08F272A8004A47F5 /* clock.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clock.tcl; sourceTree = ""; }; - F96D3F3C08F272A8004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D3F8C08F272A8004A47F5 /* history.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = history.tcl; sourceTree = ""; }; - F96D3F8E08F272A8004A47F5 /* http.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = http.tcl; sourceTree = ""; }; - F96D3F8F08F272A8004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D3F9108F272A8004A47F5 /* http.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = http.tcl; sourceTree = ""; }; - F96D3F9208F272A8004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D3F9308F272A8004A47F5 /* init.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = init.tcl; sourceTree = ""; }; - F96D3F9508F272A8004A47F5 /* msgcat.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = msgcat.tcl; sourceTree = ""; }; - F96D3F9608F272A8004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D401808F272AA004A47F5 /* optparse.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = optparse.tcl; sourceTree = ""; }; - F96D401908F272AA004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D401A08F272AA004A47F5 /* package.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = package.tcl; sourceTree = ""; }; - F96D401B08F272AA004A47F5 /* parray.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = parray.tcl; sourceTree = ""; }; - F96D401D08F272AA004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D401E08F272AA004A47F5 /* safe.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = safe.tcl; sourceTree = ""; }; - F96D401F08F272AA004A47F5 /* tclIndex */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclIndex; sourceTree = ""; }; - F96D402108F272AA004A47F5 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F96D402208F272AA004A47F5 /* tcltest.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tcltest.tcl; sourceTree = ""; }; - F96D402308F272AA004A47F5 /* tm.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tm.tcl; sourceTree = ""; }; - F96D425B08F272B2004A47F5 /* word.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = word.tcl; sourceTree = ""; }; - F96D426408F272B3004A47F5 /* bn_fast_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_fast_s_mp_mul_digs.c; sourceTree = ""; }; - F96D426608F272B3004A47F5 /* bn_fast_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_fast_s_mp_sqr.c; sourceTree = ""; }; - F96D426908F272B3004A47F5 /* bn_mp_add.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_add.c; sourceTree = ""; }; - F96D426A08F272B3004A47F5 /* bn_mp_add_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_add_d.c; sourceTree = ""; }; - F96D426C08F272B3004A47F5 /* bn_mp_and.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_and.c; sourceTree = ""; }; - F96D426D08F272B3004A47F5 /* bn_mp_clamp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_clamp.c; sourceTree = ""; }; - F96D426E08F272B3004A47F5 /* bn_mp_clear.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_clear.c; sourceTree = ""; }; - F96D426F08F272B3004A47F5 /* bn_mp_clear_multi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_clear_multi.c; sourceTree = ""; }; - F96D427008F272B3004A47F5 /* bn_mp_cmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_cmp.c; sourceTree = ""; }; - F96D427108F272B3004A47F5 /* bn_mp_cmp_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_cmp_d.c; sourceTree = ""; }; - F96D427208F272B3004A47F5 /* bn_mp_cmp_mag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_cmp_mag.c; sourceTree = ""; }; - F96D427408F272B3004A47F5 /* bn_mp_copy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_copy.c; sourceTree = ""; }; - F96D427508F272B3004A47F5 /* bn_mp_count_bits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_count_bits.c; sourceTree = ""; }; - F96D427608F272B3004A47F5 /* bn_mp_div.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_div.c; sourceTree = ""; }; - F96D427708F272B3004A47F5 /* bn_mp_div_2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_div_2.c; sourceTree = ""; }; - F96D427808F272B3004A47F5 /* bn_mp_div_2d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_div_2d.c; sourceTree = ""; }; - F96D427908F272B3004A47F5 /* bn_mp_div_3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_div_3.c; sourceTree = ""; }; - F96D427A08F272B3004A47F5 /* bn_mp_div_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_div_d.c; sourceTree = ""; }; - F96D427E08F272B3004A47F5 /* bn_mp_exch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_exch.c; sourceTree = ""; }; - F96D427F08F272B3004A47F5 /* bn_mp_expt_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_expt_d.c; sourceTree = ""; }; - F96D428708F272B3004A47F5 /* bn_mp_grow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_grow.c; sourceTree = ""; }; - F96D428808F272B3004A47F5 /* bn_mp_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_init.c; sourceTree = ""; }; - F96D428908F272B3004A47F5 /* bn_mp_init_copy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_init_copy.c; sourceTree = ""; }; - F96D428A08F272B3004A47F5 /* bn_mp_init_multi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_init_multi.c; sourceTree = ""; }; - F96D428B08F272B3004A47F5 /* bn_mp_init_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_init_set.c; sourceTree = ""; }; - F96D428D08F272B3004A47F5 /* bn_mp_init_size.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_init_size.c; sourceTree = ""; }; - F96D429208F272B3004A47F5 /* bn_mp_karatsuba_mul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_karatsuba_mul.c; sourceTree = ""; }; - F96D429308F272B3004A47F5 /* bn_mp_karatsuba_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_karatsuba_sqr.c; sourceTree = ""; }; - F96D429508F272B3004A47F5 /* bn_mp_lshd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_lshd.c; sourceTree = ""; }; - F96D429608F272B3004A47F5 /* bn_mp_mod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mod.c; sourceTree = ""; }; - F96D429708F272B3004A47F5 /* bn_mp_mod_2d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mod_2d.c; sourceTree = ""; }; - F96D429C08F272B3004A47F5 /* bn_mp_mul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mul.c; sourceTree = ""; }; - F96D429D08F272B3004A47F5 /* bn_mp_mul_2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mul_2.c; sourceTree = ""; }; - F96D429E08F272B3004A47F5 /* bn_mp_mul_2d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mul_2d.c; sourceTree = ""; }; - F96D429F08F272B3004A47F5 /* bn_mp_mul_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_mul_d.c; sourceTree = ""; }; - F96D42A208F272B3004A47F5 /* bn_mp_neg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_neg.c; sourceTree = ""; }; - F96D42A308F272B3004A47F5 /* bn_mp_or.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_or.c; sourceTree = ""; }; - F96D42AB08F272B3004A47F5 /* bn_mp_radix_size.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_radix_size.c; sourceTree = ""; }; - F96D42AC08F272B3004A47F5 /* bn_mp_radix_smap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_radix_smap.c; sourceTree = ""; }; - F96D42AE08F272B3004A47F5 /* bn_mp_read_radix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_read_radix.c; sourceTree = ""; }; - F96D42B908F272B3004A47F5 /* bn_mp_rshd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_rshd.c; sourceTree = ""; }; - F96D42BA08F272B3004A47F5 /* bn_mp_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_set.c; sourceTree = ""; }; - F96D42BC08F272B3004A47F5 /* bn_mp_shrink.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_shrink.c; sourceTree = ""; }; - F96D42BE08F272B3004A47F5 /* bn_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_sqr.c; sourceTree = ""; }; - F96D42C008F272B3004A47F5 /* bn_mp_sqrt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_sqrt.c; sourceTree = ""; }; - F96D42C108F272B3004A47F5 /* bn_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_sub.c; sourceTree = ""; }; - F96D42C208F272B3004A47F5 /* bn_mp_sub_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_sub_d.c; sourceTree = ""; }; - F96D42C608F272B3004A47F5 /* bn_mp_to_unsigned_bin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_to_unsigned_bin.c; sourceTree = ""; }; - F96D42C708F272B3004A47F5 /* bn_mp_to_unsigned_bin_n.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_to_unsigned_bin_n.c; sourceTree = ""; }; - F96D42C808F272B3004A47F5 /* bn_mp_toom_mul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_toom_mul.c; sourceTree = ""; }; - F96D42C908F272B3004A47F5 /* bn_mp_toom_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_toom_sqr.c; sourceTree = ""; }; - F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_toradix_n.c; sourceTree = ""; }; - F96D42CC08F272B3004A47F5 /* bn_mp_unsigned_bin_size.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_unsigned_bin_size.c; sourceTree = ""; }; - F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_xor.c; sourceTree = ""; }; - F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_mp_zero.c; sourceTree = ""; }; - F96D42D008F272B3004A47F5 /* bn_reverse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_reverse.c; sourceTree = ""; }; - F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_add.c; sourceTree = ""; }; - F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_mul_digs.c; sourceTree = ""; }; - F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sqr.c; sourceTree = ""; }; - F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bn_s_mp_sub.c; sourceTree = ""; }; - F96D42D708F272B3004A47F5 /* bncore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bncore.c; sourceTree = ""; }; - F96D432908F272B4004A47F5 /* tommath_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_class.h; sourceTree = ""; }; - F96D432A08F272B4004A47F5 /* tommath_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tommath_superclass.h; sourceTree = ""; }; - F96D432B08F272B4004A47F5 /* license.terms */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = license.terms; sourceTree = ""; }; - F96D432E08F272B5004A47F5 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure.ac; sourceTree = ""; }; - F96D432F08F272B5004A47F5 /* GNUmakefile */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = GNUmakefile; sourceTree = ""; }; - F96D433108F272B5004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D433208F272B5004A47F5 /* Tcl-Info.plist.in */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = "Tcl-Info.plist.in"; sourceTree = ""; }; - F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclMacOSXBundle.c; sourceTree = ""; }; - F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclMacOSXFCmd.c; sourceTree = ""; }; - F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclMacOSXNotify.c; sourceTree = ""; }; - F96D434308F272B5004A47F5 /* README */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = README; sourceTree = ""; }; - F96D434508F272B5004A47F5 /* all.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = all.tcl; sourceTree = ""; }; - F96D434608F272B5004A47F5 /* append.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = append.test; sourceTree = ""; }; - F96D434708F272B5004A47F5 /* appendComp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = appendComp.test; sourceTree = ""; }; - F96D434808F272B5004A47F5 /* assocd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = assocd.test; sourceTree = ""; }; - F96D434908F272B5004A47F5 /* async.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = async.test; sourceTree = ""; }; - F96D434A08F272B5004A47F5 /* autoMkindex.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = autoMkindex.test; sourceTree = ""; }; - F96D434B08F272B5004A47F5 /* basic.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = basic.test; sourceTree = ""; }; - F96D434C08F272B5004A47F5 /* binary.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = binary.test; sourceTree = ""; }; - F96D434D08F272B5004A47F5 /* case.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = case.test; sourceTree = ""; }; - F96D434E08F272B5004A47F5 /* chan.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = chan.test; sourceTree = ""; }; - F96D434F08F272B5004A47F5 /* clock.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = clock.test; sourceTree = ""; }; - F96D435008F272B5004A47F5 /* cmdAH.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmdAH.test; sourceTree = ""; }; - F96D435108F272B5004A47F5 /* cmdIL.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmdIL.test; sourceTree = ""; }; - F96D435208F272B5004A47F5 /* cmdInfo.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmdInfo.test; sourceTree = ""; }; - F96D435308F272B5004A47F5 /* cmdMZ.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = cmdMZ.test; sourceTree = ""; }; - F96D435408F272B5004A47F5 /* compExpr-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "compExpr-old.test"; sourceTree = ""; }; - F96D435508F272B5004A47F5 /* compExpr.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = compExpr.test; sourceTree = ""; }; - F96D435608F272B5004A47F5 /* compile.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = compile.test; sourceTree = ""; }; - F96D435708F272B5004A47F5 /* concat.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = concat.test; sourceTree = ""; }; - F96D435808F272B5004A47F5 /* config.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = config.test; sourceTree = ""; }; - F96D435908F272B5004A47F5 /* dcall.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dcall.test; sourceTree = ""; }; - F96D435A08F272B5004A47F5 /* dict.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dict.test; sourceTree = ""; }; - F96D435C08F272B5004A47F5 /* dstring.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = dstring.test; sourceTree = ""; }; - F96D435E08F272B5004A47F5 /* encoding.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = encoding.test; sourceTree = ""; }; - F96D435F08F272B5004A47F5 /* env.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = env.test; sourceTree = ""; }; - F96D436008F272B5004A47F5 /* error.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = error.test; sourceTree = ""; }; - F96D436108F272B5004A47F5 /* eval.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = eval.test; sourceTree = ""; }; - F96D436208F272B5004A47F5 /* event.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = event.test; sourceTree = ""; }; - F96D436308F272B5004A47F5 /* exec.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = exec.test; sourceTree = ""; }; - F96D436408F272B5004A47F5 /* execute.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = execute.test; sourceTree = ""; }; - F96D436508F272B5004A47F5 /* expr-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "expr-old.test"; sourceTree = ""; }; - F96D436608F272B5004A47F5 /* expr.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = expr.test; sourceTree = ""; }; - F96D436708F272B6004A47F5 /* fCmd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fCmd.test; sourceTree = ""; }; - F96D436808F272B6004A47F5 /* fileName.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fileName.test; sourceTree = ""; }; - F96D436908F272B6004A47F5 /* fileSystem.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fileSystem.test; sourceTree = ""; }; - F96D436A08F272B6004A47F5 /* for-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "for-old.test"; sourceTree = ""; }; - F96D436B08F272B6004A47F5 /* for.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = for.test; sourceTree = ""; }; - F96D436C08F272B6004A47F5 /* foreach.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = foreach.test; sourceTree = ""; }; - F96D436D08F272B6004A47F5 /* format.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = format.test; sourceTree = ""; }; - F96D436E08F272B6004A47F5 /* get.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = get.test; sourceTree = ""; }; - F96D436F08F272B6004A47F5 /* history.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = history.test; sourceTree = ""; }; - F96D437008F272B6004A47F5 /* http.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = http.test; sourceTree = ""; }; - F96D437108F272B6004A47F5 /* httpd */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = httpd; sourceTree = ""; }; - F96D437208F272B6004A47F5 /* httpold.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = httpold.test; sourceTree = ""; }; - F96D437308F272B6004A47F5 /* if-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "if-old.test"; sourceTree = ""; }; - F96D437408F272B6004A47F5 /* if.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = if.test; sourceTree = ""; }; - F96D437508F272B6004A47F5 /* incr-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "incr-old.test"; sourceTree = ""; }; - F96D437608F272B6004A47F5 /* incr.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = incr.test; sourceTree = ""; }; - F96D437708F272B6004A47F5 /* indexObj.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = indexObj.test; sourceTree = ""; }; - F96D437808F272B6004A47F5 /* info.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = info.test; sourceTree = ""; }; - F96D437908F272B6004A47F5 /* init.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = init.test; sourceTree = ""; }; - F96D437A08F272B6004A47F5 /* interp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = interp.test; sourceTree = ""; }; - F96D437B08F272B6004A47F5 /* io.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = io.test; sourceTree = ""; }; - F96D437C08F272B6004A47F5 /* ioCmd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = ioCmd.test; sourceTree = ""; }; - F96D437D08F272B6004A47F5 /* iogt.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = iogt.test; sourceTree = ""; }; - F96D437F08F272B6004A47F5 /* join.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = join.test; sourceTree = ""; }; - F96D438008F272B6004A47F5 /* lindex.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lindex.test; sourceTree = ""; }; - F96D438108F272B6004A47F5 /* link.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = link.test; sourceTree = ""; }; - F96D438208F272B6004A47F5 /* linsert.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = linsert.test; sourceTree = ""; }; - F96D438308F272B6004A47F5 /* list.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = list.test; sourceTree = ""; }; - F96D438408F272B6004A47F5 /* listObj.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = listObj.test; sourceTree = ""; }; - F96D438508F272B6004A47F5 /* llength.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = llength.test; sourceTree = ""; }; - F96D438608F272B6004A47F5 /* load.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = load.test; sourceTree = ""; }; - F96D438708F272B6004A47F5 /* lrange.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lrange.test; sourceTree = ""; }; - F96D438808F272B6004A47F5 /* lrepeat.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lrepeat.test; sourceTree = ""; }; - F96D438908F272B6004A47F5 /* lreplace.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lreplace.test; sourceTree = ""; }; - F96D438A08F272B6004A47F5 /* lsearch.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lsearch.test; sourceTree = ""; }; - F96D438B08F272B6004A47F5 /* lset.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lset.test; sourceTree = ""; }; - F96D438C08F272B6004A47F5 /* lsetComp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = lsetComp.test; sourceTree = ""; }; - F96D438D08F272B6004A47F5 /* macOSXFCmd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = macOSXFCmd.test; sourceTree = ""; }; - F96D438E08F272B6004A47F5 /* main.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = main.test; sourceTree = ""; }; - F96D438F08F272B6004A47F5 /* misc.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = misc.test; sourceTree = ""; }; - F96D439008F272B6004A47F5 /* msgcat.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = msgcat.test; sourceTree = ""; }; - F96D439108F272B6004A47F5 /* namespace-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "namespace-old.test"; sourceTree = ""; }; - F96D439208F272B7004A47F5 /* namespace.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = namespace.test; sourceTree = ""; }; - F96D439308F272B7004A47F5 /* notify.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = notify.test; sourceTree = ""; }; - F96D439408F272B7004A47F5 /* obj.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = obj.test; sourceTree = ""; }; - F96D439508F272B7004A47F5 /* opt.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = opt.test; sourceTree = ""; }; - F96D439608F272B7004A47F5 /* package.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = package.test; sourceTree = ""; }; - F96D439708F272B7004A47F5 /* parse.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = parse.test; sourceTree = ""; }; - F96D439808F272B7004A47F5 /* parseExpr.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = parseExpr.test; sourceTree = ""; }; - F96D439908F272B7004A47F5 /* parseOld.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = parseOld.test; sourceTree = ""; }; - F96D439A08F272B7004A47F5 /* pid.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pid.test; sourceTree = ""; }; - F96D439B08F272B7004A47F5 /* pkg.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkg.test; sourceTree = ""; }; - F96D439C08F272B7004A47F5 /* pkgMkIndex.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgMkIndex.test; sourceTree = ""; }; - F96D439D08F272B7004A47F5 /* platform.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = platform.test; sourceTree = ""; }; - F96D439E08F272B7004A47F5 /* proc-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "proc-old.test"; sourceTree = ""; }; - F96D439F08F272B7004A47F5 /* proc.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = proc.test; sourceTree = ""; }; - F96D43A008F272B7004A47F5 /* pwd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pwd.test; sourceTree = ""; }; - F96D43A108F272B7004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D43A208F272B7004A47F5 /* reg.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = reg.test; sourceTree = ""; }; - F96D43A308F272B7004A47F5 /* regexp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = regexp.test; sourceTree = ""; }; - F96D43A408F272B7004A47F5 /* regexpComp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = regexpComp.test; sourceTree = ""; }; - F96D43A508F272B7004A47F5 /* registry.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = registry.test; sourceTree = ""; }; - F96D43A608F272B7004A47F5 /* remote.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = remote.tcl; sourceTree = ""; }; - F96D43A708F272B7004A47F5 /* rename.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = rename.test; sourceTree = ""; }; - F96D43A808F272B7004A47F5 /* result.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = result.test; sourceTree = ""; }; - F96D43A908F272B7004A47F5 /* safe.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = safe.test; sourceTree = ""; }; - F96D43AA08F272B7004A47F5 /* scan.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = scan.test; sourceTree = ""; }; - F96D43AB08F272B7004A47F5 /* security.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = security.test; sourceTree = ""; }; - F96D43AC08F272B7004A47F5 /* set-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "set-old.test"; sourceTree = ""; }; - F96D43AD08F272B7004A47F5 /* set.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = set.test; sourceTree = ""; }; - F96D43AE08F272B7004A47F5 /* socket.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = socket.test; sourceTree = ""; }; - F96D43AF08F272B7004A47F5 /* source.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = source.test; sourceTree = ""; }; - F96D43B008F272B7004A47F5 /* split.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = split.test; sourceTree = ""; }; - F96D43B108F272B7004A47F5 /* stack.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = stack.test; sourceTree = ""; }; - F96D43B208F272B7004A47F5 /* string.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = string.test; sourceTree = ""; }; - F96D43B308F272B7004A47F5 /* stringComp.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = stringComp.test; sourceTree = ""; }; - F96D43B408F272B7004A47F5 /* stringObj.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = stringObj.test; sourceTree = ""; }; - F96D43B508F272B7004A47F5 /* subst.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = subst.test; sourceTree = ""; }; - F96D43B608F272B7004A47F5 /* switch.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = switch.test; sourceTree = ""; }; - F96D43B708F272B7004A47F5 /* tcltest.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tcltest.test; sourceTree = ""; }; - F96D43B808F272B7004A47F5 /* thread.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = thread.test; sourceTree = ""; }; - F96D43B908F272B7004A47F5 /* timer.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = timer.test; sourceTree = ""; }; - F96D43BA08F272B7004A47F5 /* tm.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tm.test; sourceTree = ""; }; - F96D43BB08F272B7004A47F5 /* trace.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = trace.test; sourceTree = ""; }; - F96D43BC08F272B7004A47F5 /* unixFCmd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixFCmd.test; sourceTree = ""; }; - F96D43BD08F272B7004A47F5 /* unixFile.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixFile.test; sourceTree = ""; }; - F96D43BE08F272B7004A47F5 /* unixInit.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixInit.test; sourceTree = ""; }; - F96D43BF08F272B7004A47F5 /* unixNotfy.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unixNotfy.test; sourceTree = ""; }; - F96D43C008F272B7004A47F5 /* unknown.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unknown.test; sourceTree = ""; }; - F96D43C108F272B7004A47F5 /* unload.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = unload.test; sourceTree = ""; }; - F96D43C208F272B7004A47F5 /* uplevel.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = uplevel.test; sourceTree = ""; }; - F96D43C308F272B7004A47F5 /* upvar.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = upvar.test; sourceTree = ""; }; - F96D43C408F272B7004A47F5 /* utf.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = utf.test; sourceTree = ""; }; - F96D43C508F272B7004A47F5 /* util.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = util.test; sourceTree = ""; }; - F96D43C608F272B7004A47F5 /* var.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = var.test; sourceTree = ""; }; - F96D43C708F272B7004A47F5 /* while-old.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "while-old.test"; sourceTree = ""; }; - F96D43C808F272B7004A47F5 /* while.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = while.test; sourceTree = ""; }; - F96D43C908F272B7004A47F5 /* winConsole.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winConsole.test; sourceTree = ""; }; - F96D43CA08F272B7004A47F5 /* winDde.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winDde.test; sourceTree = ""; }; - F96D43CB08F272B7004A47F5 /* winFCmd.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winFCmd.test; sourceTree = ""; }; - F96D43CC08F272B7004A47F5 /* winFile.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winFile.test; sourceTree = ""; }; - F96D43CD08F272B7004A47F5 /* winNotify.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winNotify.test; sourceTree = ""; }; - F96D43CE08F272B7004A47F5 /* winPipe.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winPipe.test; sourceTree = ""; }; - F96D43CF08F272B7004A47F5 /* winTime.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = winTime.test; sourceTree = ""; }; - F96D43D108F272B8004A47F5 /* checkLibraryDoc.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = checkLibraryDoc.tcl; sourceTree = ""; }; - F96D43D208F272B8004A47F5 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - F96D43D308F272B8004A47F5 /* configure.ac */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = configure.ac; sourceTree = ""; }; - F96D442208F272B8004A47F5 /* eolFix.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = eolFix.tcl; sourceTree = ""; }; - F96D442408F272B8004A47F5 /* fix_tommath_h.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fix_tommath_h.tcl; sourceTree = ""; }; - F96D442508F272B8004A47F5 /* genStubs.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = genStubs.tcl; sourceTree = ""; }; - F96D442708F272B8004A47F5 /* index.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = index.tcl; sourceTree = ""; }; - F96D442808F272B8004A47F5 /* installData.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = installData.tcl; sourceTree = ""; }; - F96D442908F272B8004A47F5 /* loadICU.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = loadICU.tcl; sourceTree = ""; }; - F96D442A08F272B8004A47F5 /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F96D442B08F272B8004A47F5 /* makeTestCases.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = makeTestCases.tcl; sourceTree = ""; }; - F96D442C08F272B8004A47F5 /* man2help.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = man2help.tcl; sourceTree = ""; }; - F96D442D08F272B8004A47F5 /* man2help2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = man2help2.tcl; sourceTree = ""; }; - F96D442E08F272B8004A47F5 /* man2html.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = man2html.tcl; sourceTree = ""; }; - F96D442F08F272B8004A47F5 /* man2html1.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = man2html1.tcl; sourceTree = ""; }; - F96D443008F272B8004A47F5 /* man2html2.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = man2html2.tcl; sourceTree = ""; }; - F96D443108F272B8004A47F5 /* man2tcl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = man2tcl.c; sourceTree = ""; }; - F96D443208F272B8004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D443308F272B8004A47F5 /* regexpTestLib.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = regexpTestLib.tcl; sourceTree = ""; }; - F96D443508F272B8004A47F5 /* tcl.hpj.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.hpj.in; sourceTree = ""; }; - F96D443608F272B8004A47F5 /* tcl.wse.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.wse.in; sourceTree = ""; }; - F96D443908F272B9004A47F5 /* tcltk-man2html.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = "tcltk-man2html.tcl"; sourceTree = ""; }; - F96D443A08F272B9004A47F5 /* tclZIC.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclZIC.tcl; sourceTree = ""; }; - F96D443B08F272B9004A47F5 /* uniClass.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = uniClass.tcl; sourceTree = ""; }; - F96D443C08F272B9004A47F5 /* uniParse.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = uniParse.tcl; sourceTree = ""; }; - F96D444008F272B9004A47F5 /* aclocal.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = aclocal.m4; sourceTree = ""; }; - F96D444108F272B9004A47F5 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - F96D444208F272B9004A47F5 /* configure.ac */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = configure.ac; sourceTree = ""; }; - F96D444408F272B9004A47F5 /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F96D444508F272B9004A47F5 /* pkga.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkga.c; sourceTree = ""; }; - F96D444608F272B9004A47F5 /* pkgb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkgb.c; sourceTree = ""; }; - F96D444708F272B9004A47F5 /* pkgc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkgc.c; sourceTree = ""; }; - F96D444808F272B9004A47F5 /* pkgd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkgd.c; sourceTree = ""; }; - F96D444908F272B9004A47F5 /* pkge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkge.c; sourceTree = ""; }; - F96D444B08F272B9004A47F5 /* pkgua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pkgua.c; sourceTree = ""; }; - F96D444C08F272B9004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D444D08F272B9004A47F5 /* install-sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; - F96D444E08F272B9004A47F5 /* installManPage */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = installManPage; sourceTree = ""; }; - F96D444F08F272B9004A47F5 /* ldAix */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ldAix; sourceTree = ""; }; - F96D445008F272B9004A47F5 /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F96D445208F272B9004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D445308F272B9004A47F5 /* tcl.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tcl.m4; sourceTree = ""; }; - F96D445408F272B9004A47F5 /* tcl.spec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.spec; sourceTree = ""; }; - F96D445508F272B9004A47F5 /* tclAppInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclAppInit.c; sourceTree = ""; }; - F96D445608F272B9004A47F5 /* tclConfig.h.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = tclConfig.h.in; sourceTree = ""; }; - F96D445708F272B9004A47F5 /* tclConfig.sh.in */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tclConfig.sh.in; sourceTree = ""; }; - F96D445808F272B9004A47F5 /* tclLoadAix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadAix.c; sourceTree = ""; }; - F96D445908F272B9004A47F5 /* tclLoadDl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadDl.c; sourceTree = ""; }; - F96D445B08F272B9004A47F5 /* tclLoadDyld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadDyld.c; sourceTree = ""; }; - F96D445C08F272B9004A47F5 /* tclLoadNext.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadNext.c; sourceTree = ""; }; - F96D445D08F272B9004A47F5 /* tclLoadOSF.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadOSF.c; sourceTree = ""; }; - F96D445E08F272B9004A47F5 /* tclLoadShl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclLoadShl.c; sourceTree = ""; }; - F96D445F08F272B9004A47F5 /* tclUnixChan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixChan.c; sourceTree = ""; }; - F96D446008F272B9004A47F5 /* tclUnixEvent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixEvent.c; sourceTree = ""; }; - F96D446108F272B9004A47F5 /* tclUnixFCmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixFCmd.c; sourceTree = ""; }; - F96D446208F272B9004A47F5 /* tclUnixFile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixFile.c; sourceTree = ""; }; - F96D446308F272B9004A47F5 /* tclUnixInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixInit.c; sourceTree = ""; }; - F96D446408F272B9004A47F5 /* tclUnixNotfy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixNotfy.c; sourceTree = ""; }; - F96D446508F272B9004A47F5 /* tclUnixPipe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixPipe.c; sourceTree = ""; }; - F96D446608F272B9004A47F5 /* tclUnixPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclUnixPort.h; sourceTree = ""; }; - F96D446708F272B9004A47F5 /* tclUnixSock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixSock.c; sourceTree = ""; }; - F96D446808F272B9004A47F5 /* tclUnixTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixTest.c; sourceTree = ""; }; - F96D446908F272B9004A47F5 /* tclUnixThrd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixThrd.c; sourceTree = ""; }; - F96D446A08F272B9004A47F5 /* tclUnixThrd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclUnixThrd.h; sourceTree = ""; }; - F96D446B08F272B9004A47F5 /* tclUnixTime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixTime.c; sourceTree = ""; }; - F96D446C08F272B9004A47F5 /* tclXtNotify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclXtNotify.c; sourceTree = ""; }; - F96D446D08F272B9004A47F5 /* tclXtTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclXtTest.c; sourceTree = ""; }; - F96D447008F272BA004A47F5 /* aclocal.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = aclocal.m4; sourceTree = ""; }; - F96D447108F272BA004A47F5 /* buildall.vc.bat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = buildall.vc.bat; sourceTree = ""; }; - F96D447208F272BA004A47F5 /* cat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cat.c; sourceTree = ""; }; - F96D447408F272BA004A47F5 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - F96D447508F272BA004A47F5 /* configure.ac */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = configure.ac; sourceTree = ""; }; - F96D447708F272BA004A47F5 /* Makefile.in */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = Makefile.in; sourceTree = ""; }; - F96D447808F272BA004A47F5 /* makefile.vc */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = makefile.vc; sourceTree = ""; }; - F96D447908F272BA004A47F5 /* nmakehlp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nmakehlp.c; sourceTree = ""; }; - F96D447A08F272BA004A47F5 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - F96D447C08F272BA004A47F5 /* rules.vc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rules.vc; sourceTree = ""; }; - F96D447D08F272BA004A47F5 /* stub16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stub16.c; sourceTree = ""; }; - F96D447E08F272BA004A47F5 /* tcl.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.dsp; sourceTree = ""; }; - F96D447F08F272BA004A47F5 /* tcl.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.dsw; sourceTree = ""; }; - F96D448008F272BA004A47F5 /* tcl.hpj.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.hpj.in; sourceTree = ""; }; - F96D448108F272BA004A47F5 /* tcl.m4 */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tcl.m4; sourceTree = ""; }; - F96D448208F272BA004A47F5 /* tcl.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.rc; sourceTree = ""; }; - F96D448308F272BA004A47F5 /* tclAppInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclAppInit.c; sourceTree = ""; }; - F96D448408F272BA004A47F5 /* tclConfig.sh.in */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; path = tclConfig.sh.in; sourceTree = ""; }; - F96D448608F272BA004A47F5 /* tclsh.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tclsh.rc; sourceTree = ""; }; - F96D448708F272BA004A47F5 /* tclWin32Dll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWin32Dll.c; sourceTree = ""; }; - F96D448808F272BA004A47F5 /* tclWinChan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinChan.c; sourceTree = ""; }; - F96D448908F272BA004A47F5 /* tclWinConsole.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinConsole.c; sourceTree = ""; }; - F96D448A08F272BA004A47F5 /* tclWinDde.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinDde.c; sourceTree = ""; }; - F96D448B08F272BA004A47F5 /* tclWinError.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinError.c; sourceTree = ""; }; - F96D448C08F272BA004A47F5 /* tclWinFCmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinFCmd.c; sourceTree = ""; }; - F96D448D08F272BA004A47F5 /* tclWinFile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinFile.c; sourceTree = ""; }; - F96D448E08F272BA004A47F5 /* tclWinInit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinInit.c; sourceTree = ""; }; - F96D448F08F272BA004A47F5 /* tclWinInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclWinInt.h; sourceTree = ""; }; - F96D449008F272BA004A47F5 /* tclWinLoad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinLoad.c; sourceTree = ""; }; - F96D449108F272BA004A47F5 /* tclWinNotify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinNotify.c; sourceTree = ""; }; - F96D449208F272BA004A47F5 /* tclWinPipe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinPipe.c; sourceTree = ""; }; - F96D449308F272BA004A47F5 /* tclWinPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclWinPort.h; sourceTree = ""; }; - F96D449408F272BA004A47F5 /* tclWinReg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinReg.c; sourceTree = ""; }; - F96D449508F272BA004A47F5 /* tclWinSerial.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinSerial.c; sourceTree = ""; }; - F96D449608F272BA004A47F5 /* tclWinSock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinSock.c; sourceTree = ""; }; - F96D449708F272BA004A47F5 /* tclWinTest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinTest.c; sourceTree = ""; }; - F96D449808F272BA004A47F5 /* tclWinThrd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinThrd.c; sourceTree = ""; }; - F96D449908F272BA004A47F5 /* tclWinThrd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclWinThrd.h; sourceTree = ""; }; - F96D449A08F272BA004A47F5 /* tclWinTime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclWinTime.c; sourceTree = ""; }; - F973E5960EE99384001A648E /* vistaTheme.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = vistaTheme.tcl; sourceTree = ""; }; - F974D56C0FBE7D6300BF728B /* http11.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = http11.test; sourceTree = ""; }; - F974D56D0FBE7D6300BF728B /* httpd11.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = httpd11.tcl; sourceTree = ""; }; - F974D5720FBE7DC600BF728B /* coroutine.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = coroutine.n; sourceTree = ""; }; - F974D5760FBE7E1900BF728B /* tailcall.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = tailcall.n; sourceTree = ""; }; - F974D5770FBE7E6100BF728B /* coroutine.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = coroutine.test; sourceTree = ""; }; - F974D5780FBE7E6100BF728B /* tailcall.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tailcall.test; sourceTree = ""; }; - F974D5790FBE7E9C00BF728B /* tcl.pc.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tcl.pc.in; sourceTree = ""; }; - F974D57B0FBE7EC000BF728B /* tk.pc.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tk.pc.in; sourceTree = ""; }; - F974D57C0FBE7EFF00BF728B /* iconlist.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = iconlist.tcl; sourceTree = ""; }; - F974D57D0FBE7EFF00BF728B /* icons.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = icons.tcl; sourceTree = ""; }; - F97590AE1039A96200558A9A /* Wish.sdef */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.sdef; path = Wish.sdef; sourceTree = ""; }; - F976F6A70C325FB6005066D9 /* tkMacOSXPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tkMacOSXPrivate.h; sourceTree = ""; }; - F97AE7F10B65C1E900310EA2 /* Tk-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Tk-Common.xcconfig"; sourceTree = ""; }; - F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Tk-Release.xcconfig"; sourceTree = ""; }; - F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Tk-Debug.xcconfig"; sourceTree = ""; }; - F98383650F0FA43900171CA6 /* checkbutton.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = checkbutton.test; sourceTree = ""; }; - F98383680F0FA44700171CA6 /* radiobutton.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = radiobutton.test; sourceTree = ""; }; - F9903CAF094FAADA004613E9 /* tclTomMath.decls */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = tclTomMath.decls; sourceTree = ""; }; - F9903CB0094FAADA004613E9 /* tclTomMathDecls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tclTomMathDecls.h; sourceTree = ""; }; - F99388380EE0114B0065FE6B /* fontchooser.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fontchooser.tcl; sourceTree = ""; }; - F99388950EE02D980065FE6B /* fontchooser.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = fontchooser.test; sourceTree = ""; }; - F99D61180EF5573A00BBFE01 /* TclZlib.3 */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = TclZlib.3; sourceTree = ""; }; - F9A3082D08F2D4AB00BAE1AB /* Tk.framework */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.framework; path = Tk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F9A3084B08F2D4CE00BAE1AB /* Wish.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Wish.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F9A3084E08F2D4F400BAE1AB /* Tcl.framework */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.framework; path = Tcl.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F9A493240CEBF38300B78AE2 /* chanio.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = chanio.test; sourceTree = ""; }; - F9C888C20EEF6571003F63AD /* fontchooser.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = fontchooser.n; sourceTree = ""; }; - F9C9CBFF0E84059800E00935 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - F9D1360A0CDC252C00DBE0B5 /* mclist.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = mclist.tcl; sourceTree = ""; }; - F9DD99BC0F07DF850018B2E4 /* tkImgPNG.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tkImgPNG.c; sourceTree = ""; }; - F9DD99BF0F07DFCD0018B2E4 /* imgPNG.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = imgPNG.test; sourceTree = ""; }; - F9ECB1120B26521500A28025 /* pkgIndex.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = pkgIndex.tcl; sourceTree = ""; }; - F9ECB1130B26521500A28025 /* platform.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = platform.tcl; sourceTree = ""; }; - F9ECB1140B26521500A28025 /* shell.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = shell.tcl; sourceTree = ""; }; - F9ECB1CA0B2652D300A28025 /* apply.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = apply.test; sourceTree = ""; }; - F9ECB1CB0B26534C00A28025 /* mathop.test */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; path = mathop.test; sourceTree = ""; }; - F9ECB1E10B26543C00A28025 /* platform_shell.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = platform_shell.n; sourceTree = ""; }; - F9ECB1E20B26543C00A28025 /* platform.n */ = {isa = PBXFileReference; explicitFileType = text.man; fileEncoding = 4; path = platform.n; sourceTree = ""; }; - F9F4415D0C8BAE6F00BCCD67 /* tclDTrace.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = tclDTrace.d; sourceTree = ""; }; - F9F4EFDC0CC7B3CA00378A27 /* ttkpane.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; languageSpecificationIdentifier = shell; path = ttkpane.tcl; sourceTree = ""; }; - F9F4EFDD0CC7B3CB00378A27 /* ttkmenu.tcl */ = {isa = PBXFileReference; explicitFileType = text.script; fileEncoding = 4; languageSpecificationIdentifier = shell; path = ttkmenu.tcl; sourceTree = ""; }; - F9FC77B70AB29E9100B7077D /* tclUnixCompat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclUnixCompat.c; sourceTree = ""; }; - F9FD31F40CC1AD070073837D /* tktest-X11 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "tktest-X11"; sourceTree = BUILT_PRODUCTS_DIR; }; - F9FD32140CC1AF170073837D /* libX11.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libX11.dylib; path = /usr/X11R6/lib/libX11.dylib; sourceTree = ""; }; - F9FD32150CC1AF170073837D /* libXext.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libXext.dylib; path = /usr/X11R6/lib/libXext.dylib; sourceTree = ""; }; - F9FD32160CC1AF170073837D /* libXss.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libXss.dylib; path = /usr/X11R6/lib/libXss.dylib; sourceTree = ""; }; - F9FD34990CC1BB0D0073837D /* libfreetype.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfreetype.dylib; path = /usr/X11R6/lib/libfreetype.dylib; sourceTree = ""; }; - F9FD349A0CC1BB0D0073837D /* libXft.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libXft.dylib; path = /usr/X11R6/lib/libXft.dylib; sourceTree = ""; }; - F9FD34C30CC1BBD70073837D /* libfontconfig.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfontconfig.dylib; path = /usr/X11R6/lib/libfontconfig.dylib; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DD76FAD0486AB0100D96B5E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F966C07508F2820D005CB29B /* CoreFoundation.framework in Frameworks */, - F96437E70EF0D652003F468E /* libz.dylib in Frameworks */, - F966C07708F2821B005CB29B /* Carbon.framework in Frameworks */, - F966C07908F28233005CB29B /* IOKit.framework in Frameworks */, - F94523A20E6FC2AC00C1D987 /* Cocoa.framework in Frameworks */, - F9C9CC000E84059800E00935 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9FD31E30CC1AD070073837D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F9FD31E40CC1AD070073837D /* CoreFoundation.framework in Frameworks */, - F96437E80EF0D652003F468E /* libz.dylib in Frameworks */, - F9FD32170CC1AF170073837D /* libX11.dylib in Frameworks */, - F9FD32180CC1AF170073837D /* libXext.dylib in Frameworks */, - F9FD32190CC1AF170073837D /* libXss.dylib in Frameworks */, - F9FD349C0CC1BB0D0073837D /* libXft.dylib in Frameworks */, - F9FD349B0CC1BB0D0073837D /* libfreetype.dylib in Frameworks */, - F9FD34C40CC1BBD70073837D /* libfontconfig.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* Tk */ = { - isa = PBXGroup; - children = ( - F96D3DF708F271BE004A47F5 /* Tk Sources */, - F96D3DF608F27169004A47F5 /* Tcl Sources */, - F966C06F08F281DC005CB29B /* Frameworks */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - ); - comments = "Copyright (c) 2004-2009 Daniel A. Steffen \nCopyright 2008-2009, Apple Inc.\n\nSee the file \"license.terms\" for information on usage and redistribution of\nthis file, and for a DISCLAIMER OF ALL WARRANTIES.\n"; - name = Tk; - path = .; - sourceTree = SOURCE_ROOT; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - F9A3084B08F2D4CE00BAE1AB /* Wish.app */, - F9A3082D08F2D4AB00BAE1AB /* Tk.framework */, - F9A3084E08F2D4F400BAE1AB /* Tcl.framework */, - 8DD76FB20486AB0100D96B5E /* tktest */, - F9FD31F40CC1AD070073837D /* tktest-X11 */, - ); - includeInIndex = 0; - name = Products; - sourceTree = ""; - }; - F9183E690EFC81560030B814 /* pkgs */ = { - isa = PBXGroup; - children = ( - F9183E6A0EFC81560030B814 /* README */, - F946FB8B0FBE3AED00CD6495 /* itcl */, - F9183E8F0EFC817B0030B814 /* tdbc */, - ); - path = pkgs; - sourceTree = ""; - }; - F966BA0308F27A37005CB29B /* bitmaps */ = { - isa = PBXGroup; - children = ( - F966BA0408F27A37005CB29B /* error.xbm */, - F966BA0508F27A37005CB29B /* gray12.xbm */, - F966BA0608F27A37005CB29B /* gray25.xbm */, - F966BA0708F27A37005CB29B /* gray50.xbm */, - F966BA0808F27A37005CB29B /* gray75.xbm */, - F966BA0908F27A37005CB29B /* hourglass.xbm */, - F966BA0A08F27A37005CB29B /* info.xbm */, - F966BA0B08F27A37005CB29B /* questhead.xbm */, - F966BA0C08F27A37005CB29B /* question.xbm */, - F966BA0D08F27A37005CB29B /* warning.xbm */, - ); - path = bitmaps; - sourceTree = ""; - }; - F966BA1008F27A37005CB29B /* doc */ = { - isa = PBXGroup; - children = ( - F966BA1108F27A37005CB29B /* 3DBorder.3 */, - F966BA1208F27A37005CB29B /* AddOption.3 */, - F966BA1308F27A37005CB29B /* bell.n */, - F966BA1408F27A37005CB29B /* bind.n */, - F966BA1508F27A37005CB29B /* BindTable.3 */, - F966BA1608F27A37005CB29B /* bindtags.n */, - F966BA1708F27A37005CB29B /* bitmap.n */, - F966BA1808F27A37005CB29B /* button.n */, - F966BA1908F27A37005CB29B /* canvas.n */, - F966BA1A08F27A37005CB29B /* CanvPsY.3 */, - F966BA1B08F27A37005CB29B /* CanvTkwin.3 */, - F966BA1C08F27A37005CB29B /* CanvTxtInfo.3 */, - F966BA1D08F27A37005CB29B /* checkbutton.n */, - F966BA1E08F27A37005CB29B /* chooseColor.n */, - F966BA1F08F27A37005CB29B /* chooseDirectory.n */, - F966BA2008F27A37005CB29B /* Clipboard.3 */, - F966BA2108F27A37005CB29B /* clipboard.n */, - F966BA2208F27A37005CB29B /* ClrSelect.3 */, - F966BA2308F27A37005CB29B /* colors.n */, - F966BA2408F27A37005CB29B /* ConfigWidg.3 */, - F966BA2508F27A37005CB29B /* ConfigWind.3 */, - F966BA2608F27A37005CB29B /* console.n */, - F966BA2708F27A37005CB29B /* CoordToWin.3 */, - F966BA2808F27A37005CB29B /* CrtCmHdlr.3 */, - F966BA2908F27A37005CB29B /* CrtErrHdlr.3 */, - F966BA2A08F27A37005CB29B /* CrtGenHdlr.3 */, - F966BA2B08F27A37005CB29B /* CrtImgType.3 */, - F966BA2C08F27A37005CB29B /* CrtItemType.3 */, - F966BA2D08F27A37005CB29B /* CrtPhImgFmt.3 */, - F966BA2E08F27A37005CB29B /* CrtSelHdlr.3 */, - F966BA2F08F27A37005CB29B /* CrtWindow.3 */, - F966BA3008F27A37005CB29B /* cursors.n */, - F966BA3108F27A37005CB29B /* DeleteImg.3 */, - F966BA3208F27A37005CB29B /* destroy.n */, - F966BA3308F27A37005CB29B /* dialog.n */, - F966BA3408F27A37005CB29B /* DrawFocHlt.3 */, - F966BA3508F27A37005CB29B /* entry.n */, - F966BA3608F27A37005CB29B /* event.n */, - F966BA3708F27A37005CB29B /* EventHndlr.3 */, - F966BA3808F27A37005CB29B /* FindPhoto.3 */, - F966BA3908F27A37005CB29B /* focus.n */, - F966BA3A08F27A37005CB29B /* focusNext.n */, - F966BA3B08F27A37005CB29B /* font.n */, - F9C888C20EEF6571003F63AD /* fontchooser.n */, - F966BA3C08F27A37005CB29B /* FontId.3 */, - F966BA3D08F27A37005CB29B /* frame.n */, - F966BA3E08F27A37005CB29B /* FreeXId.3 */, - F966BA3F08F27A37005CB29B /* GeomReq.3 */, - F966BA4008F27A37005CB29B /* GetAnchor.3 */, - F966BA4108F27A37005CB29B /* GetBitmap.3 */, - F966BA4208F27A37005CB29B /* GetCapStyl.3 */, - F966BA4308F27A37005CB29B /* GetClrmap.3 */, - F966BA4408F27A37005CB29B /* GetColor.3 */, - F966BA4508F27A37005CB29B /* GetCursor.3 */, - F966BA4608F27A37005CB29B /* GetDash.3 */, - F966BA4708F27A37005CB29B /* GetFont.3 */, - F966BA4808F27A37005CB29B /* GetGC.3 */, - F966BA4908F27A37005CB29B /* GetHINSTANCE.3 */, - F966BA4A08F27A37005CB29B /* GetHWND.3 */, - F966BA4B08F27A37005CB29B /* GetImage.3 */, - F966BA4C08F27A37005CB29B /* GetJoinStl.3 */, - F966BA4D08F27A37005CB29B /* GetJustify.3 */, - F966BA4E08F27A37005CB29B /* getOpenFile.n */, - F966BA4F08F27A37005CB29B /* GetOption.3 */, - F966BA5008F27A38005CB29B /* GetPixels.3 */, - F966BA5108F27A38005CB29B /* GetPixmap.3 */, - F966BA5208F27A38005CB29B /* GetRelief.3 */, - F966BA5308F27A38005CB29B /* GetRootCrd.3 */, - F966BA5408F27A38005CB29B /* GetScroll.3 */, - F966BA5508F27A38005CB29B /* GetSelect.3 */, - F966BA5608F27A38005CB29B /* GetUid.3 */, - F966BA5708F27A38005CB29B /* GetVisual.3 */, - F966BA5808F27A38005CB29B /* GetVRoot.3 */, - F966BA5908F27A38005CB29B /* Grab.3 */, - F966BA5A08F27A38005CB29B /* grab.n */, - F966BA5B08F27A38005CB29B /* grid.n */, - F966BA5C08F27A38005CB29B /* HandleEvent.3 */, - F966BA5D08F27A38005CB29B /* HWNDToWindow.3 */, - F966BA5E08F27A38005CB29B /* IdToWindow.3 */, - F966BA5F08F27A38005CB29B /* image.n */, - F966BA6008F27A38005CB29B /* ImgChanged.3 */, - F966BA6108F27A38005CB29B /* Inactive.3 */, - F966BA6208F27A38005CB29B /* InternAtom.3 */, - F966BA6308F27A38005CB29B /* keysyms.n */, - F966BA6408F27A38005CB29B /* label.n */, - F966BA6508F27A38005CB29B /* labelframe.n */, - F966BA6608F27A38005CB29B /* listbox.n */, - F966BA6708F27A38005CB29B /* loadTk.n */, - F966BA6808F27A38005CB29B /* lower.n */, - F966BA6908F27A38005CB29B /* MainLoop.3 */, - F966BA6A08F27A38005CB29B /* MaintGeom.3 */, - F966BA6B08F27A38005CB29B /* MainWin.3 */, - F966BA6D08F27A38005CB29B /* ManageGeom.3 */, - F966BA6E08F27A38005CB29B /* MapWindow.3 */, - F966BA6F08F27A38005CB29B /* MeasureChar.3 */, - F966BA7008F27A38005CB29B /* menu.n */, - F966BA7208F27A38005CB29B /* menubutton.n */, - F966BA7308F27A38005CB29B /* message.n */, - F966BA7408F27A38005CB29B /* messageBox.n */, - F966BA7508F27A38005CB29B /* MoveToplev.3 */, - F966BA7608F27A38005CB29B /* Name.3 */, - F966BA7708F27A38005CB29B /* NameOfImg.3 */, - F966BA7808F27A38005CB29B /* option.n */, - F966BA7908F27A38005CB29B /* optionMenu.n */, - F966BA7A08F27A38005CB29B /* options.n */, - F966BA7B08F27A38005CB29B /* OwnSelect.3 */, - F966BA7D08F27A38005CB29B /* pack.n */, - F966BA7E08F27A38005CB29B /* palette.n */, - F966BA7F08F27A38005CB29B /* panedwindow.n */, - F966BA8008F27A38005CB29B /* ParseArgv.3 */, - F966BA8108F27A38005CB29B /* photo.n */, - F966BA8208F27A38005CB29B /* place.n */, - F966BA8308F27A38005CB29B /* popup.n */, - F966BA8408F27A38005CB29B /* QWinEvent.3 */, - F966BA8508F27A38005CB29B /* radiobutton.n */, - F966BA8608F27A38005CB29B /* raise.n */, - F966BA8708F27A38005CB29B /* Restack.3 */, - F966BA8808F27A38005CB29B /* RestrictEv.3 */, - F966BA8908F27A38005CB29B /* scale.n */, - F966BA8A08F27A38005CB29B /* scrollbar.n */, - F966BA8B08F27A38005CB29B /* selection.n */, - F966BA8C08F27A38005CB29B /* send.n */, - F966BA8D08F27A38005CB29B /* SetAppName.3 */, - F966BA8E08F27A38005CB29B /* SetCaret.3 */, - F966BA8F08F27A38005CB29B /* SetClass.3 */, - F966BA9008F27A38005CB29B /* SetClassProcs.3 */, - F966BA9108F27A38005CB29B /* SetGrid.3 */, - F966BA9208F27A38005CB29B /* SetOptions.3 */, - F966BA9308F27A38005CB29B /* SetVisual.3 */, - F966BA9408F27A38005CB29B /* spinbox.n */, - F966BA9508F27A38005CB29B /* StrictMotif.3 */, - F966BA9608F27A38005CB29B /* text.n */, - F966BA9708F27A38005CB29B /* TextLayout.3 */, - F966BA9808F27A38005CB29B /* tk.n */, - F966BA9A08F27A38005CB29B /* Tk_Init.3 */, - F966BA9B08F27A38005CB29B /* Tk_Main.3 */, - F966BA9C08F27A38005CB29B /* tkerror.n */, - F966BA9D08F27A38005CB29B /* TkInitStubs.3 */, - F966BA9E08F27A38005CB29B /* tkvars.n */, - F966BA9F08F27A38005CB29B /* tkwait.n */, - F966BAA008F27A38005CB29B /* toplevel.n */, - F968886B0AF788F6000797B5 /* ttk_button.n */, - F968886C0AF788F6000797B5 /* ttk_checkbutton.n */, - F968886D0AF788F6000797B5 /* ttk_combobox.n */, - F968886F0AF788F6000797B5 /* ttk_entry.n */, - F96888700AF788F6000797B5 /* ttk_frame.n */, - F96888710AF788F6000797B5 /* ttk_Geometry.3 */, - F96888720AF788F6000797B5 /* ttk_image.n */, - F96888730AF788F6000797B5 /* ttk_intro.n */, - F96888740AF788F6000797B5 /* ttk_label.n */, - F96888750AF788F6000797B5 /* ttk_labelframe.n */, - F96888760AF788F6000797B5 /* ttk_menubutton.n */, - F96888770AF788F6000797B5 /* ttk_notebook.n */, - F96888780AF788F6000797B5 /* ttk_panedwindow.n */, - F96888790AF788F6000797B5 /* ttk_progressbar.n */, - F968887A0AF788F6000797B5 /* ttk_radiobutton.n */, - F968887B0AF788F6000797B5 /* ttk_scrollbar.n */, - F968887C0AF788F6000797B5 /* ttk_separator.n */, - F968887D0AF788F6000797B5 /* ttk_sizegrip.n */, - F968887E0AF788F6000797B5 /* ttk_style.n */, - F968887F0AF788F6000797B5 /* ttk_Theme.3 */, - F96888800AF788F6000797B5 /* ttk_treeview.n */, - F96888810AF788F6000797B5 /* ttk_widget.n */, - F966BAA108F27A38005CB29B /* WindowId.3 */, - F966BAA208F27A38005CB29B /* winfo.n */, - F966BAA308F27A38005CB29B /* wish.1 */, - F966BAA408F27A38005CB29B /* wm.n */, - ); - path = doc; - sourceTree = ""; - }; - F966BAA508F27A38005CB29B /* generic */ = { - isa = PBXGroup; - children = ( - F966BAA608F27A38005CB29B /* default.h */, - F966BAA708F27A38005CB29B /* ks_names.h */, - F966BAA908F27A39005CB29B /* README */, - F966BAAA08F27A39005CB29B /* tk.decls */, - F966BAAB08F27A39005CB29B /* tk.h */, - F966BAAC08F27A39005CB29B /* tk3d.c */, - F966BAAD08F27A39005CB29B /* tk3d.h */, - F966BAAE08F27A39005CB29B /* tkArgv.c */, - F966BAAF08F27A39005CB29B /* tkAtom.c */, - F966BAB008F27A39005CB29B /* tkBind.c */, - F966BAB108F27A39005CB29B /* tkBitmap.c */, - F9152B080EAF8A5000CD5C7B /* tkBusy.c */, - F966BAB208F27A39005CB29B /* tkButton.c */, - F966BAB308F27A39005CB29B /* tkButton.h */, - F966BAB408F27A39005CB29B /* tkCanvArc.c */, - F966BAB508F27A39005CB29B /* tkCanvas.c */, - F966BAB608F27A39005CB29B /* tkCanvas.h */, - F966BAB708F27A39005CB29B /* tkCanvBmap.c */, - F966BAB808F27A39005CB29B /* tkCanvImg.c */, - F966BAB908F27A39005CB29B /* tkCanvLine.c */, - F966BABA08F27A39005CB29B /* tkCanvPoly.c */, - F966BABB08F27A39005CB29B /* tkCanvPs.c */, - F966BABD08F27A39005CB29B /* tkCanvText.c */, - F966BABE08F27A39005CB29B /* tkCanvUtil.c */, - F966BABF08F27A39005CB29B /* tkCanvWind.c */, - F966BAC008F27A39005CB29B /* tkClipboard.c */, - F966BAC108F27A39005CB29B /* tkCmds.c */, - F966BAC208F27A39005CB29B /* tkColor.c */, - F966BAC308F27A39005CB29B /* tkColor.h */, - F966BAC408F27A39005CB29B /* tkConfig.c */, - F966BAC508F27A39005CB29B /* tkConsole.c */, - F966BAC608F27A39005CB29B /* tkCursor.c */, - F966BAC708F27A39005CB29B /* tkDecls.h */, - F966BAC808F27A39005CB29B /* tkEntry.c */, - F966BAC908F27A39005CB29B /* tkEntry.h */, - F966BACA08F27A39005CB29B /* tkError.c */, - F966BACB08F27A39005CB29B /* tkEvent.c */, - F966BACC08F27A39005CB29B /* tkFileFilter.c */, - F966BACD08F27A39005CB29B /* tkFileFilter.h */, - F966BACE08F27A39005CB29B /* tkFocus.c */, - F966BACF08F27A39005CB29B /* tkFont.c */, - F966BAD008F27A39005CB29B /* tkFont.h */, - F966BAD108F27A39005CB29B /* tkFrame.c */, - F966BAD208F27A39005CB29B /* tkGC.c */, - F966BAD308F27A39005CB29B /* tkGeometry.c */, - F966BAD408F27A39005CB29B /* tkGet.c */, - F966BAD508F27A39005CB29B /* tkGrab.c */, - F966BAD608F27A39005CB29B /* tkGrid.c */, - F966BAD708F27A39005CB29B /* tkImage.c */, - F966BAD808F27A39005CB29B /* tkImgBmap.c */, - F966BAD908F27A39005CB29B /* tkImgGIF.c */, - F92EE8BE0E62F846001A6E80 /* tkImgPhInstance.c */, - F966BADA08F27A39005CB29B /* tkImgPhoto.c */, - F9DD99BC0F07DF850018B2E4 /* tkImgPNG.c */, - F966BADB08F27A39005CB29B /* tkImgPPM.c */, - F966BADC08F27A39005CB29B /* tkImgUtil.c */, - F966BADE08F27A39005CB29B /* tkInt.decls */, - F966BADF08F27A39005CB29B /* tkInt.h */, - F966BAE108F27A39005CB29B /* tkIntDecls.h */, - F966BAE208F27A39005CB29B /* tkIntPlatDecls.h */, - F966BAE308F27A39005CB29B /* tkIntXlibDecls.h */, - F966BAE408F27A39005CB29B /* tkListbox.c */, - F966BAE508F27A39005CB29B /* tkMacWinMenu.c */, - F966BAE608F27A39005CB29B /* tkMain.c */, - F966BAE708F27A39005CB29B /* tkMenu.c */, - F966BAE808F27A39005CB29B /* tkMenu.h */, - F966BAE908F27A39005CB29B /* tkMenubutton.c */, - F966BAEA08F27A39005CB29B /* tkMenubutton.h */, - F966BAEB08F27A39005CB29B /* tkMenuDraw.c */, - F966BAEC08F27A39005CB29B /* tkMessage.c */, - F966BAED08F27A39005CB29B /* tkObj.c */, - F966BAEE08F27A39005CB29B /* tkOldConfig.c */, - F966BAEF08F27A39005CB29B /* tkOption.c */, - F966BAF008F27A39005CB29B /* tkPack.c */, - F966BAF108F27A39005CB29B /* tkPanedWindow.c */, - F966BAF208F27A39005CB29B /* tkPlace.c */, - F966BAF308F27A39005CB29B /* tkPlatDecls.h */, - F966BAF408F27A39005CB29B /* tkPointer.c */, - F966BAF508F27A39005CB29B /* tkPort.h */, - F966BAF608F27A39005CB29B /* tkRectOval.c */, - F966BAF708F27A39005CB29B /* tkScale.c */, - F966BAF808F27A39005CB29B /* tkScale.h */, - F966BAF908F27A39005CB29B /* tkScrollbar.c */, - F966BAFA08F27A39005CB29B /* tkScrollbar.h */, - F966BAFB08F27A39005CB29B /* tkSelect.c */, - F966BAFC08F27A39005CB29B /* tkSelect.h */, - F966BAFD08F27A39005CB29B /* tkSquare.c */, - F966BAFF08F27A39005CB29B /* tkStubInit.c */, - F966BB0008F27A39005CB29B /* tkStubLib.c */, - F966BB0108F27A39005CB29B /* tkStyle.c */, - F966BB0208F27A39005CB29B /* tkTest.c */, - F966BB0308F27A39005CB29B /* tkText.c */, - F966BB0408F27A39005CB29B /* tkText.h */, - F966BB0508F27A39005CB29B /* tkTextBTree.c */, - F966BB0608F27A39005CB29B /* tkTextDisp.c */, - F966BB0808F27A39005CB29B /* tkTextImage.c */, - F966BB0908F27A39005CB29B /* tkTextIndex.c */, - F966BB0A08F27A39005CB29B /* tkTextMark.c */, - F966BB0B08F27A39005CB29B /* tkTextTag.c */, - F966BB0C08F27A39005CB29B /* tkTextWind.c */, - F966BB0D08F27A39005CB29B /* tkTrig.c */, - F966BB0E08F27A39005CB29B /* tkUndo.c */, - F966BB0F08F27A39005CB29B /* tkUndo.h */, - F966BB1008F27A39005CB29B /* tkUtil.c */, - F966BB1108F27A39005CB29B /* tkVisual.c */, - F966BB1208F27A39005CB29B /* tkWindow.c */, - F96887DF0AF786D5000797B5 /* ttk */, - ); - path = generic; - sourceTree = ""; - }; - F966BB1308F27A39005CB29B /* library */ = { - isa = PBXGroup; - children = ( - F966BB1408F27A39005CB29B /* bgerror.tcl */, - F966BB1508F27A39005CB29B /* button.tcl */, - F966BB1608F27A39005CB29B /* choosedir.tcl */, - F966BB1708F27A39005CB29B /* clrpick.tcl */, - F966BB1808F27A39005CB29B /* comdlg.tcl */, - F966BB1908F27A39005CB29B /* console.tcl */, - F966BB1A08F27A39005CB29B /* demos */, - F966BB6208F27A3A005CB29B /* dialog.tcl */, - F966BB6308F27A3A005CB29B /* entry.tcl */, - F966BB6408F27A3A005CB29B /* focus.tcl */, - F99388380EE0114B0065FE6B /* fontchooser.tcl */, - F974D57C0FBE7EFF00BF728B /* iconlist.tcl */, - F974D57D0FBE7EFF00BF728B /* icons.tcl */, - F966BB7308F27A3A005CB29B /* listbox.tcl */, - F966BB7408F27A3A005CB29B /* menu.tcl */, - F966BB7508F27A3A005CB29B /* mkpsenc.tcl */, - F966BB7608F27A3A005CB29B /* msgbox.tcl */, - F966BB8708F27A3A005CB29B /* optMenu.tcl */, - F966BB8808F27A3A005CB29B /* palette.tcl */, - F966BB8908F27A3B005CB29B /* panedwindow.tcl */, - F966BB8B08F27A3B005CB29B /* safetk.tcl */, - F966BB8C08F27A3B005CB29B /* scale.tcl */, - F966BB8D08F27A3B005CB29B /* scrlbar.tcl */, - F966BB8E08F27A3B005CB29B /* spinbox.tcl */, - F966BB8F08F27A3B005CB29B /* tclIndex */, - F966BB9008F27A3B005CB29B /* tearoff.tcl */, - F966BB9108F27A3B005CB29B /* text.tcl */, - F966BB9208F27A3B005CB29B /* tk.tcl */, - F966BB9308F27A3B005CB29B /* tkfbox.tcl */, - F96888360AF787B3000797B5 /* ttk */, - F966BB9508F27A3B005CB29B /* xmfbox.tcl */, - ); - path = library; - sourceTree = ""; - }; - F966BB1A08F27A39005CB29B /* demos */ = { - isa = PBXGroup; - children = ( - F966BB1B08F27A39005CB29B /* anilabel.tcl */, - F966BB1C08F27A39005CB29B /* aniwave.tcl */, - F966BB1D08F27A39005CB29B /* arrow.tcl */, - F966BB1E08F27A39005CB29B /* bind.tcl */, - F966BB1F08F27A39005CB29B /* bitmap.tcl */, - F966BB2008F27A39005CB29B /* browse */, - F966BB2108F27A39005CB29B /* button.tcl */, - F966BB2208F27A39005CB29B /* check.tcl */, - F966BB2308F27A39005CB29B /* clrpick.tcl */, - F966BB2408F27A39005CB29B /* colors.tcl */, - F936FCDB0CCD984600716967 /* combo.tcl */, - F966BB2508F27A39005CB29B /* cscroll.tcl */, - F966BB2608F27A39005CB29B /* ctext.tcl */, - F966BB2708F27A39005CB29B /* dialog1.tcl */, - F966BB2808F27A39005CB29B /* dialog2.tcl */, - F966BB2A08F27A39005CB29B /* entry1.tcl */, - F966BB2B08F27A39005CB29B /* entry2.tcl */, - F966BB2C08F27A39005CB29B /* entry3.tcl */, - F966BB2D08F27A39005CB29B /* filebox.tcl */, - F966BB2E08F27A39005CB29B /* floor.tcl */, - F91543270EF201A90032D1E8 /* fontchoose.tcl */, - F966BB2F08F27A39005CB29B /* form.tcl */, - F966BB3008F27A39005CB29B /* goldberg.tcl */, - F966BB3108F27A39005CB29B /* hello */, - F966BB3208F27A39005CB29B /* hscale.tcl */, - F966BB3308F27A39005CB29B /* icon.tcl */, - F966BB3408F27A39005CB29B /* image1.tcl */, - F966BB3508F27A39005CB29B /* image2.tcl */, - F966BB4208F27A3A005CB29B /* items.tcl */, - F966BB4308F27A3A005CB29B /* ixset */, - F92240290D7C620F005EC715 /* knightstour.tcl */, - F966BB4408F27A3A005CB29B /* label.tcl */, - F966BB4508F27A3A005CB29B /* labelframe.tcl */, - F9D1360A0CDC252C00DBE0B5 /* mclist.tcl */, - F966BB4608F27A3A005CB29B /* menu.tcl */, - F966BB4708F27A3A005CB29B /* menubu.tcl */, - F966BB4808F27A3A005CB29B /* msgbox.tcl */, - F966BB4A08F27A3A005CB29B /* paned1.tcl */, - F966BB4B08F27A3A005CB29B /* paned2.tcl */, - F966BB4C08F27A3A005CB29B /* pendulum.tcl */, - F966BB4D08F27A3A005CB29B /* plot.tcl */, - F966BB4E08F27A3A005CB29B /* puzzle.tcl */, - F966BB4F08F27A3A005CB29B /* radio.tcl */, - F966BB5008F27A3A005CB29B /* README */, - F966BB5108F27A3A005CB29B /* rmt */, - F966BB5208F27A3A005CB29B /* rolodex */, - F966BB5308F27A3A005CB29B /* ruler.tcl */, - F966BB5408F27A3A005CB29B /* sayings.tcl */, - F966BB5508F27A3A005CB29B /* search.tcl */, - F966BB5608F27A3A005CB29B /* spin.tcl */, - F966BB5708F27A3A005CB29B /* square */, - F966BB5808F27A3A005CB29B /* states.tcl */, - F966BB5908F27A3A005CB29B /* style.tcl */, - F966BB5A08F27A3A005CB29B /* tclIndex */, - F966BB5B08F27A3A005CB29B /* tcolor */, - F966BB5C08F27A3A005CB29B /* text.tcl */, - F9099B8A0CC67D30005A9580 /* textpeer.tcl */, - F966BB5D08F27A3A005CB29B /* timer */, - F936FCD90CCD984600716967 /* toolbar.tcl */, - F936FCD80CCD984600716967 /* tree.tcl */, - F9099B8B0CC67D3E005A9580 /* ttkbut.tcl */, - F9F4EFDD0CC7B3CB00378A27 /* ttkmenu.tcl */, - F936FCDA0CCD984600716967 /* ttknote.tcl */, - F9F4EFDC0CC7B3CA00378A27 /* ttkpane.tcl */, - F936FCD70CCD984500716967 /* ttkprogress.tcl */, - F966BB5E08F27A3A005CB29B /* twind.tcl */, - F966BB5F08F27A3A005CB29B /* unicodeout.tcl */, - F966BB6008F27A3A005CB29B /* vscale.tcl */, - F966BB6108F27A3A005CB29B /* widget */, - ); - path = demos; - sourceTree = ""; - }; - F966BB9708F27A3B005CB29B /* macosx */ = { - isa = PBXGroup; - children = ( - F966BBBA08F27A3B005CB29B /* configure.ac */, - F966BBBB08F27A3B005CB29B /* GNUmakefile */, - F966BBBE08F27A3B005CB29B /* README */, - F966BBC008F27A3B005CB29B /* Tk-Info.plist.in */, - F966BBC208F27A3B005CB29B /* tkMacOSX.h */, - F966BBC508F27A3B005CB29B /* tkMacOSXBitmap.c */, - F966BBC608F27A3B005CB29B /* tkMacOSXButton.c */, - F966BBC808F27A3B005CB29B /* tkMacOSXClipboard.c */, - F966BBC908F27A3B005CB29B /* tkMacOSXColor.c */, - F966BBCA08F27A3B005CB29B /* tkMacOSXConfig.c */, - F966BBCB08F27A3B005CB29B /* tkMacOSXCursor.c */, - F966BBCC08F27A3B005CB29B /* tkMacOSXCursors.h */, - F966BBCD08F27A3B005CB29B /* tkMacOSXDebug.c */, - F966BBCE08F27A3B005CB29B /* tkMacOSXDebug.h */, - F966BBCF08F27A3B005CB29B /* tkMacOSXDefault.h */, - F966BBD008F27A3B005CB29B /* tkMacOSXDialog.c */, - F966BBD108F27A3B005CB29B /* tkMacOSXDraw.c */, - F966BBD208F27A3B005CB29B /* tkMacOSXEmbed.c */, - F966BBD308F27A3B005CB29B /* tkMacOSXEntry.c */, - F966BBD408F27A3B005CB29B /* tkMacOSXEvent.c */, - F966BBD608F27A3B005CB29B /* tkMacOSXFont.c */, - F93E5EFD09CF8711008FA367 /* tkMacOSXFont.h */, - F966BBD708F27A3B005CB29B /* tkMacOSXHLEvents.c */, - F966BBD808F27A3B005CB29B /* tkMacOSXInit.c */, - F966BBDA08F27A3B005CB29B /* tkMacOSXInt.h */, - F966BBDB08F27A3B005CB29B /* tkMacOSXKeyboard.c */, - F966BBDC08F27A3B005CB29B /* tkMacOSXKeyEvent.c */, - F966BBDD08F27A3B005CB29B /* tkMacOSXMenu.c */, - F966BBE008F27A3B005CB29B /* tkMacOSXMenubutton.c */, - F966BBE108F27A3B005CB29B /* tkMacOSXMenus.c */, - F966BBE208F27A3B005CB29B /* tkMacOSXMouseEvent.c */, - F966BBE308F27A3B005CB29B /* tkMacOSXNotify.c */, - F966BBEA08F27A3C005CB29B /* tkMacOSXPort.h */, - F976F6A70C325FB6005066D9 /* tkMacOSXPrivate.h */, - F966BBEB08F27A3C005CB29B /* tkMacOSXRegion.c */, - F966BBEC08F27A3C005CB29B /* tkMacOSXScale.c */, - F966BBED08F27A3C005CB29B /* tkMacOSXScrlbr.c */, - F966BBEE08F27A3C005CB29B /* tkMacOSXSend.c */, - F966BBEF08F27A3C005CB29B /* tkMacOSXSubwindows.c */, - F966BBF008F27A3C005CB29B /* tkMacOSXTest.c */, - F966BBF108F27A3C005CB29B /* tkMacOSXWindowEvent.c */, - F966BBF208F27A3C005CB29B /* tkMacOSXWm.c */, - F966BBF308F27A3C005CB29B /* tkMacOSXWm.h */, - F966BBF408F27A3C005CB29B /* tkMacOSXXCursors.h */, - F966BBF508F27A3C005CB29B /* tkMacOSXXStubs.c */, - F96888840AF78938000797B5 /* ttkMacOSXTheme.c */, - F95D8D4B0F1715610006B020 /* Tk.icns */, - F95D8D4C0F1715610006B020 /* Tk.tiff */, - F966BBF708F27A3C005CB29B /* Wish-Info.plist.in */, - F97590AE1039A96200558A9A /* Wish.sdef */, - F97AE7F10B65C1E900310EA2 /* Tk-Common.xcconfig */, - F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */, - F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */, - ); - path = macosx; - sourceTree = ""; - }; - F966BC0408F27A3C005CB29B /* tests */ = { - isa = PBXGroup; - children = ( - F966BC0508F27A3C005CB29B /* all.tcl */, - F966BC0608F27A3C005CB29B /* arc.tcl */, - F966BC0708F27A3C005CB29B /* bell.test */, - F966BC0808F27A3C005CB29B /* bevel.tcl */, - F966BC0908F27A3C005CB29B /* bgerror.test */, - F966BC0A08F27A3C005CB29B /* bind.test */, - F966BC0B08F27A3C005CB29B /* bitmap.test */, - F966BC0C08F27A3C005CB29B /* border.test */, - F966BC0D08F27A3C005CB29B /* bugs.tcl */, - F966BC0E08F27A3C005CB29B /* butGeom.tcl */, - F966BC0F08F27A3C005CB29B /* butGeom2.tcl */, - F966BC1008F27A3C005CB29B /* button.test */, - F966BC1108F27A3C005CB29B /* canvas.test */, - F966BC1208F27A3C005CB29B /* canvImg.test */, - F966BC1308F27A3C005CB29B /* canvPs.test */, - F966BC1408F27A3C005CB29B /* canvPsArc.tcl */, - F966BC1508F27A3C005CB29B /* canvPsBmap.tcl */, - F966BC1608F27A3C005CB29B /* canvPsGrph.tcl */, - F966BC1708F27A3C005CB29B /* canvPsImg.tcl */, - F966BC1808F27A3C005CB29B /* canvPsText.tcl */, - F966BC1908F27A3C005CB29B /* canvRect.test */, - F966BC1A08F27A3C005CB29B /* canvText.test */, - F966BC1B08F27A3C005CB29B /* canvWind.test */, - F966BC1C08F27A3C005CB29B /* choosedir.test */, - F966BC1D08F27A3C005CB29B /* clipboard.test */, - F966BC1E08F27A3C005CB29B /* clrpick.test */, - F966BC1F08F27A3C005CB29B /* cmap.tcl */, - F966BC2008F27A3C005CB29B /* cmds.test */, - F966BC2108F27A3C005CB29B /* color.test */, - F966BC2208F27A3C005CB29B /* config.test */, - F966BC2308F27A3C005CB29B /* constraints.tcl */, - F966BC2408F27A3C005CB29B /* cursor.test */, - F966BC2508F27A3C005CB29B /* dialog.test */, - F966BC2608F27A3C005CB29B /* embed.test */, - F966BC2708F27A3C005CB29B /* entry.test */, - F966BC2808F27A3C005CB29B /* event.test */, - F966BC2908F27A3C005CB29B /* filebox.test */, - F966BC2A08F27A3C005CB29B /* focus.test */, - F966BC2B08F27A3C005CB29B /* focusTcl.test */, - F966BC2C08F27A3C005CB29B /* font.test */, - F99388950EE02D980065FE6B /* fontchooser.test */, - F966BC2D08F27A3C005CB29B /* frame.test */, - F966BC2E08F27A3C005CB29B /* geometry.test */, - F966BC2F08F27A3C005CB29B /* get.test */, - F966BC3008F27A3C005CB29B /* grab.test */, - F966BC3108F27A3C005CB29B /* grid.test */, - F966BC3308F27A3C005CB29B /* image.test */, - F966BC3408F27A3C005CB29B /* imgBmap.test */, - F966BC3508F27A3C005CB29B /* imgPhoto.test */, - F9DD99BF0F07DFCD0018B2E4 /* imgPNG.test */, - F966BC3608F27A3C005CB29B /* imgPPM.test */, - F966BC3708F27A3C005CB29B /* listbox.test */, - F966BC3808F27A3C005CB29B /* main.test */, - F966BC3908F27A3C005CB29B /* menu.test */, - F966BC3A08F27A3C005CB29B /* menubut.test */, - F966BC3B08F27A3C005CB29B /* menuDraw.test */, - F966BC3C08F27A3C005CB29B /* message.test */, - F966BC3D08F27A3C005CB29B /* msgbox.test */, - F966BC3E08F27A3C005CB29B /* obj.test */, - F966BC4008F27A3C005CB29B /* option.file1 */, - F966BC4108F27A3C005CB29B /* option.file2 */, - F966BC4208F27A3C005CB29B /* option.test */, - F966BC4308F27A3C005CB29B /* pack.test */, - F966BC4408F27A3C005CB29B /* panedwindow.test */, - F966BC4508F27A3D005CB29B /* place.test */, - F966BC4608F27A3D005CB29B /* raise.test */, - F966BC4708F27A3D005CB29B /* README */, - F966BC4808F27A3D005CB29B /* safe.test */, - F966BC4908F27A3D005CB29B /* scale.test */, - F966BC4A08F27A3D005CB29B /* scrollbar.test */, - F966BC4B08F27A3D005CB29B /* select.test */, - F966BC4C08F27A3D005CB29B /* send.test */, - F966BC4D08F27A3D005CB29B /* spinbox.test */, - F966BC4E08F27A3D005CB29B /* text.test */, - F966BC4F08F27A3D005CB29B /* textBTree.test */, - F966BC5008F27A3D005CB29B /* textDisp.test */, - F966BC5108F27A3D005CB29B /* textImage.test */, - F966BC5208F27A3D005CB29B /* textIndex.test */, - F966BC5308F27A3D005CB29B /* textMark.test */, - F966BC5408F27A3D005CB29B /* textTag.test */, - F966BC5508F27A3D005CB29B /* textWind.test */, - F966BC5608F27A3D005CB29B /* tk.test */, - F96888530AF7880C000797B5 /* ttk */, - F966BC5708F27A3D005CB29B /* unixButton.test */, - F966BC5808F27A3D005CB29B /* unixEmbed.test */, - F966BC5908F27A3D005CB29B /* unixFont.test */, - F966BC5A08F27A3D005CB29B /* unixMenu.test */, - F966BC5B08F27A3D005CB29B /* unixSelect.test */, - F966BC5C08F27A3D005CB29B /* unixWm.test */, - F966BC5D08F27A3D005CB29B /* util.test */, - F966BC5E08F27A3D005CB29B /* visual.test */, - F966BC5F08F27A3D005CB29B /* visual_bb.test */, - F966BC6008F27A3D005CB29B /* winButton.test */, - F966BC6108F27A3D005CB29B /* winClipboard.test */, - F966BC6208F27A3D005CB29B /* winDialog.test */, - F966BC6308F27A3D005CB29B /* window.test */, - F966BC6408F27A3D005CB29B /* winfo.test */, - F966BC6508F27A3D005CB29B /* winFont.test */, - F966BC6608F27A3D005CB29B /* winMenu.test */, - F966BC6708F27A3D005CB29B /* winSend.test */, - F966BC6808F27A3D005CB29B /* winWm.test */, - F966BC6908F27A3D005CB29B /* wm.test */, - F966BC6A08F27A3D005CB29B /* xmfbox.test */, - ); - path = tests; - sourceTree = ""; - }; - F966BC6B08F27A3D005CB29B /* unix */ = { - isa = PBXGroup; - children = ( - F966BC6C08F27A3D005CB29B /* aclocal.m4 */, - F966BC6D08F27A3D005CB29B /* configure */, - F966BC6E08F27A3D005CB29B /* configure.ac */, - F966BC6F08F27A3D005CB29B /* install-sh */, - F966BC7008F27A3D005CB29B /* installManPage */, - F966BC7108F27A3D005CB29B /* Makefile.in */, - F966BC7208F27A3D005CB29B /* README */, - F966BC7308F27A3D005CB29B /* tcl.m4 */, - F974D57B0FBE7EC000BF728B /* tk.pc.in */, - F966BC7408F27A3D005CB29B /* tk.spec */, - F966BC7508F27A3D005CB29B /* tkAppInit.c */, - F966BC7608F27A3D005CB29B /* tkConfig.h.in */, - F966BC7708F27A3D005CB29B /* tkConfig.sh.in */, - F966BC7808F27A3D005CB29B /* tkUnix.c */, - F966BC7908F27A3D005CB29B /* tkUnix3d.c */, - F966BC7A08F27A3D005CB29B /* tkUnixButton.c */, - F966BC7B08F27A3D005CB29B /* tkUnixColor.c */, - F966BC7C08F27A3D005CB29B /* tkUnixConfig.c */, - F966BC7D08F27A3D005CB29B /* tkUnixCursor.c */, - F966BC7E08F27A3D005CB29B /* tkUnixDefault.h */, - F966BC8008F27A3D005CB29B /* tkUnixDraw.c */, - F966BC8108F27A3D005CB29B /* tkUnixEmbed.c */, - F966BC8208F27A3D005CB29B /* tkUnixEvent.c */, - F966BC8308F27A3D005CB29B /* tkUnixFocus.c */, - F966BC8408F27A3D005CB29B /* tkUnixFont.c */, - F966BC8508F27A3D005CB29B /* tkUnixInit.c */, - F966BC8608F27A3D005CB29B /* tkUnixInt.h */, - F966BC8708F27A3D005CB29B /* tkUnixKey.c */, - F966BC8808F27A3D005CB29B /* tkUnixMenu.c */, - F966BC8908F27A3D005CB29B /* tkUnixMenubu.c */, - F966BC8A08F27A3D005CB29B /* tkUnixPort.h */, - F966BC8B08F27A3D005CB29B /* tkUnixRFont.c */, - F966BC8C08F27A3D005CB29B /* tkUnixScale.c */, - F966BC8D08F27A3D005CB29B /* tkUnixScrlbr.c */, - F966BC8E08F27A3D005CB29B /* tkUnixSelect.c */, - F966BC8F08F27A3D005CB29B /* tkUnixSend.c */, - F966BC9008F27A3D005CB29B /* tkUnixWm.c */, - F966BC9108F27A3D005CB29B /* tkUnixXId.c */, - ); - path = unix; - sourceTree = ""; - }; - F966BC9208F27A3D005CB29B /* win */ = { - isa = PBXGroup; - children = ( - F966BC9408F27A3D005CB29B /* aclocal.m4 */, - F966BC9508F27A3D005CB29B /* buildall.vc.bat */, - F966BC9608F27A3E005CB29B /* configure */, - F966BC9708F27A3E005CB29B /* configure.ac */, - F966BC9908F27A3E005CB29B /* Makefile.in */, - F966BC9A08F27A3E005CB29B /* makefile.vc */, - F966BC9C08F27A3E005CB29B /* nmakehlp.c */, - F966BC9D08F27A3E005CB29B /* rc */, - F966BCF308F27A3E005CB29B /* README */, - F966BCF508F27A3F005CB29B /* rules.vc */, - F966BCF608F27A3F005CB29B /* stubs.c */, - F966BCF708F27A3F005CB29B /* tcl.m4 */, - F966BCF808F27A3F005CB29B /* tkConfig.sh.in */, - F966BCF908F27A3F005CB29B /* tkWin.h */, - F966BCFA08F27A3F005CB29B /* tkWin32Dll.c */, - F966BCFB08F27A3F005CB29B /* tkWin3d.c */, - F966BCFC08F27A3F005CB29B /* tkWinButton.c */, - F966BCFD08F27A3F005CB29B /* tkWinClipboard.c */, - F966BCFE08F27A3F005CB29B /* tkWinColor.c */, - F966BCFF08F27A3F005CB29B /* tkWinConfig.c */, - F966BD0008F27A3F005CB29B /* tkWinCursor.c */, - F966BD0108F27A3F005CB29B /* tkWinDefault.h */, - F966BD0208F27A3F005CB29B /* tkWinDialog.c */, - F966BD0308F27A3F005CB29B /* tkWinDraw.c */, - F966BD0408F27A3F005CB29B /* tkWinEmbed.c */, - F966BD0508F27A3F005CB29B /* tkWinFont.c */, - F966BD0708F27A3F005CB29B /* tkWinImage.c */, - F966BD0808F27A3F005CB29B /* tkWinInit.c */, - F966BD0908F27A3F005CB29B /* tkWinInt.h */, - F966BD0A08F27A3F005CB29B /* tkWinKey.c */, - F966BD0B08F27A3F005CB29B /* tkWinMenu.c */, - F966BD0C08F27A3F005CB29B /* tkWinPixmap.c */, - F966BD0D08F27A3F005CB29B /* tkWinPointer.c */, - F966BD0E08F27A3F005CB29B /* tkWinPort.h */, - F966BD0F08F27A3F005CB29B /* tkWinRegion.c */, - F966BD1008F27A3F005CB29B /* tkWinScrlbr.c */, - F966BD1108F27A3F005CB29B /* tkWinSend.c */, - F966BD1208F27A3F005CB29B /* tkWinSendCom.c */, - F966BD1308F27A3F005CB29B /* tkWinSendCom.h */, - F966BD1408F27A3F005CB29B /* tkWinTest.c */, - F966BD1508F27A3F005CB29B /* tkWinWindow.c */, - F966BD1608F27A3F005CB29B /* tkWinWm.c */, - F966BD1708F27A3F005CB29B /* tkWinX.c */, - F96888860AF78953000797B5 /* ttkWinMonitor.c */, - F96888870AF78953000797B5 /* ttkWinTheme.c */, - F96888880AF78953000797B5 /* ttkWinXPTheme.c */, - F966BD1808F27A3F005CB29B /* winMain.c */, - ); - path = win; - sourceTree = ""; - }; - F966BC9D08F27A3E005CB29B /* rc */ = { - isa = PBXGroup; - children = ( - F966BCEE08F27A3E005CB29B /* tk.rc */, - F966BCEF08F27A3E005CB29B /* tk_base.rc */, - F966BCF208F27A3E005CB29B /* wish.rc */, - ); - path = rc; - sourceTree = ""; - }; - F966BD1908F27A3F005CB29B /* xlib */ = { - isa = PBXGroup; - children = ( - F966BD1A08F27A3F005CB29B /* X11 */, - F966BD2308F27A3F005CB29B /* xbytes.h */, - F966BD2408F27A3F005CB29B /* xcolors.c */, - F966BD2508F27A3F005CB29B /* xdraw.c */, - F966BD2608F27A3F005CB29B /* xgc.c */, - F966BD2708F27A3F005CB29B /* ximage.c */, - F966BD2808F27A3F005CB29B /* xutil.c */, - ); - path = xlib; - sourceTree = ""; - }; - F966BD1A08F27A3F005CB29B /* X11 */ = { - isa = PBXGroup; - children = ( - F966BD1B08F27A3F005CB29B /* cursorfont.h */, - F966BD1C08F27A3F005CB29B /* keysym.h */, - F966BD1D08F27A3F005CB29B /* keysymdef.h */, - F966BD1E08F27A3F005CB29B /* X.h */, - F966BD1F08F27A3F005CB29B /* Xatom.h */, - F966BD2008F27A3F005CB29B /* Xfuncproto.h */, - F966BD2108F27A3F005CB29B /* Xlib.h */, - F966BD2208F27A3F005CB29B /* Xutil.h */, - ); - path = X11; - sourceTree = ""; - }; - F966C06F08F281DC005CB29B /* Frameworks */ = { - isa = PBXGroup; - children = ( - F9C9CBFF0E84059800E00935 /* ApplicationServices.framework */, - F966C07408F2820D005CB29B /* CoreFoundation.framework */, - F96437E60EF0D652003F468E /* libz.dylib */, - F966C07608F2821B005CB29B /* Carbon.framework */, - F94523A10E6FC2AC00C1D987 /* Cocoa.framework */, - F966C07808F28233005CB29B /* IOKit.framework */, - F9FD32140CC1AF170073837D /* libX11.dylib */, - F9FD32150CC1AF170073837D /* libXext.dylib */, - F9FD32160CC1AF170073837D /* libXss.dylib */, - F9FD349A0CC1BB0D0073837D /* libXft.dylib */, - F9FD34990CC1BB0D0073837D /* libfreetype.dylib */, - F9FD34C30CC1BBD70073837D /* libfontconfig.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - F96887DF0AF786D5000797B5 /* ttk */ = { - isa = PBXGroup; - children = ( - F96887E00AF786D5000797B5 /* ttk.decls */, - F96887E10AF786D5000797B5 /* ttkBlink.c */, - F96887E20AF786D5000797B5 /* ttkButton.c */, - F96887E30AF786D5000797B5 /* ttkCache.c */, - F96887E40AF786D5000797B5 /* ttkClamTheme.c */, - F96887E50AF786D5000797B5 /* ttkClassicTheme.c */, - F96887E60AF786D5000797B5 /* ttkDecls.h */, - F96887E70AF786D5000797B5 /* ttkDefaultTheme.c */, - F96887E80AF786D5000797B5 /* ttkElements.c */, - F96887E90AF786D5000797B5 /* ttkEntry.c */, - F96887EA0AF786D5000797B5 /* ttkFrame.c */, - F96887EB0AF786D5000797B5 /* ttkImage.c */, - F96887EC0AF786D5000797B5 /* ttkInit.c */, - F96887ED0AF786D5000797B5 /* ttkLabel.c */, - F96887EE0AF786D5000797B5 /* ttkLayout.c */, - F96887EF0AF786D5000797B5 /* ttkManager.c */, - F96887F00AF786D5000797B5 /* ttkManager.h */, - F96887F10AF786D5000797B5 /* ttkNotebook.c */, - F96887F20AF786D5000797B5 /* ttkPanedwindow.c */, - F96887F30AF786D5000797B5 /* ttkProgress.c */, - F96887F40AF786D5000797B5 /* ttkScale.c */, - F96887F50AF786D5000797B5 /* ttkScroll.c */, - F96887F60AF786D5000797B5 /* ttkScrollbar.c */, - F96887F70AF786D5000797B5 /* ttkSeparator.c */, - F96887F80AF786D5000797B5 /* ttkSquare.c */, - F96887F90AF786D5000797B5 /* ttkState.c */, - F96887FA0AF786D5000797B5 /* ttkStubInit.c */, - F96887FB0AF786D5000797B5 /* ttkStubLib.c */, - F96887FC0AF786D5000797B5 /* ttkTagSet.c */, - F96887FD0AF786D5000797B5 /* ttkTheme.c */, - F96887FE0AF786D5000797B5 /* ttkTheme.h */, - F96887FF0AF786D5000797B5 /* ttkThemeInt.h */, - F96888000AF786D5000797B5 /* ttkTrace.c */, - F96888010AF786D5000797B5 /* ttkTrack.c */, - F96888020AF786D5000797B5 /* ttkTreeview.c */, - F96888030AF786D5000797B5 /* ttkWidget.c */, - F96888040AF786D5000797B5 /* ttkWidget.h */, - ); - path = ttk; - sourceTree = ""; - }; - F96888360AF787B3000797B5 /* ttk */ = { - isa = PBXGroup; - children = ( - F96888370AF787B3000797B5 /* altTheme.tcl */, - F96888380AF787B3000797B5 /* aquaTheme.tcl */, - F96888390AF787B3000797B5 /* button.tcl */, - F968883A0AF787B3000797B5 /* clamTheme.tcl */, - F968883B0AF787B3000797B5 /* classicTheme.tcl */, - F968883C0AF787B3000797B5 /* combobox.tcl */, - F968883D0AF787B3000797B5 /* cursors.tcl */, - F968883E0AF787B3000797B5 /* defaults.tcl */, - F96888400AF787B3000797B5 /* entry.tcl */, - F96888410AF787B3000797B5 /* fonts.tcl */, - F96888440AF787B3000797B5 /* menubutton.tcl */, - F96888450AF787B3000797B5 /* notebook.tcl */, - F96888460AF787B3000797B5 /* panedwindow.tcl */, - F96888470AF787B3000797B5 /* progress.tcl */, - F96888480AF787B3000797B5 /* scale.tcl */, - F96888490AF787B3000797B5 /* scrollbar.tcl */, - F968884A0AF787B3000797B5 /* sizegrip.tcl */, - F968884B0AF787B3000797B5 /* treeview.tcl */, - F968884C0AF787B3000797B5 /* ttk.tcl */, - F968884D0AF787B3000797B5 /* utils.tcl */, - F968884E0AF787B3000797B5 /* winTheme.tcl */, - F973E5960EE99384001A648E /* vistaTheme.tcl */, - F968884F0AF787B3000797B5 /* xpTheme.tcl */, - ); - path = ttk; - sourceTree = ""; - }; - F96888530AF7880C000797B5 /* ttk */ = { - isa = PBXGroup; - children = ( - F96888540AF7880C000797B5 /* all.tcl */, - F98383650F0FA43900171CA6 /* checkbutton.test */, - F96888560AF7880C000797B5 /* combobox.test */, - F96888570AF7880C000797B5 /* entry.test */, - F96888580AF7880C000797B5 /* image.test */, - F96888590AF7880C000797B5 /* labelframe.test */, - F968885A0AF7880C000797B5 /* layout.test */, - F968885C0AF7880C000797B5 /* notebook.test */, - F968885D0AF7880C000797B5 /* panedwindow.test */, - F968885E0AF7880C000797B5 /* progressbar.test */, - F98383680F0FA44700171CA6 /* radiobutton.test */, - F968885F0AF7880C000797B5 /* scrollbar.test */, - F96888600AF7880C000797B5 /* treetags.test */, - F96888610AF7880C000797B5 /* treeview.test */, - F96888620AF7880C000797B5 /* ttk.test */, - F96888630AF7880C000797B5 /* validate.test */, - F962F7C60DADC26200648DB8 /* vsapi.test */, - ); - path = ttk; - sourceTree = ""; - }; - F96D3DF608F27169004A47F5 /* Tcl Sources */ = { - isa = PBXGroup; - children = ( - F96D3EC908F272A7004A47F5 /* generic */, - F96D432C08F272B4004A47F5 /* macosx */, - F96D443E08F272B9004A47F5 /* unix */, - F96D425C08F272B2004A47F5 /* libtommath */, - F96D446E08F272B9004A47F5 /* win */, - F96D3F3808F272A7004A47F5 /* library */, - F96D434408F272B5004A47F5 /* tests */, - F96D3DFC08F272A4004A47F5 /* doc */, - F96D43D008F272B8004A47F5 /* tools */, - F9183E690EFC81560030B814 /* pkgs */, - F96D3DFB08F272A4004A47F5 /* changes.md */, - F96D434308F272B5004A47F5 /* README */, - F96D432B08F272B4004A47F5 /* license.terms */, - ); - name = "Tcl Sources"; - sourceTree = TCL_SRCROOT; - }; - F96D3DF708F271BE004A47F5 /* Tk Sources */ = { - isa = PBXGroup; - children = ( - F966BAA508F27A38005CB29B /* generic */, - F966BB9708F27A3B005CB29B /* macosx */, - F966BC6B08F27A3D005CB29B /* unix */, - F966BD1908F27A3F005CB29B /* xlib */, - F966BA0308F27A37005CB29B /* bitmaps */, - F966BC9208F27A3D005CB29B /* win */, - F966BB1308F27A39005CB29B /* library */, - F966BC0408F27A3C005CB29B /* tests */, - F966BA1008F27A37005CB29B /* doc */, - F966BA0F08F27A37005CB29B /* changes.md */, - F966BC0308F27A3C005CB29B /* README */, - F966BB9608F27A3B005CB29B /* license.terms */, - ); - name = "Tk Sources"; - sourceTree = TK_SRCROOT; - }; - F96D3DFC08F272A4004A47F5 /* doc */ = { - isa = PBXGroup; - children = ( - F96D3DFD08F272A4004A47F5 /* Access.3 */, - F96D3DFE08F272A4004A47F5 /* AddErrInfo.3 */, - F96D3DFF08F272A4004A47F5 /* after.n */, - F96D3E0008F272A4004A47F5 /* Alloc.3 */, - F96D3E0108F272A4004A47F5 /* AllowExc.3 */, - F96D3E0208F272A4004A47F5 /* append.n */, - F96D3E0308F272A4004A47F5 /* AppInit.3 */, - F96D3E0408F272A5004A47F5 /* array.n */, - F96D3E0508F272A5004A47F5 /* AssocData.3 */, - F96D3E0608F272A5004A47F5 /* Async.3 */, - F96D3E0708F272A5004A47F5 /* BackgdErr.3 */, - F96D3E0808F272A5004A47F5 /* Backslash.3 */, - F96D3E0908F272A5004A47F5 /* bgerror.n */, - F96D3E0A08F272A5004A47F5 /* binary.n */, - F96D3E0B08F272A5004A47F5 /* BoolObj.3 */, - F96D3E0C08F272A5004A47F5 /* break.n */, - F96D3E0D08F272A5004A47F5 /* ByteArrObj.3 */, - F96D3E0E08F272A5004A47F5 /* CallDel.3 */, - F96D3E0F08F272A5004A47F5 /* case.n */, - F96D3E1008F272A5004A47F5 /* catch.n */, - F96D3E1108F272A5004A47F5 /* cd.n */, - F96D3E1208F272A5004A47F5 /* chan.n */, - F96D3E1308F272A5004A47F5 /* ChnlStack.3 */, - F93599CF0DF1F87F00E04F67 /* Class.3 */, - F93599D00DF1F89E00E04F67 /* class.n */, - F96D3E1408F272A5004A47F5 /* clock.n */, - F96D3E1508F272A5004A47F5 /* close.n */, - F96D3E1608F272A5004A47F5 /* CmdCmplt.3 */, - F96D3E1708F272A5004A47F5 /* Concat.3 */, - F96D3E1808F272A5004A47F5 /* concat.n */, - F96D3E1908F272A5004A47F5 /* continue.n */, - F93599D20DF1F8DF00E04F67 /* copy.n */, - F974D5720FBE7DC600BF728B /* coroutine.n */, - F96D3E1A08F272A5004A47F5 /* CrtChannel.3 */, - F96D3E1B08F272A5004A47F5 /* CrtChnlHdlr.3 */, - F96D3E1C08F272A5004A47F5 /* CrtCloseHdlr.3 */, - F96D3E1D08F272A5004A47F5 /* CrtCommand.3 */, - F96D3E1E08F272A5004A47F5 /* CrtFileHdlr.3 */, - F96D3E1F08F272A5004A47F5 /* CrtInterp.3 */, - F96D3E2008F272A5004A47F5 /* CrtMathFnc.3 */, - F96D3E2108F272A5004A47F5 /* CrtObjCmd.3 */, - F96D3E2208F272A5004A47F5 /* CrtAlias.3 */, - F96D3E2308F272A5004A47F5 /* CrtTimerHdlr.3 */, - F96D3E2408F272A5004A47F5 /* CrtTrace.3 */, - F96D3E2508F272A5004A47F5 /* dde.n */, - F93599D30DF1F8F500E04F67 /* define.n */, - F96D3E2608F272A5004A47F5 /* DetachPids.3 */, - F96D3E2708F272A5004A47F5 /* dict.n */, - F96D3E2808F272A5004A47F5 /* DictObj.3 */, - F96D3E2908F272A5004A47F5 /* DoOneEvent.3 */, - F96D3E2A08F272A5004A47F5 /* DoubleObj.3 */, - F96D3E2B08F272A5004A47F5 /* DoWhenIdle.3 */, - F96D3E2C08F272A5004A47F5 /* DString.3 */, - F96D3E2D08F272A5004A47F5 /* DumpActiveMemory.3 */, - F96D3E2E08F272A5004A47F5 /* Encoding.3 */, - F96D3E2F08F272A5004A47F5 /* encoding.n */, - F96D3E3008F272A5004A47F5 /* Ensemble.3 */, - F96D3E3108F272A5004A47F5 /* Environment.3 */, - F96D3E3208F272A5004A47F5 /* eof.n */, - F96D3E3308F272A5004A47F5 /* error.n */, - F96D3E3408F272A5004A47F5 /* Eval.3 */, - F96D3E3508F272A5004A47F5 /* eval.n */, - F96D3E3608F272A5004A47F5 /* exec.n */, - F96D3E3708F272A5004A47F5 /* Exit.3 */, - F96D3E3808F272A5004A47F5 /* exit.n */, - F96D3E3908F272A5004A47F5 /* expr.n */, - F96D3E3A08F272A5004A47F5 /* ExprLong.3 */, - F96D3E3B08F272A5004A47F5 /* ExprLongObj.3 */, - F96D3E3C08F272A5004A47F5 /* fblocked.n */, - F96D3E3D08F272A5004A47F5 /* fconfigure.n */, - F96D3E3E08F272A5004A47F5 /* fcopy.n */, - F96D3E3F08F272A5004A47F5 /* file.n */, - F96D3E4008F272A5004A47F5 /* fileevent.n */, - F96D3E4108F272A5004A47F5 /* filename.n */, - F96D3E4208F272A5004A47F5 /* FileSystem.3 */, - F96D3E4308F272A5004A47F5 /* FindExec.3 */, - F96D3E4408F272A5004A47F5 /* flush.n */, - F96D3E4508F272A5004A47F5 /* for.n */, - F96D3E4608F272A5004A47F5 /* foreach.n */, - F96D3E4708F272A5004A47F5 /* format.n */, - F96D3E4808F272A5004A47F5 /* GetCwd.3 */, - F96D3E4908F272A5004A47F5 /* GetHostName.3 */, - F96D3E4A08F272A5004A47F5 /* GetIndex.3 */, - F96D3E4B08F272A5004A47F5 /* GetInt.3 */, - F96D3E4C08F272A5004A47F5 /* GetOpnFl.3 */, - F96D3E4D08F272A5004A47F5 /* gets.n */, - F96D3E4E08F272A5004A47F5 /* GetStdChan.3 */, - F96D3E4F08F272A5004A47F5 /* GetTime.3 */, - F96D3E5008F272A5004A47F5 /* GetVersion.3 */, - F96D3E5108F272A5004A47F5 /* glob.n */, - F96D3E5208F272A6004A47F5 /* global.n */, - F96D3E5308F272A6004A47F5 /* Hash.3 */, - F96D3E5408F272A6004A47F5 /* history.n */, - F96D3E5508F272A6004A47F5 /* http.n */, - F96D3E5608F272A6004A47F5 /* if.n */, - F96D3E5708F272A6004A47F5 /* incr.n */, - F96D3E5808F272A6004A47F5 /* info.n */, - F96D3E5908F272A6004A47F5 /* Init.3 */, - F96D3E5A08F272A6004A47F5 /* InitStubs.3 */, - F96D3E5B08F272A6004A47F5 /* Interp.3 */, - F96D3E5C08F272A6004A47F5 /* interp.n */, - F96D3E5D08F272A6004A47F5 /* IntObj.3 */, - F96D3E5E08F272A6004A47F5 /* join.n */, - F96D3E5F08F272A6004A47F5 /* lappend.n */, - F96D3E6008F272A6004A47F5 /* lassign.n */, - F96D3E6108F272A6004A47F5 /* library.n */, - F96D3E6208F272A6004A47F5 /* Limit.3 */, - F96D3E6308F272A6004A47F5 /* lindex.n */, - F96D3E6408F272A6004A47F5 /* LinkVar.3 */, - F96D3E6508F272A6004A47F5 /* linsert.n */, - F96D3E6608F272A6004A47F5 /* list.n */, - F96D3E6708F272A6004A47F5 /* ListObj.3 */, - F96D3E6808F272A6004A47F5 /* llength.n */, - F96D3E6908F272A6004A47F5 /* load.n */, - F96D3E6A08F272A6004A47F5 /* lrange.n */, - F96D3E6B08F272A6004A47F5 /* lrepeat.n */, - F96D3E6C08F272A6004A47F5 /* lreplace.n */, - F96D3E6D08F272A6004A47F5 /* lsearch.n */, - F96D3E6E08F272A6004A47F5 /* lset.n */, - F96D3E6F08F272A6004A47F5 /* lsort.n */, - F96D3E7008F272A6004A47F5 /* man.macros */, - F96D3E7108F272A6004A47F5 /* mathfunc.n */, - F96D3E7208F272A6004A47F5 /* memory.n */, - F93599D40DF1F91900E04F67 /* Method.3 */, - F96D3E7308F272A6004A47F5 /* msgcat.n */, - F93599D50DF1F93700E04F67 /* my.n */, - F96D3E7408F272A6004A47F5 /* Namespace.3 */, - F96D3E7508F272A6004A47F5 /* namespace.n */, - F93599D60DF1F95000E04F67 /* next.n */, - F96D3E7608F272A6004A47F5 /* Notifier.3 */, - F96D3E7708F272A6004A47F5 /* Object.3 */, - F93599D70DF1F96800E04F67 /* object.n */, - F96D3E7808F272A6004A47F5 /* ObjectType.3 */, - F96D3E7908F272A6004A47F5 /* open.n */, - F96D3E7A08F272A6004A47F5 /* OpenFileChnl.3 */, - F96D3E7B08F272A6004A47F5 /* OpenTcp.3 */, - F96D3E7C08F272A6004A47F5 /* package.n */, - F96D3E7D08F272A6004A47F5 /* packagens.n */, - F96D3E7E08F272A6004A47F5 /* Panic.3 */, - F96D3E7F08F272A6004A47F5 /* ParseCmd.3 */, - F96D3E8008F272A6004A47F5 /* pid.n */, - F96D3E8108F272A6004A47F5 /* pkgMkIndex.n */, - F96D3E8208F272A6004A47F5 /* PkgRequire.3 */, - F9ECB1E10B26543C00A28025 /* platform_shell.n */, - F9ECB1E20B26543C00A28025 /* platform.n */, - F96D3E8308F272A6004A47F5 /* Preserve.3 */, - F96D3E8408F272A6004A47F5 /* PrintDbl.3 */, - F96D3E8508F272A6004A47F5 /* proc.n */, - F96D3E8608F272A6004A47F5 /* puts.n */, - F96D3E8708F272A6004A47F5 /* pwd.n */, - F96D3E8808F272A6004A47F5 /* re_syntax.n */, - F96D3E8908F272A6004A47F5 /* read.n */, - F96D3E8A08F272A6004A47F5 /* RecEvalObj.3 */, - F96D3E8B08F272A6004A47F5 /* RecordEval.3 */, - F96D3E8C08F272A6004A47F5 /* RegConfig.3 */, - F96D3E8D08F272A6004A47F5 /* RegExp.3 */, - F96D3E8E08F272A6004A47F5 /* regexp.n */, - F96D3E8F08F272A6004A47F5 /* registry.n */, - F96D3E9008F272A6004A47F5 /* regsub.n */, - F96D3E9108F272A6004A47F5 /* rename.n */, - F96D3E9208F272A6004A47F5 /* return.n */, - F96D3E9308F272A6004A47F5 /* safe.n */, - F96D3E9408F272A6004A47F5 /* SaveResult.3 */, - F96D3E9508F272A6004A47F5 /* scan.n */, - F96D3E9608F272A6004A47F5 /* seek.n */, - F93599D80DF1F98300E04F67 /* self.n */, - F96D3E9708F272A6004A47F5 /* set.n */, - F96D3E9808F272A6004A47F5 /* SetChanErr.3 */, - F96D3E9908F272A6004A47F5 /* SetErrno.3 */, - F96D3E9A08F272A6004A47F5 /* SetRecLmt.3 */, - F96D3E9B08F272A7004A47F5 /* SetResult.3 */, - F96D3E9C08F272A7004A47F5 /* SetVar.3 */, - F96D3E9D08F272A7004A47F5 /* Signal.3 */, - F96D3E9E08F272A7004A47F5 /* Sleep.3 */, - F96D3E9F08F272A7004A47F5 /* socket.n */, - F96D3EA008F272A7004A47F5 /* source.n */, - F96D3EA108F272A7004A47F5 /* SourceRCFile.3 */, - F96D3EA208F272A7004A47F5 /* split.n */, - F96D3EA308F272A7004A47F5 /* SplitList.3 */, - F96D3EA408F272A7004A47F5 /* SplitPath.3 */, - F96D3EA508F272A7004A47F5 /* StaticPkg.3 */, - F96D3EA608F272A7004A47F5 /* StdChannels.3 */, - F96D3EA708F272A7004A47F5 /* string.n */, - F96D3EA808F272A7004A47F5 /* StringObj.3 */, - F96D3EA908F272A7004A47F5 /* StrMatch.3 */, - F96D3EAA08F272A7004A47F5 /* subst.n */, - F96D3EAB08F272A7004A47F5 /* SubstObj.3 */, - F96D3EAC08F272A7004A47F5 /* switch.n */, - F974D5760FBE7E1900BF728B /* tailcall.n */, - F96D3EAD08F272A7004A47F5 /* Tcl.n */, - F99D61180EF5573A00BBFE01 /* TclZlib.3 */, - F96D3EAE08F272A7004A47F5 /* Tcl_Main.3 */, - F96D3EAF08F272A7004A47F5 /* TCL_MEM_DEBUG.3 */, - F96D3EB008F272A7004A47F5 /* tclsh.1 */, - F96D3EB108F272A7004A47F5 /* tcltest.n */, - F96D3EB208F272A7004A47F5 /* tclvars.n */, - F96D3EB308F272A7004A47F5 /* tell.n */, - F96D3EB408F272A7004A47F5 /* Thread.3 */, - F9183E640EFC80CD0030B814 /* throw.n */, - F96D3EB508F272A7004A47F5 /* time.n */, - F96D3EB608F272A7004A47F5 /* tm.n */, - F96D3EB708F272A7004A47F5 /* ToUpper.3 */, - F96D3EB808F272A7004A47F5 /* trace.n */, - F96D3EB908F272A7004A47F5 /* TraceCmd.3 */, - F96D3EBA08F272A7004A47F5 /* TraceVar.3 */, - F96D3EBB08F272A7004A47F5 /* Translate.3 */, - F9183E650EFC80D70030B814 /* try.n */, - F96D3EBC08F272A7004A47F5 /* UniCharIsAlpha.3 */, - F96D3EBD08F272A7004A47F5 /* unknown.n */, - F96D3EBE08F272A7004A47F5 /* unload.n */, - F96D3EBF08F272A7004A47F5 /* unset.n */, - F96D3EC008F272A7004A47F5 /* update.n */, - F96D3EC108F272A7004A47F5 /* uplevel.n */, - F96D3EC208F272A7004A47F5 /* UpVar.3 */, - F96D3EC308F272A7004A47F5 /* upvar.n */, - F96D3EC408F272A7004A47F5 /* Utf.3 */, - F96D3EC508F272A7004A47F5 /* variable.n */, - F96D3EC608F272A7004A47F5 /* vwait.n */, - F96D3EC708F272A7004A47F5 /* while.n */, - F96D3EC808F272A7004A47F5 /* WrongNumArgs.3 */, - F915432D0EF201EE0032D1E8 /* zlib.n */, - ); - path = doc; - sourceTree = ""; - }; - F96D3EC908F272A7004A47F5 /* generic */ = { - isa = PBXGroup; - children = ( - F96D3ECA08F272A7004A47F5 /* README */, - F96D3ECB08F272A7004A47F5 /* regc_color.c */, - F96D3ECC08F272A7004A47F5 /* regc_cvec.c */, - F96D3ECD08F272A7004A47F5 /* regc_lex.c */, - F96D3ECE08F272A7004A47F5 /* regc_locale.c */, - F96D3ECF08F272A7004A47F5 /* regc_nfa.c */, - F96D3ED008F272A7004A47F5 /* regcomp.c */, - F96D3ED108F272A7004A47F5 /* regcustom.h */, - F96D3ED208F272A7004A47F5 /* rege_dfa.c */, - F96D3ED308F272A7004A47F5 /* regerror.c */, - F96D3ED408F272A7004A47F5 /* regerrs.h */, - F96D3ED508F272A7004A47F5 /* regex.h */, - F96D3ED608F272A7004A47F5 /* regexec.c */, - F96D3ED708F272A7004A47F5 /* regfree.c */, - F96D3ED808F272A7004A47F5 /* regfronts.c */, - F96D3ED908F272A7004A47F5 /* regguts.h */, - F96D3EDA08F272A7004A47F5 /* tcl.decls */, - F96D3EDB08F272A7004A47F5 /* tcl.h */, - F96D3EDC08F272A7004A47F5 /* tclAlloc.c */, - F96D3EDD08F272A7004A47F5 /* tclAsync.c */, - F96D3EDE08F272A7004A47F5 /* tclBasic.c */, - F96D3EDF08F272A7004A47F5 /* tclBinary.c */, - F96D3EE008F272A7004A47F5 /* tclCkalloc.c */, - F96D3EE108F272A7004A47F5 /* tclClock.c */, - F96D3EE208F272A7004A47F5 /* tclCmdAH.c */, - F96D3EE308F272A7004A47F5 /* tclCmdIL.c */, - F96D3EE408F272A7004A47F5 /* tclCmdMZ.c */, - F96D3EE508F272A7004A47F5 /* tclCompCmds.c */, - F96D3EE608F272A7004A47F5 /* tclCompExpr.c */, - F96D3EE708F272A7004A47F5 /* tclCompile.c */, - F96D3EE808F272A7004A47F5 /* tclCompile.h */, - F96D3EE908F272A7004A47F5 /* tclConfig.c */, - F96D3EEA08F272A7004A47F5 /* tclDate.c */, - F96D3EEB08F272A7004A47F5 /* tclDecls.h */, - F96D3EEC08F272A7004A47F5 /* tclDictObj.c */, - F9F4415D0C8BAE6F00BCCD67 /* tclDTrace.d */, - F96D3EED08F272A7004A47F5 /* tclEncoding.c */, - F96D3EEE08F272A7004A47F5 /* tclEnv.c */, - F96D3EEF08F272A7004A47F5 /* tclEvent.c */, - F96D3EF008F272A7004A47F5 /* tclExecute.c */, - F96D3EF108F272A7004A47F5 /* tclFCmd.c */, - F96D3EF208F272A7004A47F5 /* tclFileName.c */, - F96D3EF308F272A7004A47F5 /* tclFileSystem.h */, - F96D3EF408F272A7004A47F5 /* tclGet.c */, - F96D3EF508F272A7004A47F5 /* tclGetDate.y */, - F96D3EF608F272A7004A47F5 /* tclHash.c */, - F96D3EF708F272A7004A47F5 /* tclHistory.c */, - F96D3EF808F272A7004A47F5 /* tclIndexObj.c */, - F96D3EF908F272A7004A47F5 /* tclInt.decls */, - F96D3EFA08F272A7004A47F5 /* tclInt.h */, - F96D3EFB08F272A7004A47F5 /* tclIntDecls.h */, - F96D3EFC08F272A7004A47F5 /* tclInterp.c */, - F96D3EFD08F272A7004A47F5 /* tclIntPlatDecls.h */, - F96D3EFE08F272A7004A47F5 /* tclIO.c */, - F96D3EFF08F272A7004A47F5 /* tclIO.h */, - F96D3F0008F272A7004A47F5 /* tclIOCmd.c */, - F96D3F0108F272A7004A47F5 /* tclIOGT.c */, - F96D3F0208F272A7004A47F5 /* tclIORChan.c */, - F95D77E90DFD820D00A8BF6F /* tclIORTrans.c */, - F96D3F0308F272A7004A47F5 /* tclIOSock.c */, - F96D3F0408F272A7004A47F5 /* tclIOUtil.c */, - F96D3F0508F272A7004A47F5 /* tclLink.c */, - F96D3F0608F272A7004A47F5 /* tclListObj.c */, - F96D3F0708F272A7004A47F5 /* tclLiteral.c */, - F96D3F0808F272A7004A47F5 /* tclLoad.c */, - F96D3F0908F272A7004A47F5 /* tclLoadNone.c */, - F96D3F0A08F272A7004A47F5 /* tclMain.c */, - F96D3F0B08F272A7004A47F5 /* tclNamesp.c */, - F96D3F0C08F272A7004A47F5 /* tclNotify.c */, - F96D3F0D08F272A7004A47F5 /* tclObj.c */, - F93599B20DF1F75400E04F67 /* tclOO.c */, - F93599B40DF1F75900E04F67 /* tclOO.decls */, - F93599B50DF1F75D00E04F67 /* tclOO.h */, - F93599B60DF1F76100E04F67 /* tclOOBasic.c */, - F93599B80DF1F76600E04F67 /* tclOOCall.c */, - F93599BA0DF1F76A00E04F67 /* tclOODecls.h */, - F93599BB0DF1F77000E04F67 /* tclOODefineCmds.c */, - F93599BD0DF1F77400E04F67 /* tclOOInfo.c */, - F93599BF0DF1F77900E04F67 /* tclOOInt.h */, - F93599C00DF1F77D00E04F67 /* tclOOIntDecls.h */, - F93599C10DF1F78300E04F67 /* tclOOMethod.c */, - F93599C30DF1F78800E04F67 /* tclOOStubInit.c */, - F93599C50DF1F78D00E04F67 /* tclOOStubLib.c */, - F96D3F0E08F272A7004A47F5 /* tclPanic.c */, - F96D3F0F08F272A7004A47F5 /* tclParse.c */, - F96D3F1108F272A7004A47F5 /* tclPathObj.c */, - F96D3F1208F272A7004A47F5 /* tclPipe.c */, - F96D3F1308F272A7004A47F5 /* tclPkg.c */, - F96D3F1408F272A7004A47F5 /* tclPkgConfig.c */, - F96D3F1508F272A7004A47F5 /* tclPlatDecls.h */, - F96D3F1608F272A7004A47F5 /* tclPort.h */, - F96D3F1708F272A7004A47F5 /* tclPosixStr.c */, - F96D3F1808F272A7004A47F5 /* tclPreserve.c */, - F96D3F1908F272A7004A47F5 /* tclProc.c */, - F96D3F1A08F272A7004A47F5 /* tclRegexp.c */, - F96D3F1B08F272A7004A47F5 /* tclRegexp.h */, - F96D3F1C08F272A7004A47F5 /* tclResolve.c */, - F96D3F1D08F272A7004A47F5 /* tclResult.c */, - F96D3F1E08F272A7004A47F5 /* tclScan.c */, - F96D3F1F08F272A7004A47F5 /* tclStringObj.c */, - F96D3F2408F272A7004A47F5 /* tclStrToD.c */, - F96D3F2508F272A7004A47F5 /* tclStubInit.c */, - F96D3F2608F272A7004A47F5 /* tclStubLib.c */, - F96D3F2708F272A7004A47F5 /* tclTest.c */, - F96D3F2808F272A7004A47F5 /* tclTestObj.c */, - F96D3F2908F272A7004A47F5 /* tclTestProcBodyObj.c */, - F96D3F2A08F272A7004A47F5 /* tclThread.c */, - F96D3F2B08F272A7004A47F5 /* tclThreadAlloc.c */, - F96D3F2C08F272A7004A47F5 /* tclThreadJoin.c */, - F96D3F2D08F272A7004A47F5 /* tclThreadStorage.c */, - F96D3F2E08F272A7004A47F5 /* tclThreadTest.c */, - F96D3F2F08F272A7004A47F5 /* tclTimer.c */, - F9903CAF094FAADA004613E9 /* tclTomMath.decls */, - F96D3F3008F272A7004A47F5 /* tclTomMath.h */, - F9903CB0094FAADA004613E9 /* tclTomMathDecls.h */, - F96D3F3108F272A7004A47F5 /* tclTomMathInterface.c */, - F96D3F3208F272A7004A47F5 /* tclTrace.c */, - F96D3F3308F272A7004A47F5 /* tclUniData.c */, - F96D3F3408F272A7004A47F5 /* tclUtf.c */, - F96D3F3508F272A7004A47F5 /* tclUtil.c */, - F96D3F3608F272A7004A47F5 /* tclVar.c */, - F96437C90EF0D4B2003F468E /* tclZlib.c */, - F96D3F3708F272A7004A47F5 /* tommath.h */, - ); - path = generic; - sourceTree = ""; - }; - F96D3F3808F272A7004A47F5 /* library */ = { - isa = PBXGroup; - children = ( - F96D3F3908F272A8004A47F5 /* auto.tcl */, - F96D3F3A08F272A8004A47F5 /* clock.tcl */, - F96D3F3B08F272A8004A47F5 /* dde */, - F96D3F8C08F272A8004A47F5 /* history.tcl */, - F96D3F8D08F272A8004A47F5 /* http */, - F96D3F9008F272A8004A47F5 /* http1.0 */, - F96D3F9308F272A8004A47F5 /* init.tcl */, - F96D3F9408F272A8004A47F5 /* msgcat */, - F96D401708F272AA004A47F5 /* opt */, - F96D401A08F272AA004A47F5 /* package.tcl */, - F96D401B08F272AA004A47F5 /* parray.tcl */, - F9ECB1110B26521500A28025 /* platform */, - F96D401C08F272AA004A47F5 /* reg */, - F96D401E08F272AA004A47F5 /* safe.tcl */, - F96D401F08F272AA004A47F5 /* tclIndex */, - F96D402008F272AA004A47F5 /* tcltest */, - F96D402308F272AA004A47F5 /* tm.tcl */, - F96D425B08F272B2004A47F5 /* word.tcl */, - ); - path = library; - sourceTree = ""; - }; - F96D3F3B08F272A8004A47F5 /* dde */ = { - isa = PBXGroup; - children = ( - F96D3F3C08F272A8004A47F5 /* pkgIndex.tcl */, - ); - path = dde; - sourceTree = ""; - }; - F96D3F8D08F272A8004A47F5 /* http */ = { - isa = PBXGroup; - children = ( - F96D3F8E08F272A8004A47F5 /* http.tcl */, - F96D3F8F08F272A8004A47F5 /* pkgIndex.tcl */, - ); - path = http; - sourceTree = ""; - }; - F96D3F9008F272A8004A47F5 /* http1.0 */ = { - isa = PBXGroup; - children = ( - F96D3F9108F272A8004A47F5 /* http.tcl */, - F96D3F9208F272A8004A47F5 /* pkgIndex.tcl */, - ); - path = http1.0; - sourceTree = ""; - }; - F96D3F9408F272A8004A47F5 /* msgcat */ = { - isa = PBXGroup; - children = ( - F96D3F9508F272A8004A47F5 /* msgcat.tcl */, - F96D3F9608F272A8004A47F5 /* pkgIndex.tcl */, - ); - path = msgcat; - sourceTree = ""; - }; - F96D401708F272AA004A47F5 /* opt */ = { - isa = PBXGroup; - children = ( - F96D401808F272AA004A47F5 /* optparse.tcl */, - F96D401908F272AA004A47F5 /* pkgIndex.tcl */, - ); - path = opt; - sourceTree = ""; - }; - F96D401C08F272AA004A47F5 /* reg */ = { - isa = PBXGroup; - children = ( - F96D401D08F272AA004A47F5 /* pkgIndex.tcl */, - ); - path = reg; - sourceTree = ""; - }; - F96D402008F272AA004A47F5 /* tcltest */ = { - isa = PBXGroup; - children = ( - F96D402108F272AA004A47F5 /* pkgIndex.tcl */, - F96D402208F272AA004A47F5 /* tcltest.tcl */, - ); - path = tcltest; - sourceTree = ""; - }; - F96D425C08F272B2004A47F5 /* libtommath */ = { - isa = PBXGroup; - children = ( - F96D426408F272B3004A47F5 /* bn_fast_s_mp_mul_digs.c */, - F96D426608F272B3004A47F5 /* bn_fast_s_mp_sqr.c */, - F96D426908F272B3004A47F5 /* bn_mp_add.c */, - F96D426A08F272B3004A47F5 /* bn_mp_add_d.c */, - F96D426C08F272B3004A47F5 /* bn_mp_and.c */, - F96D426D08F272B3004A47F5 /* bn_mp_clamp.c */, - F96D426E08F272B3004A47F5 /* bn_mp_clear.c */, - F96D426F08F272B3004A47F5 /* bn_mp_clear_multi.c */, - F96D427008F272B3004A47F5 /* bn_mp_cmp.c */, - F96D427108F272B3004A47F5 /* bn_mp_cmp_d.c */, - F96D427208F272B3004A47F5 /* bn_mp_cmp_mag.c */, - F96D427408F272B3004A47F5 /* bn_mp_copy.c */, - F96D427508F272B3004A47F5 /* bn_mp_count_bits.c */, - F96D427608F272B3004A47F5 /* bn_mp_div.c */, - F96D427708F272B3004A47F5 /* bn_mp_div_2.c */, - F96D427808F272B3004A47F5 /* bn_mp_div_2d.c */, - F96D427908F272B3004A47F5 /* bn_mp_div_3.c */, - F96D427A08F272B3004A47F5 /* bn_mp_div_d.c */, - F96D427E08F272B3004A47F5 /* bn_mp_exch.c */, - F96D427F08F272B3004A47F5 /* bn_mp_expt_d.c */, - F96D428708F272B3004A47F5 /* bn_mp_grow.c */, - F96D428808F272B3004A47F5 /* bn_mp_init.c */, - F96D428908F272B3004A47F5 /* bn_mp_init_copy.c */, - F96D428A08F272B3004A47F5 /* bn_mp_init_multi.c */, - F96D428B08F272B3004A47F5 /* bn_mp_init_set.c */, - F96D428D08F272B3004A47F5 /* bn_mp_init_size.c */, - F96D429208F272B3004A47F5 /* bn_mp_karatsuba_mul.c */, - F96D429308F272B3004A47F5 /* bn_mp_karatsuba_sqr.c */, - F96D429508F272B3004A47F5 /* bn_mp_lshd.c */, - F96D429608F272B3004A47F5 /* bn_mp_mod.c */, - F96D429708F272B3004A47F5 /* bn_mp_mod_2d.c */, - F96D429C08F272B3004A47F5 /* bn_mp_mul.c */, - F96D429D08F272B3004A47F5 /* bn_mp_mul_2.c */, - F96D429E08F272B3004A47F5 /* bn_mp_mul_2d.c */, - F96D429F08F272B3004A47F5 /* bn_mp_mul_d.c */, - F96D42A208F272B3004A47F5 /* bn_mp_neg.c */, - F96D42A308F272B3004A47F5 /* bn_mp_or.c */, - F96D42AB08F272B3004A47F5 /* bn_mp_radix_size.c */, - F96D42AC08F272B3004A47F5 /* bn_mp_radix_smap.c */, - F96D42AE08F272B3004A47F5 /* bn_mp_read_radix.c */, - F96D42B908F272B3004A47F5 /* bn_mp_rshd.c */, - F96D42BA08F272B3004A47F5 /* bn_mp_set.c */, - F96D42BC08F272B3004A47F5 /* bn_mp_shrink.c */, - F96D42BE08F272B3004A47F5 /* bn_mp_sqr.c */, - F96D42C008F272B3004A47F5 /* bn_mp_sqrt.c */, - F96D42C108F272B3004A47F5 /* bn_mp_sub.c */, - F96D42C208F272B3004A47F5 /* bn_mp_sub_d.c */, - F96D42C608F272B3004A47F5 /* bn_mp_to_unsigned_bin.c */, - F96D42C708F272B3004A47F5 /* bn_mp_to_unsigned_bin_n.c */, - F96D42C808F272B3004A47F5 /* bn_mp_toom_mul.c */, - F96D42C908F272B3004A47F5 /* bn_mp_toom_sqr.c */, - F96D42CB08F272B3004A47F5 /* bn_mp_toradix_n.c */, - F96D42CC08F272B3004A47F5 /* bn_mp_unsigned_bin_size.c */, - F96D42CD08F272B3004A47F5 /* bn_mp_xor.c */, - F96D42CE08F272B3004A47F5 /* bn_mp_zero.c */, - F96D42D008F272B3004A47F5 /* bn_reverse.c */, - F96D42D108F272B3004A47F5 /* bn_s_mp_add.c */, - F96D42D308F272B3004A47F5 /* bn_s_mp_mul_digs.c */, - F96D42D508F272B3004A47F5 /* bn_s_mp_sqr.c */, - F96D42D608F272B3004A47F5 /* bn_s_mp_sub.c */, - F96D42D708F272B3004A47F5 /* bncore.c */, - F96D432908F272B4004A47F5 /* tommath_class.h */, - F96D432A08F272B4004A47F5 /* tommath_superclass.h */, - ); - path = libtommath; - sourceTree = ""; - }; - F96D432C08F272B4004A47F5 /* macosx */ = { - isa = PBXGroup; - children = ( - F96D432E08F272B5004A47F5 /* configure.ac */, - F96D432F08F272B5004A47F5 /* GNUmakefile */, - F96D433108F272B5004A47F5 /* README */, - F96D433908F272B5004A47F5 /* tclMacOSXBundle.c */, - F96D433D08F272B5004A47F5 /* tclMacOSXFCmd.c */, - F96D433E08F272B5004A47F5 /* tclMacOSXNotify.c */, - F96D433208F272B5004A47F5 /* Tcl-Info.plist.in */, - F91E62260C1AE686006C9D96 /* Tclsh-Info.plist.in */, - ); - path = macosx; - sourceTree = ""; - }; - F96D434408F272B5004A47F5 /* tests */ = { - isa = PBXGroup; - children = ( - F96D434508F272B5004A47F5 /* all.tcl */, - F96D434608F272B5004A47F5 /* append.test */, - F96D434708F272B5004A47F5 /* appendComp.test */, - F9ECB1CA0B2652D300A28025 /* apply.test */, - F96D434808F272B5004A47F5 /* assocd.test */, - F96D434908F272B5004A47F5 /* async.test */, - F96D434A08F272B5004A47F5 /* autoMkindex.test */, - F96D434B08F272B5004A47F5 /* basic.test */, - F96D434C08F272B5004A47F5 /* binary.test */, - F96D434D08F272B5004A47F5 /* case.test */, - F96D434E08F272B5004A47F5 /* chan.test */, - F9A493240CEBF38300B78AE2 /* chanio.test */, - F96D434F08F272B5004A47F5 /* clock.test */, - F96D435008F272B5004A47F5 /* cmdAH.test */, - F96D435108F272B5004A47F5 /* cmdIL.test */, - F96D435208F272B5004A47F5 /* cmdInfo.test */, - F96D435308F272B5004A47F5 /* cmdMZ.test */, - F96D435408F272B5004A47F5 /* compExpr-old.test */, - F96D435508F272B5004A47F5 /* compExpr.test */, - F96D435608F272B5004A47F5 /* compile.test */, - F96D435708F272B5004A47F5 /* concat.test */, - F96D435808F272B5004A47F5 /* config.test */, - F974D5770FBE7E6100BF728B /* coroutine.test */, - F96D435908F272B5004A47F5 /* dcall.test */, - F96D435A08F272B5004A47F5 /* dict.test */, - F96D435C08F272B5004A47F5 /* dstring.test */, - F96D435E08F272B5004A47F5 /* encoding.test */, - F96D435F08F272B5004A47F5 /* env.test */, - F96D436008F272B5004A47F5 /* error.test */, - F96D436108F272B5004A47F5 /* eval.test */, - F96D436208F272B5004A47F5 /* event.test */, - F96D436308F272B5004A47F5 /* exec.test */, - F96D436408F272B5004A47F5 /* execute.test */, - F96D436508F272B5004A47F5 /* expr-old.test */, - F96D436608F272B5004A47F5 /* expr.test */, - F96D436708F272B6004A47F5 /* fCmd.test */, - F96D436808F272B6004A47F5 /* fileName.test */, - F96D436908F272B6004A47F5 /* fileSystem.test */, - F96D436A08F272B6004A47F5 /* for-old.test */, - F96D436B08F272B6004A47F5 /* for.test */, - F96D436C08F272B6004A47F5 /* foreach.test */, - F96D436D08F272B6004A47F5 /* format.test */, - F96D436E08F272B6004A47F5 /* get.test */, - F96D436F08F272B6004A47F5 /* history.test */, - F96D437008F272B6004A47F5 /* http.test */, - F974D56C0FBE7D6300BF728B /* http11.test */, - F96D437108F272B6004A47F5 /* httpd */, - F974D56D0FBE7D6300BF728B /* httpd11.tcl */, - F96D437208F272B6004A47F5 /* httpold.test */, - F96D437308F272B6004A47F5 /* if-old.test */, - F96D437408F272B6004A47F5 /* if.test */, - F96D437508F272B6004A47F5 /* incr-old.test */, - F96D437608F272B6004A47F5 /* incr.test */, - F96D437708F272B6004A47F5 /* indexObj.test */, - F96D437808F272B6004A47F5 /* info.test */, - F96D437908F272B6004A47F5 /* init.test */, - F96D437A08F272B6004A47F5 /* interp.test */, - F96D437B08F272B6004A47F5 /* io.test */, - F96D437C08F272B6004A47F5 /* ioCmd.test */, - F96D437D08F272B6004A47F5 /* iogt.test */, - F96D437F08F272B6004A47F5 /* join.test */, - F96D438008F272B6004A47F5 /* lindex.test */, - F96D438108F272B6004A47F5 /* link.test */, - F96D438208F272B6004A47F5 /* linsert.test */, - F96D438308F272B6004A47F5 /* list.test */, - F96D438408F272B6004A47F5 /* listObj.test */, - F96D438508F272B6004A47F5 /* llength.test */, - F96D438608F272B6004A47F5 /* load.test */, - F96D438708F272B6004A47F5 /* lrange.test */, - F96D438808F272B6004A47F5 /* lrepeat.test */, - F96D438908F272B6004A47F5 /* lreplace.test */, - F96D438A08F272B6004A47F5 /* lsearch.test */, - F96D438B08F272B6004A47F5 /* lset.test */, - F96D438C08F272B6004A47F5 /* lsetComp.test */, - F96D438D08F272B6004A47F5 /* macOSXFCmd.test */, - F95FAFF90B34F1130072E431 /* macOSXLoad.test */, - F96D438E08F272B6004A47F5 /* main.test */, - F9ECB1CB0B26534C00A28025 /* mathop.test */, - F96D438F08F272B6004A47F5 /* misc.test */, - F96D439008F272B6004A47F5 /* msgcat.test */, - F96D439108F272B6004A47F5 /* namespace-old.test */, - F96D439208F272B7004A47F5 /* namespace.test */, - F96D439308F272B7004A47F5 /* notify.test */, - F91DC23C0E44C51B002CB8D1 /* nre.test */, - F96D439408F272B7004A47F5 /* obj.test */, - F93599C80DF1F81900E04F67 /* oo.test */, - F96D439508F272B7004A47F5 /* opt.test */, - F96D439608F272B7004A47F5 /* package.test */, - F96D439708F272B7004A47F5 /* parse.test */, - F96D439808F272B7004A47F5 /* parseExpr.test */, - F96D439908F272B7004A47F5 /* parseOld.test */, - F96D439A08F272B7004A47F5 /* pid.test */, - F96D439B08F272B7004A47F5 /* pkg.test */, - F96D439C08F272B7004A47F5 /* pkgMkIndex.test */, - F96D439D08F272B7004A47F5 /* platform.test */, - F96D439E08F272B7004A47F5 /* proc-old.test */, - F96D439F08F272B7004A47F5 /* proc.test */, - F96D43A008F272B7004A47F5 /* pwd.test */, - F96D43A108F272B7004A47F5 /* README */, - F96D43A208F272B7004A47F5 /* reg.test */, - F96D43A308F272B7004A47F5 /* regexp.test */, - F96D43A408F272B7004A47F5 /* regexpComp.test */, - F96D43A508F272B7004A47F5 /* registry.test */, - F96D43A608F272B7004A47F5 /* remote.tcl */, - F96D43A708F272B7004A47F5 /* rename.test */, - F96D43A808F272B7004A47F5 /* result.test */, - F96D43A908F272B7004A47F5 /* safe.test */, - F96D43AA08F272B7004A47F5 /* scan.test */, - F96D43AB08F272B7004A47F5 /* security.test */, - F96D43AC08F272B7004A47F5 /* set-old.test */, - F96D43AD08F272B7004A47F5 /* set.test */, - F96D43AE08F272B7004A47F5 /* socket.test */, - F96D43AF08F272B7004A47F5 /* source.test */, - F96D43B008F272B7004A47F5 /* split.test */, - F96D43B108F272B7004A47F5 /* stack.test */, - F96D43B208F272B7004A47F5 /* string.test */, - F96D43B308F272B7004A47F5 /* stringComp.test */, - F96D43B408F272B7004A47F5 /* stringObj.test */, - F96D43B508F272B7004A47F5 /* subst.test */, - F96D43B608F272B7004A47F5 /* switch.test */, - F974D5780FBE7E6100BF728B /* tailcall.test */, - F96D43B708F272B7004A47F5 /* tcltest.test */, - F96D43B808F272B7004A47F5 /* thread.test */, - F96D43B908F272B7004A47F5 /* timer.test */, - F96D43BA08F272B7004A47F5 /* tm.test */, - F96D43BB08F272B7004A47F5 /* trace.test */, - F96D43BC08F272B7004A47F5 /* unixFCmd.test */, - F96D43BD08F272B7004A47F5 /* unixFile.test */, - F96D43BE08F272B7004A47F5 /* unixInit.test */, - F96D43BF08F272B7004A47F5 /* unixNotfy.test */, - F96D43C008F272B7004A47F5 /* unknown.test */, - F96D43C108F272B7004A47F5 /* unload.test */, - F96D43C208F272B7004A47F5 /* uplevel.test */, - F96D43C308F272B7004A47F5 /* upvar.test */, - F96D43C408F272B7004A47F5 /* utf.test */, - F96D43C508F272B7004A47F5 /* util.test */, - F96D43C608F272B7004A47F5 /* var.test */, - F96D43C708F272B7004A47F5 /* while-old.test */, - F96D43C808F272B7004A47F5 /* while.test */, - F96D43C908F272B7004A47F5 /* winConsole.test */, - F96D43CA08F272B7004A47F5 /* winDde.test */, - F96D43CB08F272B7004A47F5 /* winFCmd.test */, - F96D43CC08F272B7004A47F5 /* winFile.test */, - F96D43CD08F272B7004A47F5 /* winNotify.test */, - F96D43CE08F272B7004A47F5 /* winPipe.test */, - F96D43CF08F272B7004A47F5 /* winTime.test */, - F915432A0EF201CF0032D1E8 /* zlib.test */, - ); - path = tests; - sourceTree = ""; - }; - F96D43D008F272B8004A47F5 /* tools */ = { - isa = PBXGroup; - children = ( - F96D43D108F272B8004A47F5 /* checkLibraryDoc.tcl */, - F96D43D208F272B8004A47F5 /* configure */, - F96D43D308F272B8004A47F5 /* configure.ac */, - F96D442208F272B8004A47F5 /* eolFix.tcl */, - F96D442408F272B8004A47F5 /* fix_tommath_h.tcl */, - F96D442508F272B8004A47F5 /* genStubs.tcl */, - F96D442708F272B8004A47F5 /* index.tcl */, - F96D442808F272B8004A47F5 /* installData.tcl */, - F96D442908F272B8004A47F5 /* loadICU.tcl */, - F96D442A08F272B8004A47F5 /* Makefile.in */, - F96D442B08F272B8004A47F5 /* makeTestCases.tcl */, - F96D442C08F272B8004A47F5 /* man2help.tcl */, - F96D442D08F272B8004A47F5 /* man2help2.tcl */, - F96D442E08F272B8004A47F5 /* man2html.tcl */, - F96D442F08F272B8004A47F5 /* man2html1.tcl */, - F96D443008F272B8004A47F5 /* man2html2.tcl */, - F96D443108F272B8004A47F5 /* man2tcl.c */, - F96D443208F272B8004A47F5 /* README */, - F96D443308F272B8004A47F5 /* regexpTestLib.tcl */, - F96D443508F272B8004A47F5 /* tcl.hpj.in */, - F96D443608F272B8004A47F5 /* tcl.wse.in */, - F96D443908F272B9004A47F5 /* tcltk-man2html.tcl */, - F96D443A08F272B9004A47F5 /* tclZIC.tcl */, - F92D7F100DE777240033A13A /* tsdPerf.tcl */, - F96D443B08F272B9004A47F5 /* uniClass.tcl */, - F96D443C08F272B9004A47F5 /* uniParse.tcl */, - ); - path = tools; - sourceTree = ""; - }; - F96D443E08F272B9004A47F5 /* unix */ = { - isa = PBXGroup; - children = ( - F96D444008F272B9004A47F5 /* aclocal.m4 */, - F96D444108F272B9004A47F5 /* configure */, - F96D444208F272B9004A47F5 /* configure.ac */, - F96D444308F272B9004A47F5 /* dltest */, - F96D444D08F272B9004A47F5 /* install-sh */, - F96D444E08F272B9004A47F5 /* installManPage */, - F96D444F08F272B9004A47F5 /* ldAix */, - F96D445008F272B9004A47F5 /* Makefile.in */, - F96D445208F272B9004A47F5 /* README */, - F96D445308F272B9004A47F5 /* tcl.m4 */, - F974D5790FBE7E9C00BF728B /* tcl.pc.in */, - F96D445408F272B9004A47F5 /* tcl.spec */, - F96D445508F272B9004A47F5 /* tclAppInit.c */, - F96D445608F272B9004A47F5 /* tclConfig.h.in */, - F96D445708F272B9004A47F5 /* tclConfig.sh.in */, - F96D445808F272B9004A47F5 /* tclLoadAix.c */, - F96D445908F272B9004A47F5 /* tclLoadDl.c */, - F96D445B08F272B9004A47F5 /* tclLoadDyld.c */, - F96D445C08F272B9004A47F5 /* tclLoadNext.c */, - F96D445D08F272B9004A47F5 /* tclLoadOSF.c */, - F96D445E08F272B9004A47F5 /* tclLoadShl.c */, - F96D445F08F272B9004A47F5 /* tclUnixChan.c */, - F9FC77B70AB29E9100B7077D /* tclUnixCompat.c */, - F96D446008F272B9004A47F5 /* tclUnixEvent.c */, - F96D446108F272B9004A47F5 /* tclUnixFCmd.c */, - F96D446208F272B9004A47F5 /* tclUnixFile.c */, - F96D446308F272B9004A47F5 /* tclUnixInit.c */, - F96D446408F272B9004A47F5 /* tclUnixNotfy.c */, - F96D446508F272B9004A47F5 /* tclUnixPipe.c */, - F96D446608F272B9004A47F5 /* tclUnixPort.h */, - F96D446708F272B9004A47F5 /* tclUnixSock.c */, - F96D446808F272B9004A47F5 /* tclUnixTest.c */, - F96D446908F272B9004A47F5 /* tclUnixThrd.c */, - F96D446A08F272B9004A47F5 /* tclUnixThrd.h */, - F96D446B08F272B9004A47F5 /* tclUnixTime.c */, - F96D446C08F272B9004A47F5 /* tclXtNotify.c */, - F96D446D08F272B9004A47F5 /* tclXtTest.c */, - ); - path = unix; - sourceTree = ""; - }; - F96D444308F272B9004A47F5 /* dltest */ = { - isa = PBXGroup; - children = ( - F96D444408F272B9004A47F5 /* Makefile.in */, - F96D444508F272B9004A47F5 /* pkga.c */, - F96D444608F272B9004A47F5 /* pkgb.c */, - F96D444708F272B9004A47F5 /* pkgc.c */, - F96D444808F272B9004A47F5 /* pkgd.c */, - F96D444908F272B9004A47F5 /* pkge.c */, - F96D444B08F272B9004A47F5 /* pkgua.c */, - F96D444C08F272B9004A47F5 /* README */, - ); - path = dltest; - sourceTree = ""; - }; - F96D446E08F272B9004A47F5 /* win */ = { - isa = PBXGroup; - children = ( - F96D447008F272BA004A47F5 /* aclocal.m4 */, - F96D447108F272BA004A47F5 /* buildall.vc.bat */, - F96D447208F272BA004A47F5 /* cat.c */, - F96D447408F272BA004A47F5 /* configure */, - F96D447508F272BA004A47F5 /* configure.ac */, - F96D447708F272BA004A47F5 /* Makefile.in */, - F96D447808F272BA004A47F5 /* makefile.vc */, - F96D447908F272BA004A47F5 /* nmakehlp.c */, - F96D447A08F272BA004A47F5 /* README */, - F96D447C08F272BA004A47F5 /* rules.vc */, - F96D447D08F272BA004A47F5 /* stub16.c */, - F96D447E08F272BA004A47F5 /* tcl.dsp */, - F96D447F08F272BA004A47F5 /* tcl.dsw */, - F96D448008F272BA004A47F5 /* tcl.hpj.in */, - F96D448108F272BA004A47F5 /* tcl.m4 */, - F96D448208F272BA004A47F5 /* tcl.rc */, - F96D448308F272BA004A47F5 /* tclAppInit.c */, - F96D448408F272BA004A47F5 /* tclConfig.sh.in */, - F96D448608F272BA004A47F5 /* tclsh.rc */, - F96D448708F272BA004A47F5 /* tclWin32Dll.c */, - F96D448808F272BA004A47F5 /* tclWinChan.c */, - F96D448908F272BA004A47F5 /* tclWinConsole.c */, - F96D448A08F272BA004A47F5 /* tclWinDde.c */, - F96D448B08F272BA004A47F5 /* tclWinError.c */, - F96D448C08F272BA004A47F5 /* tclWinFCmd.c */, - F96D448D08F272BA004A47F5 /* tclWinFile.c */, - F96D448E08F272BA004A47F5 /* tclWinInit.c */, - F96D448F08F272BA004A47F5 /* tclWinInt.h */, - F96D449008F272BA004A47F5 /* tclWinLoad.c */, - F96D449108F272BA004A47F5 /* tclWinNotify.c */, - F96D449208F272BA004A47F5 /* tclWinPipe.c */, - F96D449308F272BA004A47F5 /* tclWinPort.h */, - F96D449408F272BA004A47F5 /* tclWinReg.c */, - F96D449508F272BA004A47F5 /* tclWinSerial.c */, - F96D449608F272BA004A47F5 /* tclWinSock.c */, - F96D449708F272BA004A47F5 /* tclWinTest.c */, - F96D449808F272BA004A47F5 /* tclWinThrd.c */, - F96D449908F272BA004A47F5 /* tclWinThrd.h */, - F96D449A08F272BA004A47F5 /* tclWinTime.c */, - ); - path = win; - sourceTree = ""; - }; - F9ECB1110B26521500A28025 /* platform */ = { - isa = PBXGroup; - children = ( - F9ECB1120B26521500A28025 /* pkgIndex.tcl */, - F9ECB1130B26521500A28025 /* platform.tcl */, - F9ECB1140B26521500A28025 /* shell.tcl */, - ); - path = platform; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8DD76FA90486AB0100D96B5E /* tktest */ = { - isa = PBXNativeTarget; - buildConfigurationList = F95CC8B009158F3100EA5ACE /* Build configuration list for PBXNativeTarget "tktest" */; - buildPhases = ( - F9A5C5F508F651A2008AE941 /* Configure Tcl */, - F9A5C5F608F651AB008AE941 /* Configure Tk */, - 8DD76FAB0486AB0100D96B5E /* Sources */, - 8DD76FAD0486AB0100D96B5E /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = tktest; - productInstallPath = "$(BINDIR)"; - productName = tktest; - productReference = 8DD76FB20486AB0100D96B5E /* tktest */; - productType = "com.apple.product-type.tool"; - }; - F97258A50A86873C00096C78 /* tktest-X11 */ = { - isa = PBXNativeTarget; - buildConfigurationList = F97258A80A86873D00096C78 /* Build configuration list for PBXNativeTarget "tktest-X11" */; - buildPhases = ( - F9FD30B40CC1AD070073837D /* Configure Tcl */, - F9FD30B50CC1AD070073837D /* Configure Tk */, - F9FD30BB0CC1AD070073837D /* Sources */, - F9FD31E30CC1AD070073837D /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "tktest-X11"; - productInstallPath = "$(BINDIR)"; - productName = tktest; - productReference = F9FD31F40CC1AD070073837D /* tktest-X11 */; - productType = "com.apple.product-type.tool"; - }; - F9E61D16090A3E94002B3151 /* Tk */ = { - isa = PBXNativeTarget; - buildConfigurationList = F95CC8AB09158F3100EA5ACE /* Build configuration list for PBXNativeTarget "Tk" */; - buildPhases = ( - F97AF02F0B665DA900310EA2 /* Build Tk */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Tk; - productName = Wish; - productReference = F9A3084B08F2D4CE00BAE1AB /* Wish.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - }; - buildConfigurationList = F95CC8B509158F3100EA5ACE /* Build configuration list for PBXProject "Tk" */; - compatibilityVersion = "Xcode 3.2"; - hasScannedForEncodings = 1; - mainGroup = 08FB7794FE84155DC02AAC07 /* Tk */; - projectDirPath = ""; - projectRoots = ( - .., - ../../tcl, - ); - targets = ( - F9E61D16090A3E94002B3151 /* Tk */, - 8DD76FA90486AB0100D96B5E /* tktest */, - F97258A50A86873C00096C78 /* tktest-X11 */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXShellScriptBuildPhase section */ - F97AF02F0B665DA900310EA2 /* Build Tk */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${TARGET_TEMP_DIR}/.none", - ); - name = "Build Tk"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${WRAPPER_NAME}", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "export CC=$(xcrun -find ${GCC} || echo ${GCC}); export LD=${CC}\ngnumake -C \"${TK_SRCROOT}/macosx\" -j \"$(sysctl -n hw.activecpu)\" \"$(echo \"${ACTION}\" | sed -e s/build// -e s/clean/distclean/ -e s/..\\*/\\&-/)${MAKE_TARGET}\" CFLAGS_WARNING=\"${WARNING_CFLAGS}\" CFLAGS_OPTIMIZE=\"-O${GCC_OPTIMIZATION_LEVEL}\" SYMROOT=\"${BUILT_PRODUCTS_DIR}\" OBJ_DIR=\"${OBJECT_FILE_DIR}\" INSTALL_ROOT=\"${DSTROOT}\" PREFIX=\"${PREFIX}\" BINDIR=\"${BINDIR}\" LIBDIR=\"${FRAMEWORK_INSTALL_PATH}\" MANDIR=\"${MANDIR}\" EXTRA_CONFIGURE_ARGS=\"${CONFIGURE_ARGS}\" APPLICATION_INSTALL_PATH=\"${APPLICATION_INSTALL_PATH}\" TCL_BUILD_DIR=\"${TCL_BUILD_DIR}\" TCL_FRAMEWORK_DIR=\"${TCL_FRAMEWORK_DIR}\" ${EXTRA_MAKE_FLAGS}\nresult=$?\nif [ -e \"${BUILT_PRODUCTS_DIR}/tktest\" ]; then\n\trm -f \"${BUILT_PRODUCTS_DIR}/tktest\"\nfi\necho \"Done\"\nrm -f \"${SCRIPT_INPUT_FILE_0}\"\nexit ${result}\n"; - showEnvVarsInLog = 0; - }; - F9A5C5F508F651A2008AE941 /* Configure Tcl */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(TCL_SRCROOT)/macosx/configure.ac", - "$(TCL_SRCROOT)/unix/configure.ac", - "$(TCL_SRCROOT)/unix/tcl.m4", - "$(TCL_SRCROOT)/unix/aclocal.m4", - "$(TCL_SRCROOT)/unix/tclConfig.sh.in", - "$(TCL_SRCROOT)/unix/Makefile.in", - "$(TCL_SRCROOT)/unix/dltest/Makefile.in", - ); - name = "Configure Tcl"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/tcl/tclConfig.sh", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "## tcl configure shell script phase\n\ncd \"${TCL_SRCROOT}\"/macosx &&\nif [ configure.ac -nt configure -o ../unix/configure.ac -nt configure -o ../unix/tcl.m4 -nt configure -o ../unix/aclocal.m4 -nt configure ]; then\n echo \"Running autoconf & autoheader in tcl/macosx\"\n rm -rf autom4te.cache\n ${AUTOCONF:-${DEVELOPER_DIR}/usr/bin/autoconf} && ${AUTOHEADER:-${DEVELOPER_DIR}/usr/bin/autoheader} || exit $?\n rm -rf autom4te.cache\nfi\n\ncd \"${DERIVED_FILE_DIR}\" && mkdir -p tcl && cd tcl &&\nif [ \"${TCL_SRCROOT}\"/macosx/configure -nt config.status ]; then\n echo \"Configuring Tcl\"\n CC=$(xcrun -find ${GCC} || echo ${GCC})\n \"${TCL_SRCROOT}\"/macosx/configure --cache-file=../config.cache --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --mandir=${MANDIR} --includedir=${INCLUDEDIR} --disable-shared CC=${CC} LD=${CC} ${CONFIGURE_ARGS}\nelse\n ./config.status\nfi\n"; - showEnvVarsInLog = 0; - }; - F9A5C5F608F651AB008AE941 /* Configure Tk */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(TK_SRCROOT)/macosx/configure.ac", - "$(TK_SRCROOT)/unix/configure.ac", - "$(TK_SRCROOT)/unix/tcl.m4", - "$(TK_SRCROOT)/unix/aclocal.m4", - "$(TK_SRCROOT)/unix/tkConfig.sh.in", - ); - name = "Configure Tk"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/tk/tkConfig.sh", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "## tk configure shell script phase\n\ncd \"${TK_SRCROOT}\"/macosx &&\nif [ configure.ac -nt configure -o ../unix/configure.ac -nt configure -o ../unix/tcl.m4 -nt configure -o ../unix/aclocal.m4 -nt configure ]; then\n echo \"Running autoconf & autoheader in tk/macosx\"\n rm -rf autom4te.cache\n ${AUTOCONF:-${DEVELOPER_DIR}/usr/bin/autoconf} && ${AUTOHEADER:-${DEVELOPER_DIR}/usr/bin/autoheader} || exit $?\n rm -rf autom4te.cache\nfi\n\ncd \"${DERIVED_FILE_DIR}\" && mkdir -p tk && cd tk &&\nif [ \"${TK_SRCROOT}\"/macosx/configure -nt config.status ]; then\n echo \"Configuring Tk\"\n CC=$(xcrun -find ${GCC} || echo ${GCC})\n \"${TK_SRCROOT}\"/macosx/configure --cache-file=../config.cache --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --mandir=${MANDIR} --includedir=${INCLUDEDIR} --disable-shared --enable-aqua --with-tcl=../tcl CC=${CC} LD=${CC} ${CONFIGURE_ARGS}\nelse\n ./config.status\nfi\n"; - showEnvVarsInLog = 0; - }; - F9FD30B40CC1AD070073837D /* Configure Tcl */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(TCL_SRCROOT)/macosx/configure.ac", - "$(TCL_SRCROOT)/unix/configure.ac", - "$(TCL_SRCROOT)/unix/tcl.m4", - "$(TCL_SRCROOT)/unix/aclocal.m4", - "$(TCL_SRCROOT)/unix/tclConfig.sh.in", - "$(TCL_SRCROOT)/unix/Makefile.in", - "$(TCL_SRCROOT)/unix/dltest/Makefile.in", - ); - name = "Configure Tcl"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/tcl/tclConfig.sh", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "## tcl configure shell script phase\n\ncd \"${TCL_SRCROOT}\"/macosx &&\nif [ configure.ac -nt configure -o ../unix/configure.ac -nt configure -o ../unix/tcl.m4 -nt configure -o ../unix/aclocal.m4 -nt configure ]; then\n echo \"Running autoconf & autoheader in tcl/macosx\"\n rm -rf autom4te.cache\n ${AUTOCONF:-${DEVELOPER_DIR}/usr/bin/autoconf} && ${AUTOHEADER:-${DEVELOPER_DIR}/usr/bin/autoheader} || exit $?\n rm -rf autom4te.cache\nfi\n\ncd \"${DERIVED_FILE_DIR}\" && mkdir -p tcl && cd tcl &&\nif [ \"${TCL_SRCROOT}\"/macosx/configure -nt config.status ]; then\n echo \"Configuring Tcl\"\n CC=$(xcrun -find ${GCC} || echo ${GCC})\n \"${TCL_SRCROOT}\"/macosx/configure --cache-file=../config.cache --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --mandir=${MANDIR} --includedir=${INCLUDEDIR} --disable-shared CC=${CC} LD=${CC} ${CONFIGURE_ARGS}\nelse\n ./config.status\nfi\n"; - showEnvVarsInLog = 0; - }; - F9FD30B50CC1AD070073837D /* Configure Tk */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(TK_SRCROOT)/macosx/configure.ac", - "$(TK_SRCROOT)/unix/configure.ac", - "$(TK_SRCROOT)/unix/tcl.m4", - "$(TK_SRCROOT)/unix/aclocal.m4", - "$(TK_SRCROOT)/unix/tkConfig.sh.in", - ); - name = "Configure Tk"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/tk/tkConfig.sh", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "## tk configure shell script phase\n\ncd \"${TK_SRCROOT}\"/macosx &&\nif [ configure.ac -nt configure -o ../unix/configure.ac -nt configure -o ../unix/tcl.m4 -nt configure -o ../unix/aclocal.m4 -nt configure ]; then\n echo \"Running autoconf & autoheader in tk/macosx\"\n rm -rf autom4te.cache\n ${AUTOCONF:-${DEVELOPER_DIR}/usr/bin/autoconf} && ${AUTOHEADER:-${DEVELOPER_DIR}/usr/bin/autoheader} || exit $?\n rm -rf autom4te.cache\nfi\n\ncd \"${DERIVED_FILE_DIR}\" && mkdir -p tk && cd tk &&\nif [ \"${TK_SRCROOT}\"/macosx/configure -nt config.status ]; then\n echo \"Configuring Tk\"\n CC=$(xcrun -find ${GCC} || echo ${GCC})\n PATH=\"${PATH}:/usr/X11R6/bin\" \"${TK_SRCROOT}\"/macosx/configure --cache-file=../config.cache --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --mandir=${MANDIR} --includedir=${INCLUDEDIR} --disable-shared --enable-xft --with-tcl=../tcl CC=${CC} LD=${CC} ${CONFIGURE_ARGS}\nelse\n ./config.status\nfi"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DD76FAB0486AB0100D96B5E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F96D456F08F272BB004A47F5 /* regcomp.c in Sources */, - F96D457208F272BB004A47F5 /* regerror.c in Sources */, - F96D457508F272BB004A47F5 /* regexec.c in Sources */, - F96D457608F272BB004A47F5 /* regfree.c in Sources */, - F96D457B08F272BB004A47F5 /* tclAlloc.c in Sources */, - F96D457C08F272BB004A47F5 /* tclAsync.c in Sources */, - F96D457D08F272BB004A47F5 /* tclBasic.c in Sources */, - F96D457E08F272BC004A47F5 /* tclBinary.c in Sources */, - F96D457F08F272BC004A47F5 /* tclCkalloc.c in Sources */, - F96D458008F272BC004A47F5 /* tclClock.c in Sources */, - F96D458108F272BC004A47F5 /* tclCmdAH.c in Sources */, - F96D458208F272BC004A47F5 /* tclCmdIL.c in Sources */, - F96D458308F272BC004A47F5 /* tclCmdMZ.c in Sources */, - F96D458408F272BC004A47F5 /* tclCompCmds.c in Sources */, - F96D458508F272BC004A47F5 /* tclCompExpr.c in Sources */, - F96D458608F272BC004A47F5 /* tclCompile.c in Sources */, - F96D458808F272BC004A47F5 /* tclConfig.c in Sources */, - F96D458908F272BC004A47F5 /* tclDate.c in Sources */, - F96D458B08F272BC004A47F5 /* tclDictObj.c in Sources */, - F96D458C08F272BC004A47F5 /* tclEncoding.c in Sources */, - F96D458D08F272BC004A47F5 /* tclEnv.c in Sources */, - F96D458E08F272BC004A47F5 /* tclEvent.c in Sources */, - F96D458F08F272BC004A47F5 /* tclExecute.c in Sources */, - F96D459008F272BC004A47F5 /* tclFCmd.c in Sources */, - F96D459108F272BC004A47F5 /* tclFileName.c in Sources */, - F96D459308F272BC004A47F5 /* tclGet.c in Sources */, - F96D459508F272BC004A47F5 /* tclHash.c in Sources */, - F96D459608F272BC004A47F5 /* tclHistory.c in Sources */, - F96D459708F272BC004A47F5 /* tclIndexObj.c in Sources */, - F96D459B08F272BC004A47F5 /* tclInterp.c in Sources */, - F96D459D08F272BC004A47F5 /* tclIO.c in Sources */, - F96D459F08F272BC004A47F5 /* tclIOCmd.c in Sources */, - F96D45A008F272BC004A47F5 /* tclIOGT.c in Sources */, - F96D45A108F272BC004A47F5 /* tclIORChan.c in Sources */, - F95D77EA0DFD820D00A8BF6F /* tclIORTrans.c in Sources */, - F96D45A208F272BC004A47F5 /* tclIOSock.c in Sources */, - F96D45A308F272BC004A47F5 /* tclIOUtil.c in Sources */, - F96D45A408F272BC004A47F5 /* tclLink.c in Sources */, - F96D45A508F272BC004A47F5 /* tclListObj.c in Sources */, - F96D45A608F272BC004A47F5 /* tclLiteral.c in Sources */, - F96D45A708F272BC004A47F5 /* tclLoad.c in Sources */, - F96D45A908F272BC004A47F5 /* tclMain.c in Sources */, - F96D45AA08F272BC004A47F5 /* tclNamesp.c in Sources */, - F96D45AB08F272BC004A47F5 /* tclNotify.c in Sources */, - F96D45AC08F272BC004A47F5 /* tclObj.c in Sources */, - F93599B30DF1F75400E04F67 /* tclOO.c in Sources */, - F93599B70DF1F76100E04F67 /* tclOOBasic.c in Sources */, - F93599B90DF1F76600E04F67 /* tclOOCall.c in Sources */, - F93599BC0DF1F77000E04F67 /* tclOODefineCmds.c in Sources */, - F93599BE0DF1F77400E04F67 /* tclOOInfo.c in Sources */, - F93599C20DF1F78300E04F67 /* tclOOMethod.c in Sources */, - F93599C40DF1F78800E04F67 /* tclOOStubInit.c in Sources */, - F93599C60DF1F78D00E04F67 /* tclOOStubLib.c in Sources */, - F96D45AD08F272BC004A47F5 /* tclPanic.c in Sources */, - F96D45AE08F272BC004A47F5 /* tclParse.c in Sources */, - F96D45B008F272BC004A47F5 /* tclPathObj.c in Sources */, - F96D45B108F272BC004A47F5 /* tclPipe.c in Sources */, - F96D45B208F272BC004A47F5 /* tclPkg.c in Sources */, - F96D45B308F272BC004A47F5 /* tclPkgConfig.c in Sources */, - F96D45B608F272BC004A47F5 /* tclPosixStr.c in Sources */, - F96D45B708F272BC004A47F5 /* tclPreserve.c in Sources */, - F96D45B808F272BC004A47F5 /* tclProc.c in Sources */, - F96D45B908F272BC004A47F5 /* tclRegexp.c in Sources */, - F96D45BB08F272BC004A47F5 /* tclResolve.c in Sources */, - F96D45BC08F272BC004A47F5 /* tclResult.c in Sources */, - F96D45BD08F272BC004A47F5 /* tclScan.c in Sources */, - F96D45BE08F272BC004A47F5 /* tclStringObj.c in Sources */, - F96D45C308F272BC004A47F5 /* tclStrToD.c in Sources */, - F96D45C408F272BC004A47F5 /* tclStubInit.c in Sources */, - F96D45C508F272BC004A47F5 /* tclStubLib.c in Sources */, - F96D45C908F272BC004A47F5 /* tclThread.c in Sources */, - F96D45CA08F272BC004A47F5 /* tclThreadAlloc.c in Sources */, - F96D45CB08F272BC004A47F5 /* tclThreadJoin.c in Sources */, - F96D45CC08F272BC004A47F5 /* tclThreadStorage.c in Sources */, - F96D45CE08F272BC004A47F5 /* tclTimer.c in Sources */, - F96D45D008F272BC004A47F5 /* tclTomMathInterface.c in Sources */, - F96D45D108F272BC004A47F5 /* tclTrace.c in Sources */, - F96D45D308F272BC004A47F5 /* tclUtf.c in Sources */, - F96D45D408F272BC004A47F5 /* tclUtil.c in Sources */, - F96D45D508F272BC004A47F5 /* tclVar.c in Sources */, - F96437CA0EF0D4B2003F468E /* tclZlib.c in Sources */, - F96D48E208F272C3004A47F5 /* bn_fast_s_mp_mul_digs.c in Sources */, - F96D48E408F272C3004A47F5 /* bn_fast_s_mp_sqr.c in Sources */, - F96D48E708F272C3004A47F5 /* bn_mp_add.c in Sources */, - F96D48E808F272C3004A47F5 /* bn_mp_add_d.c in Sources */, - F9E61D2B090A48A4002B3151 /* bn_mp_and.c in Sources */, - F96D48EB08F272C3004A47F5 /* bn_mp_clamp.c in Sources */, - F96D48EC08F272C3004A47F5 /* bn_mp_clear.c in Sources */, - F96D48ED08F272C3004A47F5 /* bn_mp_clear_multi.c in Sources */, - F96D48EE08F272C3004A47F5 /* bn_mp_cmp.c in Sources */, - F9E61D28090A481F002B3151 /* bn_mp_cmp_d.c in Sources */, - F96D48F008F272C3004A47F5 /* bn_mp_cmp_mag.c in Sources */, - F96D48F208F272C3004A47F5 /* bn_mp_copy.c in Sources */, - F96D48F308F272C3004A47F5 /* bn_mp_count_bits.c in Sources */, - F96D48F408F272C3004A47F5 /* bn_mp_div.c in Sources */, - F96D48F508F272C3004A47F5 /* bn_mp_div_2.c in Sources */, - F96D48F608F272C3004A47F5 /* bn_mp_div_2d.c in Sources */, - F96D48F708F272C3004A47F5 /* bn_mp_div_3.c in Sources */, - F96D48F808F272C3004A47F5 /* bn_mp_div_d.c in Sources */, - F96D48FC08F272C3004A47F5 /* bn_mp_exch.c in Sources */, - F9E61D2C090A48AC002B3151 /* bn_mp_expt_d.c in Sources */, - F96D490508F272C3004A47F5 /* bn_mp_grow.c in Sources */, - F96D490608F272C3004A47F5 /* bn_mp_init.c in Sources */, - F96D490708F272C3004A47F5 /* bn_mp_init_copy.c in Sources */, - F96D490808F272C3004A47F5 /* bn_mp_init_multi.c in Sources */, - F96D490908F272C3004A47F5 /* bn_mp_init_set.c in Sources */, - F96D490B08F272C3004A47F5 /* bn_mp_init_size.c in Sources */, - F96D491008F272C3004A47F5 /* bn_mp_karatsuba_mul.c in Sources */, - F96D491108F272C3004A47F5 /* bn_mp_karatsuba_sqr.c in Sources */, - F96D491308F272C3004A47F5 /* bn_mp_lshd.c in Sources */, - F96D491408F272C3004A47F5 /* bn_mp_mod.c in Sources */, - F96D491508F272C3004A47F5 /* bn_mp_mod_2d.c in Sources */, - F96D491A08F272C3004A47F5 /* bn_mp_mul.c in Sources */, - F96D491B08F272C3004A47F5 /* bn_mp_mul_2.c in Sources */, - F96D491C08F272C3004A47F5 /* bn_mp_mul_2d.c in Sources */, - F96D491D08F272C3004A47F5 /* bn_mp_mul_d.c in Sources */, - F9E61D29090A486C002B3151 /* bn_mp_neg.c in Sources */, - F9E61D2E090A48BF002B3151 /* bn_mp_or.c in Sources */, - F96D492908F272C3004A47F5 /* bn_mp_radix_size.c in Sources */, - F96D492A08F272C3004A47F5 /* bn_mp_radix_smap.c in Sources */, - F96D492C08F272C3004A47F5 /* bn_mp_read_radix.c in Sources */, - F96D493708F272C3004A47F5 /* bn_mp_rshd.c in Sources */, - F96D493808F272C3004A47F5 /* bn_mp_set.c in Sources */, - F9E61D2F090A48C7002B3151 /* bn_mp_shrink.c in Sources */, - F96D493C08F272C3004A47F5 /* bn_mp_sqr.c in Sources */, - F9E61D2A090A4891002B3151 /* bn_mp_sqrt.c in Sources */, - F96D493F08F272C3004A47F5 /* bn_mp_sub.c in Sources */, - F96D494008F272C3004A47F5 /* bn_mp_sub_d.c in Sources */, - F9E61D30090A48E2002B3151 /* bn_mp_to_unsigned_bin_n.c in Sources */, - F9E61D31090A48F9002B3151 /* bn_mp_to_unsigned_bin.c in Sources */, - F96D494608F272C3004A47F5 /* bn_mp_toom_mul.c in Sources */, - F96D494708F272C3004A47F5 /* bn_mp_toom_sqr.c in Sources */, - F96D494908F272C3004A47F5 /* bn_mp_toradix_n.c in Sources */, - F9E61D32090A48FA002B3151 /* bn_mp_unsigned_bin_size.c in Sources */, - F9E61D2D090A48BB002B3151 /* bn_mp_xor.c in Sources */, - F96D494C08F272C3004A47F5 /* bn_mp_zero.c in Sources */, - F96D494E08F272C3004A47F5 /* bn_reverse.c in Sources */, - F96D494F08F272C3004A47F5 /* bn_s_mp_add.c in Sources */, - F96D495108F272C3004A47F5 /* bn_s_mp_mul_digs.c in Sources */, - F96D495308F272C3004A47F5 /* bn_s_mp_sqr.c in Sources */, - F96D495408F272C3004A47F5 /* bn_s_mp_sub.c in Sources */, - F96D495508F272C3004A47F5 /* bncore.c in Sources */, - F96D49A908F272C4004A47F5 /* tclMacOSXBundle.c in Sources */, - F96D49AD08F272C4004A47F5 /* tclMacOSXFCmd.c in Sources */, - F96D49AE08F272C4004A47F5 /* tclMacOSXNotify.c in Sources */, - F96D4AC608F272C9004A47F5 /* tclLoadDyld.c in Sources */, - F96D4ACA08F272C9004A47F5 /* tclUnixChan.c in Sources */, - F9FC77B80AB29E9100B7077D /* tclUnixCompat.c in Sources */, - F96D4ACB08F272C9004A47F5 /* tclUnixEvent.c in Sources */, - F96D4ACC08F272C9004A47F5 /* tclUnixFCmd.c in Sources */, - F96D4ACD08F272C9004A47F5 /* tclUnixFile.c in Sources */, - F96D4ACE08F272C9004A47F5 /* tclUnixInit.c in Sources */, - F96D4ACF08F272C9004A47F5 /* tclUnixNotfy.c in Sources */, - F96D4AD008F272C9004A47F5 /* tclUnixPipe.c in Sources */, - F96D4AD208F272CA004A47F5 /* tclUnixSock.c in Sources */, - F96D4AD408F272CA004A47F5 /* tclUnixThrd.c in Sources */, - F96D4AD608F272CA004A47F5 /* tclUnixTime.c in Sources */, - F9F4415E0C8BAE6F00BCCD67 /* tclDTrace.d in Sources */, - F966BDCF08F27A3F005CB29B /* tk3d.c in Sources */, - F966BDD108F27A3F005CB29B /* tkArgv.c in Sources */, - F966BDD208F27A3F005CB29B /* tkAtom.c in Sources */, - F966BDD308F27A3F005CB29B /* tkBind.c in Sources */, - F966BDD408F27A3F005CB29B /* tkBitmap.c in Sources */, - F9152B090EAF8A5000CD5C7B /* tkBusy.c in Sources */, - F966BDD508F27A3F005CB29B /* tkButton.c in Sources */, - F966BDD708F27A3F005CB29B /* tkCanvArc.c in Sources */, - F966BDD808F27A3F005CB29B /* tkCanvas.c in Sources */, - F966BDDA08F27A3F005CB29B /* tkCanvBmap.c in Sources */, - F966BDDB08F27A3F005CB29B /* tkCanvImg.c in Sources */, - F966BDDC08F27A3F005CB29B /* tkCanvLine.c in Sources */, - F966BDDD08F27A3F005CB29B /* tkCanvPoly.c in Sources */, - F966BDDE08F27A3F005CB29B /* tkCanvPs.c in Sources */, - F966BDE008F27A3F005CB29B /* tkCanvText.c in Sources */, - F966BDE108F27A3F005CB29B /* tkCanvUtil.c in Sources */, - F966BDE208F27A3F005CB29B /* tkCanvWind.c in Sources */, - F966BDE308F27A3F005CB29B /* tkClipboard.c in Sources */, - F966BDE408F27A3F005CB29B /* tkCmds.c in Sources */, - F966BDE508F27A3F005CB29B /* tkColor.c in Sources */, - F966BDE708F27A3F005CB29B /* tkConfig.c in Sources */, - F966BDE808F27A3F005CB29B /* tkConsole.c in Sources */, - F966BDE908F27A3F005CB29B /* tkCursor.c in Sources */, - F966BDEB08F27A3F005CB29B /* tkEntry.c in Sources */, - F966BDED08F27A3F005CB29B /* tkError.c in Sources */, - F966BDEE08F27A3F005CB29B /* tkEvent.c in Sources */, - F966BDEF08F27A3F005CB29B /* tkFileFilter.c in Sources */, - F966BDF108F27A3F005CB29B /* tkFocus.c in Sources */, - F966BDF208F27A3F005CB29B /* tkFont.c in Sources */, - F966BDF408F27A3F005CB29B /* tkFrame.c in Sources */, - F966BDF508F27A3F005CB29B /* tkGC.c in Sources */, - F966BDF608F27A3F005CB29B /* tkGeometry.c in Sources */, - F966BDF708F27A3F005CB29B /* tkGet.c in Sources */, - F966BDF808F27A3F005CB29B /* tkGrab.c in Sources */, - F966BDF908F27A3F005CB29B /* tkGrid.c in Sources */, - F966BDFA08F27A3F005CB29B /* tkImage.c in Sources */, - F966BDFB08F27A3F005CB29B /* tkImgBmap.c in Sources */, - F966BDFC08F27A3F005CB29B /* tkImgGIF.c in Sources */, - F92EE8BF0E62F846001A6E80 /* tkImgPhInstance.c in Sources */, - F966BDFD08F27A3F005CB29B /* tkImgPhoto.c in Sources */, - F9DD99BD0F07DF850018B2E4 /* tkImgPNG.c in Sources */, - F966BDFE08F27A3F005CB29B /* tkImgPPM.c in Sources */, - F966BE0708F27A3F005CB29B /* tkListbox.c in Sources */, - F966BE0808F27A3F005CB29B /* tkMacWinMenu.c in Sources */, - F966BE0908F27A3F005CB29B /* tkMain.c in Sources */, - F966BE0A08F27A3F005CB29B /* tkMenu.c in Sources */, - F966BE0C08F27A3F005CB29B /* tkMenubutton.c in Sources */, - F966BE0E08F27A3F005CB29B /* tkMenuDraw.c in Sources */, - F966BE0F08F27A3F005CB29B /* tkMessage.c in Sources */, - F966BE1008F27A3F005CB29B /* tkObj.c in Sources */, - F966BE1108F27A3F005CB29B /* tkOldConfig.c in Sources */, - F966BE1208F27A3F005CB29B /* tkOption.c in Sources */, - F966BE1308F27A3F005CB29B /* tkPack.c in Sources */, - F966BE1408F27A3F005CB29B /* tkPanedWindow.c in Sources */, - F966BE1508F27A3F005CB29B /* tkPlace.c in Sources */, - F966BE1708F27A3F005CB29B /* tkPointer.c in Sources */, - F966BE1908F27A3F005CB29B /* tkRectOval.c in Sources */, - F966BE1A08F27A3F005CB29B /* tkScale.c in Sources */, - F966BE1C08F27A40005CB29B /* tkScrollbar.c in Sources */, - F966BE1E08F27A40005CB29B /* tkSelect.c in Sources */, - F966BE2008F27A40005CB29B /* tkSquare.c in Sources */, - F966BE2208F27A40005CB29B /* tkStubInit.c in Sources */, - F966BE2308F27A40005CB29B /* tkStubLib.c in Sources */, - F966BE2408F27A40005CB29B /* tkStyle.c in Sources */, - F966BE2508F27A40005CB29B /* tkTest.c in Sources */, - F966BE2608F27A40005CB29B /* tkText.c in Sources */, - F966BE2808F27A40005CB29B /* tkTextBTree.c in Sources */, - F966BE2908F27A40005CB29B /* tkTextDisp.c in Sources */, - F966BE2B08F27A40005CB29B /* tkTextImage.c in Sources */, - F966BE2C08F27A40005CB29B /* tkTextIndex.c in Sources */, - F966BE2D08F27A40005CB29B /* tkTextMark.c in Sources */, - F966BE2E08F27A40005CB29B /* tkTextTag.c in Sources */, - F966BE2F08F27A40005CB29B /* tkTextWind.c in Sources */, - F966BE3008F27A40005CB29B /* tkTrig.c in Sources */, - F966BE3108F27A40005CB29B /* tkUndo.c in Sources */, - F966BE3308F27A40005CB29B /* tkUtil.c in Sources */, - F966BE3408F27A40005CB29B /* tkVisual.c in Sources */, - F966BE3508F27A40005CB29B /* tkWindow.c in Sources */, - F96888050AF786D5000797B5 /* ttkBlink.c in Sources */, - F96888060AF786D5000797B5 /* ttkButton.c in Sources */, - F96888070AF786D5000797B5 /* ttkCache.c in Sources */, - F96888080AF786D5000797B5 /* ttkClamTheme.c in Sources */, - F96888090AF786D5000797B5 /* ttkClassicTheme.c in Sources */, - F968880A0AF786D5000797B5 /* ttkDefaultTheme.c in Sources */, - F968880B0AF786D5000797B5 /* ttkElements.c in Sources */, - F968880C0AF786D5000797B5 /* ttkEntry.c in Sources */, - F968880D0AF786D5000797B5 /* ttkFrame.c in Sources */, - F968880E0AF786D5000797B5 /* ttkImage.c in Sources */, - F968880F0AF786D5000797B5 /* ttkInit.c in Sources */, - F96888100AF786D5000797B5 /* ttkLabel.c in Sources */, - F96888110AF786D5000797B5 /* ttkLayout.c in Sources */, - F96888120AF786D5000797B5 /* ttkManager.c in Sources */, - F96888130AF786D5000797B5 /* ttkNotebook.c in Sources */, - F96888140AF786D5000797B5 /* ttkPanedwindow.c in Sources */, - F96888150AF786D5000797B5 /* ttkProgress.c in Sources */, - F96888160AF786D5000797B5 /* ttkScale.c in Sources */, - F96888170AF786D5000797B5 /* ttkScroll.c in Sources */, - F96888180AF786D5000797B5 /* ttkScrollbar.c in Sources */, - F96888190AF786D5000797B5 /* ttkSeparator.c in Sources */, - F968881A0AF786D5000797B5 /* ttkSquare.c in Sources */, - F968881B0AF786D5000797B5 /* ttkState.c in Sources */, - F968881C0AF786D5000797B5 /* ttkStubInit.c in Sources */, - F968881D0AF786D5000797B5 /* ttkStubLib.c in Sources */, - F968881E0AF786D5000797B5 /* ttkTagSet.c in Sources */, - F968881F0AF786D5000797B5 /* ttkTheme.c in Sources */, - F96888200AF786D5000797B5 /* ttkTrace.c in Sources */, - F96888210AF786D5000797B5 /* ttkTrack.c in Sources */, - F96888220AF786D5000797B5 /* ttkTreeview.c in Sources */, - F96888230AF786D5000797B5 /* ttkWidget.c in Sources */, - F966BEDB08F27A40005CB29B /* tkMacOSXBitmap.c in Sources */, - F966BEDC08F27A40005CB29B /* tkMacOSXButton.c in Sources */, - F966BEDE08F27A40005CB29B /* tkMacOSXClipboard.c in Sources */, - F966BEDF08F27A40005CB29B /* tkMacOSXColor.c in Sources */, - F966BEE008F27A40005CB29B /* tkMacOSXConfig.c in Sources */, - F966BEE108F27A40005CB29B /* tkMacOSXCursor.c in Sources */, - F966BEE308F27A40005CB29B /* tkMacOSXDebug.c in Sources */, - F966BEE608F27A40005CB29B /* tkMacOSXDialog.c in Sources */, - F966BEE708F27A40005CB29B /* tkMacOSXDraw.c in Sources */, - F966BEE808F27A40005CB29B /* tkMacOSXEmbed.c in Sources */, - F966BEE908F27A40005CB29B /* tkMacOSXEntry.c in Sources */, - F966BEEA08F27A40005CB29B /* tkMacOSXEvent.c in Sources */, - F966BEEC08F27A40005CB29B /* tkMacOSXFont.c in Sources */, - F966BEED08F27A40005CB29B /* tkMacOSXHLEvents.c in Sources */, - F966BEEE08F27A40005CB29B /* tkMacOSXInit.c in Sources */, - F966BEF108F27A40005CB29B /* tkMacOSXKeyboard.c in Sources */, - F966BEF208F27A40005CB29B /* tkMacOSXKeyEvent.c in Sources */, - F966BEF308F27A40005CB29B /* tkMacOSXMenu.c in Sources */, - F966BEF608F27A40005CB29B /* tkMacOSXMenubutton.c in Sources */, - F966BEF708F27A40005CB29B /* tkMacOSXMenus.c in Sources */, - F966BEF808F27A40005CB29B /* tkMacOSXMouseEvent.c in Sources */, - F966BEF908F27A40005CB29B /* tkMacOSXNotify.c in Sources */, - F966BF0108F27A40005CB29B /* tkMacOSXRegion.c in Sources */, - F966BF0308F27A40005CB29B /* tkMacOSXScrlbr.c in Sources */, - F966BF0408F27A40005CB29B /* tkMacOSXSend.c in Sources */, - F966BF0508F27A40005CB29B /* tkMacOSXSubwindows.c in Sources */, - F966BF0608F27A40005CB29B /* tkMacOSXTest.c in Sources */, - F966BF0708F27A40005CB29B /* tkMacOSXWindowEvent.c in Sources */, - F966BF0808F27A40005CB29B /* tkMacOSXWm.c in Sources */, - F966BF0B08F27A40005CB29B /* tkMacOSXXStubs.c in Sources */, - F96888850AF78938000797B5 /* ttkMacOSXTheme.c in Sources */, - F966BF7F08F27A41005CB29B /* tkAppInit.c in Sources */, - F966BF8308F27A41005CB29B /* tkUnix3d.c in Sources */, - F966BF9608F27A41005CB29B /* tkUnixScale.c in Sources */, - F966C02A08F27A42005CB29B /* xcolors.c in Sources */, - F966C02B08F27A42005CB29B /* xdraw.c in Sources */, - F966C02C08F27A42005CB29B /* xgc.c in Sources */, - F966C02D08F27A42005CB29B /* ximage.c in Sources */, - F966C02E08F27A42005CB29B /* xutil.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9FD30BB0CC1AD070073837D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F9FD30BC0CC1AD070073837D /* regcomp.c in Sources */, - F9FD30BD0CC1AD070073837D /* regerror.c in Sources */, - F9FD30BE0CC1AD070073837D /* regexec.c in Sources */, - F9FD30BF0CC1AD070073837D /* regfree.c in Sources */, - F9FD30C00CC1AD070073837D /* tclAlloc.c in Sources */, - F9FD30C10CC1AD070073837D /* tclAsync.c in Sources */, - F9FD30C20CC1AD070073837D /* tclBasic.c in Sources */, - F9FD30C30CC1AD070073837D /* tclBinary.c in Sources */, - F9FD30C40CC1AD070073837D /* tclCkalloc.c in Sources */, - F9FD30C50CC1AD070073837D /* tclClock.c in Sources */, - F9FD30C60CC1AD070073837D /* tclCmdAH.c in Sources */, - F9FD30C70CC1AD070073837D /* tclCmdIL.c in Sources */, - F9FD30C80CC1AD070073837D /* tclCmdMZ.c in Sources */, - F9FD30C90CC1AD070073837D /* tclCompCmds.c in Sources */, - F9FD30CA0CC1AD070073837D /* tclCompExpr.c in Sources */, - F9FD30CB0CC1AD070073837D /* tclCompile.c in Sources */, - F9FD30CC0CC1AD070073837D /* tclConfig.c in Sources */, - F9FD30CD0CC1AD070073837D /* tclDate.c in Sources */, - F9FD30CE0CC1AD070073837D /* tclDictObj.c in Sources */, - F9FD30CF0CC1AD070073837D /* tclEncoding.c in Sources */, - F9FD30D00CC1AD070073837D /* tclEnv.c in Sources */, - F9FD30D10CC1AD070073837D /* tclEvent.c in Sources */, - F9FD30D20CC1AD070073837D /* tclExecute.c in Sources */, - F9FD30D30CC1AD070073837D /* tclFCmd.c in Sources */, - F9FD30D40CC1AD070073837D /* tclFileName.c in Sources */, - F9FD30D50CC1AD070073837D /* tclGet.c in Sources */, - F9FD30D60CC1AD070073837D /* tclHash.c in Sources */, - F9FD30D70CC1AD070073837D /* tclHistory.c in Sources */, - F9FD30D80CC1AD070073837D /* tclIndexObj.c in Sources */, - F9FD30D90CC1AD070073837D /* tclInterp.c in Sources */, - F9FD30DA0CC1AD070073837D /* tclIO.c in Sources */, - F9FD30DB0CC1AD070073837D /* tclIOCmd.c in Sources */, - F9FD30DC0CC1AD070073837D /* tclIOGT.c in Sources */, - F9FD30DD0CC1AD070073837D /* tclIORChan.c in Sources */, - F9FFAF1D0DFDDB26007F8A6A /* tclIORTrans.c in Sources */, - F9FD30DE0CC1AD070073837D /* tclIOSock.c in Sources */, - F9FD30DF0CC1AD070073837D /* tclIOUtil.c in Sources */, - F9FD30E00CC1AD070073837D /* tclLink.c in Sources */, - F9FD30E10CC1AD070073837D /* tclListObj.c in Sources */, - F9FD30E20CC1AD070073837D /* tclLiteral.c in Sources */, - F9FD30E30CC1AD070073837D /* tclLoad.c in Sources */, - F9FD30E40CC1AD070073837D /* tclMain.c in Sources */, - F9FD30E50CC1AD070073837D /* tclNamesp.c in Sources */, - F9FD30E60CC1AD070073837D /* tclNotify.c in Sources */, - F9FD30E70CC1AD070073837D /* tclObj.c in Sources */, - F9FFAF1F0DFDDB2F007F8A6A /* tclOO.c in Sources */, - F9FFAF200DFDDB32007F8A6A /* tclOOBasic.c in Sources */, - F9FFAF210DFDDB32007F8A6A /* tclOOCall.c in Sources */, - F9FFAF220DFDDB34007F8A6A /* tclOODefineCmds.c in Sources */, - F9FFAF230DFDDB35007F8A6A /* tclOOInfo.c in Sources */, - F9FFAF240DFDDB36007F8A6A /* tclOOMethod.c in Sources */, - F9FFAF250DFDDB37007F8A6A /* tclOOStubInit.c in Sources */, - F9FFAF260DFDDB38007F8A6A /* tclOOStubLib.c in Sources */, - F9FD30E80CC1AD070073837D /* tclPanic.c in Sources */, - F9FD30E90CC1AD070073837D /* tclParse.c in Sources */, - F9FD30EA0CC1AD070073837D /* tclPathObj.c in Sources */, - F9FD30EB0CC1AD070073837D /* tclPipe.c in Sources */, - F9FD30EC0CC1AD070073837D /* tclPkg.c in Sources */, - F9FD30ED0CC1AD070073837D /* tclPkgConfig.c in Sources */, - F9FD30EE0CC1AD070073837D /* tclPosixStr.c in Sources */, - F9FD30EF0CC1AD070073837D /* tclPreserve.c in Sources */, - F9FD30F00CC1AD070073837D /* tclProc.c in Sources */, - F9FD30F10CC1AD070073837D /* tclRegexp.c in Sources */, - F9FD30F20CC1AD070073837D /* tclResolve.c in Sources */, - F9FD30F30CC1AD070073837D /* tclResult.c in Sources */, - F9FD30F40CC1AD070073837D /* tclScan.c in Sources */, - F9FD30F50CC1AD070073837D /* tclStringObj.c in Sources */, - F9FD30F60CC1AD070073837D /* tclStrToD.c in Sources */, - F9FD30F70CC1AD070073837D /* tclStubInit.c in Sources */, - F9FD30F80CC1AD070073837D /* tclStubLib.c in Sources */, - F9FD30F90CC1AD070073837D /* tclThread.c in Sources */, - F9FD30FA0CC1AD070073837D /* tclThreadAlloc.c in Sources */, - F9FD30FB0CC1AD070073837D /* tclThreadJoin.c in Sources */, - F9FD30FC0CC1AD070073837D /* tclThreadStorage.c in Sources */, - F9FD30FD0CC1AD070073837D /* tclTimer.c in Sources */, - F9FD30FE0CC1AD070073837D /* tclTomMathInterface.c in Sources */, - F9FD30FF0CC1AD070073837D /* tclTrace.c in Sources */, - F9FD31000CC1AD070073837D /* tclUtf.c in Sources */, - F9FD31010CC1AD070073837D /* tclUtil.c in Sources */, - F9FD31020CC1AD070073837D /* tclVar.c in Sources */, - F96437CB0EF0D4B2003F468E /* tclZlib.c in Sources */, - F9FD31030CC1AD070073837D /* bn_fast_s_mp_mul_digs.c in Sources */, - F9FD31040CC1AD070073837D /* bn_fast_s_mp_sqr.c in Sources */, - F9FD31050CC1AD070073837D /* bn_mp_add.c in Sources */, - F9FD31060CC1AD070073837D /* bn_mp_add_d.c in Sources */, - F9FD31070CC1AD070073837D /* bn_mp_and.c in Sources */, - F9FD31080CC1AD070073837D /* bn_mp_clamp.c in Sources */, - F9FD31090CC1AD070073837D /* bn_mp_clear.c in Sources */, - F9FD310A0CC1AD070073837D /* bn_mp_clear_multi.c in Sources */, - F9FD310B0CC1AD070073837D /* bn_mp_cmp.c in Sources */, - F9FD310C0CC1AD070073837D /* bn_mp_cmp_d.c in Sources */, - F9FD310D0CC1AD070073837D /* bn_mp_cmp_mag.c in Sources */, - F9FD310E0CC1AD070073837D /* bn_mp_copy.c in Sources */, - F9FD310F0CC1AD070073837D /* bn_mp_count_bits.c in Sources */, - F9FD31100CC1AD070073837D /* bn_mp_div.c in Sources */, - F9FD31110CC1AD070073837D /* bn_mp_div_2.c in Sources */, - F9FD31120CC1AD070073837D /* bn_mp_div_2d.c in Sources */, - F9FD31130CC1AD070073837D /* bn_mp_div_3.c in Sources */, - F9FD31140CC1AD070073837D /* bn_mp_div_d.c in Sources */, - F9FD31150CC1AD070073837D /* bn_mp_exch.c in Sources */, - F9FD31160CC1AD070073837D /* bn_mp_expt_d.c in Sources */, - F9FD31170CC1AD070073837D /* bn_mp_grow.c in Sources */, - F9FD31180CC1AD070073837D /* bn_mp_init.c in Sources */, - F9FD31190CC1AD070073837D /* bn_mp_init_copy.c in Sources */, - F9FD311A0CC1AD070073837D /* bn_mp_init_multi.c in Sources */, - F9FD311B0CC1AD070073837D /* bn_mp_init_set.c in Sources */, - F9FD311C0CC1AD070073837D /* bn_mp_init_size.c in Sources */, - F9FD311D0CC1AD070073837D /* bn_mp_karatsuba_mul.c in Sources */, - F9FD311E0CC1AD070073837D /* bn_mp_karatsuba_sqr.c in Sources */, - F9FD311F0CC1AD070073837D /* bn_mp_lshd.c in Sources */, - F9FD31200CC1AD070073837D /* bn_mp_mod.c in Sources */, - F9FD31210CC1AD070073837D /* bn_mp_mod_2d.c in Sources */, - F9FD31220CC1AD070073837D /* bn_mp_mul.c in Sources */, - F9FD31230CC1AD070073837D /* bn_mp_mul_2.c in Sources */, - F9FD31240CC1AD070073837D /* bn_mp_mul_2d.c in Sources */, - F9FD31250CC1AD070073837D /* bn_mp_mul_d.c in Sources */, - F9FD31260CC1AD070073837D /* bn_mp_neg.c in Sources */, - F9FD31270CC1AD070073837D /* bn_mp_or.c in Sources */, - F9FD31280CC1AD070073837D /* bn_mp_radix_size.c in Sources */, - F9FD31290CC1AD070073837D /* bn_mp_radix_smap.c in Sources */, - F9FD312A0CC1AD070073837D /* bn_mp_read_radix.c in Sources */, - F9FD312B0CC1AD070073837D /* bn_mp_rshd.c in Sources */, - F9FD312C0CC1AD070073837D /* bn_mp_set.c in Sources */, - F9FD312D0CC1AD070073837D /* bn_mp_shrink.c in Sources */, - F9FD312E0CC1AD070073837D /* bn_mp_sqr.c in Sources */, - F9FD312F0CC1AD070073837D /* bn_mp_sqrt.c in Sources */, - F9FD31300CC1AD070073837D /* bn_mp_sub.c in Sources */, - F9FD31310CC1AD070073837D /* bn_mp_sub_d.c in Sources */, - F9FD31320CC1AD070073837D /* bn_mp_to_unsigned_bin_n.c in Sources */, - F9FD31330CC1AD070073837D /* bn_mp_to_unsigned_bin.c in Sources */, - F9FD31340CC1AD070073837D /* bn_mp_toom_mul.c in Sources */, - F9FD31350CC1AD070073837D /* bn_mp_toom_sqr.c in Sources */, - F9FD31360CC1AD070073837D /* bn_mp_toradix_n.c in Sources */, - F9FD31370CC1AD070073837D /* bn_mp_unsigned_bin_size.c in Sources */, - F9FD31380CC1AD070073837D /* bn_mp_xor.c in Sources */, - F9FD31390CC1AD070073837D /* bn_mp_zero.c in Sources */, - F9FD313A0CC1AD070073837D /* bn_reverse.c in Sources */, - F9FD313B0CC1AD070073837D /* bn_s_mp_add.c in Sources */, - F9FD313C0CC1AD070073837D /* bn_s_mp_mul_digs.c in Sources */, - F9FD313D0CC1AD070073837D /* bn_s_mp_sqr.c in Sources */, - F9FD313E0CC1AD070073837D /* bn_s_mp_sub.c in Sources */, - F9FD313F0CC1AD070073837D /* bncore.c in Sources */, - F9FD31400CC1AD070073837D /* tclMacOSXBundle.c in Sources */, - F9FD31410CC1AD070073837D /* tclMacOSXFCmd.c in Sources */, - F9FD31420CC1AD070073837D /* tclMacOSXNotify.c in Sources */, - F9FD31430CC1AD070073837D /* tclLoadDyld.c in Sources */, - F9FD31440CC1AD070073837D /* tclUnixChan.c in Sources */, - F9FD31450CC1AD070073837D /* tclUnixCompat.c in Sources */, - F9FD31460CC1AD070073837D /* tclUnixEvent.c in Sources */, - F9FD31470CC1AD070073837D /* tclUnixFCmd.c in Sources */, - F9FD31480CC1AD070073837D /* tclUnixFile.c in Sources */, - F9FD31490CC1AD070073837D /* tclUnixInit.c in Sources */, - F9FD314A0CC1AD070073837D /* tclUnixNotfy.c in Sources */, - F9FD314B0CC1AD070073837D /* tclUnixPipe.c in Sources */, - F9FD314C0CC1AD070073837D /* tclUnixSock.c in Sources */, - F9FD314D0CC1AD070073837D /* tclUnixThrd.c in Sources */, - F9FD314E0CC1AD070073837D /* tclUnixTime.c in Sources */, - F9FD31E20CC1AD070073837D /* tclDTrace.d in Sources */, - F9FD314F0CC1AD070073837D /* tk3d.c in Sources */, - F9FD31500CC1AD070073837D /* tkArgv.c in Sources */, - F9FD31510CC1AD070073837D /* tkAtom.c in Sources */, - F9FD31520CC1AD070073837D /* tkBind.c in Sources */, - F9FD31530CC1AD070073837D /* tkBitmap.c in Sources */, - F9152B0A0EAF8A5700CD5C7B /* tkBusy.c in Sources */, - F9FD31540CC1AD070073837D /* tkButton.c in Sources */, - F9FD31550CC1AD070073837D /* tkCanvArc.c in Sources */, - F9FD31560CC1AD070073837D /* tkCanvas.c in Sources */, - F9FD31570CC1AD070073837D /* tkCanvBmap.c in Sources */, - F9FD31580CC1AD070073837D /* tkCanvImg.c in Sources */, - F9FD31590CC1AD070073837D /* tkCanvLine.c in Sources */, - F9FD315A0CC1AD070073837D /* tkCanvPoly.c in Sources */, - F9FD315B0CC1AD070073837D /* tkCanvPs.c in Sources */, - F9FD315C0CC1AD070073837D /* tkCanvText.c in Sources */, - F9FD315D0CC1AD070073837D /* tkCanvUtil.c in Sources */, - F9FD315E0CC1AD070073837D /* tkCanvWind.c in Sources */, - F9FD315F0CC1AD070073837D /* tkClipboard.c in Sources */, - F9FD31600CC1AD070073837D /* tkCmds.c in Sources */, - F9FD31610CC1AD070073837D /* tkColor.c in Sources */, - F9FD31620CC1AD070073837D /* tkConfig.c in Sources */, - F9FD31630CC1AD070073837D /* tkConsole.c in Sources */, - F9FD31640CC1AD070073837D /* tkCursor.c in Sources */, - F9FD31650CC1AD070073837D /* tkEntry.c in Sources */, - F9FD31660CC1AD070073837D /* tkError.c in Sources */, - F9FD31670CC1AD070073837D /* tkEvent.c in Sources */, - F9FD31680CC1AD070073837D /* tkFileFilter.c in Sources */, - F9FD31690CC1AD070073837D /* tkFocus.c in Sources */, - F9FD316A0CC1AD070073837D /* tkFont.c in Sources */, - F9FD316B0CC1AD070073837D /* tkFrame.c in Sources */, - F9FD316C0CC1AD070073837D /* tkGC.c in Sources */, - F9FD316D0CC1AD070073837D /* tkGeometry.c in Sources */, - F9FD316E0CC1AD070073837D /* tkGet.c in Sources */, - F9FD316F0CC1AD070073837D /* tkGrab.c in Sources */, - F9FD31700CC1AD070073837D /* tkGrid.c in Sources */, - F9FD31710CC1AD070073837D /* tkImage.c in Sources */, - F9FD31720CC1AD070073837D /* tkImgBmap.c in Sources */, - F9FD31730CC1AD070073837D /* tkImgGIF.c in Sources */, - F92EE8D30E62F939001A6E80 /* tkImgPhInstance.c in Sources */, - F9FD31740CC1AD070073837D /* tkImgPhoto.c in Sources */, - F9DD99BE0F07DF850018B2E4 /* tkImgPNG.c in Sources */, - F9FD31750CC1AD070073837D /* tkImgPPM.c in Sources */, - F9FD31760CC1AD070073837D /* tkListbox.c in Sources */, - F9FD31770CC1AD070073837D /* tkMacWinMenu.c in Sources */, - F9FD31780CC1AD070073837D /* tkMain.c in Sources */, - F9FD31790CC1AD070073837D /* tkMenu.c in Sources */, - F9FD317A0CC1AD070073837D /* tkMenubutton.c in Sources */, - F9FD317B0CC1AD070073837D /* tkMenuDraw.c in Sources */, - F9FD317C0CC1AD070073837D /* tkMessage.c in Sources */, - F9FD317D0CC1AD070073837D /* tkObj.c in Sources */, - F9FD317E0CC1AD070073837D /* tkOldConfig.c in Sources */, - F9FD31800CC1AD070073837D /* tkOption.c in Sources */, - F9FD31810CC1AD070073837D /* tkPack.c in Sources */, - F9FD31820CC1AD070073837D /* tkPanedWindow.c in Sources */, - F9FD31830CC1AD070073837D /* tkPlace.c in Sources */, - F9FD31850CC1AD070073837D /* tkRectOval.c in Sources */, - F9FD31860CC1AD070073837D /* tkScale.c in Sources */, - F9FD31870CC1AD070073837D /* tkScrollbar.c in Sources */, - F9FD31880CC1AD070073837D /* tkSelect.c in Sources */, - F9FD31890CC1AD070073837D /* tkSquare.c in Sources */, - F9FD318A0CC1AD070073837D /* tkStubInit.c in Sources */, - F9FD318B0CC1AD070073837D /* tkStubLib.c in Sources */, - F9FD318C0CC1AD070073837D /* tkStyle.c in Sources */, - F9FD318D0CC1AD070073837D /* tkTest.c in Sources */, - F9FD318E0CC1AD070073837D /* tkText.c in Sources */, - F9FD318F0CC1AD070073837D /* tkTextBTree.c in Sources */, - F9FD31900CC1AD070073837D /* tkTextDisp.c in Sources */, - F9FD31910CC1AD070073837D /* tkTextImage.c in Sources */, - F9FD31920CC1AD070073837D /* tkTextIndex.c in Sources */, - F9FD31930CC1AD070073837D /* tkTextMark.c in Sources */, - F9FD31940CC1AD070073837D /* tkTextTag.c in Sources */, - F9FD31950CC1AD070073837D /* tkTextWind.c in Sources */, - F9FD31960CC1AD070073837D /* tkTrig.c in Sources */, - F9FD31970CC1AD070073837D /* tkUndo.c in Sources */, - F9FD31980CC1AD070073837D /* tkUtil.c in Sources */, - F9FD31990CC1AD070073837D /* tkVisual.c in Sources */, - F9FD319A0CC1AD070073837D /* tkWindow.c in Sources */, - F9FD319B0CC1AD070073837D /* ttkBlink.c in Sources */, - F9FD319C0CC1AD070073837D /* ttkButton.c in Sources */, - F9FD319D0CC1AD070073837D /* ttkCache.c in Sources */, - F9FD319E0CC1AD070073837D /* ttkClamTheme.c in Sources */, - F9FD319F0CC1AD070073837D /* ttkClassicTheme.c in Sources */, - F9FD31A00CC1AD070073837D /* ttkDefaultTheme.c in Sources */, - F9FD31A10CC1AD070073837D /* ttkElements.c in Sources */, - F9FD31A20CC1AD070073837D /* ttkEntry.c in Sources */, - F9FD31A30CC1AD070073837D /* ttkFrame.c in Sources */, - F9FD31A40CC1AD070073837D /* ttkImage.c in Sources */, - F9FD31A50CC1AD070073837D /* ttkInit.c in Sources */, - F9FD31A60CC1AD070073837D /* ttkLabel.c in Sources */, - F9FD31A70CC1AD070073837D /* ttkLayout.c in Sources */, - F9FD31A80CC1AD070073837D /* ttkManager.c in Sources */, - F9FD31A90CC1AD070073837D /* ttkNotebook.c in Sources */, - F9FD31AA0CC1AD070073837D /* ttkPanedwindow.c in Sources */, - F9FD31AB0CC1AD070073837D /* ttkProgress.c in Sources */, - F9FD31AC0CC1AD070073837D /* ttkScale.c in Sources */, - F9FD31AD0CC1AD070073837D /* ttkScroll.c in Sources */, - F9FD31AE0CC1AD070073837D /* ttkScrollbar.c in Sources */, - F9FD31AF0CC1AD070073837D /* ttkSeparator.c in Sources */, - F9FD31B00CC1AD070073837D /* ttkSquare.c in Sources */, - F9FD31B10CC1AD070073837D /* ttkState.c in Sources */, - F9FD31B20CC1AD070073837D /* ttkStubInit.c in Sources */, - F9FD31B30CC1AD070073837D /* ttkStubLib.c in Sources */, - F9FD31B40CC1AD070073837D /* ttkTagSet.c in Sources */, - F9FD31B50CC1AD070073837D /* ttkTheme.c in Sources */, - F9FD31B60CC1AD070073837D /* ttkTrace.c in Sources */, - F9FD31B70CC1AD070073837D /* ttkTrack.c in Sources */, - F9FD31B80CC1AD070073837D /* ttkTreeview.c in Sources */, - F9FD31B90CC1AD070073837D /* ttkWidget.c in Sources */, - F9FD31DA0CC1AD070073837D /* tkAppInit.c in Sources */, - F9FD32020CC1ADB70073837D /* tkUnix.c in Sources */, - F9FD31DB0CC1AD070073837D /* tkUnix3d.c in Sources */, - F9FD320A0CC1ADB70073837D /* tkUnixButton.c in Sources */, - F9FD32090CC1ADB70073837D /* tkUnixColor.c in Sources */, - F9FD32040CC1ADB70073837D /* tkUnixConfig.c in Sources */, - F9FD31F80CC1ADB70073837D /* tkUnixCursor.c in Sources */, - F9FD32050CC1ADB70073837D /* tkUnixDraw.c in Sources */, - F9FD31FD0CC1ADB70073837D /* tkUnixEmbed.c in Sources */, - F9FD32080CC1ADB70073837D /* tkUnixEvent.c in Sources */, - F9FD31FF0CC1ADB70073837D /* tkUnixFocus.c in Sources */, - F9FD31FC0CC1ADB70073837D /* tkUnixInit.c in Sources */, - F9FD31FA0CC1ADB70073837D /* tkUnixKey.c in Sources */, - F9FD32030CC1ADB70073837D /* tkUnixMenu.c in Sources */, - F9FD320B0CC1ADB70073837D /* tkUnixMenubu.c in Sources */, - F9FD32010CC1ADB70073837D /* tkUnixRFont.c in Sources */, - F9FD31DC0CC1AD070073837D /* tkUnixScale.c in Sources */, - F9FD320C0CC1ADB70073837D /* tkUnixScrlbr.c in Sources */, - F9FD32070CC1ADB70073837D /* tkUnixSelect.c in Sources */, - F9FD31FE0CC1ADB70073837D /* tkUnixSend.c in Sources */, - F9FD32000CC1ADB70073837D /* tkUnixWm.c in Sources */, - F9FD31FB0CC1ADB70073837D /* tkUnixXId.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - F90E36D50F3B5C8400810A10 /* DebugNoGC */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = unsupported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = DebugNoGC; - }; - F90E36D60F3B5C8400810A10 /* DebugNoGC */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugNoGC; - }; - F90E36D70F3B5C8400810A10 /* DebugNoGC */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugNoGC; - }; - F90E36D80F3B5C8400810A10 /* DebugNoGC */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_INPUT_FILETYPE = sourcecode.c.c; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugNoGC; - }; - F91BCC4F093152310042A6BF /* ReleaseUniversal */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = ReleaseUniversal; - }; - F91BCC50093152310042A6BF /* ReleaseUniversal */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = ReleaseUniversal; - }; - F91BCC51093152310042A6BF /* ReleaseUniversal */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PREBINDING = NO; - }; - name = ReleaseUniversal; - }; - F93084370BB93D2800CD0B9E /* DebugMemCompile */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugMemCompile; - }; - F93084380BB93D2800CD0B9E /* DebugMemCompile */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugMemCompile; - }; - F93084390BB93D2800CD0B9E /* DebugMemCompile */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugMemCompile; - }; - F930843A0BB93D2800CD0B9E /* DebugMemCompile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --enable-symbols=all"; - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = DebugMemCompile; - }; - F9359B250DF212DA00E04F67 /* DebugGCov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS)", - "-lgcov", - ); - PREBINDING = NO; - }; - name = DebugGCov; - }; - F9359B260DF212DA00E04F67 /* DebugGCov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugGCov; - }; - F9359B270DF212DA00E04F67 /* DebugGCov */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugGCov; - }; - F9359B280DF212DA00E04F67 /* DebugGCov */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugGCov; - }; - F95CC8AC09158F3100EA5ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = Debug; - }; - F95CC8AD09158F3100EA5ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = Release; - }; - F95CC8AE09158F3100EA5ACE /* DebugNoFixAndContinue */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugNoFixAndContinue; - }; - F95CC8B109158F3100EA5ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = Debug; - }; - F95CC8B209158F3100EA5ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = Release; - }; - F95CC8B309158F3100EA5ACE /* DebugNoFixAndContinue */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugNoFixAndContinue; - }; - F95CC8B609158F3100EA5ACE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = Debug; - }; - F95CC8B709158F3100EA5ACE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = Release; - }; - F95CC8B809158F3100EA5ACE /* DebugNoFixAndContinue */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = DebugNoFixAndContinue; - }; - F97258A90A86873D00096C78 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_INPUT_FILETYPE = sourcecode.c.c; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = Debug; - }; - F97258AA0A86873D00096C78 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = Release; - }; - F97258AB0A86873D00096C78 /* DebugNoFixAndContinue */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugNoFixAndContinue; - }; - F97258AC0A86873D00096C78 /* ReleaseUniversal */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = ReleaseUniversal; - }; - F987512F0DE7B57E00B1C9EC /* DebugNoCF */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --disable-corefoundation"; - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = DebugNoCF; - }; - F98751300DE7B57E00B1C9EC /* DebugNoCF */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --enable-corefoundation"; - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugNoCF; - }; - F98751310DE7B57E00B1C9EC /* DebugNoCF */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "$(CONFIGURE_ARGS) --enable-corefoundation"; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugNoCF; - }; - F98751320DE7B57E00B1C9EC /* DebugNoCF */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugNoCF; - }; - F9988AB10D814C6500B6B03B /* Debug gcc40 */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_VERSION = 4.0; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = "Debug gcc40"; - }; - F9988AB20D814C6500B6B03B /* Debug gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "Debug gcc40"; - }; - F9988AB30D814C6500B6B03B /* Debug gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "Debug gcc40"; - }; - F9988AB40D814C6500B6B03B /* Debug gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_INPUT_FILETYPE = sourcecode.c.c; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "Debug gcc40"; - }; - F9988AB50D814C7500B6B03B /* Debug llvm-gcc */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC = "llvm-gcc"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_VERSION = com.apple.compilers.llvmgcc42; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = "Debug llvm-gcc"; - }; - F9988AB60D814C7500B6B03B /* Debug llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "Debug llvm-gcc"; - }; - F9988AB70D814C7500B6B03B /* Debug llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "Debug llvm-gcc"; - }; - F9988AB80D814C7500B6B03B /* Debug llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_INPUT_FILETYPE = sourcecode.c.c; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "Debug llvm-gcc"; - }; - F9988BB10D81586D00B6B03B /* ReleaseUniversal gcc40 */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_VERSION = 4.0; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PREBINDING = NO; - }; - name = "ReleaseUniversal gcc40"; - }; - F9988BB20D81586D00B6B03B /* ReleaseUniversal gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "ReleaseUniversal gcc40"; - }; - F9988BB30D81586D00B6B03B /* ReleaseUniversal gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "ReleaseUniversal gcc40"; - }; - F9988BB40D81586D00B6B03B /* ReleaseUniversal gcc40 */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "ReleaseUniversal gcc40"; - }; - F9988BB50D81587400B6B03B /* ReleaseUniversal llvm-gcc */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC = "llvm-gcc"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_OPTIMIZATION_LEVEL = 4; - "GCC_OPTIMIZATION_LEVEL[arch=ppc]" = s; - GCC_VERSION = com.apple.compilers.llvmgcc42; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PREBINDING = NO; - }; - name = "ReleaseUniversal llvm-gcc"; - }; - F9988BB60D81587400B6B03B /* ReleaseUniversal llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "ReleaseUniversal llvm-gcc"; - }; - F9988BB70D81587400B6B03B /* ReleaseUniversal llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "ReleaseUniversal llvm-gcc"; - }; - F9988BB80D81587400B6B03B /* ReleaseUniversal llvm-gcc */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "ReleaseUniversal llvm-gcc"; - }; - F99EE73C0BE835310060D4AF /* DebugLeaks */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = DebugLeaks; - }; - F99EE73E0BE835310060D4AF /* DebugLeaks */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = DebugLeaks; - }; - F99EE7400BE835310060D4AF /* DebugLeaks */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = DebugLeaks; - }; - F99EE7420BE835310060D4AF /* DebugLeaks */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = unsupported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_PREPROCESSOR_DEFINITIONS = ( - PURIFY, - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - RUN_CLANG_STATIC_ANALYZER = YES; - }; - name = DebugLeaks; - }; - F9A9D1EF0FC77787002A2BE3 /* Debug clang */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE8330B65C87F00310EA2 /* Tk-Debug.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - "$(NATIVE_ARCH_32_BIT)", - ); - CPPFLAGS = "-arch $(CURRENT_ARCH) $(CPPFLAGS)"; - GCC = clang; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - MACOSX_DEPLOYMENT_TARGET = 10.6; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - }; - name = "Debug clang"; - }; - F9A9D1F00FC77787002A2BE3 /* Debug clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "Debug clang"; - }; - F9A9D1F10FC77787002A2BE3 /* Debug clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "Debug clang"; - }; - F9A9D1F20FC77787002A2BE3 /* Debug clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - CONFIGURE_ARGS = "tcl_cv_cc_visibility_hidden=no $(CONFIGURE_ARGS)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "__private_extern__=extern", - "$(GCC_PREPROCESSOR_DEFINITIONS)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "Debug clang"; - }; - F9A9D1F30FC77799002A2BE3 /* ReleaseUniversal clang */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - ); - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC = clang; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - GCC_OPTIMIZATION_LEVEL = 4; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PREBINDING = NO; - }; - name = "ReleaseUniversal clang"; - }; - F9A9D1F40FC77799002A2BE3 /* ReleaseUniversal clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = "ReleaseUniversal clang"; - }; - F9A9D1F50FC77799002A2BE3 /* ReleaseUniversal clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = "ReleaseUniversal clang"; - }; - F9A9D1F60FC77799002A2BE3 /* ReleaseUniversal clang */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = "ReleaseUniversal clang"; - }; - F9EEED960C2FEFD300396116 /* ReleaseUniversal10.5SDK */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = Wish; - SKIP_INSTALL = NO; - }; - name = ReleaseUniversal10.5SDK; - }; - F9EEED970C2FEFD300396116 /* ReleaseUniversal10.5SDK */ = { - isa = XCBuildConfiguration; - buildSettings = { - OTHER_LDFLAGS = ( - "$(OTHER_LDFLAGS_AQUA)", - "$(OTHER_LDFLAGS)", - ); - PRODUCT_NAME = tktest; - }; - name = ReleaseUniversal10.5SDK; - }; - F9EEED980C2FEFD300396116 /* ReleaseUniversal10.5SDK */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - GCC_INPUT_FILETYPE = sourcecode.c.c; - HEADER_SEARCH_PATHS = ( - /usr/X11R6/include, - /usr/X11R6/include/freetype2, - "$(HEADER_SEARCH_PATHS)", - ); - LIBRARY_SEARCH_PATHS = ( - /usr/X11R6/lib, - "$(LIBRARY_SEARCH_PATHS)", - ); - PRODUCT_NAME = "tktest-X11"; - }; - name = ReleaseUniversal10.5SDK; - }; - F9EEED990C2FEFD300396116 /* ReleaseUniversal10.5SDK */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F97AE82B0B65C69B00310EA2 /* Tk-Release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CFLAGS = "-arch x86_64 -arch arm64 $(CFLAGS)"; - CPPFLAGS = "-isysroot $(SDKROOT) $(CPPFLAGS)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_GC = supported; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_INPUT_FILETYPE = sourcecode.c.objc; - MACOSX_DEPLOYMENT_TARGET = 10.5; - PREBINDING = NO; - SDKROOT = macosx10.5; - }; - name = ReleaseUniversal10.5SDK; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - F95CC8AB09158F3100EA5ACE /* Build configuration list for PBXNativeTarget "Tk" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F95CC8AC09158F3100EA5ACE /* Debug */, - F9A9D1F00FC77787002A2BE3 /* Debug clang */, - F9988AB60D814C7500B6B03B /* Debug llvm-gcc */, - F9988AB20D814C6500B6B03B /* Debug gcc40 */, - F90E36D60F3B5C8400810A10 /* DebugNoGC */, - F95CC8AE09158F3100EA5ACE /* DebugNoFixAndContinue */, - F98751300DE7B57E00B1C9EC /* DebugNoCF */, - F93084370BB93D2800CD0B9E /* DebugMemCompile */, - F99EE73C0BE835310060D4AF /* DebugLeaks */, - F9359B260DF212DA00E04F67 /* DebugGCov */, - F95CC8AD09158F3100EA5ACE /* Release */, - F91BCC4F093152310042A6BF /* ReleaseUniversal */, - F9A9D1F40FC77799002A2BE3 /* ReleaseUniversal clang */, - F9988BB60D81587400B6B03B /* ReleaseUniversal llvm-gcc */, - F9988BB20D81586D00B6B03B /* ReleaseUniversal gcc40 */, - F9EEED960C2FEFD300396116 /* ReleaseUniversal10.5SDK */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - F95CC8B009158F3100EA5ACE /* Build configuration list for PBXNativeTarget "tktest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F95CC8B109158F3100EA5ACE /* Debug */, - F9A9D1F10FC77787002A2BE3 /* Debug clang */, - F9988AB70D814C7500B6B03B /* Debug llvm-gcc */, - F9988AB30D814C6500B6B03B /* Debug gcc40 */, - F90E36D70F3B5C8400810A10 /* DebugNoGC */, - F95CC8B309158F3100EA5ACE /* DebugNoFixAndContinue */, - F98751310DE7B57E00B1C9EC /* DebugNoCF */, - F93084380BB93D2800CD0B9E /* DebugMemCompile */, - F99EE73E0BE835310060D4AF /* DebugLeaks */, - F9359B270DF212DA00E04F67 /* DebugGCov */, - F95CC8B209158F3100EA5ACE /* Release */, - F91BCC50093152310042A6BF /* ReleaseUniversal */, - F9A9D1F50FC77799002A2BE3 /* ReleaseUniversal clang */, - F9988BB70D81587400B6B03B /* ReleaseUniversal llvm-gcc */, - F9988BB30D81586D00B6B03B /* ReleaseUniversal gcc40 */, - F9EEED970C2FEFD300396116 /* ReleaseUniversal10.5SDK */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - F95CC8B509158F3100EA5ACE /* Build configuration list for PBXProject "Tk" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F95CC8B609158F3100EA5ACE /* Debug */, - F9A9D1EF0FC77787002A2BE3 /* Debug clang */, - F9988AB50D814C7500B6B03B /* Debug llvm-gcc */, - F9988AB10D814C6500B6B03B /* Debug gcc40 */, - F90E36D50F3B5C8400810A10 /* DebugNoGC */, - F95CC8B809158F3100EA5ACE /* DebugNoFixAndContinue */, - F987512F0DE7B57E00B1C9EC /* DebugNoCF */, - F930843A0BB93D2800CD0B9E /* DebugMemCompile */, - F99EE7420BE835310060D4AF /* DebugLeaks */, - F9359B250DF212DA00E04F67 /* DebugGCov */, - F95CC8B709158F3100EA5ACE /* Release */, - F91BCC51093152310042A6BF /* ReleaseUniversal */, - F9A9D1F30FC77799002A2BE3 /* ReleaseUniversal clang */, - F9988BB50D81587400B6B03B /* ReleaseUniversal llvm-gcc */, - F9988BB10D81586D00B6B03B /* ReleaseUniversal gcc40 */, - F9EEED990C2FEFD300396116 /* ReleaseUniversal10.5SDK */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - F97258A80A86873D00096C78 /* Build configuration list for PBXNativeTarget "tktest-X11" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F97258A90A86873D00096C78 /* Debug */, - F9A9D1F20FC77787002A2BE3 /* Debug clang */, - F9988AB80D814C7500B6B03B /* Debug llvm-gcc */, - F9988AB40D814C6500B6B03B /* Debug gcc40 */, - F90E36D80F3B5C8400810A10 /* DebugNoGC */, - F97258AB0A86873D00096C78 /* DebugNoFixAndContinue */, - F98751320DE7B57E00B1C9EC /* DebugNoCF */, - F93084390BB93D2800CD0B9E /* DebugMemCompile */, - F99EE7400BE835310060D4AF /* DebugLeaks */, - F9359B280DF212DA00E04F67 /* DebugGCov */, - F97258AA0A86873D00096C78 /* Release */, - F97258AC0A86873D00096C78 /* ReleaseUniversal */, - F9A9D1F60FC77799002A2BE3 /* ReleaseUniversal clang */, - F9988BB80D81587400B6B03B /* ReleaseUniversal llvm-gcc */, - F9988BB40D81586D00B6B03B /* ReleaseUniversal gcc40 */, - F9EEED980C2FEFD300396116 /* ReleaseUniversal10.5SDK */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; -} Index: macosx/tkMacOSXButton.c ================================================================== --- macosx/tkMacOSXButton.c +++ macosx/tkMacOSXButton.c @@ -192,11 +192,11 @@ if ((butPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } pixmap = (Pixmap) Tk_WindowId(tkwin); - Tk_GetPixelsFromObj(NULL, tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (TkMacOSXComputeButtonDrawParams(butPtr, dpPtr)) { macButtonPtr->useTkText = 0; } else { macButtonPtr->useTkText = 1; @@ -313,12 +313,12 @@ } else if (butPtr->bitmap != None) { Tk_SizeOfBitmap(butPtr->display, butPtr->bitmap, &width, &height); haveImage = 1; } - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padXObj, &butPtr->padX); - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padYObj, &butPtr->padY); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padXPtr, &butPtr->padX); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padYPtr, &butPtr->padY); if (haveImage == 0 || butPtr->compound != COMPOUND_NONE) { Tk_FreeTextLayout(butPtr->textLayout); butPtr->textLayout = Tk_ComputeTextLayout(butPtr->tkfont, text, TCL_INDEX_NONE, butPtr->wrapLength, butPtr->justify, 0, @@ -387,12 +387,12 @@ /* * Now figure out the size of the border decorations for the button. */ - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthObj, &butPtr->borderWidth); - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthPtr, &butPtr->borderWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); butPtr->inset = butPtr->borderWidth + butPtr->highlightWidth; width += butPtr->inset * 2; height += butPtr->inset * 2; @@ -475,14 +475,14 @@ if (mbPtr->drawinfo.state == kThemeStatePressed) { pressed = 1; } - Tk_GetPixelsFromObj(NULL, tkwin, butPtr->padXObj, &butPtr->padX); - Tk_GetPixelsFromObj(NULL, tkwin, butPtr->padYObj, &butPtr->padY); - Tk_GetPixelsFromObj(NULL, tkwin, butPtr->borderWidthObj, &butPtr->borderWidth); - Tk_GetPixelsFromObj(NULL, tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, tkwin, butPtr->padXPtr, &butPtr->padX); + Tk_GetPixelsFromObj(NULL, tkwin, butPtr->padYPtr, &butPtr->padY); + Tk_GetPixelsFromObj(NULL, tkwin, butPtr->borderWidthPtr, &butPtr->borderWidth); + Tk_GetPixelsFromObj(NULL, tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); haveText = (butPtr->textWidth != 0 && butPtr->textHeight != 0); if (butPtr->compound != COMPOUND_NONE && haveImage && haveText) { /* Image and Text */ int x, y; @@ -956,12 +956,12 @@ ThemeButtonKind *btnkind, HIThemeButtonDrawInfo *drawinfo) { MacButton *mbPtr = (MacButton *) butPtr; - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthObj, &butPtr->borderWidth); - Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &butPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthPtr, &butPtr->borderWidth); + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (butPtr->borderWidth <= 2) { *btnkind = kThemeSmallBevelButton; } else if (butPtr->borderWidth == 3) { *btnkind = kThemeBevelButton; Index: macosx/tkMacOSXClipboard.c ================================================================== --- macosx/tkMacOSXClipboard.c +++ macosx/tkMacOSXClipboard.c @@ -124,12 +124,12 @@ TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; int haveExternalClip = ([[NSPasteboard generalPasteboard] changeCount] != changeCount); if (dispPtr && (haveExternalClip || dispPtr->clipboardActive) - && selection == dispPtr->clipboardAtom - && (target == XA_STRING || target == dispPtr->utf8Atom)) { + && selection == dispPtr->clipboardAtom + && (target == XA_STRING || target == dispPtr->utf8Atom)) { NSString *string = nil; NSPasteboard *pb = [NSPasteboard generalPasteboard]; NSString *type = [pb availableTypeFromArray:[NSArray arrayWithObject: NSStringPboardType]]; Index: macosx/tkMacOSXColor.c ================================================================== --- macosx/tkMacOSXColor.c +++ macosx/tkMacOSXColor.c @@ -50,11 +50,11 @@ NSString *key; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 if (@available(macOS 10.14, *)) { darkAqua = [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]; - lightAqua = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; + lightAqua = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; } #endif /* * Build a hash table for looking up a color by its name. @@ -101,11 +101,11 @@ entry = (SystemColorDatum *)ckalloc(sizeof(SystemColorDatum)); bzero(entry, sizeof(SystemColorDatum)); name = (char *)ckalloc(length + 1); strcpy(name, key.UTF8String); name[0] = (char)toupper(UCHAR(name[0])); - if (!strcmp(name, "WindowBackgroundColor")) { + if (!strcmp(name, "WindowBackgroundColor")) { /* * Avoid black windows on old systems. */ @@ -190,12 +190,12 @@ unsigned long blue) { MacPixel p = {0}; p.pixel.colortype = rgbColor; p.pixel.value = (unsigned int)(((red & 0xff) << 16) | - ((green & 0xff) << 8) | - (blue & 0xff)); + ((green & 0xff) << 8) | + (blue & 0xff)); return p.ulong; } /* *---------------------------------------------------------------------- @@ -434,11 +434,11 @@ TkMacOSXInDarkMode(Tk_Window tkwin) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 if (@available(macOS 10.14, *)) { - TkWindow *winPtr = (TkWindow*) tkwin; + TkWindow *winPtr = (TkWindow*) tkwin; NSAppearanceName name; NSView *view = nil; if (winPtr && winPtr->privatePtr) { view = TkMacOSXGetNSViewForDrawable((Drawable)winPtr->privatePtr); } @@ -609,11 +609,10 @@ Display *display = NULL; TkColor *tkColPtr; XColor color; Colormap colormap = tkwin ? Tk_Colormap(tkwin) : noColormap; NSView *view = nil; - Bool haveValidXColor = False; static Bool initialized = NO; if (!initialized) { initialized = YES; initColorTable(); @@ -637,26 +636,20 @@ CGColorRef c = NULL; p.pixel.colortype = entry->type; p.pixel.value = (unsigned int)entry->index; color.pixel = p.ulong; - -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 - NSAppearance *windowAppearance; - if (@available(macOS 10.14, *)) { - if (view) { - windowAppearance = [view effectiveAppearance]; - } else { - windowAppearance = [NSApp effectiveAppearance]; - } - } -#endif - if (entry->type == semantic) { CGFloat rgba[4]; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 if (@available(macOS 10.14, *)) { + NSAppearance *windowAppearance; + if (view) { + windowAppearance = [view effectiveAppearance]; + } else { + windowAppearance = [NSApp effectiveAppearance]; + } if ([windowAppearance name] == NSAppearanceNameDarkAqua) { colormap = darkColormap; } else { colormap = lightColormap; } @@ -676,17 +669,17 @@ #endif } } else { GetRGBA(entry, p.ulong, rgba); } -#else //MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 +#else GetRGBA(entry, p.ulong, rgba); +#endif color.red = (unsigned short)(rgba[0] * 65535.0); color.green = (unsigned short)(rgba[1] * 65535.0); color.blue = (unsigned short)(rgba[2] * 65535.0); -#endif //MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 - haveValidXColor = True; + goto validXColor; } else if (SetCGColorComponents(entry, 0, &c)) { const size_t n = CGColorGetNumberOfComponents(c); const CGFloat *rgba = CGColorGetComponents(c); switch (n) { @@ -700,30 +693,19 @@ break; default: Tcl_Panic("CGColor with %d components", (int) n); } CGColorRelease(c); - haveValidXColor = True; - } -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 - if (@available(macOS 10.14, *)) { - // Not sure whether colormap should also be set for non-semantic color - if (haveValidXColor && entry->type == semantic) { - if ([windowAppearance name] == NSAppearanceNameDarkAqua) { - colormap = darkColormap; - } else { - colormap = lightColormap; - } - } - } -#endif - } - } - if (!haveValidXColor && TkParseColor(display, colormap, name, &color) == 0) { + goto validXColor; + } + } + } + if (TkParseColor(display, colormap, name, &color) == 0) { return NULL; } +validXColor: tkColPtr = (TkColor *)ckalloc(sizeof(TkColor)); tkColPtr->colormap = colormap; tkColPtr->color = color; return tkColPtr; } Index: macosx/tkMacOSXColor.h ================================================================== --- macosx/tkMacOSXColor.h +++ macosx/tkMacOSXColor.h @@ -36,10 +36,14 @@ enum colorType { rgbColor, /* The 24 bit value is an rgb color. */ clearColor, /* The unique rgba color with all channels 0. */ HIBrush, /* A HITheme brush color.*/ +#if TCL_MAJOR_VERSION < 9 + HIText, /* A HITheme text color (32-bit only). */ + HIBackground, /* A HITheme background color (32-bit only). */ +#endif ttkBackground, /* A background color which indicates nesting level.*/ semantic, /* A semantic NSColor.*/ }; typedef struct xpixel_t { Index: macosx/tkMacOSXConstants.h ================================================================== --- macosx/tkMacOSXConstants.h +++ macosx/tkMacOSXConstants.h @@ -13,29 +13,16 @@ */ #ifndef _TKMACCONSTANTS #define _TKMACCONSTANTS -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 -#define NSFullScreenWindowMask (1 << 14) -#endif - -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1090 -typedef NSInteger NSModalResponse; -#endif - /* * Let's raise a glass for the project manager who improves our lives by * generating deprecation warnings about pointless changes of the names * of constants. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 -#define kCTFontDefaultOrientation kCTFontOrientationDefault -#define kCTFontVerticalOrientation kCTFontOrientationVertical -#endif - #if MAC_OS_X_VERSION_MIN_REQUIRED >= 101000 #define NSOKButton NSModalResponseOK #endif #if MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 Index: macosx/tkMacOSXDefault.h ================================================================== --- macosx/tkMacOSXDefault.h +++ macosx/tkMacOSXDefault.h @@ -377,12 +377,12 @@ #define DEF_MESSAGE_FONT "TkDefaultFont" #define DEF_MESSAGE_HIGHLIGHT_BG NORMAL_BG #define DEF_MESSAGE_HIGHLIGHT NORMAL_FG #define DEF_MESSAGE_HIGHLIGHT_WIDTH "0" #define DEF_MESSAGE_JUSTIFY "left" -#define DEF_MESSAGE_PADX NULL -#define DEF_MESSAGE_PADY NULL +#define DEF_MESSAGE_PADX "-1" +#define DEF_MESSAGE_PADY "-1" #define DEF_MESSAGE_RELIEF "flat" #define DEF_MESSAGE_TAKE_FOCUS "0" #define DEF_MESSAGE_TEXT "" #define DEF_MESSAGE_TEXT_VARIABLE "" #define DEF_MESSAGE_WIDTH "0" @@ -473,11 +473,11 @@ #define DEF_SCROLLBAR_BG_COLOR NORMAL_BG #define DEF_SCROLLBAR_BG_MONO WHITE #define DEF_SCROLLBAR_BORDER_WIDTH "0" #define DEF_SCROLLBAR_COMMAND "" #define DEF_SCROLLBAR_CURSOR "" -#define DEF_SCROLLBAR_EL_BORDER_WIDTH NULL +#define DEF_SCROLLBAR_EL_BORDER_WIDTH "-1" #define DEF_SCROLLBAR_HIGHLIGHT_BG NORMAL_BG #define DEF_SCROLLBAR_HIGHLIGHT NORMAL_FG #define DEF_SCROLLBAR_HIGHLIGHT_WIDTH "0" #define DEF_SCROLLBAR_JUMP "0" #define DEF_SCROLLBAR_ORIENT "vertical" Index: macosx/tkMacOSXDialog.c ================================================================== --- macosx/tkMacOSXDialog.c +++ macosx/tkMacOSXDialog.c @@ -462,11 +462,11 @@ switch (index) { case COLOR_INITIAL: { XColor *colorPtr; - colorPtr = Tk_GetColor(interp, tkwin, value); + colorPtr = Tk_AllocColorFromObj(interp, tkwin, objv[i + 1]); if (colorPtr == NULL) { goto end; } initialColor = TkMacOSXGetNSColor(NULL, colorPtr->pixel); Tk_FreeColor(colorPtr); Index: macosx/tkMacOSXDraw.c ================================================================== --- macosx/tkMacOSXDraw.c +++ macosx/tkMacOSXDraw.c @@ -84,25 +84,25 @@ if (Tcl_CreateNamespace(interp, "::tk::mac", NULL, NULL) == NULL) { Tcl_ResetResult(interp); } if (Tcl_LinkVar(interp, "::tk::mac::CGAntialiasLimit", - &cgAntiAliasLimit, TCL_LINK_INT) != TCL_OK) { + (char *)&cgAntiAliasLimit, TCL_LINK_INT) != TCL_OK) { Tcl_ResetResult(interp); } cgAntiAliasLimit = limit; /* * Piggy-back the themed drawing var init here. */ if (Tcl_LinkVar(interp, "::tk::mac::useThemedToplevel", - &useThemedToplevel, TCL_LINK_BOOLEAN) != TCL_OK) { + (char *)&useThemedToplevel, TCL_LINK_BOOLEAN) != TCL_OK) { Tcl_ResetResult(interp); } if (Tcl_LinkVar(interp, "::tk::mac::useThemedFrame", - &useThemedFrame, TCL_LINK_BOOLEAN) != TCL_OK) { + (char *)&useThemedFrame, TCL_LINK_BOOLEAN) != TCL_OK) { Tcl_ResetResult(interp); } transparentColor = TkMacOSXClearPixel(); } return TCL_OK; @@ -281,12 +281,11 @@ /* *---------------------------------------------------------------------- * * TkMacOSXDrawCGImage -- * - * Draw CG image into drawable. The entire image is used, and will - * be rescaled if its dimensions do not equal dstBounds.size. + * Draw CG image into drawable. * * Results: * None. * * Side effects: @@ -301,15 +300,29 @@ GC gc, CGContextRef context, CGImageRef image, unsigned long imageForeground, unsigned long imageBackground, + CGRect imageBounds, + CGRect srcBounds, CGRect dstBounds) { MacDrawable *macDraw = (MacDrawable *)d; if (macDraw && context && image) { + CGImageRef subImage = NULL; + + if (!CGRectEqualToRect(imageBounds, srcBounds)) { + if (!CGRectContainsRect(imageBounds, srcBounds)) { + TkMacOSXDbgMsg("Mismatch of sub CGImage bounds"); + } + subImage = CGImageCreateWithImageInRect(image, CGRectOffset( + srcBounds, -imageBounds.origin.x, -imageBounds.origin.y)); + if (subImage) { + image = subImage; + } + } dstBounds = CGRectOffset(dstBounds, macDraw->xOff, macDraw->yOff); if (CGImageIsMask(image)) { if (macDraw->flags & TK_IS_BW_PIXMAP) { /* @@ -354,10 +367,13 @@ CGContextTranslateCTM(context, 0, dstBounds.origin.y + CGRectGetMaxY(dstBounds)); CGContextScaleCTM(context, 1, -1); CGContextDrawImage(context, dstBounds, image); CGContextRestoreGState(context); #endif /* TK_MAC_DEBUG_IMAGE_DRAWING */ + if (subImage) { + CFRelease(subImage); + } } else { TkMacOSXDbgMsg("Drawing of empty CGImage requested"); } } @@ -1075,27 +1091,10 @@ * region. * * Results: * Returns 0 if the scroll generated no additional damage. Otherwise, sets * the region that needs to be repainted after scrolling and returns 1. - * When drawRect was in use, this function used the now deprecated - * scrollRect method of NSView. With the current updateLayer - * implementation, using a CGImage as the view's backing layer, we are - * able to use XCopyArea. But both implementations are incomplete. - * They return a damage area which is just the source rectangle minus - * destination rectangle. Other platforms, e.g. Windows, where - * this function is essentially provided by the windowing system, - * are able to add to the damage region the bounding rectangles of - * all subwindows which meet the source rectangle, even if they are - * contained in the destination rectangle. The information needed - * to do that is not available in this module, as far as I know. - * - * In fact, the Text widget is the only one which calls this - * function, and textDisp.c compensates for this defect by using - * macOS-specific code. This is possible because access to the - * list of all embedded windows in a Text widget is available in - * that module. * * Side effects: * Scrolls the bits in the window. * *---------------------------------------------------------------------- @@ -1102,25 +1101,40 @@ */ int TkScrollWindow( Tk_Window tkwin, /* The window to be scrolled. */ - GC gc, /* GC for window to be scrolled. */ + TCL_UNUSED(GC), /* GC for window to be scrolled. */ int x, int y, /* Position rectangle to be scrolled. */ int width, int height, int dx, int dy, /* Distance rectangle should be moved. */ Region damageRgn) /* Region to accumulate damage in. */ { Drawable drawable = Tk_WindowId(tkwin); + MacDrawable *macDraw = (MacDrawable *)drawable; + TKContentView *view = (TKContentView *)TkMacOSXGetNSViewForDrawable(macDraw); HIShapeRef srcRgn, dstRgn; HIMutableShapeRef dmgRgn = HIShapeCreateMutable(); - NSRect srcRect, dstRect; + NSRect bounds, viewSrcRect, srcRect, dstRect; int result = 0; - // Should behave more like TkScrollWindow on other platforms - if (XCopyArea(Tk_Display(tkwin), drawable, drawable, gc, x, y, - (unsigned)width, (unsigned)height, x+dx, y+dy) == Success) { + if (view) { + + /* + * Get the scroll area in NSView coordinates (origin at bottom left). + */ + + bounds = [view bounds]; + viewSrcRect = NSMakeRect(macDraw->xOff + x, + bounds.size.height - height - (macDraw->yOff + y), + width, height); + + /* + * Scroll the rectangle. + */ + + [view scrollRect:viewSrcRect by:NSMakeSize(dx, -dy)]; /* * Compute the damage region, using Tk coordinates (origin at top left). */ @@ -1221,91 +1235,72 @@ /* * Intersect the drawable's clipping region with the region stored in the * X GC. If the resulting region is empty, don't do any drawing. */ -//#if 0 // disable clipping (almost works, but windows can open up blank) + dc.clipRgn = TkMacOSXGetClipRgn(d); ClipToGC(d, gc, &dc.clipRgn); if (dc.clipRgn && HIShapeIsEmpty(dc.clipRgn)) { - /* - * Things are probably not set up for drawing yet. Request a call to - * updateLayer and return failure. - */ canDraw = false; - [view setNeedsDisplay:YES]; goto end; } -//#endif //disable clipping + /* * If the drawable already has a CGContext, use it. Otherwise, we must be * drawing to a window and we use the current context of its ContentView. */ dc.context = TkMacOSXGetCGContextForDrawable(d); if (!dc.context) { + NSRect drawingBounds, currentBounds; dc.view = view; - dc.context = view.tkLayerBitmapContext; + dc.context = GET_CGCONTEXT; if (dc.clipRgn) { CGRect clipBounds; CGAffineTransform t = { .a = 1, .b = 0, .c = 0, .d = -1, .tx = 0, .ty = [view bounds].size.height}; HIShapeGetBounds(dc.clipRgn, &clipBounds); clipBounds = CGRectApplyAffineTransform(clipBounds, t); - } - - /* - * Mark the view as needing to be redisplayed, since we are drawing - * to its backing layer. - */ - - [view setTkNeedsDisplay:YES]; - - /* - * Workaround for an Apple bug. - * - * Without the block below, ttk frames, labelframes and labels do not - * get the correct background color on macOS 12.5 after the appearance - * changes. This function is only called when drawing, so we know that - * our view is the focus view. Even though the effective appearance of - * the view has been changed, the currentAppearance, i.e. the - * appearance that will be used for drawing, may not have been changed - * to match. - * - * Prior to macOS 12.0 the currentAppearance property of NSAppearance - * was settable. In macOS 12.0 currentAppearance was deprecated and - * replaced by the read-only property currentDrawingAppearance. The - * ttk color issues are fixed by setting the currentAppearance to - * the effectiveAppearance of the view. So we are forced to use this - * deprecated function until Apple fixes this. - * - * It is a mystery why this only affects the ttk widgets. A possible - * clue is that when drawing a ttk widget this function is called with - * a NULL gc, whereas the gc is non-null when it is called for drawing - * a Tk widget. This means that the CGContext setup below is not done - * for ttk widgets. Perhaps that setup triggers an update of the - * currentAppearance property, but that has not been verified. - */ - - if (@available(macOS 12.0, *)) { - NSAppearance *current = NSAppearance.currentDrawingAppearance; - NSAppearance *effective = view.effectiveAppearance; - if( current != effective) { - // printf("Appearances are out of sync!\n"); - // Deprecations be damned! - NSAppearance.currentAppearance = effective; - } - } else { - /* - *It is not clear if this is a problem before macos 12.0, but - * we might as well do the update anyway. - */ - -#if MAC_OS_X_VERSION_MIN_REQUIRED < 120000 -/* currentAppearance is not deprecated. */ - NSAppearance.currentAppearance = view.effectiveAppearance; -#endif + drawingBounds = NSRectFromCGRect(clipBounds); + } else { + drawingBounds = [view bounds]; + } + + /* + * We can only draw into the NSView which is the current focusView. + * When the current [NSView focusView] is nil, the CGContext for + * [NSGraphicsContext currentContext] is nil. Otherwise the current + * CGContext draws into the current focusView. An NSView is guaranteed + * to be the focusView when its drawRect or setFrame methods are + * running. Prior to OSX 10.14 it was also possible to call the + * lockFocus method to force an NSView to become the current focusView. + * But that method was deprecated in 10.14 and so is no longer used by + * Tk. Instead, if the view is not the current focusView then we add + * the drawing bounds to its dirty rectangle and return false. The + * part of the view inside the drawing bounds will get redrawn during + * the next call to its drawRect method. + */ + + if (view != [NSView focusView]) { + [view addTkDirtyRect:drawingBounds]; + canDraw = false; + goto end; + } + + /* + * Drawing will also fail when the view is the current focusView but + * the clipping rectangle set by drawRect does not contain the clipping + * region of our drawing context. (See bug [2a61eca3a8].) If part of + * the drawing bounds will be clipped then we draw whatever we can, but + * we also add the drawing bounds to the view's dirty rectangle so it + * will get redrawn in the next call to its drawRect method. + */ + + currentBounds = NSRectFromCGRect(CGContextGetClipBoundingBox(dc.context)); + if (!NSContainsRect(currentBounds, drawingBounds)) { + [view addTkDirtyRect:drawingBounds]; } } /* * Finish configuring the drawing context. @@ -1327,11 +1322,10 @@ .tx = 0, .ty = drawingHeight }; CGContextConcatCTM(dc.context, t); } -//#if 0 // disable clipping if (dc.clipRgn) { #ifdef TK_MAC_DEBUG_DRAWING CGContextSaveGState(dc.context); ChkErr(HIShapeReplacePathInCGContext, dc.clipRgn, dc.context); @@ -1373,12 +1367,10 @@ #endif CGContextClipToRect(dc.context, r); } } -//#endif //disable clipping - if (gc) { static const CGLineCap cgCap[] = { [CapNotLast] = kCGLineCapButt, [CapButt] = kCGLineCapButt, [CapRound] = kCGLineCapRound, @@ -1547,12 +1539,12 @@ * * Tk_ClipDrawableToRect -- * * Clip all drawing into the drawable d to the given rectangle. If width * or height are negative, reset to no clipping. This is called by the - * Text widget to display each DLine, and by the Canvas widget when it - * is updating a sub rectangle in the canvas. + * Text widget to display each DLine, and by the Canvas widget when it + * is updating a sub rectangle in the canvas. * * Results: * None. * * Side effects: Index: macosx/tkMacOSXEmbed.c ================================================================== --- macosx/tkMacOSXEmbed.c +++ macosx/tkMacOSXEmbed.c @@ -848,16 +848,16 @@ Tk_ErrorHandler errHandler; if (eventPtr->type == ConfigureNotify) { /* - * Send a ConfigureNotify to the embedded application. - */ + * Send a ConfigureNotify to the embedded application. + */ - if (containerPtr->embeddedPtr != NULL) { - TkDoConfigureNotify(containerPtr->embeddedPtr); - } + if (containerPtr->embeddedPtr != NULL) { + TkDoConfigureNotify(containerPtr->embeddedPtr); + } if (containerPtr->embedded != None) { /* * Ignore errors, since the embedded application could have * deleted its window. */ Index: macosx/tkMacOSXEntry.c ================================================================== --- macosx/tkMacOSXEntry.c +++ macosx/tkMacOSXEntry.c @@ -98,22 +98,19 @@ .kind = kHIThemeFrameTextFieldSquare, .state = (entryPtr->state == STATE_DISABLED ? kThemeStateInactive : kThemeStateActive), .isFocused = (entryPtr->flags & GOT_FOCUS ? 1 : 0), }; - int borderWidth, highlightWidth; /* * I use 6 as the borderwidth. 2 of the 5 go into the actual frame the 3 * are because the Mac OS Entry widgets leave more space around the Text * than Tk does on X11. */ - Tk_GetPixelsFromObj(NULL, tkwin, entryPtr->borderWidthObj, &borderWidth); - Tk_GetPixelsFromObj(NULL, tkwin, entryPtr->highlightWidthObj, &highlightWidth); - if (borderWidth != MAC_OSX_ENTRY_BORDER - || highlightWidth != MAC_OSX_FOCUS_WIDTH + if (entryPtr->borderWidth != MAC_OSX_ENTRY_BORDER + || entryPtr->highlightWidth != MAC_OSX_FOCUS_WIDTH || entryPtr->relief != MAC_OSX_ENTRY_RELIEF) { return 0; } /* Index: macosx/tkMacOSXEvent.c ================================================================== --- macosx/tkMacOSXEvent.c +++ macosx/tkMacOSXEvent.c @@ -33,11 +33,11 @@ NSEventType type = [theEvent type]; NSInteger subtype; switch ((NSInteger)type) { case NSAppKitDefined: - subtype = [theEvent subtype]; + subtype = [theEvent subtype]; switch (subtype) { /* Ignored at the moment. */ case NSApplicationActivatedEventType: break; @@ -47,15 +47,15 @@ break; case NSScreenChangedEventType: break; case NSWindowMovedEventType: break; - case NSWindowWillMoveEventType: - break; + case NSWindowWillMoveEventType: + break; - default: - break; + default: + break; } break; /* AppkitEvent. Return theEvent */ case NSKeyUp: case NSKeyDown: case NSFlagsChanged: @@ -78,26 +78,26 @@ case NSTabletProximity: processedEvent = [self tkProcessMouseEvent:theEvent]; break; /* Mouse event. Return the processed event. */ #if 0 case NSSystemDefined: - subtype = [theEvent subtype]; + subtype = [theEvent subtype]; break; case NSApplicationDefined: { id win; win = [theEvent window]; break; } case NSCursorUpdate: - break; + break; case NSEventTypeGesture: case NSEventTypeMagnify: case NSEventTypeRotate: case NSEventTypeSwipe: case NSEventTypeBeginGesture: case NSEventTypeEndGesture: - break; + break; #endif default: break; /* return theEvent */ } Index: macosx/tkMacOSXFileTypes.c ================================================================== --- macosx/tkMacOSXFileTypes.c +++ macosx/tkMacOSXFileTypes.c @@ -24,13 +24,13 @@ */ #include "tkMacOSXPrivate.h" #define CHARS_TO_OSTYPE(string) (OSType) string[0] << 24 | \ - (OSType) string[1] << 16 | \ - (OSType) string[2] << 8 | \ - (OSType) string[3] + (OSType) string[1] << 16 | \ + (OSType) string[2] << 8 | \ + (OSType) string[3] MODULE_SCOPE NSString *TkMacOSXOSTypeToUTI(OSType ostype) { char string[5]; string[4] = '\0'; string[3] = ostype; Index: macosx/tkMacOSXFont.c ================================================================== --- macosx/tkMacOSXFont.c +++ macosx/tkMacOSXFont.c @@ -14,40 +14,18 @@ #include "tkMacOSXPrivate.h" #include "tkMacOSXFont.h" #include "tkMacOSXConstants.h" -#define defaultOrientation kCTFontDefaultOrientation -#define verticalOrientation kCTFontVerticalOrientation #define fixedPitch kCTFontUserFixedPitchFontType /* #ifdef TK_MAC_DEBUG #define TK_MAC_DEBUG_FONTS #endif */ -/* - * TclNumUtfChars() is the same as Tcl_NumUtfChars(), but counting - * in UTF-16 in stead of UTF-32. For Tcl 8.7 it's a little bit - * tricky to get this function, because we are compiling with - * TCL_UTF_MAX=4. Same for TclUtfAtIndex() - */ -#if TCL_MAJOR_VERSION < 9 -# undef TclNumUtfChars -# undef TclUtfAtIndex -# ifdef USE_TCL_STUBS -# define TclNumUtfChars \ - (tclStubsPtr->tcl_NumUtfChars) /* 312 */ -# define TclUtfAtIndex \ - (tclStubsPtr->tcl_UtfAtIndex) /* 325 */ -# else -# define TclNumUtfChars Tcl_NumUtfChars -# define TclUtfAtIndex Tcl_UtfAtIndex -# endif -#endif - /* * The following structure represents our Macintosh-specific implementation * of a font object. */ @@ -382,11 +360,11 @@ bounds = [nsFont boundingRectForFont]; if (CTFontGetGlyphsForCharacters((CTFontRef) nsFont, ch, glyphs, nCh)) { fmPtr->fixed = [nsFont advancementForGlyph:glyphs[0]].width == [nsFont advancementForGlyph:glyphs[1]].width; bounds = NSRectFromCGRect(CTFontGetBoundingRectsForGlyphs((CTFontRef) - nsFont, defaultOrientation, ch, boundingRects, nCh)); + nsFont, kCTFontOrientationDefault, ch, boundingRects, nCh)); kern = [nsFont advancementForGlyph:glyphs[2]].width - [fontPtr->nsFont advancementForGlyph:glyphs[2]].width; } descent = (int)floor(-bounds.origin.y + 0.5); ascent = (int)floor(bounds.size.height + bounds.origin.y + 0.5); @@ -476,11 +454,11 @@ } stringArg = Tcl_GetStringFromObj(objv[1], &len); if (stringArg == NULL) { return TCL_ERROR; } - Tcl_Size ulen = Tcl_GetCharLength(objv[1]); + Tcl_Size ulen = TkGetCharLength(objv[1]); S = [[TKNSString alloc] initWithTclUtfBytes:stringArg length:len]; len = [S length]; if (TkGetIntForIndex(objv[2], ulen - 1, 0, &idx) != TCL_OK) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad index \"%s\": must be integer?[+-]integer?, end?[+-]integer?, or \"\"", @@ -490,11 +468,11 @@ } if (idx > 0 && len != ulen) { /* The string contains codepoints > \uFFFF. Determine UTF-16 index */ Tcl_Size newIdx = 0; for (Tcl_Size i = 0; i < idx; i++) { - newIdx += 1 + (((newIdx < len-1) && ([S characterAtIndex:newIdx]&0xFC00) == 0xD800) && (([S characterAtIndex:newIdx+1]&0xFC00) == 0xDC00)); + newIdx += 1 + (((newIdx < (Tcl_Size)len-1) && ([S characterAtIndex:newIdx]&0xFC00) == 0xD800) && (([S characterAtIndex:newIdx+1]&0xFC00) == 0xDC00)); } idx = newIdx; } if (idx >= 0) { if (idx >= len) { @@ -533,11 +511,11 @@ } stringArg = Tcl_GetStringFromObj(objv[1], &len); if (stringArg == NULL) { return TCL_ERROR; } - Tcl_Size ulen = Tcl_GetCharLength(objv[1]); + Tcl_Size ulen = TkGetCharLength(objv[1]); S = [[TKNSString alloc] initWithTclUtfBytes:stringArg length:len]; len = [S length]; if (TkGetIntForIndex(objv[2], ulen - 1, 0, &idx) != TCL_OK) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad index \"%s\": must be integer?[+-]integer?, end?[+-]integer?, or \"\"", @@ -1082,12 +1060,12 @@ } attributedString = [[NSAttributedString alloc] initWithString:string attributes:fontPtr->nsAttributes]; typesetter = CTTypesetterCreateWithAttributedString( (CFAttributedStringRef)attributedString); - start = TclNumUtfChars(source, rangeStart); - len = TclNumUtfChars(source + rangeStart, rangeLength); + start = Tcl_NumUtfChars(source, rangeStart); + len = Tcl_NumUtfChars(source + rangeStart, rangeLength); if (start > 0) { range.length = start; line = CTTypesetterCreateLine(typesetter, range); offset = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); @@ -1184,11 +1162,11 @@ } CFRelease(typesetter); [attributedString release]; [string release]; length = ceil(width - offset); - fit = (TclUtfAtIndex(source, index) - source) - rangeStart; + fit = (Tcl_UtfAtIndex(source, index) - source) - rangeStart; done: #ifdef TK_MAC_DEBUG_FONTS TkMacOSXDbgMsg("measure: source=\"%s\" range=\"%.*s\" maxLength=%d " "flags='%s%s%s%s' -> width=%d bytesFit=%d\n", source, rangeLength, source+rangeStart, maxLength, @@ -1383,12 +1361,12 @@ CGAffineTransformRotate( CGAffineTransformTranslate(t, textX, textY), angle*PI/180.0), -textX, -textY); } CGContextConcatCTM(context, t); - start = TclNumUtfChars(source, rangeStart); - length = TclNumUtfChars(source, rangeStart + rangeLength) - start; + start = Tcl_NumUtfChars(source, rangeStart); + length = Tcl_NumUtfChars(source, rangeStart + rangeLength) - start; line = CTTypesetterCreateLine(typesetter, CFRangeMake(start, length)); if (start > 0) { /* * We are only drawing part of the string. To compute the x coordinate @@ -1552,11 +1530,11 @@ if (Tcl_CreateNamespace(interp, "::tk::mac", NULL, NULL) == NULL) { Tcl_ResetResult(interp); } if (Tcl_LinkVar(interp, "::tk::mac::antialiasedtext", - &antialiasedTextEnabled, + (char *) &antialiasedTextEnabled, TCL_LINK_INT) != TCL_OK) { Tcl_ResetResult(interp); } } antialiasedTextEnabled = enable; Index: macosx/tkMacOSXHLEvents.c ================================================================== --- macosx/tkMacOSXHLEvents.c +++ macosx/tkMacOSXHLEvents.c @@ -305,38 +305,38 @@ if (initialType == typeFileURL || initialType == typeAlias) { /* * This descriptor can be coerced to a file url. Construct a Tcl * expression which passes the file path as a string argument to - * ::tk::mac::DoScriptFile. + * ::tk::mac::DoScriptFile. */ if (noErr == AEGetParamPtr(theDesc, keyDirectObject, typeFileURL, &type, - (Ptr) URLBuffer, URL_MAX_LENGTH, &actual)) { - if (actual > 0) { - URLBuffer[actual] = '\0'; - NSString *urlString = [NSString stringWithUTF8String:(char*)URLBuffer]; - NSURL *fileURL = [NSURL URLWithString:urlString]; - AppleEventInfo *AEInfo = (AppleEventInfo *)ckalloc(sizeof(AppleEventInfo)); - Tcl_DString *scriptFileCommand = &AEInfo->command; - Tcl_DStringInit(scriptFileCommand); - Tcl_DStringAppend(scriptFileCommand, scriptFileProc, TCL_INDEX_NONE); - Tcl_DStringAppendElement(scriptFileCommand, [[fileURL path] UTF8String]); - AEInfo->interp = _eventInterp; - AEInfo->procedure = scriptFileProc; - AEInfo->replyEvent = nil; + (Ptr) URLBuffer, URL_MAX_LENGTH, &actual)) { + if (actual > 0) { + URLBuffer[actual] = '\0'; + NSString *urlString = [NSString stringWithUTF8String:(char*)URLBuffer]; + NSURL *fileURL = [NSURL URLWithString:urlString]; + AppleEventInfo *AEInfo = (AppleEventInfo *)ckalloc(sizeof(AppleEventInfo)); + Tcl_DString *scriptFileCommand = &AEInfo->command; + Tcl_DStringInit(scriptFileCommand); + Tcl_DStringAppend(scriptFileCommand, scriptFileProc, TCL_INDEX_NONE); + Tcl_DStringAppendElement(scriptFileCommand, [[fileURL path] UTF8String]); + AEInfo->interp = _eventInterp; + AEInfo->procedure = scriptFileProc; + AEInfo->replyEvent = nil; AEInfo->retryCount = 0; - ProcessAppleEvent((void *)AEInfo); - } - } + ProcessAppleEvent((void *)AEInfo); + } + } } else if (noErr == AEGetParamPtr(theDesc, keyDirectObject, typeUTF8Text, &type, NULL, 0, &actual)) { - /* - * The descriptor cannot be coerced to a file URL but can be coerced to - * text. Construct a Tcl expression which passes the text as a string - * argument to ::tk::mac::DoScriptText. - */ + /* + * The descriptor cannot be coerced to a file URL but can be coerced to + * text. Construct a Tcl expression which passes the text as a string + * argument to ::tk::mac::DoScriptText. + */ if (actual > 0) { char *data = (char *)ckalloc(actual + 1); if (noErr == AEGetParamPtr(theDesc, keyDirectObject, typeUTF8Text, &type, @@ -348,27 +348,27 @@ Tcl_DStringAppend(scriptTextCommand, scriptTextProc, TCL_INDEX_NONE); Tcl_DStringAppendElement(scriptTextCommand, data); AEInfo->interp = _eventInterp; AEInfo->procedure = scriptTextProc; AEInfo->retryCount = 0; - if (Tcl_FindCommand(AEInfo->interp, AEInfo->procedure, NULL, 0)) { - AEInfo->replyEvent = replyEvent; - ProcessAppleEvent(AEInfo); - } else { - AEInfo->replyEvent = nil; - ProcessAppleEvent(AEInfo); - } + if (Tcl_FindCommand(AEInfo->interp, AEInfo->procedure, NULL, 0)) { + AEInfo->replyEvent = replyEvent; + ProcessAppleEvent(AEInfo); + } else { + AEInfo->replyEvent = nil; + ProcessAppleEvent(AEInfo); + } } } } } - (void)handleURLEvent:(NSAppleEventDescriptor*)event - withReplyEvent:(NSAppleEventDescriptor*)replyEvent + withReplyEvent:(NSAppleEventDescriptor*)replyEvent { NSString* url = [[event paramDescriptorForKeyword:keyDirectObject] - stringValue]; + stringValue]; const char *cURL=[url UTF8String]; AppleEventInfo *AEInfo = (AppleEventInfo *)ckalloc(sizeof(AppleEventInfo)); Tcl_DString *launchCommand = &AEInfo->command; (void)replyEvent; @@ -454,22 +454,22 @@ } code = Tcl_EvalEx(AEInfo->interp, Tcl_DStringValue(&AEInfo->command), Tcl_DStringLength(&AEInfo->command), TCL_EVAL_GLOBAL); if (AEInfo->replyEvent && code >= 0) { - Tcl_Size reslen; - const char *result = Tcl_GetStringFromObj(Tcl_GetObjResult(AEInfo->interp), - &reslen); - if (code == TCL_OK) { - AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], - keyDirectObject, typeChar, result, reslen); - } else { - AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], - keyErrorString, typeChar, result, reslen); - AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], - keyErrorNumber, typeSInt32, (Ptr) &code, sizeof(int)); - } + Tcl_Size reslen; + const char *result = Tcl_GetStringFromObj(Tcl_GetObjResult(AEInfo->interp), + &reslen); + if (code == TCL_OK) { + AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], + keyDirectObject, typeChar, result, reslen); + } else { + AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], + keyErrorString, typeChar, result, reslen); + AEPutParamPtr((AppleEvent*)[AEInfo->replyEvent aeDesc], + keyErrorNumber, typeSInt32, (Ptr) &code, sizeof(int)); + } } else if (code != TCL_OK) { Tcl_BackgroundException(AEInfo->interp, code); } Tcl_DStringFree(&AEInfo->command); @@ -535,12 +535,12 @@ andSelector:@selector(handleURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL]; /* * We do not load our sdef dynamically but this event handler - * is required to silence error messages from inline execution - * of AppleScript at the Objective-C level. + * is required to silence error messages from inline execution + * of AppleScript at the Objective-C level. */ [aeManager setEventHandler:NSApp andSelector:@selector(handleGetSDEFEvent:withReplyEvent:) forEventClass:'ascr' andEventID:'gsdf']; Index: macosx/tkMacOSXImage.c ================================================================== --- macosx/tkMacOSXImage.c +++ macosx/tkMacOSXImage.c @@ -17,14 +17,10 @@ #include "tkMacOSXConstants.h" #include "tkMacOSXImage.h" #include "tkColor.h" #include "xbytes.h" -static CGImageRef CreateCGImageFromPixmap(Drawable pixmap); -static CGImageRef CreateCGImageFromDrawableRect( Drawable drawable, int force_1x_scale, - int x, int y, unsigned int width, unsigned int height); - /* Pixel formats * * Tk uses the XImage structure defined in Xlib.h for storing images. The * image data in an XImage is a 32-bit aligned array of bytes. Interpretation * of that data is not specified, but the structure includes parameters which @@ -512,32 +508,27 @@ LastKnownRequestProcessed(display)++; if (!TkMacOSXSetupDrawingContext(drawable, gc, &dc)) { return BadDrawable; } if (dc.context) { - CGRect dstRect, srcRect = CGRectMake(src_x, src_y, width, height); - /* - * Whole image is copied before cropping. For performance, - * consider revising TkMacOSXCreateCGImageWithXImage() to accept - * source x/y/w/h and copy only the needed portion instead. - */ + CGRect bounds, srcRect, dstRect; CGImageRef img = TkMacOSXCreateCGImageWithXImage(image, pixelFormat); - CGImageRef cropped = CGImageCreateWithImageInRect(img, srcRect); - CGImageRelease(img); - img = cropped; /* * The CGContext for a pixmap is RGB only, with A = 0. */ if (!(macDraw->flags & TK_IS_PIXMAP)) { CGContextSetBlendMode(dc.context, kCGBlendModeSourceAtop); } if (img) { + bounds = CGRectMake(0, 0, image->width, image->height); + srcRect = CGRectMake(src_x, src_y, width, height); dstRect = CGRectMake(dest_x, dest_y, width, height); - TkMacOSXDrawCGImage(drawable, gc, dc.context, img, - gc->foreground, gc->background, dstRect); + TkMacOSXDrawCGImage(drawable, gc, dc.context, + img, gc->foreground, gc->background, + bounds, srcRect, dstRect); CFRelease(img); } else { TkMacOSXDbgMsg("Invalid source drawable"); result = BadDrawable; } @@ -627,81 +618,57 @@ * * NOTE: The x,y coordinates should be relative to a coordinate system * with origin at the top left, as used by XImage and CGImage, not bottom * left as used by NSView. * - * If force_1x_scale is true, then the returned CGImage will be downscaled - * if necessary to have the requested width and height. Othewise, for - * windows on Retina displays, the width and height of the returned CGImage - * will be twice the requested width and height. - * * Side effects: * None * *---------------------------------------------------------------------- */ static CGImageRef CreateCGImageFromDrawableRect( Drawable drawable, - int force_1x_scale, int x, int y, unsigned int width, unsigned int height) { MacDrawable *mac_drawable = (MacDrawable *)drawable; CGContextRef cg_context = NULL; CGImageRef cg_image = NULL, result = NULL; - CGFloat scaleFactor = 1.0; if (mac_drawable->flags & TK_IS_PIXMAP) { cg_context = TkMacOSXGetCGContextForDrawable(drawable); CGContextRetain(cg_context); } else { NSView *view = TkMacOSXGetNSViewForDrawable(mac_drawable); if (view == nil) { TkMacOSXDbgMsg("Invalid source drawable"); return NULL; } - scaleFactor = view.layer.contentsScale; - cg_context = ((TKContentView *)view).tkLayerBitmapContext; - CGContextRetain(cg_context); + NSSize size = view.frame.size; + NSUInteger view_width = size.width, view_height = size.height; + NSUInteger bytesPerPixel = 4, + bytesPerRow = bytesPerPixel * view_width, + bitsPerComponent = 8; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + cg_context = CGBitmapContextCreate(NULL, view_width, view_height, + bitsPerComponent, bytesPerRow, colorSpace, + kCGImageAlphaPremultipliedLast | + kCGBitmapByteOrder32Big); + CFRelease(colorSpace); + [view.layer renderInContext:cg_context]; } if (cg_context) { cg_image = CGBitmapContextCreateImage(cg_context); CGContextRelease(cg_context); } if (cg_image) { CGRect rect = CGRectMake(x + mac_drawable->xOff, y + mac_drawable->yOff, width, height); - rect = CGRectApplyAffineTransform(rect, CGAffineTransformMakeScale(scaleFactor, scaleFactor)); - if (force_1x_scale && (scaleFactor != 1.0)) { - // See https://web.archive.org/web/20200219030756/http://blog.foundry376.com/2008/07/scaling-a-cgimage/#comment-200 - // create context, keeping original image properties - CGColorSpaceRef colorspace = CGImageGetColorSpace(cg_image); - cg_context = CGBitmapContextCreate(NULL, width, height, - CGImageGetBitsPerComponent(cg_image), - //CGImageGetBytesPerRow(cg_image), // wastes space? - CGImageGetBitsPerPixel(cg_image) * width / 8, - colorspace, - CGImageGetAlphaInfo(cg_image)); - CGColorSpaceRelease(colorspace); - if (cg_context) { - // Extract the subimage in the specified rectangle. - CGImageRef subimage = CGImageCreateWithImageInRect(cg_image, rect); - // Draw the subimage in our context (resizing it to fit). - CGContextDrawImage(cg_context, CGRectMake(0, 0, width, height), - subimage); - // We will return the image we just drew. - result = CGBitmapContextCreateImage(cg_context); - CGContextRelease(cg_context); - CGImageRelease(subimage); - } - } else { - // No resizing is needed. Just return the subimage - result = CGImageCreateWithImageInRect(cg_image, rect); - } + result = CGImageCreateWithImageInRect(cg_image, rect); CGImageRelease(cg_image); } return result; } @@ -817,26 +784,24 @@ unsigned int width, unsigned int height, TCL_UNUSED(unsigned long), /* plane_mask */ int format) { - XImage* imagePtr = NULL; NSBitmapImageRep* bitmapRep = nil; - NSBitmapFormat bitmap_fmt = 0; + NSUInteger bitmap_fmt = 0; + XImage* imagePtr = NULL; char *bitmap = NULL; int depth = 32, offset = 0, bitmap_pad = 0; - NSInteger bytes_per_row, samples_per_pixel, size; - unsigned int row, n, m; + unsigned int bytes_per_row, size, row, n, m; if (format == ZPixmap) { CGImageRef cgImage; if (width == 0 || height == 0) { return NULL; } - // Request 1x-scale image for compatibility - cgImage = CreateCGImageFromDrawableRect(drawable, 1, x, y, width, height); + cgImage = CreateCGImageFromDrawableRect(drawable, x, y, width, height); if (cgImage) { bitmapRep = [NSBitmapImageRep alloc]; [bitmapRep initWithCGImage:cgImage]; CFRelease(cgImage); } else { @@ -844,31 +809,14 @@ return NULL; } bitmap_fmt = [bitmapRep bitmapFormat]; size = [bitmapRep bytesPerPlane]; bytes_per_row = [bitmapRep bytesPerRow]; - samples_per_pixel = [bitmapRep samplesPerPixel]; -#if 0 - fprintf(stderr, "XGetImage:\n" - " bitmsp_fmt = %ld\n" - " samples_per_pixel = %ld\n" - " width = %u\n" - " height = %u\n" - " bytes_per_row = %ld\n" - " size = %ld\n", - bitmap_fmt, samples_per_pixel, width, height, bytes_per_row, size); -#endif - /* - * Image data with all pixels having alpha value 255 may be reported - * as 3 samples per pixel, even though each row has 4*width pixels and - * the pixels are stored in the default ARGB32 format. - */ - if ((bitmap_fmt != 0 && bitmap_fmt != NSAlphaFirstBitmapFormat) - || samples_per_pixel < 3 - || samples_per_pixel > 4 + || [bitmapRep samplesPerPixel] != 4 || [bitmapRep isPlanar] != 0 + || bytes_per_row < 4 * width || size != bytes_per_row * height) { TkMacOSXDbgMsg("XGetImage: Unrecognized bitmap format"); [bitmapRep release]; return NULL; } @@ -894,11 +842,10 @@ } else { // bitmap_fmt = NSAlphaFirstBitmapFormat *((pixel32 *)(bitmap + m)) = pixel; } } } - imagePtr = XCreateImage(display, NULL, depth, format, offset, (char*) bitmap, width, height, bitmap_pad, bytes_per_row); } else { @@ -941,12 +888,13 @@ unsigned int height, int dest_x, /* Dest X & Y on dest rect. */ int dest_y) { TkMacOSXDrawingContext dc; + MacDrawable *srcDraw = (MacDrawable *)src; CGImageRef img = NULL; - CGRect dstRect; + CGRect bounds, srcRect, dstRect; LastKnownRequestProcessed(display)++; if (!width || !height) { return BadDrawable; } @@ -959,17 +907,24 @@ if (!dc.context) { TkMacOSXDbgMsg("Invalid destination drawable - no context."); return BadDrawable; } - // Use unscaled source (TkMacOSXDrawCGImage() will implicitly downscale) - img = CreateCGImageFromDrawableRect(src, 0, src_x, src_y, width, height); + if (srcDraw->flags & TK_IS_PIXMAP) { + img = CreateCGImageFromPixmap(src); + } else if (TkMacOSXGetNSWindowForDrawable(src)) { + img = CreateCGImageFromDrawableRect(src, src_x, src_y, width, height); + } else { + TkMacOSXDbgMsg("Invalid source drawable - neither window nor pixmap."); + } if (img) { + bounds = CGRectMake(0, 0, srcDraw->size.width, srcDraw->size.height); + srcRect = CGRectMake(src_x, src_y, width, height); dstRect = CGRectMake(dest_x, dest_y, width, height); TkMacOSXDrawCGImage(dst, gc, dc.context, img, - gc->foreground, gc->background, dstRect); + gc->foreground, gc->background, bounds, srcRect, dstRect); CFRelease(img); } else { TkMacOSXDbgMsg("Failed to construct CGImage."); } @@ -1010,11 +965,11 @@ unsigned long plane) /* Which plane to copy. */ { TkMacOSXDrawingContext dc; MacDrawable *srcDraw = (MacDrawable *)src; MacDrawable *dstDraw = (MacDrawable *)dst; - CGRect srcRect, dstRect; + CGRect bounds, srcRect, dstRect; LastKnownRequestProcessed(display)++; if (!width || !height) { /* TkMacOSXDbgMsg("Drawing of empty area requested"); */ return BadDrawable; } @@ -1033,11 +988,11 @@ if (img) { TkpClipMask *clipPtr = (TkpClipMask *) gc->clip_mask; unsigned long imageBackground = gc->background; - if (clipPtr && clipPtr->type == TKP_CLIP_PIXMAP) { + if (clipPtr && clipPtr->type == TKP_CLIP_PIXMAP) { srcRect = CGRectMake(src_x, src_y, width, height); CGImageRef mask = CreateCGImageFromPixmap( clipPtr->value.pixmap); CGImageRef submask = CGImageCreateWithImageInRect( img, srcRect); @@ -1076,13 +1031,17 @@ CGImageRelease(img); CGImageRelease(mask); CGImageRelease(submask); CGImageRelease(subimage); } else { + bounds = CGRectMake(0, 0, + srcDraw->size.width, srcDraw->size.height); + srcRect = CGRectMake(src_x, src_y, width, height); dstRect = CGRectMake(dest_x, dest_y, width, height); TkMacOSXDrawCGImage(dst, gc, dc.context, img, - gc->foreground, imageBackground, dstRect); + gc->foreground, imageBackground, bounds, + srcRect, dstRect); CGImageRelease(img); } } else { /* no image */ TkMacOSXDbgMsg("Invalid source drawable"); @@ -1408,11 +1367,11 @@ } else { switch(sourceInterpretation) { case NAME_SOURCE: Tcl_SetObjResult(interp, Tcl_NewStringObj("Unknown named NSImage.\n" "Try omitting ImageName, " - "e.g. use NSCaution for NSImageNameCaution.", TCL_INDEX_NONE)); + "e.g. use NSCaution for NSImageNameCaution.", TCL_INDEX_NONE)); Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); goto errorExit; case FILE_SOURCE: Tcl_SetObjResult(interp, Tcl_NewStringObj( "Failed to load image file.\n", TCL_INDEX_NONE)); @@ -1512,13 +1471,13 @@ return TCL_ERROR; } objPtr = Tk_GetOptionValue(interp, (char *)modelPtr, optionTable, objv[2], NULL); if (objPtr == NULL) { - goto error; - } - Tcl_SetObjResult(interp, objPtr); + goto error; + } + Tcl_SetObjResult(interp, objPtr); break; case CONFIGURE: if (objc == 2) { objPtr = Tk_GetOptionInfo(interp, (char *)modelPtr, optionTable, NULL, NULL); Index: macosx/tkMacOSXInit.c ================================================================== --- macosx/tkMacOSXInit.c +++ macosx/tkMacOSXInit.c @@ -39,10 +39,12 @@ #pragma mark TKApplication(TKInit) @implementation TKApplication @synthesize poolLock = _poolLock; @synthesize macOSVersion = _macOSVersion; +@synthesize isDrawing = _isDrawing; +@synthesize isSigned = _isSigned; @synthesize tkLiveResizeEnded = _tkLiveResizeEnded; @synthesize tkPointerWindow = _tkPointerWindow; - (void) setTkPointerWindow: (TkWindow *)winPtr { if (winPtr) { @@ -177,11 +179,10 @@ * Initialize Apple Event processing on macOS versions * older than Big Sur (11). */ TkMacOSXInitAppleEvents(_eventInterp); - } /* * Initialize the graphics context. @@ -285,10 +286,16 @@ minorVersion = 0; } } [NSApp setMacOSVersion: 10000*majorVersion + 100*minorVersion]; + /* + * We are not drawing right now. + */ + + [NSApp setIsDrawing:NO]; + /* * Be our own delegate. */ [self setDelegate:self]; @@ -420,22 +427,10 @@ if (doCleanupFromExit) { doCleanupFromExit = NO; /* prevent possible recursive call. */ closePanels(); } - /* - * At this point it is too late to be looking up the Tk window associated - * to any NSWindows, but it can happen. This makes sure the answer is None - * if such a query is attempted. - */ - - for (TKWindow *w in [NSApp orderedWindows]) { - if ([w respondsToSelector: @selector (tkWindow)]) { - [w setTkWindow: None]; - } - } - /* * Tcl_Exit does not call Tcl_Finalize if there is an exit proc installed. */ Tcl_Finalize(); @@ -480,12 +475,12 @@ /* * Initialize/check OS version variable for runtime checks. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 -# error Mac OS X 10.6 required +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 +# error Mac OS X 10.9 required #endif initialized = 1; #ifdef TK_FRAMEWORK @@ -677,11 +672,11 @@ Tcl_CreateObjCommand(interp, "::tk::mac::iconBitmap", TkMacOSXIconBitmapObjCmd, NULL, NULL); Tcl_CreateObjCommand(interp, "::tk::mac::GetAppPath", TkMacOSXGetAppPathObjCmd, NULL, NULL); Tcl_CreateObjCommand(interp, "::tk::mac::macOSVersion", - TkMacOSVersionObjCmd, NULL, NULL); + TkMacOSVersionObjCmd, NULL, NULL); MacSystrayInit(interp); MacPrint_Init(interp); return TCL_OK; } Index: macosx/tkMacOSXInt.h ================================================================== --- macosx/tkMacOSXInt.h +++ macosx/tkMacOSXInt.h @@ -86,10 +86,11 @@ #define TK_CLIP_INVALID 0x02 #define TK_HOST_EXISTS 0x04 #define TK_DRAWN_UNDER_MENU 0x08 #define TK_IS_PIXMAP 0x10 #define TK_IS_BW_PIXMAP 0x20 +#define TK_DO_NOT_DRAW 0x40 #define TTK_HAS_CONTRASTING_BG 0x80 /* * I am reserving TK_EMBEDDED = 0x100 in the MacDrawable flags * This is defined in tk.h. We need to duplicate the TK_EMBEDDED flag in the Index: macosx/tkMacOSXKeyEvent.c ================================================================== --- macosx/tkMacOSXKeyEvent.c +++ macosx/tkMacOSXKeyEvent.c @@ -62,12 +62,12 @@ Bool can_input_text, has_modifiers = NO, use_text_input = NO; static NSUInteger savedModifiers = 0; static NSMutableArray *nsEvArray = nil; if (nsEvArray == nil) { - nsEvArray = [[NSMutableArray alloc] initWithCapacity: 1]; - processingCompose = NO; + nsEvArray = [[NSMutableArray alloc] initWithCapacity: 1]; + processingCompose = NO; } if (!winPtr) { return theEvent; } @@ -78,11 +78,11 @@ */ if ([theEvent type] == NSKeyDown && [theEvent isARepeat] && [NSEvent keyRepeatDelay] < 0) { - return theEvent; + return theEvent; } /* * If a local grab is in effect, key events for windows in the * grabber's application are redirected to the grabber. Key events @@ -309,11 +309,11 @@ TkWindow *winPtr = TkMacOSXGetTkWindow([self window]); Tk_Window tkwin = (Tk_Window)winPtr; Bool sendingIMEText = NO; str = ([aString isKindOfClass: [NSAttributedString class]]) ? - [aString string] : aString; + [aString string] : aString; len = [str length]; if (NS_KEYLOG) { TKLog(@"insertText '%@'\tlen = %d", aString, len); } @@ -424,11 +424,11 @@ NSString *temp; NSString *str; (void)selRange; str = ([aString isKindOfClass: [NSAttributedString class]]) ? - [aString string] : aString; + [aString string] : aString; if (focusWin) { /* * Remember the widget where the composition is happening, in case it * gets defocussed during the composition. @@ -634,16 +634,16 @@ return; } display = Tk_Display(tkwin); if (modifiers) { state = (modifiers & NSAlphaShiftKeyMask ? LockMask : 0) | - (modifiers & NSShiftKeyMask ? ShiftMask : 0) | - (modifiers & NSControlKeyMask ? ControlMask : 0) | - (modifiers & NSCommandKeyMask ? Mod1Mask : 0) | - (modifiers & NSAlternateKeyMask ? Mod2Mask : 0) | - (modifiers & NSNumericPadKeyMask ? Mod3Mask : 0) | - (modifiers & NSFunctionKeyMask ? Mod4Mask : 0) ; + (modifiers & NSShiftKeyMask ? ShiftMask : 0) | + (modifiers & NSControlKeyMask ? ControlMask : 0) | + (modifiers & NSCommandKeyMask ? Mod1Mask : 0) | + (modifiers & NSAlternateKeyMask ? Mod2Mask : 0) | + (modifiers & NSNumericPadKeyMask ? Mod3Mask : 0) | + (modifiers & NSFunctionKeyMask ? Mod4Mask : 0) ; } memset(xEvent, 0, sizeof(XEvent)); xEvent->xany.serial = LastKnownRequestProcessed(display); xEvent->xany.display = Tk_Display(tkwin); xEvent->xany.window = Tk_WindowId(tkwin); Index: macosx/tkMacOSXKeyboard.c ================================================================== --- macosx/tkMacOSXKeyboard.c +++ macosx/tkMacOSXKeyboard.c @@ -266,11 +266,11 @@ * minimal modifier mask. Simpler combinations will overwrite more complex * ones when constructing the table. */ for (index = 3; index >= 0; index--) { - for (virt = 0; virt < 128; virt++) { + for (virt = 0; virt < 128; virt++) { MacKeycode macKC; macKC.v = (keycode_v) {.virt = virt, .o_s = index, .keychar = 0}; int modifiers = INDEX2CARBON(index); UniChar keychar = 0; KeyDataToUnicode(&keychar, 1, kUCKeyActionDown, virt, @@ -286,11 +286,11 @@ macKC.v.keychar = keychar; if (! ON_KEYPAD(virt)) { hPtr = Tcl_CreateHashEntry(&unichar2xvirtual, INT2PTR(macKC.x.keychar), &dummy); Tcl_SetHashValue(hPtr, INT2PTR(macKC.x.xvirtual)); - } + } xvirtual2unichar[macKC.x.xvirtual] = macKC.x.keychar; } } } @@ -499,11 +499,11 @@ char utfChars[8]; int length = 0; macKC.uint = eventPtr->xkey.keycode; if (IS_PRINTABLE(macKC.v.keychar)) { - length = Tcl_UniCharToUtf(macKC.v.keychar, utfChars); + length = TkUniCharToUtf(macKC.v.keychar, utfChars); } utfChars[length] = 0; Tcl_DStringInit(dsPtr); return Tcl_DStringAppend(dsPtr, utfChars, length); Index: macosx/tkMacOSXMenu.c ================================================================== --- macosx/tkMacOSXMenu.c +++ macosx/tkMacOSXMenu.c @@ -958,10 +958,12 @@ if (realWinView != nil) { break; } realWin = Tk_Parent(realWin); } + NSWindow *win = [realWinView window]; + NSView *view = [win contentView]; NSMenu *menu = (NSMenu *) menuPtr->platformData; NSInteger itemIndex = index; NSInteger numItems = [menu numberOfItems]; NSMenuItem *item = nil; NSPoint location = NSMakePoint(x, TkMacOSXZeroScreenHeight() - y); @@ -987,13 +989,12 @@ if (menuPtr->tkwin == NULL) { return TCL_OK; } [menu popUpMenuPositioningItem:item - atLocation:location - inView:nil - appearance:realWinView.effectiveAppearance]; + atLocation:[win tkConvertPointFromScreen:location] + inView:view]; inPostMenu = false; return TCL_OK; } /* @@ -1414,11 +1415,11 @@ if (menuPtr->tkwin == NULL || menuPtr->mainMenuPtr != menuPtr) { return; } menuSize = [(NSMenu *) menuPtr->platformData size]; - Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthObj, + Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->borderWidthPtr, &borderWidth); Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->activeBorderWidthPtr, &activeBorderWidth); x = y = borderWidth; windowHeight = maxWidth = 0; Index: macosx/tkMacOSXMenubutton.c ================================================================== --- macosx/tkMacOSXMenubutton.c +++ macosx/tkMacOSXMenubutton.c @@ -244,11 +244,10 @@ TkMenuButton *butPtr) /* Widget record for menu button. */ { int width, height, avgWidth, haveImage = 0, haveText = 0; int txtWidth, txtHeight; Tk_FontMetrics fm; - int highlightWidth = butPtr->highlightWidth > 0 ? butPtr->highlightWidth : 0; /* * First compute the size of the contents of the button. */ @@ -264,15 +263,16 @@ } else if (butPtr->bitmap != None) { Tk_SizeOfBitmap(butPtr->display, butPtr->bitmap, &width, &height); haveImage = 1; } - if (butPtr->text && strlen(butPtr->text) > 0) { + if (butPtr->textObj && Tcl_GetString(butPtr->textObj)[0]) { + haveText = 1; Tk_FreeTextLayout(butPtr->textLayout); butPtr->textLayout = Tk_ComputeTextLayout(butPtr->tkfont, - butPtr->text, TCL_INDEX_NONE, butPtr->wrapLength, + Tcl_GetString(butPtr->textObj), TCL_INDEX_NONE, butPtr->wrapLength, butPtr->justify, 0, &butPtr->textWidth, &butPtr->textHeight); txtWidth = butPtr->textWidth; txtHeight = butPtr->textHeight; avgWidth = Tk_TextWidth(butPtr->tkfont, "0", 1); Tk_GetFontMetrics(butPtr->tkfont, &fm); @@ -334,19 +334,19 @@ } } else { /* Text only */ width = txtWidth; height = txtHeight; if (butPtr->width > 0) { - width = butPtr->width * avgWidth + 2*butPtr->padX; + width = butPtr->width * avgWidth + 2 * butPtr->padX; } if (butPtr->height > 0) { - height = butPtr->height * fm.linespace + 2*butPtr->padY; + height = butPtr->height * fm.linespace + 2 * butPtr->padY; } } } - butPtr->inset = highlightWidth + butPtr->borderWidth; + butPtr->inset = butPtr->highlightWidth + butPtr->borderWidth; width += LEFT_INSET + RIGHT_INSET + 2*butPtr->inset; height += 2*butPtr->inset; height = height < MIN_HEIGHT ? MIN_HEIGHT : height; Tk_GeometryRequest(butPtr->tkwin, width, height); Tk_SetInternalBorder(butPtr->tkwin, butPtr->inset); @@ -729,11 +729,11 @@ ThemeButtonKind *btnkind, HIThemeButtonDrawInfo *drawinfo) { MacMenuButton *mbPtr = (MacMenuButton *) butPtr; - if (butPtr->image || butPtr->bitmap || butPtr->text) { + if (butPtr->image || butPtr->bitmap || butPtr->textObj) { /* TODO: allow for Small and Mini menubuttons. */ *btnkind = kThemePopupButton; } else { /* This should never happen. */ *btnkind = kThemeArrowButton; } Index: macosx/tkMacOSXMouseEvent.c ================================================================== --- macosx/tkMacOSXMouseEvent.c +++ macosx/tkMacOSXMouseEvent.c @@ -502,13 +502,12 @@ */ state |= Tk_GetButtonMask(Button1); } if (eventType == NSMouseEntered) { - Tk_Window new_win = Tk_CoordsToWindow(global.x, global.y, - (Tk_Window) [NSApp tkPointerWindow]); - Tk_UpdatePointer(new_win, global.x, global.y, state); + Tk_UpdatePointer((Tk_Window) [NSApp tkPointerWindow], + global.x, global.y, state); } else if (eventType == NSMouseExited) { if ([NSApp tkDragTarget]) { Tk_UpdatePointer((Tk_Window) [NSApp tkDragTarget], global.x, global.y, state); } else { @@ -882,13 +881,13 @@ } CGWarpMouseCursorPosition(pt); if (dispPtr->warpWindow) { - TkGenerateButtonEventForXPointer(Tk_WindowId(dispPtr->warpWindow)); + TkGenerateButtonEventForXPointer(Tk_WindowId(dispPtr->warpWindow)); } else { - TkGenerateButtonEventForXPointer(None); + TkGenerateButtonEventForXPointer(None); } } /* *---------------------------------------------------------------------- Index: macosx/tkMacOSXNotify.c ================================================================== --- macosx/tkMacOSXNotify.c +++ macosx/tkMacOSXNotify.c @@ -14,10 +14,38 @@ */ #include "tkMacOSXPrivate.h" #include "tkMacOSXInt.h" #include "tkMacOSXConstants.h" +#if TCL_MAJOR_VERSION < 9 +#undef Tcl_MacOSXNotifierAddRunLoopMode +#ifdef USE_TCL_STUBS +#ifdef __cplusplus +extern "C" { +#endif +/* Little hack to eliminate the need for "tclInt.h" here: + Just copy a small portion of TclIntPlatStubs, just + enough to make it work. See [600b72bfbc] */ +typedef struct TclIntPlatStubs { + int magic; + void *hooks; + void (*dummy[19]) (void); /* dummy entries 0-18, not used */ + void (*tclMacOSXNotifierAddRunLoopMode) (const void *runLoopMode); /* 19 */ +} TclIntPlatStubs; +extern const TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif +#define Tcl_MacOSXNotifierAddRunLoopMode \ + (tclIntPlatStubsPtr->tclMacOSXNotifierAddRunLoopMode) /* 19 */ +#elif TCL_MINOR_VERSION < 7 + extern void TclMacOSXNotifierAddRunLoopMode(const void *runLoopMode); +# define Tcl_MacOSXNotifierAddRunLoopMode TclMacOSXNotifierAddRunLoopMode +#else + extern void Tcl_MacOSXNotifierAddRunLoopMode(const void *runLoopMode); +#endif +#endif #import /* This is not used for anything at the moment. */ typedef struct ThreadSpecificData { int initialized; @@ -308,16 +336,16 @@ * TkMacOSXDrawAllViews -- * * This static function is meant to be run as an idle task. It attempts * to redraw all views which have the tkNeedsDisplay property set to YES. * This relies on a feature of [NSApp nextEventMatchingMask: ...] which - * is undocumented, namely that it sometimes blocks and calls updateLayer + * is undocumented, namely that it sometimes blocks and calls drawRect * for all views that need display before it returns. We call it with * deQueue=NO so that it will not change anything on the AppKit event * queue, because we only want the side effect that it runs drawRect. The * only times when any NSViews have the needsDisplay property set to YES - * are during execution of this function or in the setFrameSize method + * are during execution of this function or in the addTkDirtyRect method * of TKContentView. * * The reason for running this function as an idle task is to try to * arrange that all widgets will be fully configured before they are * drawn. Any idle tasks that might reconfigure them should be higher on @@ -340,38 +368,50 @@ void TkMacOSXDrawAllViews( void *clientData) { - int count = 0, *dirtyCount = (int *)clientData; + int count = 0, *dirtyCount = (int *)clientData; for (NSWindow *window in [NSApp windows]) { if ([[window contentView] isMemberOfClass:[TKContentView class]]) { TKContentView *view = [window contentView]; if ([view tkNeedsDisplay]) { count++; if (dirtyCount) { continue; } + [[view layer] setNeedsDisplayInRect:[view tkDirtyRect]]; [view setNeedsDisplay:YES]; } } else { [window displayIfNeeded]; } } if (dirtyCount) { *dirtyCount = count; } - - /* - * Trigger calls to updateLayer methods for the views flagged above. - */ - [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:GetRunLoopMode(TkMacOSXGetModalSession()) dequeue:NO]; + for (NSWindow *window in [NSApp windows]) { + if ([[window contentView] isMemberOfClass:[TKContentView class]]) { + TKContentView *view = [window contentView]; + + /* + * If we did not run drawRect, we set needsDisplay back to NO. + * Note that if drawRect did run it may have added to Tk's dirty + * rect, due to attempts to draw outside of drawRect's dirty rect. + */ + + if ([view needsDisplay]) { + [view setNeedsDisplay: NO]; + } + } + } + [NSApp setNeedsToDraw:NO]; } /* *---------------------------------------------------------------------- * @@ -434,15 +474,15 @@ * we want Tcl_WaitForEvent to return immediately. So we set the block * time to 0 and stop the heartbeat. */ NSEvent *currentEvent = - [NSApp nextEventMatchingMask:NSAnyEventMask + [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:GetRunLoopMode(TkMacOSXGetModalSession()) dequeue:NO]; - if ((currentEvent)) { + if ((currentEvent) || [NSApp needsToDraw] ) { Tcl_SetMaxBlockTime(&zeroBlockTime); Tcl_DeleteTimerHandler(ticker); ticker = NULL; } else if (ticker == NULL) { Index: macosx/tkMacOSXPrint.c ================================================================== --- macosx/tkMacOSXPrint.c +++ macosx/tkMacOSXPrint.c @@ -90,12 +90,12 @@ PMPrintSettings printSettings; OSStatus status = noErr; /* Check for proper number of arguments. */ if (objc < 2) { - Tcl_WrongNumArgs(interp, 1, objv, "file"); - return TCL_ERROR; + Tcl_WrongNumArgs(interp, 1, objv, "file"); + return TCL_ERROR; } fileName = [NSString stringWithUTF8String: Tcl_GetString(objv[1])]; urlFile = (CFStringRef) fileName; CFRetain(urlFile); @@ -103,24 +103,24 @@ /* Initialize the delegate for the callback from the page panel. */ PrintDelegate * printDelegate = [[PrintDelegate alloc] init]; status = PMCreateSession( & printSession); if (status != noErr) { - NSLog(@ "Error creating print session."); - return TCL_ERROR; + NSLog(@ "Error creating print session."); + return TCL_ERROR; } status = PMCreatePrintSettings( & printSettings); if (status != noErr) { - NSLog(@ "Error creating print settings."); - return TCL_ERROR; + NSLog(@ "Error creating print settings."); + return TCL_ERROR; } status = PMSessionDefaultPrintSettings(printSession, printSettings); if (status != noErr) { - NSLog(@ "Error creating default print settings."); - return TCL_ERROR; + NSLog(@ "Error creating default print settings."); + return TCL_ERROR; } printSession = (PMPrintSession)[printInfo PMPrintSession]; (void)(PMPageFormat)[printInfo PMPageFormat]; printSettings = (PMPrintSettings)[printInfo PMPrintSettings]; @@ -161,113 +161,113 @@ /* * If value passed here is NSCancelButton, return noErr; * otherwise printing will occur regardless of value. */ if (buttonValue == NSModalResponseCancel) { - return noErr; + return noErr; } status = PMCreateSession( & printSession); if (status != noErr) { - NSLog(@ "Error creating print session."); - return status; + NSLog(@ "Error creating print session."); + return status; } status = PMCreatePrintSettings( & printSettings); if (status != noErr) { - NSLog(@ "Error creating print settings."); - return status; + NSLog(@ "Error creating print settings."); + return status; } status = PMSessionDefaultPrintSettings(printSession, printSettings); if (status != noErr) { - NSLog(@ "Error creating default print settings."); - return status; + NSLog(@ "Error creating default print settings."); + return status; } printSession = (PMPrintSession)[printInfo PMPrintSession]; pageFormat = (PMPageFormat)[printInfo PMPageFormat]; printSettings = (PMPrintSettings)[printInfo PMPrintSettings]; /*Handle print operation.*/ if (buttonValue == NSModalResponseOK) { - if (urlFile == NULL) { - NSLog(@ "Could not get file to print."); - return noErr; - } - - fileName = file; - - CFURLRef printURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, urlFile, kCFURLPOSIXPathStyle, false); - - PMPrinter currentPrinter; - PMDestinationType printDestination; - - /*Get the intended destination.*/ - status = PMSessionGetDestinationType(printSession, printSettings, & printDestination); - - /*Destination is printer. Send file to printer.*/ - if (status == noErr && printDestination == kPMDestinationPrinter) { - - status = PMSessionGetCurrentPrinter(printSession, & currentPrinter); - if (status == noErr) { - CFArrayRef mimeTypes; - status = PMPrinterGetMimeTypes(currentPrinter, printSettings, & mimeTypes); - if (status == noErr && mimeTypes != NULL) { - mimeType = CFSTR("application/pdf"); - if (CFArrayContainsValue(mimeTypes, CFRangeMake(0, CFArrayGetCount(mimeTypes)), mimeType)) { - status = PMPrinterPrintWithFile(currentPrinter, printSettings, pageFormat, mimeType, printURL); - CFRelease(urlFile); - return status; - } - } - } - } - - /* Destination is file. Determine how to handle. */ - if (status == noErr && printDestination == kPMDestinationFile) { - CFURLRef outputLocation = NULL; - - status = PMSessionCopyDestinationLocation(printSession, printSettings, & outputLocation); - if (status == noErr) { - /*Get the source file and target destination, convert to strings.*/ - CFStringRef sourceFile = CFURLCopyFileSystemPath(printURL, kCFURLPOSIXPathStyle); - CFStringRef savePath = CFURLCopyFileSystemPath(outputLocation, kCFURLPOSIXPathStyle); - NSString * sourcePath = (NSString * ) sourceFile; - NSString * finalPath = (NSString * ) savePath; - NSString * pathExtension = [finalPath pathExtension]; - NSFileManager * fileManager = [NSFileManager defaultManager]; + if (urlFile == NULL) { + NSLog(@ "Could not get file to print."); + return noErr; + } + + fileName = file; + + CFURLRef printURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, urlFile, kCFURLPOSIXPathStyle, false); + + PMPrinter currentPrinter; + PMDestinationType printDestination; + + /*Get the intended destination.*/ + status = PMSessionGetDestinationType(printSession, printSettings, & printDestination); + + /*Destination is printer. Send file to printer.*/ + if (status == noErr && printDestination == kPMDestinationPrinter) { + + status = PMSessionGetCurrentPrinter(printSession, & currentPrinter); + if (status == noErr) { + CFArrayRef mimeTypes; + status = PMPrinterGetMimeTypes(currentPrinter, printSettings, & mimeTypes); + if (status == noErr && mimeTypes != NULL) { + mimeType = CFSTR("application/pdf"); + if (CFArrayContainsValue(mimeTypes, CFRangeMake(0, CFArrayGetCount(mimeTypes)), mimeType)) { + status = PMPrinterPrintWithFile(currentPrinter, printSettings, pageFormat, mimeType, printURL); + CFRelease(urlFile); + return status; + } + } + } + } + + /* Destination is file. Determine how to handle. */ + if (status == noErr && printDestination == kPMDestinationFile) { + CFURLRef outputLocation = NULL; + + status = PMSessionCopyDestinationLocation(printSession, printSettings, & outputLocation); + if (status == noErr) { + /*Get the source file and target destination, convert to strings.*/ + CFStringRef sourceFile = CFURLCopyFileSystemPath(printURL, kCFURLPOSIXPathStyle); + CFStringRef savePath = CFURLCopyFileSystemPath(outputLocation, kCFURLPOSIXPathStyle); + NSString * sourcePath = (NSString * ) sourceFile; + NSString * finalPath = (NSString * ) savePath; + NSString * pathExtension = [finalPath pathExtension]; + NSFileManager * fileManager = [NSFileManager defaultManager]; NSError * error = nil; - /* + /* * Is the target file a PDF? If so, copy print file * to output location. */ - if ([pathExtension isEqualToString: @ "pdf"]) { + if ([pathExtension isEqualToString: @ "pdf"]) { /*Make sure no file conflict exists.*/ if ([fileManager fileExistsAtPath: finalPath]) { [fileManager removeItemAtPath: finalPath error: &error]; } - if ([fileManager fileExistsAtPath: sourcePath]) { - error = nil; - [fileManager copyItemAtPath: sourcePath toPath: finalPath error: & error]; - } + if ([fileManager fileExistsAtPath: sourcePath]) { + error = nil; + [fileManager copyItemAtPath: sourcePath toPath: finalPath error: & error]; + } return status; - } - - /* - * Is the target file PostScript? If so, run print file - * through CUPS filter to convert back to PostScript. - */ - - if ([pathExtension isEqualToString: @ "ps"]) { - char source[5012]; - char target[5012]; - [sourcePath getCString: source maxLength: (sizeof source) encoding: NSUTF8StringEncoding]; - [finalPath getCString: target maxLength: (sizeof target) encoding: NSUTF8StringEncoding]; + } + + /* + * Is the target file PostScript? If so, run print file + * through CUPS filter to convert back to PostScript. + */ + + if ([pathExtension isEqualToString: @ "ps"]) { + char source[5012]; + char target[5012]; + [sourcePath getCString: source maxLength: (sizeof source) encoding: NSUTF8StringEncoding]; + [finalPath getCString: target maxLength: (sizeof target) encoding: NSUTF8StringEncoding]; /*Make sure no file conflict exists.*/ if ([fileManager fileExistsAtPath: finalPath]) { [fileManager removeItemAtPath: finalPath error: &error]; } @@ -288,43 +288,43 @@ return status; } } } - /* Destination is preview. Open file in default application for PDF. */ - if ((status == noErr) && (printDestination == kPMDestinationPreview)) { - CFStringRef urlpath = CFURLCopyFileSystemPath(printURL, kCFURLPOSIXPathStyle); - NSString * path = (NSString * ) urlpath; - NSURL * url = [NSURL fileURLWithPath: path]; - NSWorkspace * ws = [NSWorkspace sharedWorkspace]; - [ws openURL: url]; - status = noErr; - return status; - } - - /* - * If destination is not printer, file or preview, - * we do not support it. Display alert. - */ + /* Destination is preview. Open file in default application for PDF. */ + if ((status == noErr) && (printDestination == kPMDestinationPreview)) { + CFStringRef urlpath = CFURLCopyFileSystemPath(printURL, kCFURLPOSIXPathStyle); + NSString * path = (NSString * ) urlpath; + NSURL * url = [NSURL fileURLWithPath: path]; + NSWorkspace * ws = [NSWorkspace sharedWorkspace]; + [ws openURL: url]; + status = noErr; + return status; + } + + /* + * If destination is not printer, file or preview, + * we do not support it. Display alert. + */ if (((status == noErr) && (printDestination != kPMDestinationPreview)) || ((status == noErr) && (printDestination != kPMDestinationFile)) || ((status == noErr) && (printDestination != kPMDestinationPrinter))) { - NSAlert * alert = [[[NSAlert alloc] init] autorelease]; - [alert addButtonWithTitle: @ "OK"]; - - [alert setMessageText: @ "Unsupported Printing Operation"]; - [alert setInformativeText: @ "This printing operation is not supported."]; - [alert setAlertStyle: NSAlertStyleInformational]; - [alert runModal]; - return status; - } + NSAlert * alert = [[[NSAlert alloc] init] autorelease]; + [alert addButtonWithTitle: @ "OK"]; + + [alert setMessageText: @ "Unsupported Printing Operation"]; + [alert setInformativeText: @ "This printing operation is not supported."]; + [alert setAlertStyle: NSAlertStyleInformational]; + [alert runModal]; + return status; + } } /* Return because cancel button was clicked. */ if (buttonValue == NSModalResponseCancel) { - PMRelease(printSession); - return status; + PMRelease(printSession); + return status; } return status; } Index: macosx/tkMacOSXPrivate.h ================================================================== --- macosx/tkMacOSXPrivate.h +++ macosx/tkMacOSXPrivate.h @@ -164,11 +164,11 @@ * Note that 0x7f is del and 0xF8FF is the Apple Logo character. */ #define ON_KEYPAD(virt) ((virt >= 0x41) && (virt <= 0x5C)) #define IS_PRINTABLE(keychar) ((keychar >= 0x20) && (keychar != 0x7f) && \ - ((keychar < 0xF700) || keychar >= 0xF8FF)) + ((keychar < 0xF700) || keychar >= 0xF8FF)) /* * An "index" is 2-bit bitfield showing the state of the Option and Shift * keys. It is used as an index when building the keymaps and it * is the value of the o_s bitfield of a keycode_v. @@ -238,18 +238,18 @@ int antiAlias); MODULE_SCOPE int TkMacOSXIsWindowZoomed(TkWindow *winPtr); MODULE_SCOPE int TkGenerateButtonEventForXPointer(Window window); MODULE_SCOPE void TkMacOSXDrawCGImage(Drawable d, GC gc, CGContextRef context, CGImageRef image, unsigned long imageForeground, - unsigned long imageBackground, CGRect dstBounds); + unsigned long imageBackground, CGRect imageBounds, + CGRect srcBounds, CGRect dstBounds); MODULE_SCOPE int TkMacOSXSetupDrawingContext(Drawable d, GC gc, TkMacOSXDrawingContext *dcPtr); MODULE_SCOPE void TkMacOSXRestoreDrawingContext( TkMacOSXDrawingContext *dcPtr); MODULE_SCOPE void TkMacOSXSetColorInContext(GC gc, unsigned long pixel, CGContextRef context); -MODULE_SCOPE void TkMacOSXRedrawViewIdleTask(void *clientData); #define TkMacOSXGetTkWindow(window) ((TkWindow *)Tk_MacOSXGetTkWindow(window)) #define TkMacOSXGetNSWindowForDrawable(drawable) ((NSWindow *)Tk_MacOSXGetNSWindowForDrawable(drawable)) #define TkMacOSXGetNSViewForDrawable(macWin) ((NSView *)Tk_MacOSXGetNSViewForDrawable((Drawable)(macWin))) #define TkMacOSXGetCGContextForDrawable(drawable) ((CGContextRef)Tk_MacOSXGetCGContextForDrawable(drawable)) MODULE_SCOPE void TkMacOSXWinCGBounds(TkWindow *winPtr, CGRect *bounds); @@ -318,10 +318,13 @@ NSArray *_defaultHelpMenuItems, *_defaultFileMenuItems; NSAutoreleasePool *_mainPool; } @property int poolLock; @property int macOSVersion; +@property Bool isDrawing; +@property Bool needsToDraw; +@property Bool isSigned; @property Bool tkLiveResizeEnded; /* * Persistent state variables used by processMouseEvent. */ @@ -387,11 +390,11 @@ - (void) handlePrintDocumentsEvent: (NSAppleEventDescriptor *)event withReplyEvent: (NSAppleEventDescriptor *)replyEvent; - (void) handleDoScriptEvent: (NSAppleEventDescriptor *)event withReplyEvent: (NSAppleEventDescriptor *)replyEvent; - (void)handleURLEvent: (NSAppleEventDescriptor*)event - withReplyEvent: (NSAppleEventDescriptor*)replyEvent; + withReplyEvent: (NSAppleEventDescriptor*)replyEvent; @end VISIBILITY_HIDDEN /* * Subclass TKContentView from NSTextInputClient to enable composition and @@ -406,11 +409,10 @@ NSRect _tkDirtyRect; NSTrackingArea *trackingArea; } @property Bool tkNeedsDisplay; @property NSRect tkDirtyRect; -@property CGContextRef tkLayerBitmapContext; @end @interface TKContentView(TKKeyEvent) - (void) deleteWorkingText; - (void) cancelComposingText; @@ -419,11 +421,10 @@ @interface TKContentView(TKWindowEvent) - (void) addTkDirtyRect: (NSRect) rect; - (void) clearTkDirtyRect; - (void) generateExposeEvents: (NSRect) rect; - (void) tkToolbarButton: (id) sender; -- (void) resetTkLayerBitmapContext; @end @interface NSWindow(TKWm) - (NSPoint) tkConvertPointToScreen:(NSPoint)point; - (NSPoint) tkConvertPointFromScreen:(NSPoint)point; @@ -464,18 +465,10 @@ + (id)menuWithTitle:(NSString *)title submenus:(NSArray *)submenus; - (NSMenuItem *)itemWithSubmenu:(NSMenu *)submenu; - (NSMenuItem *)itemInSupermenu; @end -// Need undocumented appearance: argument -@interface NSMenu(TKMenu) -- (BOOL)popUpMenuPositioningItem:(NSMenuItem *)item - atLocation:(NSPoint)location - inView:(NSView *)view - appearance:(NSAppearance *)appearance; -@end - @interface NSMenuItem(TKUtils) + (id)itemWithSubmenu:(NSMenu *)submenu; + (id)itemWithTitle:(NSString *)title submenu:(NSMenu *)submenu; + (id)itemWithTitle:(NSString *)title action:(SEL)action; + (id)itemWithTitle:(NSString *)title action:(SEL)action @@ -527,15 +520,22 @@ /* *--------------------------------------------------------------------------- * * TKNSString -- * - * Tcl uses modified UTF-8 as internal encoding. Apple's NSString class - * does not provide a constructor which accepts a modified UTF-8 encoded + * When Tcl is compiled with TCL_UTF_MAX = 3 (the default for 8.6) it cannot + * deal directly with UTF-8 encoded non-BMP characters, since their UTF-8 + * encoding requires 4 bytes. Instead, when using these versions of Tcl, Tk + * uses the CESU-8 encoding internally. This encoding is similar to UTF-8 + * except that it allows encoding surrogate characters as 3-byte sequences + * using the same algorithm which UTF-8 uses for non-surrogates. This means + * that a non-BMP character is encoded as a string of length 6. Apple's + * NSString class does not provide a constructor which accepts a CESU-8 encoded * byte sequence as initial data. So we add a new class which does provide * such a constructor. It also has a DString property which is a DString whose - * string pointer is a byte sequence encoding the NSString with modified UTF-8. + * string pointer is a byte sequence encoding the NSString with the current Tcl + * internal encoding, namely UTF-8 for Tcl8.7+ or CESU-8 otherwise. * *--------------------------------------------------------------------------- */ @interface TKNSString:NSString { Index: macosx/tkMacOSXScale.c ================================================================== --- macosx/tkMacOSXScale.c +++ macosx/tkMacOSXScale.c @@ -167,14 +167,14 @@ */ Tcl_Preserve(scalePtr); if ((scalePtr->flags & INVOKE_COMMAND) && (scalePtr->command != NULL)) { Tcl_Preserve(interp); - if (snprintf(string, TCL_DOUBLE_SPACE, scalePtr->format, - scalePtr->value) < 0) { - string[TCL_DOUBLE_SPACE - 1] = '\0'; - } + if (snprintf(string, TCL_DOUBLE_SPACE, scalePtr->format, + scalePtr->value) < 0) { + string[TCL_DOUBLE_SPACE - 1] = '\0'; + } Tcl_DStringInit(&buf); Tcl_DStringAppend(&buf, scalePtr->command, TCL_INDEX_NONE); Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); Tcl_DStringAppend(&buf, string, TCL_INDEX_NONE); result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); Index: macosx/tkMacOSXScrlbr.c ================================================================== --- macosx/tkMacOSXScrlbr.c +++ macosx/tkMacOSXScrlbr.c @@ -158,14 +158,12 @@ * Draws a scrollbar on the screen. * *-------------------------------------------------------------- */ -#if MAC_OS_X_VERSION_MAX_ALLOWED > 1080 - /* - * This stand-alone drawing function is used on macOS 10.9 and newer because + * This stand-alone drawing function is used because * the HIToolbox does not draw the scrollbar thumb at the expected size on * those systems. The thumb is drawn too large, causing a mouse click on the * thumb to be interpreted as a mouse click in the trough. */ @@ -238,11 +236,10 @@ CGContextSetShouldAntialias(context, true); CGContextFillPath(context); CFRelease(path); } } -#endif void TkpDisplayScrollbar( void *clientData) /* Information about window. */ { @@ -260,10 +257,11 @@ MacDrawable *macWin = (MacDrawable *)winPtr->window; NSView *view = TkMacOSXGetNSViewForDrawable(macWin); if ((view == NULL) + || (macWin->flags & TK_DO_NOT_DRAW) || !TkMacOSXSetupDrawingContext((Drawable)macWin, NULL, &dc)) { return; } /* @@ -317,19 +315,17 @@ kHIThemeOrientationInverted); } else if ([NSApp macOSVersion] <= 100800) { HIThemeDrawTrack(&msPtr->info, 0, dc.context, kHIThemeOrientationNormal); } else { -#if MAC_OS_X_VERSION_MAX_ALLOWED > 1080 /* * Switch back to NSView coordinates and draw a modern scrollbar. */ CGContextConcatCTM(dc.context, t); drawMacScrollbar(scrollPtr, msPtr, dc.context); -#endif } TkMacOSXRestoreDrawingContext(&dc); scrollPtr->flags &= ~REDRAW_PENDING; } Index: macosx/tkMacOSXSubwindows.c ================================================================== --- macosx/tkMacOSXSubwindows.c +++ macosx/tkMacOSXSubwindows.c @@ -54,41 +54,36 @@ XDestroyWindow( TCL_UNUSED(Display *), /* Display. */ Window window) /* Window. */ { MacDrawable *macWin = (MacDrawable *)window; - TKContentView *view = (TKContentView *)TkMacOSXGetNSViewForDrawable(macWin); - //fprintf(stderr, "XDestroyWindow: %s with parent %s\n", - // Tk_PathName(macWin->winPtr), - // Tk_PathName(macWin->winPtr->parentPtr)); /* * Remove any dangling pointers that may exist if the window we are * deleting is being tracked by the grab code. */ - TkMacOSXSelDeadWindow(macWin->winPtr); TkPointerDeadWindow(macWin->winPtr); + TkMacOSXSelDeadWindow(macWin->winPtr); macWin->toplevel->referenceCount--; if (!Tk_IsTopLevel(macWin->winPtr)) { + TkMacOSXInvalidateWindow(macWin, TK_PARENT_WINDOW); if (macWin->winPtr->parentPtr != NULL) { TkMacOSXInvalClipRgns((Tk_Window)macWin->winPtr->parentPtr); - Tcl_CancelIdleCall(TkMacOSXRedrawViewIdleTask, (void *) view); - Tcl_DoWhenIdle(TkMacOSXRedrawViewIdleTask, (void *) view); } if (macWin->visRgn) { CFRelease(macWin->visRgn); - macWin->visRgn = NULL; + macWin->visRgn = NULL; } if (macWin->aboveVisRgn) { CFRelease(macWin->aboveVisRgn); - macWin->aboveVisRgn = NULL; + macWin->aboveVisRgn = NULL; } if (macWin->drawRgn) { CFRelease(macWin->drawRgn); - macWin->drawRgn = NULL; + macWin->drawRgn = NULL; } if (macWin->toplevel->referenceCount == 0) { ckfree(macWin->toplevel); } @@ -96,19 +91,19 @@ ckfree(macWin); return Success; } if (macWin->visRgn) { CFRelease(macWin->visRgn); - macWin->visRgn = NULL; + macWin->visRgn = NULL; } if (macWin->aboveVisRgn) { CFRelease(macWin->aboveVisRgn); - macWin->aboveVisRgn = NULL; + macWin->aboveVisRgn = NULL; } if (macWin->drawRgn) { CFRelease(macWin->drawRgn); - macWin->drawRgn = NULL; + macWin->drawRgn = NULL; } macWin->view = nil; macWin->winPtr->privatePtr = NULL; /* @@ -150,14 +145,15 @@ { if (!window) { return BadWindow; } MacDrawable *macWin = (MacDrawable *)window; + TkWindow *winPtr = macWin->winPtr; + NSWindow *win = TkMacOSXGetNSWindowForDrawable(window); static Bool initialized = NO; NSPoint mouse = [NSEvent mouseLocation]; int x = mouse.x, y = TkMacOSXZeroScreenHeight() - mouse.y; - //fprintf(stderr, "XMapWindow: %s\n", Tk_PathName(macWin->winPtr)); /* * Under certain situations it's possible for this function to be called * before the toplevel window it's associated with has actually been * mapped. In that case we need to create the real Macintosh window now as @@ -167,48 +163,33 @@ if (!TkMacOSXHostToplevelExists(macWin->toplevel->winPtr)) { TkMacOSXMakeRealWindowExist(macWin->toplevel->winPtr); } - TkWindow *winPtr = macWin->winPtr; - NSWindow *win = TkMacOSXGetNSWindowForDrawable(window); - TKContentView *view = [win contentView]; LastKnownRequestProcessed(display)++; if (Tk_IsTopLevel(winPtr)) { if (!Tk_IsEmbedded(winPtr)) { + TKContentView *view = [win contentView]; /* - * We want to activate Tk when a toplevel is mapped but we can't - * always specify activateIgnoringOtherApps to be YES. This is - * because during Tk initialization the root window is mapped - * before applicationDidFinishLaunching returns. Forcing the app to - * activate too early can make the menu bar unresponsive. + * We want to activate Tk when a toplevel is mapped but we must not + * supply YES here. This is because during Tk initialization the + * root window is mapped before applicationDidFinishLaunching + * returns. Forcing the app to activate too early can make the menu + * bar unresponsive. */ TkMacOSXApplyWindowAttributes(winPtr, win); [win setExcludedFromWindowsMenu:NO]; [NSApp activateIgnoringOtherApps:initialized]; + [view addTkDirtyRect: [view bounds]]; 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 - * that the Visibility event occurs after the toplevel is - * visible. - */ - - for (int try = 0; try < 20; try++) { - if ([[NSApp orderedWindows] firstObject] == win) { - break; - } - [NSThread sleepForTimeInterval:.001]; - } } /* * Call Tk_UpdatePointer to tell Tk whether the pointer is in the * new window. @@ -225,11 +206,13 @@ * Rebuild the container's clipping region and display * the window. */ TkMacOSXInvalClipRgns(contWinPtr); + TkMacOSXInvalidateWindow(macWin, TK_PARENT_WINDOW); } + TkMacOSXInvalClipRgns((Tk_Window)winPtr); } else { /* * For non-toplevel windows, rebuild the parent's clipping region * and redisplay the window. @@ -237,17 +220,18 @@ TkMacOSXInvalClipRgns((Tk_Window)winPtr->parentPtr); } /* - * If a geometry manager is mapping hundreds of windows we - * don't want to redraw the view hundreds of times, so do - * it in an idle task. + * Mark the toplevel as needing to be redrawn, unless the window is being + * mapped while drawing is taking place. */ - Tcl_CancelIdleCall(TkMacOSXRedrawViewIdleTask, (void *) view); - Tcl_DoWhenIdle(TkMacOSXRedrawViewIdleTask, (void *) view); + TKContentView *view = [win contentView]; + if (view != [NSView focusView]) { + [view addTkDirtyRect:[view bounds]]; + } /* * Generate VisibilityNotify events for window and all mapped children. */ @@ -267,12 +251,11 @@ /* *---------------------------------------------------------------------- * * NotifyVisibility -- * - * Helper for XMapWindow(). Generates VisibilityNotify events - * for the window and all of its descendants. + * Recursively called helper proc for XMapWindow(). * * Results: * None. * * Side effects: @@ -323,10 +306,11 @@ Display *display, /* Display. */ Window window) /* Window. */ { MacDrawable *macWin = (MacDrawable *)window; TkWindow *winPtr = macWin->winPtr; + TkWindow *parentPtr = winPtr->parentPtr; NSWindow *win = TkMacOSXGetNSWindowForDrawable(window); if (!window) { return BadWindow; } @@ -367,16 +351,26 @@ } TkMacOSXInvalClipRgns((Tk_Window)winPtr); } else { /* - * Rebuild the clip regions for the parent so it will be allowed + * Rebuild the visRgn clip region for the parent so it will be allowed * to draw in the space from which this subwindow was removed and then * redraw the window. */ - TkMacOSXInvalClipRgns((Tk_Window)winPtr->parentPtr); + if (parentPtr && parentPtr->privatePtr->visRgn) { + TkMacOSXInvalidateViewRegion( + TkMacOSXGetNSViewForDrawable(parentPtr->window), + parentPtr->privatePtr->visRgn); + } + TkMacOSXInvalClipRgns((Tk_Window)parentPtr); + TkMacOSXUpdateClipRgn(parentPtr); + } + TKContentView *view = [win contentView]; + if (view != [NSView focusView]) { + [view addTkDirtyRect:[view bounds]]; } return Success; } /* @@ -412,10 +406,11 @@ if (w) { if ([w styleMask] & NSFullScreenWindowMask) { [(TKWindow *)w tkLayoutChanged]; } else { NSRect r = [w contentRectForFrameRect:[w frame]]; + r.origin.y += r.size.height - height; r.size.width = width; r.size.height = height; [w setFrame:[w frameRectForContentRect:r] display:NO]; } @@ -742,16 +737,80 @@ if (value_mask & CWStackMode) { NSView *view = TkMacOSXGetNSViewForDrawable(macWin); if (view) { - TkMacOSXInvalidateWindow(macWin, TK_PARENT_WINDOW); + TkMacOSXInvalClipRgns((Tk_Window)winPtr->parentPtr); + TkpRedrawWidget((Tk_Window)winPtr); } } +#if 0 + TkGenWMMoveRequestEvent(macWin->winPtr, + macWin->winPtr->changes.x, macWin->winPtr->changes.y); +#endif return Success; } + +/* + *---------------------------------------------------------------------- + * + * TkMacOSXSetDrawingEnabled -- + * + * This function sets the TK_DO_NOT_DRAW flag for a given window and + * all of its children. + * + * Results: + * None. + * + * Side effects: + * The clipping regions for the window and its children are cleared. + * + *---------------------------------------------------------------------- + */ + +void +TkMacOSXSetDrawingEnabled( + TkWindow *winPtr, + int flag) +{ + TkWindow *childPtr; + MacDrawable *macWin = winPtr->privatePtr; + + if (macWin) { + if (flag) { + macWin->flags &= ~TK_DO_NOT_DRAW; + } else { + macWin->flags |= TK_DO_NOT_DRAW; + } + } + + /* + * Set the flag for all children & their descendants, excluding Toplevels. + * (??? Do we need to exclude Toplevels?) + */ + + childPtr = winPtr->childList; + while (childPtr) { + if (!Tk_IsTopLevel(childPtr)) { + TkMacOSXSetDrawingEnabled(childPtr, flag); + } + childPtr = childPtr->nextPtr; + } + + /* + * If the window is a container, set the flag for its embedded window. + */ + + if (Tk_IsContainer(winPtr)) { + childPtr = (TkWindow *)Tk_GetOtherWindow((Tk_Window)winPtr); + + if (childPtr) { + TkMacOSXSetDrawingEnabled(childPtr, flag); + } + } +} /* *---------------------------------------------------------------------- * * TkMacOSXUpdateClipRgn -- @@ -903,11 +962,10 @@ } macWin->flags &= ~TK_CLIP_INVALID; } } -// Unused and misspelled stub function /* *---------------------------------------------------------------------- * * TkMacOSXVisableClipRgn -- * @@ -932,15 +990,10 @@ TkMacOSXUpdateClipRgn(winPtr); } return (Region) HIShapeCreateMutableCopy(winPtr->privatePtr->visRgn); } -#if 0 -//This code is not currently used. But it shows how to iterate over the -//rectangles in a region described by an HIShape. Probably we want to -//replace the current dirtyRect by such a region. - /* *---------------------------------------------------------------------- * * TkMacOSXInvalidateViewRegion -- * @@ -974,17 +1027,13 @@ t = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, NSHeight([view bounds])); break; case kHIShapeEnumerateRect: dirtyRect = NSRectFromCGRect(CGRectApplyAffineTransform(*rect, t)); - // Cannot rely on addTkDirtyRect: to force redrawing. - //MC This is the only place where the rect is not the view bounds. - //And it kills liveResize. - //[view generateExposeEvents:dirtyRect]; + [view addTkDirtyRect:dirtyRect]; break; } - [view generateExposeEvents:[view bounds]]; return noErr; } void TkMacOSXInvalidateViewRegion( @@ -995,38 +1044,26 @@ ChkErr(HIShapeEnumerate, rgn, kHIShapeParseFromBottom|kHIShapeParseFromLeft, InvalViewRect, view); } } -#endif /* *---------------------------------------------------------------------- * * TkMacOSXInvalidateWindow -- * - * This stub function redraws the part of the toplevel window - * covered by a given Tk window. (Except currently it redraws - * the entire toplevel.) + * This function invalidates a window and (optionally) its children. * * Results: * None. * * Side effects: - * The window is redrawn. + * Damage is created. * *---------------------------------------------------------------------- */ -void -TkMacOSXRedrawViewIdleTask( - void *clientData) -{ - TKContentView *view = (TKContentView *) clientData; - // fprintf(stderr, "idle redraw for %p\n", view); - [view generateExposeEvents:[view bounds]]; - [view setTkNeedsDisplay:YES]; -} void TkMacOSXInvalidateWindow( MacDrawable *macWin, /* Window to be invalidated. */ int flag) /* Should be TK_WINDOW_ONLY or @@ -1033,20 +1070,15 @@ * TK_PARENT_WINDOW */ { #ifdef TK_MAC_DEBUG_CLIP_REGIONS TkMacOSXDbgMsg("%s", macWin->winPtr->pathName); #endif - TKContentView *view = (TKContentView *)TkMacOSXGetNSViewForDrawable(macWin); - TkWindow *winPtr = macWin->winPtr; - Tk_Window tkwin = (Tk_Window) winPtr; - Tk_Window parent = (Tk_Window) winPtr->parentPtr; - TkMacOSXInvalClipRgns(tkwin); - if ((flag == TK_PARENT_WINDOW) && parent){ - TkMacOSXInvalClipRgns(parent); - } - [view generateExposeEvents:[view bounds]]; - [view setTkNeedsDisplay:YES]; + if (macWin->flags & TK_CLIP_INVALID) { + TkMacOSXUpdateClipRgn(macWin->winPtr); + } + TkMacOSXInvalidateViewRegion(TkMacOSXGetNSViewForDrawable(macWin), + (flag == TK_WINDOW_ONLY) ? macWin->visRgn : macWin->aboveVisRgn); } /* *---------------------------------------------------------------------- * @@ -1071,23 +1103,21 @@ MacDrawable *macWin = (MacDrawable *)drawable; NSWindow *result = nil; if (!macWin || macWin->flags & TK_IS_PIXMAP) { result = nil; - } else if (macWin->toplevel && macWin->toplevel->winPtr && macWin->toplevel->winPtr->wmInfoPtr && macWin->toplevel->winPtr->wmInfoPtr->window) { result = macWin->toplevel->winPtr->wmInfoPtr->window; - } else if (macWin->winPtr && macWin->winPtr->wmInfoPtr && macWin->winPtr->wmInfoPtr->window) { result = macWin->winPtr->wmInfoPtr->window; - } else if (macWin->toplevel && (macWin->toplevel->flags & TK_EMBEDDED)) { TkWindow *contWinPtr = (TkWindow *)Tk_GetOtherWindow((Tk_Window)macWin->toplevel->winPtr); - if (contWinPtr && contWinPtr->privatePtr) { + + if (contWinPtr) { result = TkMacOSXGetNSWindowForDrawable((Drawable)contWinPtr->privatePtr); } } return result; } Index: macosx/tkMacOSXSysTray.c ================================================================== --- macosx/tkMacOSXSysTray.c +++ macosx/tkMacOSXSysTray.c @@ -203,11 +203,11 @@ {"create", "modify", "destroy", NULL}; typedef enum {TRAY_CREATE, TRAY_MODIFY, TRAY_DESTROY} optionsEnum; static const char *modifyOptions[] = {"image", "text", "b1_callback", "b3_callback", NULL}; typedef enum {TRAY_IMAGE, TRAY_TEXT, TRAY_B1_CALLBACK, TRAY_B3_CALLBACK - } modifyOptionsEnum; + } modifyOptionsEnum; if ([NSApp macOSVersion] < 101000) { Tcl_AppendResult(interp, "StatusItem icons not supported on macOS versions lower than 10.10", NULL); @@ -327,13 +327,13 @@ } Tk_FreeImage(tk_image); break; } - /* - * Modify the text for the tooltip. - */ + /* + * Modify the text for the tooltip. + */ case TRAY_TEXT: { NSString *tooltip = [NSString stringWithUTF8String:Tcl_GetString(objv[3])]; if (tooltip == nil) { Tcl_AppendResult(interp, "unable to set tooltip for systray icon", @@ -343,13 +343,13 @@ [statusItem setTextwithString: tooltip]; break; } - /* - * Modify the proc for the callback. - */ + /* + * Modify the proc for the callback. + */ case TRAY_B1_CALLBACK: { [statusItem setB1Callback : objv[3]]; break; } @@ -363,18 +363,18 @@ case TRAY_DESTROY: { /* * Set all properties to nil, and release statusItem. */ - [statusItem setImagewithImage: nil]; - [statusItem setTextwithString: nil]; - [statusItem setB1Callback : NULL]; - [statusItem setB3Callback : NULL]; - [statusItem release]; - *info = NULL; - statusItem = NULL; - break; + [statusItem setImagewithImage: nil]; + [statusItem setTextwithString: nil]; + [statusItem setB1Callback : NULL]; + [statusItem setB3Callback : NULL]; + [statusItem release]; + *info = NULL; + statusItem = NULL; + break; } } return TCL_OK; } Index: macosx/tkMacOSXTest.c ================================================================== --- macosx/tkMacOSXTest.c +++ macosx/tkMacOSXTest.c @@ -19,13 +19,10 @@ /* * Forward declarations of procedures defined later in this file: */ -#if !defined(NDEBUG) && MAC_OS_X_VERSION_MAX_ALLOWED < 1080 -static Tcl_ObjCmdProc DebuggerObjCmd; -#endif static Tcl_ObjCmdProc PressButtonObjCmd; static Tcl_ObjCmdProc MoveMouseObjCmd; static Tcl_ObjCmdProc InjectKeyEventObjCmd; static Tcl_ObjCmdProc MenuBarHeightObjCmd; @@ -53,50 +50,17 @@ { /* * Add commands for platform specific tests on MacOS here. */ -#if !defined(NDEBUG) && MAC_OS_X_VERSION_MAX_ALLOWED < 1080 - Tcl_CreateObjCommand(interp, "debugger", DebuggerObjCmd, NULL, NULL); -#endif Tcl_CreateObjCommand(interp, "pressbutton", PressButtonObjCmd, NULL, NULL); Tcl_CreateObjCommand(interp, "movemouse", MoveMouseObjCmd, NULL, NULL); Tcl_CreateObjCommand(interp, "injectkeyevent", InjectKeyEventObjCmd, NULL, NULL); Tcl_CreateObjCommand(interp, "menubarheight", MenuBarHeightObjCmd, NULL, NULL); return TCL_OK; } -/* - *---------------------------------------------------------------------- - * - * DebuggerObjCmd -- - * - * This procedure simply calls the low level debugger, which was - * deprecated in OSX 10.8. - * - * Results: - * A standard Tcl result. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -#if !defined(NDEBUG) && MAC_OS_X_VERSION_MAX_ALLOWED < 1080 -static int -DebuggerObjCmd( - TCL_UNUSED(void *), - TCL_UNUSED(Tcl_Interp *), - TCL_UNUSED(int), - TCL_UNUSED(Tcl_Obj *const *)) -{ - Debugger(); - return TCL_OK; -} -#endif - /* *---------------------------------------------------------------------- * * MenuBarHeightObjCmd -- * @@ -138,12 +102,10 @@ * * Results: * Returns true if and only if the NSView of the drawable is the * current focusView, which on 10.14 and newer systems can only be the * case when within [NSView drawRect]. - * NOTE: This is no longer needed when we use updateLayer instead - * of drawRect. Now it always returns True. * * Side effects: * None * *---------------------------------------------------------------------- @@ -151,12 +113,25 @@ MODULE_SCOPE Bool TkTestLogDisplay( Drawable drawable) { - (void) drawable; - return True; + MacDrawable *macWin = (MacDrawable *)drawable; + NSWindow *win = nil; + if (macWin->toplevel && macWin->toplevel->winPtr && + macWin->toplevel->winPtr->wmInfoPtr && + macWin->toplevel->winPtr->wmInfoPtr->window) { + win = macWin->toplevel->winPtr->wmInfoPtr->window; + } else if (macWin->winPtr && macWin->winPtr->wmInfoPtr && + macWin->winPtr->wmInfoPtr->window) { + win = macWin->winPtr->wmInfoPtr->window; + } + if (win) { + return ([win contentView] == [NSView focusView]); + } else { + return True; + } } /* *---------------------------------------------------------------------- * Index: macosx/tkMacOSXWindowEvent.c ================================================================== --- macosx/tkMacOSXWindowEvent.c +++ macosx/tkMacOSXWindowEvent.c @@ -242,11 +242,11 @@ #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 if (@available(macOS 10.14, *)) { [view viewDidChangeEffectiveAppearance]; } #endif - [view setTkNeedsDisplay:YES]; + [view addTkDirtyRect:[view bounds]]; Tcl_CancelIdleCall(TkMacOSXDrawAllViews, NULL); Tcl_DoWhenIdle(TkMacOSXDrawAllViews, NULL); } } @@ -254,11 +254,11 @@ { NSWindow *w = [notification object]; TkWindow *winPtr = TkMacOSXGetTkWindow(w); if (winPtr) { - while (Tcl_DoOneEvent(TCL_IDLE_EVENTS)) {} + while (Tcl_DoOneEvent(TCL_IDLE_EVENTS)) {} } } - (void) windowLiveResize: (NSNotification *) notification { @@ -282,15 +282,13 @@ { TKLog(@"-[%@(%p) %s] %@", [self class], self, sel_getName(_cmd), notification); NSWindow *w = [notification object]; TkWindow *winPtr = TkMacOSXGetTkWindow(w); -#if 0 if (winPtr) { - Tk_UnmapWindow((Tk_Window)winPtr); + //Tk_UnmapWindow((Tk_Window)winPtr); } -#endif } #endif /* TK_MAC_DEBUG_NOTIFICATIONS */ - (void) _setupWindowNotifications @@ -308,15 +306,12 @@ observe(NSWindowDidMiniaturizeNotification, windowCollapsed:); observe(NSWindowWillOrderOnScreenNotification, windowMapped:); observe(NSWindowDidOrderOnScreenNotification, windowBecameVisible:); observe(NSWindowWillStartLiveResizeNotification, windowLiveResize:); observe(NSWindowDidEndLiveResizeNotification, windowLiveResize:); - -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 observe(NSWindowDidEnterFullScreenNotification, windowEnteredFullScreen:); observe(NSWindowDidExitFullScreenNotification, windowExitedFullScreen:); -#endif #ifdef TK_MAC_DEBUG_NOTIFICATIONS observe(NSWindowWillMoveNotification, windowDragStart:); observe(NSWindowDidOrderOffScreenNotification, windowUnmapped:); #endif @@ -473,15 +468,35 @@ * Currently none. One day the tkwin parameter may be recorded to * handle redrawing the widget later. * *---------------------------------------------------------------------- */ -//XXXXX This stub is not used with CGImage drawing. + int TkpWillDrawWidget(Tk_Window tkwin) { - (void) tkwin; - return false; + int result; + if (tkwin) { + TkWindow *winPtr = (TkWindow *)tkwin; + TKContentView *view = (TKContentView *)TkMacOSXGetNSViewForDrawable( + (Drawable)winPtr->privatePtr); + result = ([NSApp isDrawing] && view == [NSView focusView]); +#if 0 + printf("TkpWillDrawWidget: %s %d %d \n", Tk_PathName(tkwin), + [NSApp isDrawing], (view == [NSView focusView])); + if (!result) { + NSRect dirtyRect; + TkMacOSXWinNSBounds(winPtr, view, &dirtyRect); + printf("TkpAppCanDraw: dirtyRect for %s is %s\n", + Tk_PathName(tkwin), + NSStringFromRect(dirtyRect).UTF8String); + [view addTkDirtyRect:dirtyRect]; + } +#endif + } else { + result = [NSApp isDrawing]; + } + return result; } /* *---------------------------------------------------------------------- * @@ -507,18 +522,15 @@ TkWindow *winPtr) { TkWindow *childPtr; XEvent event; CGRect bounds, damageBounds; - NSView *view = TkMacOSXGetNSViewForDrawable((Drawable)winPtr->privatePtr); TkMacOSXWinCGBounds(winPtr, &bounds); -#if 0 if (!CGRectIntersectsRect(bounds, *updateBounds)) { return 0; } -#endif /* * Compute the bounding box of the area that the damage occurred in. */ @@ -531,15 +543,11 @@ event.xexpose.x = damageBounds.origin.x - bounds.origin.x; event.xexpose.y = damageBounds.origin.y - bounds.origin.y; event.xexpose.width = damageBounds.size.width; event.xexpose.height = damageBounds.size.height; event.xexpose.count = 0; - if ([view inLiveResize]) { - Tk_HandleEvent(&event); - } else { - Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); - } + Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); #ifdef TK_MAC_DEBUG_DRAWING TKLog(@"Exposed %p {{%d, %d}, {%d, %d}}", event.xany.window, event.xexpose.x, event.xexpose.y, event.xexpose.width, event.xexpose.height); #endif @@ -957,14 +965,26 @@ - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { + /* + * The layer must exist before we set wantsLayer to YES. + */ + + self.layer = [CALayer layer]; self.wantsLayer = YES; self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawOnSetNeedsDisplay; self.layer.contentsGravity = self.layer.contentsAreFlipped ? kCAGravityTopLeft : kCAGravityBottomLeft; + + /* + * Nothing gets drawn at all if the layer does not have a delegate. + * Currently, we do not implement any methods of the delegate, however. + */ + + self.layer.delegate = (id) self; trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options:(NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingEnabledDuringMouseDrag | @@ -975,40 +995,19 @@ [self addTrackingArea:trackingArea]; } return self; } +/* + * We will just use drawRect. + */ + - (BOOL) wantsUpdateLayer { - return YES; -} -- (void) updateLayer { - CGContextRef context = self.tkLayerBitmapContext; - if (context) { - /* - * Create a CGImage by copying (probably using copy-on-write) the - * bitmap data of the CGBitmapContext that we have been using for - * drawing. Then render that CGImage into the CALayer of this view by - * assigning a reference to the CGImage to the contents property of the - * layer. This will cause all drawing done since the last call to this - * function to become visible. - */ - - CGImageRef newImg = CGBitmapContextCreateImage(context); - self.layer.contents = (__bridge id) newImg; - CGImageRelease(newImg); // will quickly leak memory if this is missing - - /* - * Run any pending widget display procs as part of the update. - */ - - while(Tcl_DoOneEvent(TCL_IDLE_EVENTS)){} - [self setTkNeedsDisplay:NO]; - } -} - -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + return NO; +} + - (void) viewDidChangeBackingProperties { /* * Make sure that the layer uses a contentScale that matches the @@ -1016,100 +1015,127 @@ * the view is on a Retina display, as well as incorrect size when * the view is on a normal display. */ self.layer.contentsScale = self.window.screen.backingScaleFactor; - [self resetTkLayerBitmapContext]; - // need to redraw - [self generateExposeEvents: self.bounds]; } -#endif - (void) addTkDirtyRect: (NSRect) rect { _tkNeedsDisplay = YES; _tkDirtyRect = NSUnionRect(_tkDirtyRect, rect); + [NSApp setNeedsToDraw:YES]; + [self setNeedsDisplay:YES]; + [[self layer] setNeedsDisplay]; } - (void) clearTkDirtyRect { _tkNeedsDisplay = NO; _tkDirtyRect = NSZeroRect; + [NSApp setNeedsToDraw:NO]; +} + +- (void) drawRect: (NSRect) rect +{ + (void)rect; + +#ifdef TK_MAC_DEBUG_DRAWING + TkWindow *winPtr = TkMacOSXGetTkWindow([self window]); + if (winPtr) { + fprintf(stderr, "drawRect: drawing %s in %s\n", + Tk_PathName(winPtr), NSStringFromRect(rect).UTF8String); + } +#endif + + /* + * We do not allow recursive calls to drawRect, but we only log them on OSX + * > 10.13, where they should never happen. + */ + + if ([NSApp isDrawing]) { + if ([NSApp macOSVersion] > 101300) { + TKLog(@"WARNING: a recursive call to drawRect was aborted."); + } + return; + } + + [NSApp setIsDrawing: YES]; + [self clearTkDirtyRect]; + [self generateExposeEvents:rect]; + [NSApp setIsDrawing:NO]; + +#ifdef TK_MAC_DEBUG_DRAWING + fprintf(stderr, "drawRect: done.\n"); +#endif } -(void) setFrameSize: (NSSize)newsize { - NSSize oldsize = self.bounds.size; [super setFrameSize: newsize]; - if ((newsize.width == 1 && newsize.height == 1) || - (oldsize.width == 0 && oldsize.height == 0)) { - return; - } NSWindow *w = [self window]; TkWindow *winPtr = TkMacOSXGetTkWindow(w); Tk_Window tkwin = (Tk_Window)winPtr; + + if (![self inLiveResize] && + [w respondsToSelector: @selector (tkLayoutChanged)]) { + [(TKWindow *)w tkLayoutChanged]; + } if (winPtr) { - unsigned int width = (unsigned int) newsize.width; - unsigned int height= (unsigned int) newsize.height; + unsigned int width = (unsigned int)newsize.width; + unsigned int height=(unsigned int)newsize.height; void *oldArg; Tk_RestrictProc *oldProc; /* - * This function can be re-entered, so we need to make sure we don't - * clobber any AutoreleasePool set up by the caller. + * This can be called from outside the Tk event loop. Since it calls + * Tcl_DoOneEvent, we need to make sure we don't clobber the + * AutoreleasePool set up by the caller. */ [NSApp _lockAutoreleasePool]; + /* + * Disable Tk drawing until the window has been completely configured. + */ + + TkMacOSXSetDrawingEnabled(winPtr, 0); + /* * Generate and handle a ConfigureNotify event for the new size. */ TkGenWMConfigureEvent(tkwin, Tk_X(tkwin), Tk_Y(tkwin), width, height, TK_SIZE_CHANGED | TK_MACOSX_HANDLE_EVENT_IMMEDIATELY); oldProc = Tk_RestrictEvents(ConfigureRestrictProc, NULL, &oldArg); - while (Tcl_DoOneEvent(TCL_WINDOW_EVENTS|TCL_DONT_WAIT)) {} - Tk_RestrictEvents(oldProc, oldArg, &oldArg); - - - /* - * Update Tk's window data for the new size. - */ - - if ([w respondsToSelector: @selector (tkLayoutChanged)]) { - [(TKWindow *)w tkLayoutChanged]; - } - - /* - * Reset the cgimage layer and redraw the entire content view. - */ - - [self viewDidChangeBackingProperties]; - - /* - * In live resize we seem to need to draw a second time to - * avoid artifacts. - */ - - if ([self inLiveResize]) { - [self generateExposeEvents:self.bounds]; + Tk_RestrictEvents(oldProc, oldArg, &oldArg); + + /* + * Now that Tk has configured all subwindows, create the clip regions. + */ + + TkMacOSXSetDrawingEnabled(winPtr, 1); + TkMacOSXInvalClipRgns(tkwin); + TkMacOSXUpdateClipRgn(winPtr); + + /* + * Generate and process expose events to redraw the window. To avoid + * crashes, only do this if we are being called from drawRect. See + * ticket [1fa8c3ed8d]. + */ + + if([NSApp isDrawing] || [self inLiveResize]) { + [self generateExposeEvents: [self bounds]]; } /* * Finally, unlock the main autoreleasePool. */ [NSApp _unlockAutoreleasePool]; - - } - - /* - * Request a call to updateLayer. - */ - - [self setNeedsDisplay:YES]; + } } /* * Core method of this class: generates expose events for redrawing. The * expose events are immediately removed from the Tcl event loop and processed. @@ -1117,66 +1143,57 @@ * pending idle events are processed so the drawing will actually take place. */ - (void) generateExposeEvents: (NSRect) rect { + unsigned long serial; + int updatesNeeded; CGRect updateBounds; TkWindow *winPtr = TkMacOSXGetTkWindow([self window]); void *oldArg; Tk_RestrictProc *oldProc; - static int reentered = 0; - - if (!winPtr || - (winPtr->flags & (TK_ALREADY_DEAD)) || - !Tk_IsMapped(winPtr)) { - return; - } - - if (reentered) { - /* - * When in liveResize an event loop gets run below to - * immediately process displayProcs while the resize is being - * done. Those can cause calls to this function, leading to - * crashes or very poor performance. The reentered flag is - * used to detect this. - */ - //fprintf(stderr, "Recursive call to generateExposeEvents\n"); - return; - } - reentered = 1; + if (!winPtr) { + return; + } /* * Generate Tk Expose events. All of these events will share the same * serial number. */ - if ([self inLiveResize]) { - updateBounds = [self bounds]; - } else { - updateBounds = NSRectToCGRect(rect); - } - updateBounds.origin.y = ([self bounds].size.height - updateBounds.origin.y - - updateBounds.size.height); - if ( GenerateUpdates(&updateBounds, winPtr)) { - /* - * Use the ExposeRestrictProc to process the expose events we just - * generated. This will create idle drawing tasks, which we handle - * before we return in the case of a live resize. - */ - unsigned int serial = LastKnownRequestProcessed(Tk_Display(winPtr)); - oldProc = Tk_RestrictEvents(ExposeRestrictProc, UINT2PTR(serial), &oldArg); - while (Tcl_ServiceEvent(TCL_WINDOW_EVENTS|TCL_DONT_WAIT)) {}; - Tk_RestrictEvents(oldProc, NULL, &oldArg); - - /* - * During a LiveResize we process all idle tasks generated by the - * expose events to redraw the window while it is being resized. - */ - if ([self inLiveResize]) { - while (Tcl_DoOneEvent(TCL_IDLE_EVENTS)) {} - } - } - reentered = 0; + + updateBounds = NSRectToCGRect(rect); + updateBounds.origin.y = ([self bounds].size.height - updateBounds.origin.y + - updateBounds.size.height); + updatesNeeded = GenerateUpdates(&updateBounds, winPtr); + if (updatesNeeded) { + + serial = LastKnownRequestProcessed(Tk_Display(winPtr)); + + /* + * Use the ExposeRestrictProc to process only the expose events. This + * will create idle drawing tasks, which we handle before we return. + */ + + oldProc = Tk_RestrictEvents(ExposeRestrictProc, UINT2PTR(serial), &oldArg); + while (Tcl_ServiceEvent(TCL_WINDOW_EVENTS|TCL_DONT_WAIT)) {}; + Tk_RestrictEvents(oldProc, oldArg, &oldArg); + + /* + * Starting with OSX 10.14, which uses Core Animation to draw windows, + * all drawing must be done within the drawRect method. (The CGContext + * which draws to the backing CALayer is created by the NSView before + * calling drawRect, and destroyed when drawRect returns. Drawing done + * with the current CGContext outside of the drawRect method has no + * effect.) + * + * Fortunately, Tk schedules all drawing to be done while Tcl is idle. + * So to run any display procs which were scheduled by the expose + * events we process all idle events before returning. + */ + + while (Tcl_DoOneEvent(TCL_IDLE_EVENTS)) {} + } } /* * In macOS 10.14 and later this method is called when a user changes between * light and dark mode or changes the accent color. The implementation @@ -1227,11 +1244,10 @@ char data[256]; snprintf(data, 256, "Appearance %s Accent %s Highlight %s", effectiveAppearanceName.UTF8String, accentName, highlightName); Tk_SendVirtualEvent(tkwin, "AppearanceChanged", Tcl_NewStringObj(data, TCL_INDEX_NONE)); - [self generateExposeEvents:self.bounds]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change @@ -1329,36 +1345,10 @@ return [NSApp servicesProvider]; } return [super validRequestorForSendType:sendType returnType:returnType]; } --(void) resetTkLayerBitmapContext { - static CGColorSpaceRef colorspace = NULL; - if (colorspace == NULL) { - colorspace = CGColorSpaceCreateDeviceRGB(); - CGColorSpaceRetain(colorspace); - } - CGContextRef newCtx = CGBitmapContextCreate( - NULL, self.layer.contentsScale * self.frame.size.width, - self.layer.contentsScale * self.frame.size.height, 8, 0, colorspace, - kCGBitmapByteOrder32Big | kCGImageAlphaNoneSkipLast // will also need to specify this when capturing - ); - CGContextScaleCTM(newCtx, self.layer.contentsScale, self.layer.contentsScale); -#if 0 - fprintf(stderr, "rTkLBC %.1f %s %p %p %ld\n", (float)self.layer.contentsScale, - NSStringFromSize(self.frame.size).UTF8String, colorspace, newCtx, - self.tkLayerBitmapContext ? - (long)CFGetRetainCount(self.tkLayerBitmapContext) : INT_MIN); - fprintf(stderr, "rTkLBC %p %ld\n", self.tkLayerBitmapContext, - (long)(self.tkLayerBitmapContext ? - CFGetRetainCount(self.tkLayerBitmapContext) : LONG_MIN)); -#endif - // The context is also released in TkWmDeadWindow. - CGContextRelease(self.tkLayerBitmapContext); - self.tkLayerBitmapContext = newCtx; -} - @end /* * Local Variables: * mode: objc Index: macosx/tkMacOSXWm.c ================================================================== --- macosx/tkMacOSXWm.c +++ macosx/tkMacOSXWm.c @@ -289,11 +289,10 @@ contentRect.origin.y - contentRect.size.height); wmPtr->parentWidth = winPtr->changes.width + frameRect.size.width - contentRect.size.width; wmPtr->parentHeight = winPtr->changes.height + frameRect.size.height - contentRect.size.height; - TkMacOSXInvalClipRgns((Tk_Window)winPtr); } } #endif typedef enum { @@ -554,20 +553,10 @@ #pragma mark NSWindow(TKWm) @implementation NSWindow(TKWm) -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 -- (NSPoint) tkConvertPointToScreen: (NSPoint) point -{ - return [self convertBaseToScreen:point]; -} -- (NSPoint) tkConvertPointFromScreen: (NSPoint)point -{ - return [self convertScreenToBase:point]; -} -#else - (NSPoint) tkConvertPointToScreen: (NSPoint) point { NSRect pointrect = {point, {0,0}}; return [self convertRectToScreen:pointrect].origin; } @@ -575,11 +564,10 @@ - (NSPoint) tkConvertPointFromScreen: (NSPoint)point { NSRect pointrect = {point, {0,0}}; return [self convertRectFromScreen:pointrect].origin; } -#endif @end #pragma mark - @implementation TKPanel: NSPanel @@ -586,12 +574,10 @@ @synthesize tkWindow = _tkWindow; - (void) tkLayoutChanged { syncLayout(self); - [[self contentView] setNeedsDisplay:YES]; - Tcl_DoWhenIdle(TkMacOSXDrawAllViews, NULL); } @end @implementation TKDrawerWindow: NSWindow @@ -607,12 +593,10 @@ @implementation TKWindow(TKWm) - (void) tkLayoutChanged { syncLayout(self); - [[self contentView] setNeedsDisplay:YES]; - Tcl_DoWhenIdle(TkMacOSXDrawAllViews, NULL); } #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101300 - (void)toggleTabBar:(id)sender { @@ -825,29 +809,28 @@ NSPoint p = NSMakePoint(x, TkMacOSXZeroScreenHeight() - y); for (NSWindow *w in [NSApp orderedWindows]) { TkWindow *winPtr = TkMacOSXGetTkWindow(w); if (winPtr) { + WmInfo *wmPtr = winPtr->wmInfoPtr; NSRect windowFrame = [w frame]; - NSRect contentFrame = windowFrame; + NSRect contentFrame = [w frame]; + contentFrame.size.height = [[w contentView] frame].size.height; /* * For consistency with other platforms, points in the * title bar are not considered to be contained in the * window. */ - contentFrame.size.height = [[w contentView] frame].size.height; - if (NSMouseInRect(p, contentFrame, NO)) { - return winPtr; - } else if (NSMouseInRect(p, windowFrame, NO)) { - /* - * The pointer is in the title bar of the highest NSWindow - * containing it, and therefore it should not be considered - * to be contained in any Tk window. - */ - return NULL; + if ((wmPtr->hints.initial_state == NormalState || + wmPtr->hints.initial_state == ZoomState)) { + if (NSMouseInRect(p, contentFrame, NO)) { + return winPtr; + } else if (NSMouseInRect(p, windowFrame, NO)) { + return NULL; + } } } } return NULL; } @@ -1102,36 +1085,31 @@ * * TkWmDeadWindow -- * * This procedure is invoked when a top-level window is about to be * deleted. It cleans up the wm-related data structures for the window. - * If the dead window contains the pointer, TkUpdatePointer is called - * to tell Tk which window will be the new pointer window. * * Results: * None. * * Side effects: - * The WmInfo structure for winPtr gets freed. Tk's cached pointer - * window may change. + * The WmInfo structure for winPtr gets freed up. * *---------------------------------------------------------------------- */ void TkWmDeadWindow( TkWindow *winPtr) /* Top-level window that's being deleted. */ { - TkWindow *winPtr2; - NSWindow *w; WmInfo *wmPtr = winPtr->wmInfoPtr, *wmPtr2; - TKWindow *deadNSWindow = NULL; - if (Tk_WindowId(winPtr) == None) { - fprintf(stderr, "TkWmDeadWindow: no window id\n"); - } else { - deadNSWindow = (TKWindow *)TkMacOSXGetNSWindowForDrawable(Tk_WindowId(winPtr)); + TKWindow *deadNSWindow; + + if (wmPtr == NULL) { + return; } + /* *If the dead window is a transient, remove it from the container's list. */ RemoveTransient(winPtr); @@ -1179,14 +1157,15 @@ * the transient. */ for (Transient *transientPtr = wmPtr->transientPtr; transientPtr != NULL; transientPtr = transientPtr->nextPtr) { - TkWindow *containerPtr = (TkWindow *)TkMacOSXGetContainer( - transientPtr->winPtr); + TkWindow *winPtr2 = transientPtr->winPtr; + TkWindow *containerPtr = (TkWindow *)TkMacOSXGetContainer(winPtr2); + if (containerPtr == winPtr) { - wmPtr2 = transientPtr->winPtr->wmInfoPtr; + wmPtr2 = winPtr2->wmInfoPtr; wmPtr2->container = NULL; } } while (wmPtr->transientPtr != NULL) { @@ -1194,52 +1173,33 @@ wmPtr->transientPtr = transientPtr->nextPtr; ckfree(transientPtr); } + deadNSWindow = (TKWindow *)wmPtr->window; + /* * Remove references to the Tk window from the mouse event processing - * state which is recorded in the NSApplication object and notify Tk - * of the new pointer window. - */ - - NSPoint mouse = [NSEvent mouseLocation]; - [NSApp setTkPointerWindow:nil]; - winPtr2 = NULL; - - for (w in [NSApp orderedWindows]) { - if (w == deadNSWindow || w == NULL) { - continue; - } - winPtr2 = TkMacOSXGetTkWindow(w); - if (winPtr2 == NULL) { - continue; - } - if (NSPointInRect(mouse, [w frame])) { - [NSApp setTkPointerWindow: winPtr2]; - break; - } - } - if (winPtr2) { - /* - * We now know which toplevel will contain the pointer when the window - * is destroyed. We need to know which Tk window within the - * toplevel will contain the pointer. - */ - NSPoint local = [w tkConvertPointFromScreen: mouse]; - int top_x = floor(local.x), - top_y = floor(w.frame.size.height - local.y); - int root_x = floor(mouse.x), - root_y = floor(TkMacOSXZeroScreenHeight() - mouse.y); - int win_x, win_y; - Tk_Window target = Tk_TopCoordsToWindow((Tk_Window) winPtr2, top_x, top_y, &win_x, &win_y); - /* - * A non-toplevel window can have a NULL parent while it is in the process of - * being destroyed. We should not call Tk_UpdatePointer in that case. - */ - if (Tk_Parent(target) != NULL || Tk_IsTopLevel(target)) { - Tk_UpdatePointer(target, root_x, root_y, [NSApp tkButtonState]); + * state which is recorded in the NSApplication object. + */ + + if (winPtr == [NSApp tkPointerWindow]) { + NSWindow *w; + NSPoint mouse = [NSEvent mouseLocation]; + [NSApp setTkPointerWindow:nil]; + for (w in [NSApp orderedWindows]) { + if (w == deadNSWindow) { + continue; + } + if (NSPointInRect(mouse, [w frame])) { + TkWindow *winPtr2 = TkMacOSXGetTkWindow(w); + int x = mouse.x, y = TkMacOSXZeroScreenHeight() - mouse.y; + [NSApp setTkPointerWindow:winPtr2]; + Tk_UpdatePointer((Tk_Window) winPtr2, x, y, + [NSApp tkButtonState]); + break; + } } } /* * Unregister the NSWindow and remove all references to it from the Tk @@ -1287,14 +1247,13 @@ /* * Fix bug 5692042764: * set tkEventTarget to NULL when there is no window to send Tk events to. */ TkWindow *newTkEventTarget = NULL; - winPtr2 = NULL; - for (w in [NSApp orderedWindows]) { - winPtr2 = TkMacOSXGetTkWindow(w); + for (NSWindow *w in [NSApp orderedWindows]) { + TkWindow *winPtr2 = TkMacOSXGetTkWindow(w); BOOL isOnScreen; if (!winPtr2 || !winPtr2->wmInfoPtr) { continue; } @@ -1316,18 +1275,10 @@ if (deadNSWindow == [NSApp keyWindow]) { [NSApp _setKeyWindow:nil]; [NSApp _setMainWindow:nil]; } - - /* - * Avoid redrawing the view after it is released. - */ - - TKContentView *deadView = [deadNSWindow contentView]; - Tcl_CancelIdleCall(TkMacOSXRedrawViewIdleTask,(void *) deadView); - CGContextRelease(deadView.tkLayerBitmapContext); [deadNSWindow close]; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 101400 NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; [preferences removeObserver:deadNSWindow.contentView forKeyPath:@"AppleHighlightColor"]; @@ -1738,15 +1689,11 @@ case WMATT_FULLSCREEN: if (Tcl_GetBooleanFromObj(interp, value, &boolValue) != TCL_OK) { return TCL_ERROR; } if (boolValue != (([macWindow styleMask] & NSFullScreenWindowMask) != 0)) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [macWindow toggleFullScreen:macWindow]; -#else - TKLog(@"The fullscreen attribute is ignored on this system."); -#endif } break; case WMATT_MODIFIED: if (Tcl_GetBooleanFromObj(interp, value, &boolValue) != TCL_OK) { return TCL_ERROR; @@ -2424,11 +2371,12 @@ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { WmInfo *wmPtr = winPtr->wmInfoPtr; - NSWindow *win = nil; + NSWindow *win = TkMacOSXGetNSWindowForDrawable(winPtr->window); + if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "window"); return TCL_ERROR; } if (wmPtr->iconFor != NULL) { @@ -2443,21 +2391,15 @@ winPtr->pathName)); Tcl_SetErrorCode(interp, "TK", "WM", "DEICONIFY", "EMBEDDED", NULL); return TCL_ERROR; } - if (winPtr->window) { - win = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } TkpWmSetState(winPtr, TkMacOSXIsWindowZoomed(winPtr) ? ZoomState : NormalState); - if (win) { - [win setExcludedFromWindowsMenu:NO]; - TkMacOSXApplyWindowAttributes(winPtr, win); - [win orderFront:NSApp]; - [[win contentView] setTkNeedsDisplay:YES]; - } + [win setExcludedFromWindowsMenu:NO]; + TkMacOSXApplyWindowAttributes(winPtr, win); + [win orderFront:NSApp]; if (wmPtr->icon) { Tk_UnmapWindow((Tk_Window)wmPtr->icon); } /* @@ -2478,10 +2420,11 @@ transientPtr->flags &= ~WITHDRAWN_BY_CONTAINER; } } } + [[win contentView] setNeedsDisplay:YES]; Tcl_DoWhenIdle(TkMacOSXDrawAllViews, NULL); return TCL_OK; } /* @@ -2579,10 +2522,11 @@ macWin->toplevel->referenceCount--; macWin->toplevel = winPtr->parentPtr->privatePtr->toplevel; macWin->toplevel->referenceCount++; macWin->flags &= ~TK_HOST_EXISTS; + TkWmDeadWindow(winPtr); RemapWindows(winPtr, (MacDrawable *)winPtr->parentPtr->window); /* * Make sure wm no longer manages this window */ @@ -2669,17 +2613,15 @@ Tcl_Interp *interp, /* Current interpreter. */ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { WmInfo *wmPtr = winPtr->wmInfoPtr; - NSWindow *win = nil; + NSWindow *win = TkMacOSXGetNSWindowForDrawable(winPtr->window); char xSign = '+', ySign = '+'; int width, height, x = wmPtr->x, y= wmPtr->y; char *argv3; - if (winPtr && winPtr->window) { - win = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } + if ((objc != 3) && (objc != 4)) { Tcl_WrongNumArgs(interp, 2, objv, "window ?newGeometry?"); return TCL_ERROR; } if (objc == 3) { @@ -3421,27 +3363,22 @@ Tcl_GetString(objv[3]), Tk_PathName(wmPtr2->iconFor))); Tcl_SetErrorCode(interp, "TK", "WM", "ICONWINDOW", "ICON", NULL); return TCL_ERROR; } if (wmPtr->icon != NULL) { - NSWindow *win = nil; TkWindow *oldIcon = (TkWindow *)wmPtr->icon; - if (winPtr && winPtr->window) { - win = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } + WmInfo *wmPtr3 = oldIcon->wmInfoPtr; + NSWindow *win = TkMacOSXGetNSWindowForDrawable(oldIcon->window); + /* * The old icon should be withdrawn. */ - if (oldIcon) { - WmInfo *wmPtr3 = oldIcon->wmInfoPtr; - TkpWmSetState(oldIcon, WithdrawnState); - if (wmPtr3) { - wmPtr3->iconFor = NULL; - } - } + + TkpWmSetState(oldIcon, WithdrawnState); [win orderOut:NSApp]; - [win setExcludedFromWindowsMenu:YES]; + [win setExcludedFromWindowsMenu:YES]; + wmPtr3->iconFor = NULL; } Tk_MakeWindowExist(tkwin2); wmPtr->hints.icon_window = Tk_WindowId(tkwin2); wmPtr->hints.flags |= IconWindowHint; wmPtr->icon = tkwin2; @@ -3532,11 +3469,10 @@ TkMapTopFrame(frameWin); TkWmMapWindow(winPtr); } else if (Tk_IsTopLevel(frameWin)) { /* Already managed by wm - ignore it */ } - Tk_ManageGeometry((Tk_Window)winPtr, &wmMgrType, NULL); return TCL_OK; } /* *---------------------------------------------------------------------- @@ -3671,15 +3607,11 @@ Tcl_Size objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Bool boolValue; XSetWindowAttributes atts; - NSWindow *win = nil; - if (winPtr && winPtr->window) { - win = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } - + TKWindow *win = (TKWindow *)TkMacOSXGetNSWindowForDrawable(winPtr->window); if ((objc != 3) && (objc != 4)) { Tcl_WrongNumArgs(interp, 2, objv, "window ?boolean?"); return TCL_ERROR; } @@ -5668,19 +5600,10 @@ * procedure doesn't return until the restack has taken effect and the * ConfigureNotify event for it has been received. * *---------------------------------------------------------------------- */ -#define PRINT_STACK \ - for (NSWindow *w in [NSApp orderedWindows]) { \ - TkWindow *winPtr2 = TkMacOSXGetTkWindow(w); \ - if (winPtr2) { \ - fprintf(stderr, "%s ", Tk_PathName(winPtr2)); \ - } \ - } \ - fprintf(stderr, "\n"); \ - fflush(stderr) void TkWmRestackToplevel( TkWindow *winPtr, /* Window to restack. */ int aboveBelow, /* Gives relative position for restacking; @@ -5734,18 +5657,12 @@ /* * Just let the Mac window manager deal with all the subtleties of keeping * track of off-screen windows, etc. */ -#if 0 - fprintf(stderr, "window order: "); PRINT_STACK; -#endif + [macWindow orderWindow:macAboveBelow relativeTo:otherNumber]; -#if 0 - fprintf(stderr, "new window order: "); PRINT_STACK; -#endif -#undef PRINT_STACK } /* *---------------------------------------------------------------------- * @@ -6091,11 +6008,11 @@ Tk_Window TkMacOSXGetContainer( TkWindow *winPtr) { - if (Tk_PathName(winPtr)) { + if (winPtr->wmInfoPtr != NULL) { return (Tk_Window)winPtr->wmInfoPtr->container; } return NULL; } @@ -6136,11 +6053,11 @@ * Returns the Tk_Window associated with the given NSWindow*. This * function is a stub, so the NSWindow* parameter must be declared as * void*. * * Results: - * A Tk_Window, or None if the NSWindow is not associated with + * A Tk_Window, or NULL if the NSWindow is not associated with * any Tk window. * * Side effects: * None. * @@ -6152,16 +6069,17 @@ void *w) { Window window = None; if ([(NSWindow *)w respondsToSelector: @selector (tkWindow)]) { window = [(TKWindow *)w tkWindow]; + } + if (window) { TkDisplay *dispPtr = TkGetDisplayList(); - if (window && dispPtr && dispPtr->display) { - return Tk_IdToWindow(dispPtr->display, window); - } + return Tk_IdToWindow(dispPtr->display, window); + } else { + return NULL; } - return NULL; } /* *---------------------------------------------------------------------- * @@ -6182,14 +6100,11 @@ MODULE_SCOPE int TkMacOSXIsWindowZoomed( TkWindow *winPtr) { - NSWindow *macWindow = nil; - if (winPtr && winPtr->window) { - macWindow = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } + NSWindow *macWindow = TkMacOSXGetNSWindowForDrawable(winPtr->window); return [macWindow isZoomed]; } /* *---------------------------------------------------------------------- @@ -6898,15 +6813,13 @@ /* *---------------------------------------------------------------------- * * TkpRedrawWidget -- * - * This is a stub called only from tkTextDisp.c. It was introduced - * to deal with an issue in macOS 10.14 and is not needed - * even for that OS with updateLayer in use. It would add the widget bounds - * to the dirtyRect, which is not currently used, and set the - * TkNeedsDisplay flag. Now it is a no-op. + * Mark the bounding rectangle of this widget as needing display so the + * widget will be drawn by [NSView drawRect:]. If this is called within + * the drawRect method, do nothing. * * Results: * None. * * Side effects: @@ -6915,31 +6828,28 @@ *---------------------------------------------------------------------- */ void TkpRedrawWidget(Tk_Window tkwin) { - (void) tkwin; -#if 0 TkWindow *winPtr = (TkWindow *)tkwin; - NSWindow *w = nil; + NSWindow *w; Rect tkBounds; NSRect bounds; - if (winPtr && winPtr->window) { - w = TkMacOSXGetNSWindowForDrawable(winPtr->window); + if ([NSApp isDrawing]) { + return; } + w = TkMacOSXGetNSWindowForDrawable(winPtr->window); if (w) { TKContentView *view = [w contentView]; TkMacOSXWinBounds(winPtr, &tkBounds); bounds = NSMakeRect(tkBounds.left, [view bounds].size.height - tkBounds.bottom, tkBounds.right - tkBounds.left, tkBounds.bottom - tkBounds.top); [view addTkDirtyRect:bounds]; - [view setNeedsDisplay:YES]; } -#endif } /* *---------------------------------------------------------------------- @@ -7051,26 +6961,25 @@ * May maximize, minimize, restore, or withdraw a window. * *---------------------------------------------------------------------- */ -int +void TkpWmSetState( TkWindow *winPtr, /* Toplevel window to operate on. */ int state) /* One of IconicState, ZoomState, NormalState, * or WithdrawnState. */ { WmInfo *wmPtr = winPtr->wmInfoPtr; - NSWindow *macWin = nil; + NSWindow *macWin; wmPtr->hints.initial_state = state; if (wmPtr->flags & WM_NEVER_MAPPED) { - goto setStateEnd; + return; } - if (winPtr && winPtr->window) { - macWin = TkMacOSXGetNSWindowForDrawable(winPtr->window); - } + + macWin = TkMacOSXGetNSWindowForDrawable(winPtr->window); /* * Make sure windows are updated before the state change. As an exception, * do not process idle tasks before withdrawing a window. The purpose of * this is to support the common paradigm of immediately withdrawing the @@ -7107,12 +7016,10 @@ /* * Make sure windows are updated after the state change too. */ while (Tcl_DoOneEvent(TCL_IDLE_EVENTS)){} -setStateEnd: - return 1; } /* *---------------------------------------------------------------------- * @@ -7253,14 +7160,11 @@ TkWindow *winPtr, /* Window that is to receive the X focus. */ int force) /* Non-zero means claim the focus even if it * didn't originally belong to topLevelPtr's * application. */ { - if (!winPtr || - (winPtr->flags & TK_ALREADY_DEAD) || - !Tk_IsMapped(winPtr) || - winPtr->atts.override_redirect) { + if (winPtr->atts.override_redirect) { return 0; } if (Tk_IsTopLevel(winPtr) && !Tk_IsEmbedded(winPtr)) { NSWindow *win = TkMacOSXGetNSWindowForDrawable(winPtr->window); @@ -7457,12 +7361,10 @@ [[macWindow standardWindowButton:NSWindowMiniaturizeButton] setEnabled:!!(newAttributes & kWindowCollapseBoxAttribute)]; } if ((changedAttributes & (kWindowResizableAttribute | kWindowFullZoomAttribute)) || initial) { - [macWindow setShowsResizeIndicator: - !!(newAttributes & kWindowResizableAttribute)]; [[macWindow standardWindowButton:NSWindowZoomButton] setEnabled:(newAttributes & kWindowResizableAttribute) && (newAttributes & kWindowFullZoomAttribute)]; if (newAttributes & kWindowHorizontalZoomAttribute) { wmPtr->flags &= ~(WM_WIDTH_NOT_RESIZABLE); Index: macosx/tkMacOSXXStubs.c ================================================================== --- macosx/tkMacOSXXStubs.c +++ macosx/tkMacOSXXStubs.c @@ -863,18 +863,10 @@ */ LastKnownRequestProcessed(display)++; return Success; } -Bool -XFilterEvent( - TCL_UNUSED(XEvent *), - TCL_UNUSED(Window)) -{ - return 0; -} - int XForceScreenSaver( Display* display, TCL_UNUSED(int)) { Index: macosx/ttkMacOSXTheme.c ================================================================== --- macosx/ttkMacOSXTheme.c +++ macosx/ttkMacOSXTheme.c @@ -134,11 +134,10 @@ * Similarly, those older systems did not have CGPathCreateWithRoundedRect, but * since we never need to draw rounded rectangles on those systems we can just * define it to return nil. */ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 static CGColorRef CGColorFromRGBA( CGFloat *rgba) { NSColorSpace *colorSpace = [NSColorSpace sRGBColorSpace]; @@ -160,19 +159,10 @@ return nscolor.CGColor; } #define CGCOLOR(nscolor) (nscolor).CGColor -#else - -#define CGCOLOR(nscolor) NULL -#define CGColorFromRGBA(rgba) NULL -#define CGColorFromGray(gray) NULL -#define CGPathCreateWithRoundedRect(w, x, y, z) NULL - -#endif - /*---------------------------------------------------------------------- * +++ Utilities. */ /*---------------------------------------------------------------------- @@ -2478,11 +2468,11 @@ TrackElement *elem = (TrackElement *)elementRecord; Ttk_Orient orientation = TTK_ORIENT_HORIZONTAL; double from = 0, to = 100, value = 0, fraction, max; CGRect bounds = BoxToRect(d, b); - Ttk_GetOrientFromObj(NULL, elem->orientObj, &orientation); + TtkGetOrientFromObj(NULL, elem->orientObj, &orientation); Tcl_GetDoubleFromObj(NULL, elem->fromObj, &from); Tcl_GetDoubleFromObj(NULL, elem->toObj, &to); Tcl_GetDoubleFromObj(NULL, elem->valueObj, &value); fraction = (value - from) / (to - from); @@ -2620,11 +2610,11 @@ double value = 0, maximum = 100, factor; CGRect bounds = BoxToRect(d, b); int isIndeterminate = !strcmp("indeterminate", Tcl_GetString(pbar->modeObj)); - Ttk_GetOrientFromObj(NULL, pbar->orientObj, &orientation); + TtkGetOrientFromObj(NULL, pbar->orientObj, &orientation); Tcl_GetDoubleFromObj(NULL, pbar->valueObj, &value); Tcl_GetDoubleFromObj(NULL, pbar->maximumObj, &maximum); Tcl_GetIntFromObj(NULL, pbar->phaseObj, &phase); if (isIndeterminate) { @@ -2695,11 +2685,11 @@ { ScrollbarElement *scrollbar = (ScrollbarElement *)elementRecord; Ttk_Orient orientation = TTK_ORIENT_HORIZONTAL; SInt32 thickness = 15; - Ttk_GetOrientFromObj(NULL, scrollbar->orientObj, &orientation); + TtkGetOrientFromObj(NULL, scrollbar->orientObj, &orientation); ChkErr(GetThemeMetric, kThemeMetricScrollBarWidth, &thickness); if (orientation == TTK_ORIENT_HORIZONTAL) { *minHeight = thickness; if ([NSApp macOSVersion] > 100700) { *paddingPtr = Ttk_MakePadding(4, 4, 4, 3); @@ -2723,11 +2713,11 @@ ScrollbarElement *scrollbar = (ScrollbarElement *)elementRecord; Ttk_Orient orientation = TTK_ORIENT_HORIZONTAL; CGRect bounds = BoxToRect(d, b); GrayColor bgGray; - Ttk_GetOrientFromObj(NULL, scrollbar->orientObj, &orientation); + TtkGetOrientFromObj(NULL, scrollbar->orientObj, &orientation); if (orientation == TTK_ORIENT_HORIZONTAL) { bounds = CGRectInset(bounds, 0, 1); } else { bounds = CGRectInset(bounds, 1, 0); } @@ -2759,11 +2749,11 @@ TCL_UNUSED(Ttk_Padding *)) /* paddingPtr */ { ScrollbarElement *scrollbar = (ScrollbarElement *)elementRecord; Ttk_Orient orientation = TTK_ORIENT_HORIZONTAL; - Ttk_GetOrientFromObj(NULL, scrollbar->orientObj, &orientation); + TtkGetOrientFromObj(NULL, scrollbar->orientObj, &orientation); if (orientation == TTK_ORIENT_VERTICAL) { *minHeight = 18; *minWidth = 8; } else { *minHeight = 8; @@ -2780,11 +2770,11 @@ Ttk_State state) { ScrollbarElement *scrollbar = (ScrollbarElement *)elementRecord; Ttk_Orient orientation = TTK_ORIENT_HORIZONTAL; - Ttk_GetOrientFromObj(NULL, scrollbar->orientObj, &orientation); + TtkGetOrientFromObj(NULL, scrollbar->orientObj, &orientation); /* * In order to make ttk scrollbars work correctly it is necessary to be * able to display the thumb element at the size and location which the ttk * scrollbar widget requests. The algorithm that HIToolbox uses to Index: macosx/ttkMacOSXTheme.h ================================================================== --- macosx/ttkMacOSXTheme.h +++ macosx/ttkMacOSXTheme.h @@ -559,11 +559,11 @@ * been configured and has size 1x1, so there is nothing to draw anyway. */ #define CHECK_RADIUS(radius, bounds) \ if ((radius) > (bounds).size.width / 2 || (radius) > (bounds).size.height / 2) { \ - return; \ + return; \ } /* * The spinbox widget needs to draw the two arrows in different colors when * one half or the other is being pressed, but the menubutton always draws Index: tests/bgerror.test ================================================================== --- tests/bgerror.test +++ tests/bgerror.test @@ -11,12 +11,12 @@ tcltest::loadTestedCommands test bgerror-1.1 {bgerror / tkerror compat} -setup { set errRes {} proc tkerror {err} { - global errRes; - set errRes $err; + global errRes; + set errRes $err; } } -body { after 0 {error err1} vwait errRes; return $errRes; @@ -25,12 +25,12 @@ } -result {err1} test bgerror-1.2 {bgerror / tkerror compat / accumulation} -setup { set errRes {} proc tkerror {err} { - global errRes; - lappend errRes $err; + global errRes; + lappend errRes $err; } } -body { after 0 {error err1} after 0 {error err2} after 0 {error err3} @@ -41,13 +41,13 @@ } -result {err1 err2 err3} test bgerror-1.3 {bgerror / tkerror compat / accumulation / break} -setup { set errRes {} proc tkerror {err} { - global errRes; - lappend errRes $err; - return -code break "skip!"; + global errRes; + lappend errRes $err; + return -code break "skip!"; } } -body { after 0 {error err1} after 0 {error err2} after 0 {error err3} Index: tests/bind.test ================================================================== --- tests/bind.test +++ tests/bind.test @@ -340,15 +340,15 @@ test bind-9.2 {Tk_DeleteBinding procedure} -setup { set result {} } -body { frame .t.f -class Test -width 150 -height 100 foreach i {a b c d} { - bind .t.f $i "binding for $i" + bind .t.f $i "binding for $i" } foreach i {b d a c} { - bind .t.f $i {} - lappend result [lsort [bind .t.f]] + bind .t.f $i {} + lappend result [lsort [bind .t.f]] } return $result } -cleanup { destroy .t.f } -result {{a c d} {a c} c {}} @@ -355,15 +355,15 @@ test bind-9.3 {Tk_DeleteBinding procedure} -setup { set result {} } -body { frame .t.f -class Test -width 150 -height 100 foreach i { } { - bind .t.f $i "binding for $i" + bind .t.f $i "binding for $i" } foreach i { } { - bind .t.f $i {} - lappend result [lsort [bind .t.f]] + bind .t.f $i {} + lappend result [lsort [bind .t.f]] } return $result } -cleanup { destroy .t.f } -result {{ } { } {}} @@ -383,29 +383,29 @@ } -result {Test} test bind-11.1 {Tk_GetAllBindings procedure} -body { frame .t.f foreach i "! a \\\{ ~ <> <Â>" { - bind .t.f $i Test + bind .t.f $i Test } lsort [bind .t.f] } -cleanup { destroy .t.f } -result "! <> a \\\{ ~" test bind-11.2 {Tk_GetAllBindings procedure} -body { frame .t.f foreach i " " { - bind .t.f $i Test + bind .t.f $i Test } lsort [bind .t.f] } -cleanup { destroy .t.f } -result { } test bind-11.3 {Tk_GetAllBindings procedure} -body { frame .t.f foreach i " abcd ab" { - bind .t.f $i Test + bind .t.f $i Test } lsort [bind .t.f] } -cleanup { destroy .t.f } -result { ab abcd} @@ -416,11 +416,11 @@ destroy .t.f } -result {} test bind-12.2 {Tk_DeleteAllBindings procedure} -body { frame .t.f -class Test -width 150 -height 100 foreach i "a b c " { - bind .t.f $i x + bind .t.f $i x } destroy .t.f } -result {} test bind-13.1 {Tk_BindEvent procedure} -setup { @@ -488,12 +488,12 @@ while executing "error Test" (command bound to event)}} test bind-13.4 {Tk_BindEvent procedure} -setup { proc foo {} { - set x 44 - event generate .t.f <:> + set x 44 + event generate .t.f <:> } frame .t.f -class Test -width 150 -height 100 pack .t.f focus -force .t.f update @@ -934,11 +934,11 @@ update set x {} } -body { bindtags .t.f {a b c d e f g h i j k l m n o p} foreach p [bindtags .t.f] { - bind $p "lappend x $p" + bind $p "lappend x $p" } event generate .t.f return $x } -cleanup { foreach p [bindtags .t.f] {bind $p {}} @@ -1017,12 +1017,12 @@ destroy .t.f bind Test {} } -result {b1} test bind-13.45 {Tk_BindEvent procedure: error in script} -setup { proc bgerror msg { - global x - lappend x $msg + global x + lappend x $msg } frame .t.f -class Test -width 150 -height 100 pack .t.f focus -force .t.f update @@ -2223,11 +2223,11 @@ destroy .t.e bind Entry $savedBind(Entry) bind all $savedBind(All) unset savedBind } -result {0 1 2} -test bind-16.47 {ExpandPercents procedure} -constraints aquaOrWin32 -setup { +test bind-16.47 {ExpandPercents procedure} -constraints {aquaOrWin32 needsTcl87} -setup { frame .t.f -class Test -width 150 -height 100 pack .t.f focus -force .t.f update } -body { @@ -6036,11 +6036,11 @@ bind .t.f foo bind .t.f } -cleanup { destroy .t.f } -result -test bind-28.12 {keysym names, Greek_IOTAdiaeresis -> Greek_IOTAdieresis} -constraints deprecated -body { +test bind-28.12 {keysym names, Greek_IOTAdiaeresis -> Greek_IOTAdieresis} -constraints {deprecated needsTcl87} -body { frame .t.f -class Test -width 150 -height 100 bind .t.f foo bind .t.f } -cleanup { destroy .t.f @@ -6057,11 +6057,11 @@ bind .t.f <\U1F44D> foo bind .t.f } -cleanup { destroy .t.f } -result "" -test bind-28.15 {keysym names, Emoji} -body { +test bind-28.15 {keysym names, Emoji} -constraints needsTcl87 -body { frame .t.f -class Test -width 150 -height 100 bind .t.f <👍> foo bind .t.f } -cleanup { destroy .t.f @@ -6068,12 +6068,12 @@ } -result "" test bind-29.1 {Tcl_BackgroundError procedure} -setup { proc bgerror msg { - global x errorInfo - set x [list $msg $errorInfo] + global x errorInfo + set x [list $msg $errorInfo] } frame .t.f -class Test -width 150 -height 100 pack .t.f focus -force .t.f update @@ -6092,16 +6092,16 @@ "error "This is a test"" (command bound to event)}} test bind-29.2 {Tcl_BackgroundError procedure} -setup { proc do {} { - event generate .t.f