Index: .fossil-settings/ignore-glob ================================================================== --- .fossil-settings/ignore-glob +++ .fossil-settings/ignore-glob @@ -18,15 +18,16 @@ */config.cache */config.log */config.status */tkConfig.sh */wish* -*/tktest* +*/tktest */versions.vc */version.vc */libtk.vfs -*/libtk_*.zip +*/libtk*.zip +*/tkUuid.h html macosx/configure win/Debug* win/Release* win/*.manifest ADDED .github/ISSUE_TEMPLATE.md Index: .github/ISSUE_TEMPLATE.md ================================================================== --- /dev/null +++ .github/ISSUE_TEMPLATE.md @@ -0,0 +1,3 @@ +Important Note +========== +Please do not file issues with Tk on Github. They are unlikely to be noticed in a timely fashion. Tk issues are hosted in the [tk fossil repository on core.tcl-lang.org](https://core.tcl-lang.org/tk/tktnew); please post them there. ADDED .github/PULL_REQUEST_TEMPLATE.md Index: .github/PULL_REQUEST_TEMPLATE.md ================================================================== --- /dev/null +++ .github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,3 @@ +Important Note +========== +Please do not file pull requests with Tk on Github. They are unlikely to be noticed in a timely fashion. Tk issues (including patches) are hosted in the [tk fossil repository on core.tcl-lang.org](https://core.tcl-lang.org/tk/tktnew); please post them there. ADDED .github/workflows/linux-build.yml Index: .github/workflows/linux-build.yml ================================================================== --- /dev/null +++ .github/workflows/linux-build.yml @@ -0,0 +1,156 @@ +name: Linux +on: [push] +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@v3 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-6-branch + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install tcl8.6-dev libxss-dev + mkdir "$HOME/install dir" + touch tk/doc/man.macros tk/generic/tkStubInit.c + echo "CFGOPT=$CFGOPT --with-tcl=/usr/lib/tcl8.6" --disable-zipfs >> $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 (opts=${{ matrix.cfgopt }}) + run: | + ./configure $CFGOPT "--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 + } + - name: Discover Version ID + if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} + run: | + cd /tmp/dist + echo "VERSION=`ls -d tk* | sed 's/tk//'`" >> $GITHUB_ENV + - name: Upload Source Distribution + if: ${{ env.BUILD_CONFIG_ID == 'gcc-no' }} + uses: actions/upload-artifact@v2 + with: + name: Tk ${{ env.VERSION }} Source distribution (snapshot) + path: | + /tmp/dist/tk* + !/tmp/dist/tk*/html/** + - name: Upload Documentation Distribution + if: ${{ env.BUILD_CONFIG_ID == 'gcc-no' }} + uses: actions/upload-artifact@v2 + with: + name: Tk ${{ env.VERSION }} HTML documentation (snapshot) + path: /tmp/dist/tk*/html + test: + runs-on: ubuntu-20.04 + strategy: + matrix: + compiler: + - "gcc" + cfgopt: + - "" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + path: tk + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install tcl8.6-dev libxss-dev xvfb libicu-dev + mkdir "$HOME/install dir" + touch tk/doc/man.macros tk/generic/tkStubInit.c + echo "CFGOPT=$CFGOPT --with-tcl=/usr/lib/tcl8.6 --disable-zipfs" >> $GITHUB_ENV + echo "CC=$COMPILER" >> $GITHUB_ENV + working-directory: "." + env: + CFGOPT: ${{ matrix.cfgopt }} + COMPILER: ${{ matrix.compiler }} + - name: Configure ${{ matrix.cfgopt }} + run: | + ./configure $CFGOPT "--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 + } ADDED .github/workflows/linux-with-tcl8-build.yml Index: .github/workflows/linux-with-tcl8-build.yml ================================================================== --- /dev/null +++ .github/workflows/linux-with-tcl8-build.yml @@ -0,0 +1,188 @@ +name: Linux (with Tcl 8.7) +on: [push] +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@v3 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-branch + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-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 + } + - name: Discover Version ID + if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} + run: | + cd /tmp/dist + echo "VERSION=`ls -d tk* | sed 's/tk//'`" >> $GITHUB_ENV + - name: Upload Source Distribution + if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} + uses: actions/upload-artifact@v2 + with: + name: Tk ${{ env.VERSION }} Source distribution (snapshot) + path: | + /tmp/dist/tk* + !/tmp/dist/tk*/html/** + - name: Upload Documentation Distribution + if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} + uses: actions/upload-artifact@v2 + with: + name: Tk ${{ env.VERSION }} HTML documentation (snapshot) + path: /tmp/dist/tk*/html + test: + runs-on: ubuntu-20.04 + strategy: + matrix: + compiler: + - "gcc" + cfgopt: + - "" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-branch + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-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 + } 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,174 @@ +name: Linux (with Tcl 9.0) +on: [push] +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@v3 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: main + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-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 + } + - name: Discover Version ID + if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} + run: | + cd /tmp/dist + echo "VERSION=`ls -d tk* | sed 's/tk//'`" >> $GITHUB_ENV + test: + runs-on: ubuntu-20.04 + strategy: + matrix: + compiler: + - "gcc" + cfgopt: + - "" + - "--enable-symbols" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + path: tk + - name: Checkout Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: main + path: tcl + - name: Setup Environment (compiler=${{ matrix.compiler }}) + run: | + sudo apt-get install libxss-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 + } ADDED .github/workflows/mac-build.yml Index: .github/workflows/mac-build.yml ================================================================== --- /dev/null +++ .github/workflows/mac-build.yml @@ -0,0 +1,164 @@ +name: macOS +on: [push] +permissions: + contents: read +env: + ERROR_ON_FAILURES: 1 +jobs: + xcode: + runs-on: macos-11 + defaults: + run: + shell: bash + working-directory: tk/macosx + steps: + - name: Check out Tk + uses: actions/checkout@v3 + with: + path: tk + - name: Check out Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-6-branch + path: tcl + - name: Prepare checked out repositories + run: | + touch tk/generic/tkStubInit.c + mkdir build + echo "BUILD_DIR=`cd build && pwd`" >> $GITHUB_ENV + echo "DESTDIR=`cd build && pwd`" >> $GITHUB_ENV + working-directory: . + - name: Build Tcl + run: | + make all + working-directory: tcl/macosx + - name: Build + run: | + make all install || { + echo "::error::Failure during Build" + exit 1 + } + - name: Run Tests + run: | + make test | tee out.txt + nmatches=$( grep -c "Failed 0" out.txt ) + if [ $nmatches -lt 4 ] + then + echo "::error::Failure during Test" + exit 1 + fi + clang: + runs-on: macos-11 + strategy: + matrix: + symbols: + - 'no' + - 'mem' + options: + - '--enable-aqua' + - '--disable-aqua' + defaults: + run: + shell: bash + working-directory: tk/unix + steps: + - name: Check out Tk + uses: actions/checkout@v3 + with: + path: tk + - name: Check out Tcl + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-6-branch + path: tcl + - name: Prepare checked out repositories + env: + SET_DISPLAY: ${{ contains(matrix.options, '--disable-aqua') }} + run: | + touch tkStubInit.c + mkdir "$HOME/install dir" + echo "USE_XVFB=$SET_DISPLAY" >> $GITHUB_ENV + working-directory: tk/generic + - name: Add X11 (if required) + if: ${{ env.USE_XVFB == 'true' }} + run: | + brew install --cask xquartz + sudo /opt/X11/libexec/privileged_startx || true + working-directory: . + - name: Build Tcl + # Note that macOS is always a 64 bit platform + run: | + ./configure --enable-64bit ${CFGOPT} "--prefix=$HOME/install dir" || { + cat config.log + echo "::error::Failure during Tcl Configure" + exit 1 + } + make all || { + echo "::error::Failure during Tcl Build" + exit 1 + } + make install || { + echo "::error::Failure during Tcl Install" + exit 1 + } + working-directory: tcl/unix + env: + CFGOPT: --enable-symbols=${{ matrix.symbols }} + - name: Configure (symbols=${{ matrix.symbols }} ${{matrix.options }}) + # Note that macOS is always a 64 bit platform + run: | + ./configure --enable-64bit ${CFGOPT} "--prefix=$HOME/install dir" --disable-xft || { + cat config.log + echo "::error::Failure during Configure" + exit 1 + } + env: + CFGOPT: --enable-symbols=${{ matrix.symbols }} ${{matrix.options }} + - name: Build + run: | + make all tktest || { + echo "::error::Failure during Build" + exit 1 + } + - name: Run Tests + run: | + if [ $USE_XVFB == true ]; then + function runXvfb { + PATH=$PATH:/opt/X11/bin + Xvfb $1 & + XVFB_PID=$! + echo Launched Xvfb $1 as process $XVFB_PID >&2 + trap "echo killing process $XVFB_PID... >&2; kill $XVFB_PID" 0 + export DISPLAY=$1 + sleep 2 + } + else + function runXvfb { + echo Xvfb not used, this is a --enable-aqua build + } + fi + ( runXvfb :0; make test-classic; exit $? ) | tee out-classic.txt || { + echo "::error::Failure during Test (classic)" + exit 1 + } + ( runXvfb :0; make test-ttk; exit $? ) | tee out-ttk.txt || { + echo "::error::Failure during Test (ttk)" + exit 1 + } + cat out-classic.txt | grep -q "Failed 0" || { + echo "::error::Failure in classic test results" + exit 1 + } + cat out-ttk.txt | grep -q "Failed 0" || { + echo "::error::Failure in ttk test results" + exit 1 + } + - name: Carry out trial installation + run: | + make install || { + cat config.log + echo "::error::Failure during Install" + exit 1 + } ADDED .github/workflows/onefiledist.yml Index: .github/workflows/onefiledist.yml ================================================================== --- /dev/null +++ .github/workflows/onefiledist.yml @@ -0,0 +1,215 @@ +name: Build Binaries +on: [push] +permissions: + contents: read +jobs: + linux: + name: Linux + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + env: + CC: gcc + CFGOPT: --disable-symbols --disable-shared + steps: + - name: Checkout Tk + uses: actions/checkout@v3 + with: + path: tk + - name: Checkout Tcl 8.7 + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-branch + path: tcl + - name: Setup Environment + run: | + sudo apt-get install libxss-dev + touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c + touch tk/generic/tkStubInit.c + echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV + echo "VER_PATH=$(cd tcl/tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + working-directory: "." + - name: Configure Tcl + run: | + ./configure $CFGOPT --enable-zipfs --prefix=$INST_DIR + working-directory: tcl/unix + - name: Build & Install Tcl + run: | + make binaries libraries install + make shell SCRIPT="$VER_PATH $GITHUB_ENV" + working-directory: tcl/unix + - name: Configure Tk + run: | + ./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR + working-directory: tk/unix + - name: Build & Install Tk + run: | + make binaries libraries install + working-directory: tk/unix + # TODO: need the Tk version separately for distro naming below + - name: Package + run: | + cp bin/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 + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: Wish ${{ env.TCL_PATCHLEVEL }} Linux single-file build (snapshot) + path: ${{ env.INST_DIR }}/*.tar + - name: Describe Installation Zip Contents + if: ${{ always() }} + run: | + unzip -l wish${{ env.TCL_PATCHLEVEL }}_snapshot || true + working-directory: ${{ env.INST_DIR }} + macos: + name: macOS + runs-on: macos-11 + defaults: + run: + shell: bash + env: + CC: gcc + CFGOPT: --disable-symbols --disable-shared --enable-64bit + steps: + - name: Checkout Tk + uses: actions/checkout@v3 + with: + path: tk + - name: Checkout Tcl 8.7 + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-branch + path: tcl + - name: Checkout create-dmg + uses: actions/checkout@v3 + with: + repository: create-dmg/create-dmg + ref: v1.0.8 + path: create-dmg + - name: Setup Environment + run: | + mkdir -p install/contents + touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c + touch tk/generic/tkStubInit.c + echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV + echo "VER_PATH=$(cd tcl/tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + echo "CREATE_DMG=$(cd create-dmg;pwd)/create-dmg" >> $GITHUB_ENV + echo "CFLAGS=-arch x86_64 -arch arm64e" >> $GITHUB_ENV + working-directory: "." + - name: Configure Tcl + run: | + ./configure $CFGOPT --enable-zipfs --prefix=$INST_DIR + working-directory: tcl/unix + - name: Build & Install Tcl + run: | + make binaries libraries install + make shell SCRIPT="$VER_PATH $GITHUB_ENV" + working-directory: tcl/unix + - name: Configure Tk + run: | + ./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR \ + --enable-aqua + working-directory: tk/unix + - name: Build & Install Tk + run: | + make binaries libraries install + working-directory: tk/unix + # TODO: need the Tk version separately for distro naming below + - name: Package + run: | + cp ../tk/unix/wish contents/${BUILD_NAME} + chmod +x contents/${BUILD_NAME} + cat > contents/README.txt <> $GITHUB_ENV + echo "VER_PATH=$(cd tcl/tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + working-directory: "." + - name: Configure Tcl + run: | + ./configure $CFGOPT --enable-zipfs --prefix=$INST_DIR + working-directory: tcl/win + - name: Build & Install Tcl + run: | + make binaries libraries install + $INST_DIR/bin/tclsh* $VER_PATH $GITHUB_ENV + working-directory: tcl/win + - name: Configure Tk + run: | + ./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR + working-directory: tk/win + - name: Build & Install Tk + run: | + make all install + echo "TK_BIN=`pwd`/`echo wish*.exe`" >> $GITHUB_ENV + working-directory: tk/win + # TODO: need the Tk version separately for distro naming below + - name: Package + run: | + cp ${TK_BIN} combined/${BUILD_NAME}.exe + working-directory: install + env: + BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: Wish ${{ env.TCL_PATCHLEVEL }} Windows single-file build (snapshot) + path: install/combined/wish${{ env.TCL_PATCHLEVEL }}_snapshot.exe ADDED .github/workflows/win-build.yml Index: .github/workflows/win-build.yml ================================================================== --- /dev/null +++ .github/workflows/win-build.yml @@ -0,0 +1,162 @@ +name: Windows +on: [push] +permissions: + contents: read +env: + ERROR_ON_FAILURES: 1 +jobs: + msvc: + runs-on: windows-2019 + defaults: + run: + shell: powershell + working-directory: tk/win + # Using powershell means we need to explicitly stop on failure + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + path: tk + - name: Checkout + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-branch + path: tcl + - name: Init MSVC + uses: ilammy/msvc-dev-cmd@v1 + - name: Make Install Location + working-directory: tcl + run: | + echo "TCLDIR=`pwd`" >> $GITHUB_ENV + cd .. + mkdir install + cd install + echo "INSTALLDIR=`pwd`" >> $GITHUB_ENV + - name: Build Tcl + run: | + &nmake -f makefile.vc release install + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } + working-directory: tcl/win + - name: Build + run: | + &nmake -f makefile.vc all + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } + - name: Build Test Harness + run: | + &nmake -f makefile.vc tktest + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } + - name: Run Tests + run: | + nmake -f makefile.vc test-classic | tee out-classic.txt || { + echo "::error::Failure during Test" + exit 1 + } + nmake -f makefile.vc test-ttk | tee out-ttk.txt || { + echo "::error::Failure during Test" + exit 1 + } + 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 + } + env: + CI_BUILD_WITH_MSVC: 1 + shell: bash + - name: Build Help + run: | + &nmake -f makefile.vc htmlhelp + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } + - name: Install + run: | + &nmake -f makefile.vc install + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } + gcc: + runs-on: windows-2019 + defaults: + run: + shell: msys2 {0} + working-directory: win + strategy: + matrix: + symbols: + - "no" + - "mem" + - "all" + steps: + - name: Install MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: MINGW64 + install: git mingw-w64-x86_64-toolchain make zip + - name: Checkout + uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 + with: + repository: tcltk/tcl + ref: core-8-6-branch + path: tcl + - name: Prepare + run: | + touch tkStubInit.c + touch "${HOME}/forWinDialog-5.12.7" + mkdir "${HOME}/install_dir" + echo "INSTALL_DIR=${HOME}/install_dir" >> $GITHUB_ENV + working-directory: generic + - name: Configure and Build Tcl + run: | + ./configure ${CFGOPT} "--prefix=$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 + env: + CFGOPT: --enable-64bit --enable-symbols=${{ matrix.symbols }} + working-directory: tcl/win + - name: Configure (symbols=${{ matrix.symbols }}) + run: | + ./configure ${CFGOPT} "--prefix=$HOME/INSTALL_DIR" "--with-tcl=$TCL_CONFIG_PATH" || { + cat config.log + echo "::error::Failure during Configure" + exit 1 + } + env: + CFGOPT: --enable-64bit --enable-symbols=${{ matrix.symbols }} + - name: Build + run: | + make all tktest || { + echo "::error::Failure during Build" + exit 1 + } + - name: Run Tests + run: | + make test-classic | tee out-classic.txt + 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 + } Index: .gitignore ================================================================== --- .gitignore +++ .gitignore @@ -24,15 +24,16 @@ html manifest.uuid _FOSSIL_ */tkConfig.sh */wish* -*/tktest* +*/tktest */versions.vc */version.vc -*/libtcl.vfs -*/libtcl_*.zip +*/libtk.vfs +*/libtk*.zip +*/tkUuid.h libtommath/bn.ilg libtommath/bn.ind libtommath/pretty.build libtommath/tommath.src libtommath/*.log Index: .travis.yml ================================================================== --- .travis.yml +++ .travis.yml @@ -11,16 +11,21 @@ - gcc-mingw-w64-i686 - gcc-mingw-w64-x86-64 - gcc-multilib - tcl8.6-dev - libx11-dev + - libnotify-dev + - libglib2.0-dev + - libxss-dev - xvfb homebrew: packages: - tcl-tk - casks: - - xquartz + - libnotify + - glib +# casks: +# - xquartz jobs: include: # Testing on Linux GCC - name: "Linux/GCC/Shared" os: linux @@ -56,10 +61,20 @@ - xvfb compiler: gcc env: - BUILD_DIR=unix - CFGOPT="--disable-xft" + script: *x11gui + - name: "Linux/GCC/Shared/no-libnotify" + os: linux + dist: focal + services: + - xvfb + compiler: gcc + env: + - BUILD_DIR=unix + - CFGOPT="--disable-libnotify" script: *x11gui - name: "Linux/GCC/Shared/bionic" os: linux dist: bionic services: @@ -179,57 +194,35 @@ os: osx osx_image: xcode12 env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib CC=clang++ --enable-aqua CFLAGS=-I/usr/local/opt/tcl-tk/include CPPFLAGS=-D__private_extern__=extern" - - name: "macOS/Xcode 12/Shared" - os: osx - osx_image: xcode12 - env: - - BUILD_DIR=unix - - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua CFLAGS=-I/usr/local/opt/tcl-tk/include" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: &mactest - - make all tktest - name: "macOS/Xcode 12/Static" os: osx osx_image: xcode12 env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua --disable-shared CFLAGS=-I/usr/local/opt/tcl-tk/include" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest - name: "macOS/Xcode 12/Debug" os: osx osx_image: xcode12 env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua --enable-symbols CFLAGS=-I/usr/local/opt/tcl-tk/include" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest - - name: "macOS/Xcode 12/Shared/XQuartz" - os: osx - osx_image: xcode12 - env: - - BUILD_DIR=unix - - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --disable-corefoundation --x-includes=/opt/X11/include --x-libraries=/opt/X11/lib CFLAGS=-I/usr/local/opt/tcl-tk/include" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest +# - name: "macOS/Xcode 12/Shared/XQuartz" +# os: osx +# osx_image: xcode12 +# env: +# - BUILD_DIR=unix +# - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --disable-corefoundation --x-includes=/opt/X11/include --x-libraries=/opt/X11/lib CFLAGS=-I/usr/local/opt/tcl-tk/include" # Older MacOS versions - name: "macOS/Xcode 11/Shared" os: osx osx_image: xcode11.7 env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua CFLAGS=-I/usr/local/opt/tcl-tk/include CPPFLAGS=-mmacosx-version-min=10.14" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest - name: "macOS/Xcode 10/Shared" os: osx osx_image: xcode10.3 addons: homebrew: @@ -237,13 +230,10 @@ - tcl-tk update: true env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua CFLAGS=-I/usr/local/opt/tcl-tk/include CPPFLAGS=-mmacosx-version-min=10.14" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest - name: "macOS/Xcode 9/Shared" os: osx osx_image: xcode9.4 addons: homebrew: @@ -251,13 +241,10 @@ - tcl-tk update: true env: - BUILD_DIR=unix - CFGOPT="--with-tcl=/usr/local/opt/tcl-tk/lib --enable-aqua CFLAGS=-I/usr/local/opt/tcl-tk/include CPPFLAGS=-mmacosx-version-min=10.13" - install: - - ./configure ${CFGOPT} "--prefix=$HOME" || (cat config.log && exit 1) - script: *mactest # Test on Windows with MSVC native # - name: "Windows/MSVC/Shared" # os: windows # compiler: cl # env: &vcenv @@ -290,9 +277,17 @@ - mkdir "$HOME/install dir" - ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) script: - make all tktest - make install +before_cache: + - |- + case $TRAVIS_OS_NAME in + osx) + brew cleanup + ;; + esac cache: directories: + - $HOME/Library/Caches/Homebrew - $HOME/AppData/Local/Temp/chocolatey - $HOME/AppData/Local/Apps/Tcl86 Index: ChangeLog ================================================================== --- ChangeLog +++ ChangeLog @@ -3201,11 +3201,11 @@ fonts to use for measurements. 2009-03-25 Jan Nijtmans * doc/wish.1: Bring doc and demos in line with - * library/demos/hello: http://wiki.tcl.tk/812 + * library/demos/hello: https://wiki.tcl-lang.org/page/exec+magic * library/demos/rmt * library/demos/square * library/demos/tcolor * library/demos/timer * library/demos/widget Index: README.md ================================================================== --- README.md +++ README.md @@ -1,32 +1,41 @@ # README: Tk -This is the **Tk 8.7a4** source distribution. +This is the **Tk 8.7a6** 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=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) ## 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 8.7 Web page](https://www.tcl.tk/software/tcltk/8.7.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 -takes place at [core.tcl-lang.org](https://core.tcl-lang.org/). +take place at [core.tcl-lang.org](https://core.tcl-lang.org/). Tcl/Tk release and mailing list services are [hosted by SourceForge](https://sourceforge.net/projects/tcl/) with the Tcl Developer Xchange hosted at [www.tcl-lang.org](https://www.tcl-lang.org). -Tk is a freely available open source package. You can do virtually +Tk is a freely available open-source package. You can do virtually anything you like with it, such as modifying it, redistributing it, and selling it either in whole or in part. See the file `license.terms` for complete information. ## 2. See Tcl README.md Index: changes ================================================================== --- changes +++ changes @@ -7435,11 +7435,11 @@ 2017-04-13 \u escaped content in msg files converted to true utf-8 (nijtmans) 2017-08-28 (TIP 166) Extended color notation for alpha channel (bachmann) ---- Released 8.7a1, September 8, 2017 --- http://core.tcl.tk/tk/ for details +--- Released 8.7a1, September 8, 2017 --- https://core.tcl-lang.org/tk/ for details 2017-08-24 (bug)[f1a3ca] Memory leak in [text] B-tree (edhume3) 2017-08-24 (bug)[ee40fd] Report [console] init errors (the) @@ -7720,10 +7720,215 @@ 2019-11-19 (new) Partial Emoji support in text displays (nijtmans,culler) - Released 8.6.10, Nov 21, 2019 - https://core.tcl-lang.org/tk/ for details +2019-11-25 (bug)[a95373] TkKeyEvent platform variations (werner) + +2019-11-26 (bug) workaround Win bug so test bind-34.3 passes (nijtmans) + +2019-12-03 Aqua: white cursors in dark mode (culler) + +2019-12-04 (bug)[749bd9] Aqua: systemControlAccentColor (bll,culler) + +2019-12-14 (bug)[b3b56a] ttk respect -cursor option (vogel) + +2019-12-14 (bug)[b094cb] Win: $tv -show grows widget width 1 pixel (vogel) + +2019-12-14 (bug)[02a694] spinbox options used wrong db names (vogel) + +2020-01-11 (bug)[2b8fa6] MouseWheel for ttk::scrollbar (oehlmann) + +2020-01-18 (bug)[1771594] icursor and scrollregion, canvText-14.7 (vogel) + +2020-01-18 (bug)[587937] tag list ops preserve list order (vogel) + +2020-01-18 (bug)[2830360] lose invalid state at focus event, entry-10.1 (vogel) + +2020-01-18 (bug)[077d49] string table options support null ok (vogel) + +2020-01-18 (bug)[bf93d0] Aqua: unresponsive menubar (culler) + +2020-01-31 (bug)[a196fb] restore support for unthreaded Tcl (porter,sebres) + +2020-02-09 (bug)[90a4d7] fontconfig crash when no font installed (vogel) + +2020-02-24 (bug) Aqua: incomplete floating window display (walzer) + +2020-03-11 (bug)[fb2ec3] OSX 10.15+: full screen options (nicolas,walzer) + +2020-03-12 (bug)[08e2f8] focus on unmapped windows, focus-7.1 (vogel) + +2020-03-12 (bug)[2edd84] [$c postscript] result management (gavilan) + +2020-03-22 (bug)[98662d] restore TK_MAC_DEBUG_DRAWING build (chavez) + +2020-03-29 (bug)[655fe2] tearoff menu redraw artifacts (vogel) + +2020-04-03 (bug)[efbedd] Aqua: compund button-like widget appearance (chavez) + +2020-04-14 (bug)[87bade] Aqua: improved dealing with PressAndHold (culler) + +2020-04-14 (bug)[376788] X: stop crash w/Noto Color Emoji font (nijtmans) + +2020-04-15 (bug)[89354d] Aqua: text color w/o clipping (culler) + +2020-04-15 (new) Aqua: assign Button 3 to the middle button (chavez) + +2020-04-25 (bug)[3519111] treeview horizontal scroll, entry-2.1.1 (vogel) + +2020-04-25 (bug)[141881] treeview vertical scroll, treeview-9.2 (vogel) + +2020-05-01 (bug)[2712f4] X: crash angled text w/o Xft, canvText-20.2 (vogel) + +2020-05-01 (bug)[cd8714] Win: long angled text (chavez) + +2020-05-09 (bug)[88c9e0] treeview -selectmode none focus ring (gavilan) + +2020-05-12 (new) Aqua: Rewrite of the Key event system (culler) + +2020-05-12 (bug)[411359] Aqua: stop crashes/zombies related to TouchBar (culler) + +2020-05-12 (new) Aqua: systemLinkColor (chavez) + +2020-05-16 (bug)[40ada9] crash when active button is destroyed (chavez) + +2020-05-28 (bug)[3c6660,601cea,4b50b7] Win10: ttk scale (nemethi,lanam) + +2020-06-08 (bug)[2790615] Some callbacks not eval'd in global scope (nijtmans) + +2020-06-25 Aqua: Update OSX version tests to support Big Sur (culler) + +2020-06-27 (bug)[6920b2] dup in spinbox -values causes trouble (lanam) + +2020-06-27 (bug)[5c51be] invalid mem read buffer in Tk_PhotoPut* (chavez) + +2020-06-27 (bug)[16ef16] restore bind sequence support, bind-33.(16-21) (vogel) + +2020-07-02 (bug)[2d2459] default style for combobox (bll) + +2020-07-06 (bug)[40e4bf] double free, entry-19.21 (vogel) + +2020-07-06 (bug)[e3888d] grab & warp, bind-36.1 (vogel) + +2020-07-12 (bug)[2442314] fontchooser i18n (nijtmans) + +2020-07-13 (bug)[7655f6] [*entry]: selected text drawing reform (chavez) + +2020-07-14 (bug)[09abd7] workaround invalid key codes from Debian 10 (vogel) + +2020-07-20 (bug)[cf3853] Aqua: improve bounds on non-Retina displays (chavez) + +2020-08-01 Aqua: [winfo rgb] light and dark mode support (culler) + +2020-08-15 (bug)[315104] Aqua: appearance change virtual events (culler) + +2020-08-21 (bug)[291699] mouse binding for scrollbar grip (bll) + +2020-09-08 (bug)[6c2425] buffer bounds violation (chavez) + +2020-09-08 (bug)[2a6d63] OSX 10.6 crash (hellstrom,culler) + +2020-09-08 (bug)[420feb] undefined behavior due to alignment (chavez,nijtmans) + +2020-09-10 (bug)[ab1fea] Aqua init issues (culler) + +2020-09-14 (bug)[71e18c] Aqua: crash in full screen toggle (culler) + +2020-09-18 (bug)[4f4f03] Aqua: mouse drags across title bar (nab,culler) + +2020-09-21 (bug)[d91e05] select/copy in disabled text (bll) + +2020-09-27 (TIP #581) disfavor Master/Slave terminology (nijtmans) + +2020-09-30 (bug)[59cba3] win: improve theme detection (bll,nijtmans) + +2020-10-06 (bug)[175a6e] Aqua: support tiled windows (culler) + +2020-10-07 (bug)[1fa8c3] Aqua: crash on resize during display (nab,culler) + +2020-10-16 (bug)[c2483b] Aqua: consistent finalization (culler,nijtmans) + +2020-11-06 (bug)[c9ebac] Aqua: use standard about dialog (culler) + +2020-11-07 (bug)[4ebcc0] sticky fontchooser options (roseman,vogel) + +2020-11-10 (bug)[f9fa92] Aqua: crash in color caching scheme (culler) + +2020-11-20 (bug)[7185d2] Aqua: fixes to special menu support (culler) + +2020-11-24 (bug)[4a40c6] Aqua: [wm manage] frame offset (chavez) + +2020-12-04 (bug)[3ef77f] Aqua dark mode combobox focus ring (walzer,culler) + +2020-12-15 (bug)[80e4c6] Aqua: progressbar animation (nab,culler) + +2020-12-24 (bug)[6157a8] Aqua: file dialog -filetypes (davis,culler) + +- Released 8.6.11, Dec 31, 2020 - https://core.tcl-lang.org/tk/ for details + +2021-01-04 (bug)[19fb7a] Mac: [tk_messageBox] use proper icons (ericwb,culler) + +2021-01-11 (bug)[7beaed] ttk::bindMouseWheel syntax error (nemethi) + +2021-01-15 (new) support 4 new keycodes: CodeInput, SingleCandidate, + MultipleCandidate, PreviousCandidate (nijtmans) + +2021-01-18 (new) Portable keycodes: OE, oe, Ydiaeresis (nijtmans) + +2021-01-27 (bug)[bdcab8] Mac crash on non-BMP menu label (nab,culler) + +2021-02-07 (bug)[9e1312] to parent after child destroyed (leunissen) + +2021-02-10 (bug)[d3cd4c] more robust notebook processing (nemethi) + +2021-02-25 (bug)[234ee4] crash in [clipboard get] invalid encoding (nijtmans) + +2021-02-25 (bug)[be9cad] Poor trace housekeeping -> tkwait segfault (michael) + +2021-03-02 (bug)[1626ed] Mac: crash with dead key as menu accelerator (culler) + +2021-03-22 (bug)[9b6065] restore Tcl [update], see window-2.12 (leunissen) + +2021-04-07 (bug)[58222c] Mac: entry and spinbox bg colors (chavez,culler) + +2021-04-18 (bug)[34db75,ea876b] cursor motion in peer text (vogel) + +2021-04-26 (bug)[c97464] memleak in TkpDrawAngledChars (nab,culler) + +2021-04-29 Mac: explicit backing CALayer to fix rendering issues (culler) + +2021-05-02 Mac: respect key repeat system setting (culler) + +2021-05-10 (bug)[171ba7] crash when grab and focus are not coordinated (culler) + +2021-05-24 crash due to failed transient record housekeeping (culler) + +2021-05-25 (bug)[7bda98] Mac: bindings fire twice on app activation + +2021-06-03 (bug)[4401d3] Mac: improved support of pixel formats (chavez,culler) + +2021-06-03 (bug)[8ecc3e] Mac: window exposed by Mission Control (chavez,culler) + +2021-06-04 (bug)[099109] segfault reusing a container toplevel (culler) + +2021-06-22 (bug)[4efbfe] static package init order in wish (werner) + +2021-09-21 (bug)[033886] Win: hang in font loading (e-paine,vogel) + +2021-10-14 (bug)[8ebed3] multi-thread safety in Xft use (werner) + +2021-10-22 (new)[TIP 608] New virtual event <> (griffin) + +2021-10-27 (bug) file dialog compatibility with Mac OS 12 (culler) + +2021-10-29 (bug) Mac: stop crash when non-Tk windows go full screen (werner) + +2021-10-30 (bug)[6ea0b3] Mac: grab from menu makes dead window (culler) + +- Released 8.6.12, Nov 5, 2021 - https://core.tcl-lang.org/tk/ for details + Changes to 8.7a3 include all changes to the 8.6 line through 8.6.10, plus the following, which focuses on the high-level feature changes in this changeset (new minor version) rather than bug fixes: 2017-11-25 [TIP 161] $menu -tearoff default changed to false (roseman,vogel) @@ -7739,11 +7944,11 @@ 2018-11-03 [TIP 512] Deprecate stub for Tk_MainEx() (nijtmans) 2018-11-06 [TIP 415] New option -height for [$canvas create arc] (geard) -2018-11-06 [TIP 518] New event <> (oehlmann) +2018-11-06 [TIP 518] New event <> (oehlmann) 2019-04-14 [TIP 164] New subcommand [$canvas rotate] (fellows) 2019-04-14 [TIP 507] New photo image format 'svg' (zaumseil) @@ -7755,6 +7960,83 @@ 2019-06-15 [TIP 528] Deprecate Tk_Offset() (nijtmans) 2019-08-19 [TIP 545] Revised options for photo image format 'svg' (oehlmann) ---- Released 8.7a3, November 25, 2019 --- http://core.tcl.tk/tk/ for details +--- Released 8.7a3, November 25, 2019 --- https://core.tcl-lang.org/tk/ for details + +Changes to 8.7a5 include all changes to the 8.6 line through 8.6.11, +plus the following, which focuses on the high-level feature changes +in this changeset (new minor version) rather than bug fixes: + +2020-02-22 [TIP 565] Gracefully ignore non-existent tags in canvas raise/lower + +2020-02-22 [TIP 564] Specify ttk font sizes in points on X11 + +2020-02-24 [TIP 563] Scrollwheel on Horizontal Scrollbar Scrolls Without Shift too + +2020-02-28 [TIP 557] C++ support + +2020-03-12 (bug)[355180] solve XKeycodeToKeysym deprecation + *** POTENTIAL INCOMPATIBILITY -- Tk 8.7 now requires X11R6 *** + +2020-03-18 [TIP 569] Eliminate comments that serve lint + +2020-05-17 [d87dc2] Remove TkMacOSXGetStringObjFromCFString() + +2020-05-24 [TIP 574] Add a 'tag delete' command to the ttk::treeview widget + +2020-06-27 (bug)[50ed1e] spinbox with duplicate values + +2020-07-03 [TIP 578] Death to TCL_DBGX + +2020-08-23 (bug)[bb85d2] valgrind on TIP 489 + +2020-08024 (bug)[d30c21] default colors for TIP 496 + +2020-09-02 [TIP 580] Export Tk_GetDoublePixelsFromObj and 5 more + +2020-10-21 [TIP 474] Uniform mouse wheel events + +2020-11-15 [TIP 584] Better introspection for ttk + +2020-11-16 [TIP 588] Unicode for (X11) keysyms + +2020-12-03 [TIP 590] Recommend lowercase package names + +2020-12-09 (bug)[d6e9b4] SVG memory overflow + +2020-12-11 [TIP 591] Rotate ttk::notebook window with mousewheel on tab + +2020-12-12 [TIP 325] System tray and system notification + +2021-01-08 [TIP 592] End support: Windows XP, Server 2003, Vista, Server 2008 + +2021-01-08 (bug)[822330] Prevent buffer overflow in SVG image. + +2021-01-28 (bug)[237971] 'end' argument to [$canvas insert] + +2021-02-25 (bug)[be9cad] crash in [tkwait] + +2021-02-27 [TIP 529] Add metadata dictionary property to tk photo image + +2021-03-02 (bug)[1626ed] Aqua crash: dead keys as meny accelerator + +2021-03-29 (bug)[9b6065] Restore Tcl [update] when Tk is destroyed + +2021-04-08 (bug)[58222c] background colors + +2021-04-09 [TIP 595] Unicode-aware/case-sensitive Loadable Library handling + +2021-04-21 (bug)[cde766] update scrollbars on treeview + +2021-04-26 (bug)[c97464] memleak in aqua fonts + +2021-05-02 (bug)[2ecb09] Follow Mac OSX Key-repeat setting + +2021-05-03 (bug)[8a5086] ttk::entry issue + +2021-05-22 (bug)[3e3360] bind substitution %S + +2021-05-25 (bug)[7bda98] aqua: double click bind with changing focus + +- Released 8.7a5, Jun 18, 2021 --- https://core.tcl-lang.org/tcl/ for details - Index: doc/3DBorder.3 ================================================================== --- doc/3DBorder.3 +++ doc/3DBorder.3 @@ -7,21 +7,30 @@ '\" .TH Tk_Alloc3DBorderFromObj 3 8.1 Tk "Tk Library Procedures" .so man.macros .BS .SH NAME -Tk_Alloc3DBorderFromObj, Tk_Get3DBorder, Tk_Get3DBorderFromObj, Tk_Draw3DRectangle, Tk_Fill3DRectangle, Tk_Draw3DPolygon, Tk_Fill3DPolygon, Tk_3DVerticalBevel, Tk_3DHorizontalBevel, Tk_SetBackgroundFromBorder, Tk_NameOf3DBorder, Tk_3DBorderColor, Tk_3DBorderGC, Tk_Free3DBorderFromObj, Tk_Free3DBorder \- draw borders with three-dimensional appearance +Tk_Alloc3DBorderFromObj, Tk_ClipDrawableToRect, Tk_DrawHighlightBorder, Tk_Get3DBorder, fBTk_Get3DBorderColors, Tk_Get3DBorderFromObj, Tk_Draw3DRectangle, Tk_Fill3DRectangle, Tk_Draw3DPolygon, Tk_Fill3DPolygon, Tk_3DVerticalBevel, Tk_3DHorizontalBevel, Tk_SetBackgroundFromBorder, Tk_NameOf3DBorder, Tk_3DBorderColor, Tk_3DBorderGC, Tk_Free3DBorderFromObj, Tk_Free3DBorder \- draw borders with three-dimensional appearance .SH SYNOPSIS .nf \fB#include \fR .sp Tk_3DBorder \fBTk_Alloc3DBorderFromObj(\fIinterp, tkwin, objPtr\fB)\fR .sp +void +\fBTk_ClipDrawableToRect(\fIdisplay, drawable, x, y, width, height\fB)\fR +.sp +void +\fBTk_DrawHighlightBorder(\fItkwin, fgGC, bgGC, highlightWidth, drawable\fB)\fR +.sp Tk_3DBorder \fBTk_Get3DBorder(\fIinterp, tkwin, colorName\fB)\fR .sp +void +\fBTk_Get3DBorderColors(\fIborder, bgColorPtr, darkColorPtr, lightColorPtr\fB)\fR +.sp Tk_3DBorder \fBTk_Get3DBorderFromObj(\fItkwin, objPtr\fB)\fR .sp void \fBTk_Draw3DRectangle(\fItkwin, drawable, border, x, y, width, height, borderWidth, relief\fB)\fR @@ -88,10 +97,12 @@ Height of rectangle describing border or bevel, in pixels. .AP int borderWidth in Width of border in pixels. Positive means border is inside rectangle given by \fIx\fR, \fIy\fR, \fIwidth\fR, \fIheight\fR, negative means border is outside rectangle. +.AP int highlightWidth in +Width of ring around the outside of the widget if the widget has received the input focus. .AP int relief in Indicates 3-D position of interior of value relative to exterior; should be \fBTK_RELIEF_RAISED\fR, \fBTK_RELIEF_SUNKEN\fR, \fBTK_RELIEF_GROOVE\fR, \fBTK_RELIEF_SOLID\fR, or \fBTK_RELIEF_RIDGE\fR (may also be \fBTK_RELIEF_FLAT\fR for \fBTk_Fill3DRectangle\fR). @@ -131,10 +142,20 @@ Non-zero means this bevel forms the top side of the value; zero means it forms the bottom side. .AP int which in Specifies which of the border's graphics contexts is desired. Must be \fBTK_3D_FLAT_GC\fR, \fBTK_3D_LIGHT_GC\fR, or \fBTK_3D_DARK_GC\fR. +.AP XColor *bgColorPtr out +Pointer to location in which to store the background color of the given border. +.AP XColor *darkColorPtr out +Pointer to location in which to store the color for darker areas of the given border. +.AP XColor *lightColorPtr out +Pointer to location in which to store the color for lighter areas of the given border. +.AP GC fgGC in +Foreground X graphics context. +.AP GC fgGC in +Background X graphics context. .BE .SH DESCRIPTION .PP These procedures provide facilities for drawing window borders in a way that produces a three-dimensional appearance. @@ -156,15 +177,28 @@ interpreter \fIinterp\fR. If it returns successfully, \fBTk_Alloc3DBorderFromObj\fR caches information about the return value in \fIobjPtr\fR, which speeds up future calls to \fBTk_Alloc3DBorderFromObj\fR with the same \fIobjPtr\fR and \fItkwin\fR. +.PP +\fBTk_ClipDrawableToRect\fR will clip all drawing into the drawable d to the given rectangle. If width or height are negative, reset to no clipping. +Subsequent drawing into d is offset and clipped as specified. +The function is only used when \fBTK_NO_DOUBLE_BUFFERING\fR is specified at compile time. +.PP +\fBTk_DrawHighlightBorder\fR draws a rectangular ring around the outside of a widget +to indicate that it has received the input focus. +On the Macintosh, this puts a 1 pixel border in the bgGC color between +the widget and the focus ring, except in the case where highlightWidth +is 1, in which case the border is left out. +For proper Mac L&F, use highlightWidth of 3. .PP \fBTk_Get3DBorder\fR is identical to \fBTk_Alloc3DBorderFromObj\fR except that the color is specified with a string instead of a value. This prevents \fBTk_Get3DBorder\fR from caching the return value, so \fBTk_Get3DBorder\fR is less efficient than \fBTk_Alloc3DBorderFromObj\fR. +.PP +\fBTk_Get3DBorderColors\fR returns the used colors of the given border. .PP \fBTk_Get3DBorderFromObj\fR returns the token for an existing border, given the window and color name used to create the border. \fBTk_Get3DBorderFromObj\fR does not actually create the border; it must already have been created with a previous call to Index: doc/AddOption.3 ================================================================== --- doc/AddOption.3 +++ doc/AddOption.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH Tk_AddOption 3 "" Tk "Tk Library Procedures" .so man.macros .BS @@ -11,23 +11,30 @@ .nf \fB#include \fR .sp void \fBTk_AddOption\fR(\fItkwin, name, value, priority\fR) +.sp +void +\fBTk_GetSystemDefault\fR(\fItkwin, dbName, className\fR) .SH ARGUMENTS .AP Tk_Window tkwin in Token for window. .AP "const char" *name in Multi-element name of option. .AP "const char" *value in Value of option. +.AP "const char" *dbName in +The option database name. +.AP "const char" *className in +The name of the option class. .AP int priority in Overall priority level to use for option. .BE .SH DESCRIPTION .PP -This procedure is invoked to add an option to the database +\fBTk_AddOption\fR is invoked to add an option to the database associated with \fItkwin\fR's main window. \fIName\fR contains the option being specified and consists of names and/or classes separated by asterisks or dots, in the usual X format. \fIValue\fR contains the text string to associate with \fIname\fR; this value will be returned in calls to \fBTk_GetOption\fR. @@ -44,7 +51,9 @@ \fB.Xdefaults\fR, resource databases loaded into the X server, or user-specific startup files. .IP 80 Used for options specified interactively after the application starts running. +\fBTk_GetSystemDefault\fR return a Tk_Uid string representation of the given \fIdbname\fR and \fIclassName\fR of a configuration option. +Returns NULL if there are no system defaults that match this pair. .SH KEYWORDS class, name, option, add Index: doc/CrtPhImgFmt.3 ================================================================== --- doc/CrtPhImgFmt.3 +++ doc/CrtPhImgFmt.3 @@ -7,28 +7,36 @@ '\" '\" Author: Paul Mackerras (paulus@cs.anu.edu.au), '\" Department of Computer Science, '\" Australian National University. '\" -.TH Tk_CreatePhotoImageFormat 3 8.5 Tk "Tk Library Procedures" +.TH Tk_CreatePhotoImageFormat 3 8.7 Tk "Tk Library Procedures" .so man.macros .BS .SH NAME Tk_CreatePhotoImageFormat \- define new file format for photo images .SH SYNOPSIS .nf \fB#include \fR +.sp +.VS 8.7 +\fBTk_CreatePhotoImageFormatVersion3\fR(\fIformatVersion3Ptr\fR) +.VE 8.7 .sp \fBTk_CreatePhotoImageFormat\fR(\fIformatPtr\fR) .SH ARGUMENTS -.AS "const Tk_PhotoImageFormat" *formatPtr +.AS "const Tk_PhotoImageFormatVersion3" *formatVersion3Ptr +.VS 8.7 +.AP "const Tk_PhotoImageFormatVersion3" *formatVersion3Ptr in +Structure that defines the new file format including metadata functionality. +.VE 8.7 .AP "const Tk_PhotoImageFormat" *formatPtr in Structure that defines the new file format. .BE .SH DESCRIPTION .PP -\fBTk_CreatePhotoImageFormat\fR is invoked to define a new file format +\fBTk_CreatePhotoImageFormatVersion3\fR is invoked to define a new file format for image data for use with photo images. The code that implements an image file format is called an image file format handler, or handler for short. The photo image code maintains a list of handlers that can be used to read and write data to or from a file. Some handlers may also @@ -35,27 +43,34 @@ support reading image data from a string or converting image data to a string format. The user can specify which handler to use with the \fB\-format\fR image configuration option or the \fB\-format\fR option to the \fBread\fR and \fBwrite\fR photo image subcommands. +.PP +The alternate version 2 function \fBTk_CreatePhotoImageFormat\fR has +identical functionality, but does not allow the handler to get or return +the metadata dictionary of the image. +It is described in section \fBVERSION 2 INTERFACE\fR below. .PP An image file format handler consists of a collection of procedures -plus a Tk_PhotoImageFormat structure, which contains the 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_PhotoImageFormat structure contains the following fields: +plus a \fBTk_PhotoImageFormatVersion3\fR structure, which contains the +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 Tk_PhotoImageFormat { +typedef struct Tk_PhotoImageFormatVersion3 { const char *\fIname\fR; - Tk_ImageFileMatchProc *\fIfileMatchProc\fR; - Tk_ImageStringMatchProc *\fIstringMatchProc\fR; - Tk_ImageFileReadProc *\fIfileReadProc\fR; - Tk_ImageStringReadProc *\fIstringReadProc\fR; - Tk_ImageFileWriteProc *\fIfileWriteProc\fR; - Tk_ImageStringWriteProc *\fIstringWriteProc\fR; -} \fBTk_PhotoImageFormat\fR; + Tk_ImageFileMatchProcVersion3 *\fIfileMatchProc\fR; + Tk_ImageStringMatchProcVersion3 *\fIstringMatchProc\fR; + Tk_ImageFileReadProcVersion3 *\fIfileReadProc\fR; + Tk_ImageStringReadProcVersion3 *\fIstringReadProc\fR; + Tk_ImageFileWriteProcVersion3 *\fIfileWriteProc\fR; + Tk_ImageStringWriteProcVersion3 *\fIstringWriteProc\fR; +} \fBTk_PhotoImageFormatVersion3\fR; .CE +.VE 8.7 .PP The handler need not provide implementations of all six procedures. For example, the procedures that handle string data would not be provided for a format in which the image data are stored in binary, and could therefore contain null characters. If any procedure is not @@ -65,58 +80,68 @@ procedure, and the \fIstringMatchProc\fR procedure if it provides the \fIstringReadProc\fR procedure. .SS NAME .PP \fIformatPtr->name\fR provides a name for the image type. -Once \fBTk_CreatePhotoImageFormat\fR returns, this name may be used -in the \fB\-format\fR photo image configuration and subcommand option. +Once \fBTk_CreatePhotoImageFormatVersion3\fR returns, this name may be +used in the \fB\-format\fR photo image configuration and subcommand +option. The manual page for the photo image (photo(n)) describes how image file formats are chosen based on their names and the value given to the \fB\-format\fR option. The first character of \fIformatPtr->name\fR must not be an uppercase character from the ASCII character set (that is, one of the characters \fBA\fR-\fBZ\fR). Such names are used only for legacy interface support (see below). +.VS 8.7 .SS FILEMATCHPROC .PP \fIformatPtr->fileMatchProc\fR provides the address of a procedure for Tk to call when it is searching for an image file format handler suitable for reading data in a given file. \fIformatPtr->fileMatchProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageFileMatchProc\fR( +typedef int \fBTk_ImageFileMatchProcVersion3\fR( + Tcl_Interp *\fIinterp\fR, Tcl_Channel \fIchan\fR, const char *\fIfileName\fR, Tcl_Obj *\fIformat\fR, + Tcl_Obj *\fImetadataIn\fR, int *\fIwidthPtr\fR, int *\fIheightPtr\fR, - Tcl_Interp *\fIinterp\fR); + Tcl_Obj *\fImetadataOut\fR); .CE The \fIfileName\fR argument is the name of the file containing the image data, which is open for reading as \fIchan\fR. The \fIformat\fR argument contains the value given for the \fB\-format\fR option, or NULL if the option was not specified. +\fBmetadataIn\fR and \fBmetadataOut\fR inputs and returns a metadata +dictionary as described in section \fBMETADATA INTERFACE\fR below. If the data in the file appears to be in the format supported by this handler, the \fIformatPtr->fileMatchProc\fR procedure should store the width and height of the image in *\fIwidthPtr\fR and *\fIheightPtr\fR respectively, and return 1. Otherwise it should return 0. .SS STRINGMATCHPROC .PP -\fIformatPtr->stringMatchProc\fR provides the address of a procedure for -Tk to call when it is searching for an image file format handler for +\fIformatPtr->stringMatchProc\fR provides the address of a procedure +for Tk to call when it is searching for an image file format handler suitable for reading data from a given string. \fIformatPtr->stringMatchProc\fR must match the following prototype: .CS -typedef int \fBTk_ImageStringMatchProc\fR( +typedef int \fBTk_ImageStringMatchProcVersion3\fR( + Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIdata\fR, Tcl_Obj *\fIformat\fR, + Tcl_Obj *\fImetadataIn\fR, int *\fIwidthPtr\fR, int *\fIheightPtr\fR, - Tcl_Interp *\fIinterp\fR); + Tcl_Obj *\fImetadataOut\fR); .CE The \fIdata\fR argument points to the object containing the image data. The \fIformat\fR argument contains the value given for the \fB\-format\fR option, or NULL if the option was not specified. +\fBmetadataIn\fR and \fBmetadataOut\fR inputs and returns a metadata +dictionary as described in section \fBMETADATA INTERFACE\fR below. If the data in the string appears to be in the format supported by this handler, the \fIformatPtr->stringMatchProc\fR procedure should store the width and height of the image in *\fIwidthPtr\fR and *\fIheightPtr\fR respectively, and return 1. Otherwise it should return 0. @@ -129,14 +154,16 @@ 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, PhotoHandle \fIimageHandle\fR, int \fIdestX\fR, int \fIdestY\fR, int \fIwidth\fR, int \fIheight\fR, - int \fIsrcX\fR, int \fIsrcY\fR); + int \fIsrcX\fR, int \fIsrcY\fR, + Tcl_Obj *\fImetadataOut\fR); .CE The \fIinterp\fR argument is the interpreter in which the command was invoked to read the image; it should be used for reporting errors. The image data is in the file named \fIfileName\fR, which is open for reading as \fIchan\fR. The \fIformat\fR argument contains the @@ -146,38 +173,44 @@ \fIimageHandle\fR. The subimage of the data in the file is of dimensions \fIwidth\fR x \fIheight\fR and has its top-left corner at coordinates (\fIsrcX\fR,\fIsrcY\fR). It is to be stored in the photo image with its top-left corner at coordinates (\fIdestX\fR,\fIdestY\fR) using the \fBTk_PhotoPutBlock\fR procedure. +\fBmetadataIn\fR and \fBmetadataOut\fR inputs and returns a metadata +dictionary as described in section \fBMETADATA INTERFACE\fR below. The return value is a standard Tcl return value. .SS STRINGREADPROC .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 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_ImageStringReadProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIdata\fR, Tcl_Obj *\fIformat\fR, + Tcl_Obj *\fImetadataIn\fR, PhotoHandle \fIimageHandle\fR, int \fIdestX\fR, int \fIdestY\fR, int \fIwidth\fR, int \fIheight\fR, - int \fIsrcX\fR, int \fIsrcY\fR); + int \fIsrcX\fR, int \fIsrcY\fR, + Tcl_Obj *\fImetadataOut\fR); .CE The \fIinterp\fR argument is the interpreter in which the command was invoked to read the image; it should be used for reporting errors. The \fIdata\fR argument points to the image data in object form. The \fIformat\fR argument contains the value given for the \fB\-format\fR option, or NULL if the option was -not specified. The image data in the string, or a subimage of it, is to -be read into the photo image identified by the handle +not specified. The image data in the string, or a subimage of it, is +to be read into the photo image identified by the handle \fIimageHandle\fR. The subimage of the data in the string is of dimensions \fIwidth\fR x \fIheight\fR and has its top-left corner at coordinates (\fIsrcX\fR,\fIsrcY\fR). It is to be stored in the photo image with its top-left corner at coordinates (\fIdestX\fR,\fIdestY\fR) using the \fBTk_PhotoPutBlock\fR procedure. +\fBmetadataIn\fR and \fBmetadataOut\fR inputs and returns a metadata +dictionary as described in section \fBMETADATA INTERFACE\fR below. The return value is a standard Tcl return value. .SS FILEWRITEPROC .PP \fIformatPtr->fileWriteProc\fR provides the address of a procedure for Tk to call to write data from a photo image to a file. @@ -185,10 +218,11 @@ .CS 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); .CE The \fIinterp\fR argument is the interpreter in which the command was invoked to write the image; it should be used for reporting errors. The image data to be written are in memory and are described by the @@ -199,20 +233,24 @@ value given for the \fB\-format\fR option, or NULL if the option was not specified. The format string can contain extra characters after the name of the format. If appropriate, the \fIformatPtr->fileWriteProc\fR procedure may interpret these characters to specify further details about the image file. +\fBmetadataIn\fR may contain metadata keys that a driver may include +into the output data. The return value is a standard Tcl return value. .SS STRINGWRITEPROC .PP -\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 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_ImageStringWriteProc\fR( Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIformat\fR, + Tcl_Obj *\fImetadataIn\fR, Tk_PhotoImageBlock *\fIblockPtr\fR); .CE The \fIinterp\fR argument is the interpreter in which the command was invoked to convert the image; it should be used for reporting errors. The image data to be converted are in memory and are described by the @@ -223,11 +261,205 @@ value given for the \fB\-format\fR option, or NULL if the option was not specified. The format string can contain extra characters after the name of the format. If appropriate, the \fIformatPtr->stringWriteProc\fR procedure may interpret these characters to specify further details about the image file. +\fBmetadataIn\fR may contain metadata keys that a driver may include +into the output data. The return value is a standard Tcl return value. +.PP +.SH "METADATA INTERFACE" +.PP +Image formats contain a description of the image bitmap and may +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: +.RS +Abreviation are in upper case +.RE +.RS +Words are in US English in small case (except proper nouns) +.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. +It may be NULL to flag that the metadata dict is empty. +.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)); +.CE +.PP +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 \-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 \-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 +recreated on a metadata change. The format string should be used for +this purpose. +.PP +.SS "METADATA OUTPUT" +.PP +The image match and read driver functions may set keys in a prepared +matadata dict to return them. +Those functions get a Tcl object pointer \fBmetadataOut\fR as +parameter. +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); +.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. +At the script level, the command \fBimage create\fR and the +\fBconfigure\fR method may return metadata from the driver. +.PP +Format string options or metadata keys may influence the creation of +metadata within the driver. +For example, the creation of an expensive metadata key may depend on a +format string option or on a metadata input key. +.PP +.VE 8.7 +.SH "VERSION 2 INTERFACE" +.PP +Version 2 Interface does not include the possibility for the driver to +use the metadata dict for input or output. +.SS SYNOPSIS +\fB#include \fR +.sp +\fBTk_CreatePhotoImageFormat\fR(\fIformatPtr\fR) +.SS ARGUMENTS +.AS "const Tk_PhotoImageFormat" *formatPtr +.AP "const Tk_PhotoImageFormat" *formatPtr in +Structure that defines the new file format. +.BE +.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 Tk_PhotoImageFormat { + const char *\fIname\fR; + Tk_ImageFileMatchProc *\fIfileMatchProc\fR; + Tk_ImageStringMatchProc *\fIstringMatchProc\fR; + Tk_ImageFileReadProc *\fIfileReadProc\fR; + Tk_ImageStringReadProc *\fIstringReadProc\fR; + Tk_ImageFileWriteProc *\fIfileWriteProc\fR; + Tk_ImageStringWriteProc *\fIstringWriteProc\fR; +} \fBTk_PhotoImageFormat\fR; +.CE +.PP +.SS FILEMATCHPROC +.PP +\fIformatPtr->fileMatchProc\fR must match the following prototype: +.CS +typedef int \fBTk_ImageFileMatchProc\fR( + Tcl_Channel \fIchan\fR, + const char *\fIfileName\fR, + Tcl_Obj *\fIformat\fR, + int *\fIwidthPtr\fR, + int *\fIheightPtr\fR, + Tcl_Interp *\fIinterp\fR); +.CE +.PP +.SS STRINGMATCHPROC +.PP +\fIformatPtr->stringMatchProc\fR must match the following prototype: +.CS +typedef int \fBTk_ImageStringMatchProc\fR( + Tcl_Obj *\fIdata\fR, + Tcl_Obj *\fIformat\fR, + int *\fIwidthPtr\fR, + int *\fIheightPtr\fR, + Tcl_Interp *\fIinterp\fR); +.CE +.SS FILEREADPROC +.PP +\fIformatPtr->fileReadProc\fR must match the following prototype: +.CS +typedef int \fBTk_ImageFileReadProc\fR( + Tcl_Interp *\fIinterp\fR, + Tcl_Channel \fIchan\fR, + const char *\fIfileName\fR, + Tcl_Obj *\fIformat\fR, + PhotoHandle \fIimageHandle\fR, + int \fIdestX\fR, int \fIdestY\fR, + int \fIwidth\fR, int \fIheight\fR, + int \fIsrcX\fR, int \fIsrcY\fR); +.CE +.SS STRINGREADPROC +.PP +\fIformatPtr->stringReadProc\fR must match the following prototype: +.CS +typedef int \fBTk_ImageStringReadProc\fR( + Tcl_Interp *\fIinterp\fR, + Tcl_Obj *\fIdata\fR, + Tcl_Obj *\fIformat\fR, + PhotoHandle \fIimageHandle\fR, + int \fIdestX\fR, int \fIdestY\fR, + int \fIwidth\fR, int \fIheight\fR, + int \fIsrcX\fR, int \fIsrcY\fR); +.CE +.SS FILEWRITEPROC +.PP +\fIformatPtr->fileWriteProc\fR must match the following prototype: +.CS +typedef int \fBTk_ImageFileWriteProc\fR( + Tcl_Interp *\fIinterp\fR, + const char *\fIfileName\fR, + Tcl_Obj *\fIformat\fR, + Tk_PhotoImageBlock *\fIblockPtr\fR); +.CE +.SS STRINGWRITEPROC +.PP +\fIformatPtr->stringWriteProc\fR must match the following prototype: +.CS +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 Index: doc/GetHINSTANCE.3 ================================================================== --- doc/GetHINSTANCE.3 +++ doc/GetHINSTANCE.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH Tk_GetHISTANCE 3 "" Tk "Tk Library Procedures" .so man.macros .BS Index: doc/GetHWND.3 ================================================================== --- doc/GetHWND.3 +++ doc/GetHWND.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH HWND 3 8.0 Tk "Tk Library Procedures" .so man.macros .BS Index: doc/Grab.3 ================================================================== --- doc/Grab.3 +++ doc/Grab.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH Tk_Grab 3 "" Tk "Tk Library Procedures" .so man.macros .BS Index: doc/HWNDToWindow.3 ================================================================== --- doc/HWNDToWindow.3 +++ doc/HWNDToWindow.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH Tk_HWNDToWindow 3 "" Tk "Tk Library Procedures" .so man.macros .BS Index: doc/Inactive.3 ================================================================== --- doc/Inactive.3 +++ doc/Inactive.3 @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH Tk_GetUserInactiveTime 3 8.5 Tk "Tk Library Procedures" .so man.macros .BS Index: doc/MainWin.3 ================================================================== --- doc/MainWin.3 +++ doc/MainWin.3 @@ -15,16 +15,30 @@ \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() .SH ARGUMENTS .AS Tcl_Interp *pathName .AP Tcl_Interp *interp in/out Interpreter associated with the application. +.AP Tk_Window tkwin in +Token for main window. +.AP const char *menuName in +The name of the new menubar that the toplevel needs to be set to. +NULL means that their is no menu now. +.AP const char *oldMenuName in +The name of the menubar previously set in this toplevel. +NULL means no menu was set previously. .BE .SH DESCRIPTION .PP A main window is a special kind of toplevel window used as the outermost window in an application. @@ -34,7 +48,14 @@ associated with \fIinterp\fR then \fBTk_MainWindow\fR returns NULL and leaves an error message in interpreter \fIinterp\fR's result. .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 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/SetOptions.3 ================================================================== --- doc/SetOptions.3 +++ doc/SetOptions.3 @@ -331,21 +331,27 @@ nor \fIclientData\fR. .TP \fBTK_OPTION_ANCHOR\fR The value must be a standard anchor position such as \fBne\fR or \fBcenter\fR. The internal form is a Tk_Anchor value like the ones -returned by \fBTk_GetAnchorFromObj\fR. +returned by \fBTk_GetAnchorFromObj\fR. This option type supports the \fBTK_OPTION_NULL_OK\fR +flag; if the empty string is specified as the value for the option, +the integer relief value is set to \fBTK_ANCHOR_NULL\fR. .TP \fBTK_OPTION_BITMAP\fR The value must be a standard Tk bitmap name. The internal form is a Pixmap token like the ones returned by \fBTk_AllocBitmapFromObj\fR. This option type requires \fItkwin\fR to be supplied to procedures such as \fBTk_SetOptions\fR, and it supports the \fBTK_OPTION_NULL_OK\fR flag. .TP \fBTK_OPTION_BOOLEAN\fR The value must be a standard boolean value such as \fBtrue\fR or -\fBno\fR. The internal form is an integer with value 0 or 1. +\fBno\fR. The internal form is an integer with value 0 or 1. Note: if the +\fIobjOffset\fR field is not used then information about the original value +of this option will be lost. This option type supports the +\fBTK_OPTION_NULL_OK\fR flag; if a NULL value is set, the internal +representation is set to -1. .TP \fBTK_OPTION_BORDER\fR The value must be a standard color name such as \fBred\fR or \fB#ff8080\fR. The internal form is a Tk_3DBorder token like the ones returned by \fBTk_Alloc3DBorderFromObj\fR. @@ -375,11 +381,11 @@ .TP \fBTK_OPTION_DOUBLE\fR The string value must be a floating-point number in the format accepted by \fBstrtol\fR. The internal form is a C \fBdouble\fR value. This option type supports the \fBTK_OPTION_NULL_OK\fR -flag; if a NULL value is set, the internal representation is set to zero. +flag; if a NULL value is set, the internal representation is set to NaN. .TP \fBTK_OPTION_END\fR Marks the end of the template. There must be a Tk_OptionSpec structure with \fItype\fR \fBTK_OPTION_END\fR at the end of each template. If the \fIclientData\fR field of this structure is not NULL, then it points to @@ -397,33 +403,36 @@ .TP \fBTK_OPTION_INT\fR The string value must be an integer in the format accepted by \fBstrtol\fR (e.g. \fB0\fR and \fB0x\fR prefixes may be used to specify octal or hexadecimal numbers, respectively). The internal -form is a C \fBint\fR value. +form is a C \fBint\fR value. This option type supports the \fBTK_OPTION_NULL_OK\fR +flag; if a NULL value is set, the internal representation is set to INT_MIN. .TP \fBTK_OPTION_JUSTIFY\fR The value must be a standard justification value such as \fBleft\fR. The internal form is a Tk_Justify like the values returned by -\fBTk_GetJustifyFromObj\fR. +\fBTk_GetJustifyFromObj\fR. This option type supports the \fBTK_OPTION_NULL_OK\fR +flag; if the empty string is specified as the value for the option, +the integer relief value is set to \fBTK_JUSTIFY_NULL\fR. .TP \fBTK_OPTION_PIXELS\fR The value must specify a screen distance such as \fB2i\fR or \fB6.4\fR. The internal form is an integer value giving a distance in pixels, like the values returned by \fBTk_GetPixelsFromObj\fR. Note: if the \fIobjOffset\fR field is not used then information about the original value of this option will be lost. See \fBOBJOFFSET VS. INTERNALOFFSET\fR below for details. This option type supports the \fBTK_OPTION_NULL_OK\fR flag; if a NULL value is set, the -internal representation is set to zero. +internal representation is set to INT_MIN. .TP \fBTK_OPTION_RELIEF\fR The value must be standard relief such as \fBraised\fR. The internal form is an integer relief value such as \fBTK_RELIEF_RAISED\fR. This option type supports the \fBTK_OPTION_NULL_OK\fR -flag; if the empty string is specified as the value for the option, -the integer relief value is set to \fBTK_RELIEF_NULL\fR. +flag; if a NULL value is set, the internal representation is set to +\fBTK_RELIEF_NULL\fR. .TP \fBTK_OPTION_STRING\fR The value may be any string. The internal form is a (char *) pointer that points to a dynamically allocated copy of the value. This option type supports the \fBTK_OPTION_NULL_OK\fR flag. Index: doc/TextLayout.3 ================================================================== --- doc/TextLayout.3 +++ doc/TextLayout.3 @@ -106,12 +106,13 @@ .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 number -less than 0 for no underline. +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 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 ADDED doc/WinUtil.3 Index: doc/WinUtil.3 ================================================================== --- /dev/null +++ doc/WinUtil.3 @@ -0,0 +1,64 @@ +'\" +'\" Copyright (c) 1990-1993 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_ConfigureWindow 3 4.0 Tk "Tk Library Procedures" +.so man.macros +.BS +.SH NAME +Tk_GetOtherWindow, Tk_MakeContainer, Tk_MakeWindow, Tk_UseWindow \- window utility functions +.SH SYNOPSIS +.nf +\fB#include \fR +.sp +Tk_Window +\fBTk_GetOtherWindow(\fItkwin\fB)\fR +.sp +\fBTk_MakeContainer(\fItkwin\fB)\fR +.sp +\fBTk_MakeWindow(\fItkwin, parent\fB)\fR +.sp +int +\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 +Token for window. +.AP Window parent in +Parent window. +.AP "const char" *string in +String identifying an X window to use for \fItkwin\fR; must be an integer value. +.BE +.SH DESCRIPTION +.PP +If both the container and embedded window are in the same process, +\fBTk_GetOtherWindow\fR will return either one, given the other. +If winPtr is a container, the return value is the token for the +embedded window, and vice versa. If the "other" window isn't in this +process, NULL is returned. +.PP +\fBTk_MakeContainer\fR is called to indicate that a particular window will be a +container for an embedded application. This changes certain aspects of +the window's behavior, such as whether it will receive events anymore. +.PP +\fBTk_MakeWindow\fR creates an actual window system window object based on the +current attributes of the specified TkWindow. It returns the handle to the new +window, or None on failure. +.PP +\fBTk_UseWindow\fR causes a Tk window to use a given X window as its +parent window, rather than the root window for the screen. It is +invoked by an embedded application to specify the window in which it +is embedded. +.PP +The return value is normally TCL_OK. If an error occurs (such as +string not being a valid window spec), then the return value is +TCL_ERROR and an error message is left in the interp's result if +interp is non-NULL. +.PP +.SH KEYWORDS +parent, window Index: doc/bind.n ================================================================== --- doc/bind.n +++ doc/bind.n @@ -1,9 +1,9 @@ '\" '\" Copyright (c) 1990 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. -'\" Copyright (c) 1998 by Scriptics Corporation. +'\" Copyright (c) 1998 Scriptics Corporation. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" .TH bind n 8.0 Tk "Tk Built-In Commands" @@ -51,17 +51,17 @@ arbitrary set of binding tags to a window, the default binding tags provide the following behavior: .IP \(bu 3 If a tag is the name of an internal window the binding applies to that window. +.IP \(bu 3 +If the tag is the name of a class of widgets, such as \fBButton\fR, +the binding applies to all widgets in that class. .IP \(bu 3 If the tag is the name of a toplevel window the binding applies to the toplevel window and all its internal windows. .IP \(bu 3 -If the tag is the name of a class of widgets, such as \fBButton\fR, -the binding applies to all widgets in that class; -.IP \(bu 3 If \fItag\fR has the value \fBall\fR, the binding applies to all windows in the application. .SH "EVENT PATTERNS" .PP The \fIsequence\fR argument specifies a sequence of one or more @@ -104,12 +104,12 @@ Modifiers consist of any of the following values: .DS .ta 6c \fBControl\fR \fBMod1\fR, \fBM1\fR, \fBCommand\fR \fBAlt\fR \fBMod2\fR, \fBM2\fR, \fBOption\fR -\fBShift\fR \fBMod3\fR, \fBM3\fR -\fBLock\fR \fBMod4\fR, \fBM4\fR +\fBShift\fR \fBMod3\fR, \fBM3\fR, \fBNum\fR +\fBLock\fR \fBMod4\fR, \fBM4\fR, \fBFn\fR \fBExtended\fR \fBMod5\fR, \fBM5\fR \fBButton1\fR, \fBB1\fR \fBMeta\fR, \fBM\fR \fBButton2\fR, \fBB2\fR \fBDouble\fR \fBButton3\fR, \fBB3\fR \fBTriple\fR \fBButton4\fR, \fBB4\fR \fBQuadruple\fR @@ -147,12 +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 and \fBOption\fR modifiers are equivalents of \fBMod1\fR -resp. \fBMod2\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 Index: doc/canvas.n ================================================================== --- doc/canvas.n +++ doc/canvas.n @@ -1254,11 +1254,12 @@ \fB\-activefill \fIcolor\fR .TP \fB\-disabledfill \fIcolor\fR . Specifies the color to be used to fill item's area. -in its normal, active, and disabled states, +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. @@ -1762,11 +1763,11 @@ If the smoothing method is \fBraw\fR, this indicates that the polygon should also be drawn as a curve but where the list of coordinates is such that the first coordinate pair (and every third coordinate pair thereafter) is a knot point on a cubic Bezier curve, and the other coordinates are control points on the cubic Bezier curve. Straight -line segments can be venerated within a curve by making control points +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). .TP Index: doc/chooseDirectory.n ================================================================== --- doc/chooseDirectory.n +++ doc/chooseDirectory.n @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH tk_chooseDirectory n 8.3 Tk "Tk Built-In Commands" .so man.macros .BS Index: doc/colors.n ================================================================== --- doc/colors.n +++ doc/colors.n @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" Copyright (c) 2003 ActiveState Corporation. '\" Copyright (c) 2006-2007 Daniel A. Steffen '\" Copyright (c) 2008 Donal K. Fellows '\" .TH colors n 8.3 Tk "Tk Built-In Commands" Index: doc/console.n ================================================================== --- doc/console.n +++ doc/console.n @@ -21,11 +21,11 @@ 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 Index: doc/cursors.n ================================================================== --- doc/cursors.n +++ doc/cursors.n @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" '\" Copyright (c) 2006-2007 Daniel A. Steffen '\" .TH cursors n 8.3 Tk "Tk Built-In Commands" Index: doc/event.n ================================================================== --- doc/event.n +++ doc/event.n @@ -340,10 +340,19 @@ .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 +. +This event is sent to all widgets when a font is changed, for example, +by the use of [font configure]. The user_data field (%d) will have the +value "FontChanged". For other system wide changes, this event will +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" Index: doc/grid.n ================================================================== --- doc/grid.n +++ doc/grid.n @@ -309,11 +309,11 @@ 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? +Synonym for \fBgrid content \fIwindow\fR ?\fI\-option value\fR?. .SH "RELATIVE PLACEMENT" .PP The \fBgrid\fR command contains a limited set of capabilities that permit layouts to be created without specifying the row and column information for each content. This permits content to be rearranged, Index: doc/keysyms.n ================================================================== --- doc/keysyms.n +++ doc/keysyms.n @@ -1,7 +1,7 @@ '\" -'\" Copyright (c) 1998-2000 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 Scriptics Corporation. '\" All rights reserved. '\" .TH keysyms n 8.3 Tk "Tk Built-In Commands" .so man.macros .BS @@ -10,11 +10,11 @@ keysyms \- keysyms recognized by Tk .BE .SH DESCRIPTION .PP Tk recognizes many keysyms when specifying key bindings (e.g., -.QW "\fBbind\fR \fB. \fR" ). +.QW "\fBbind\fR \fB. <\fR\fIkeysym\fR\fB>\fR" ). The following list enumerates the keysyms that will be recognized by Tk. Note that not all keysyms will be valid on all platforms, and some keysyms are also available on platforms that have a different native name for that key. For example, on Unix systems, the presence @@ -22,25 +22,25 @@ keyboard modifier map. This list shows keysyms along with their decimal and hexadecimal values. .PP .CS space 32 0x20 -exclam 33 0x21 +! (exclam) 33 0x21 quotedbl 34 0x22 numbersign 35 0x23 dollar 36 0x24 -percent 37 0x25 -ampersand 38 0x26 -apostrophe 39 0x27 -parenleft 40 0x28 -parenright 41 0x29 -asterisk 42 0x2A -plus 43 0x2B -comma 44 0x2C +% (percent) 37 0x25 +& (ampersand) 38 0x26 +' (apostrophe) 39 0x27 +( (parenleft) 40 0x28 +) (parenright) 41 0x29 +* (asterisk) 42 0x2A ++ (plus) 43 0x2B +, (comma) 44 0x2C minus 45 0x2D -period 46 0x2E -slash 47 0x2F +. (period) 46 0x2E +/ (slash) 47 0x2F 0 48 0x30 1 49 0x31 2 50 0x32 3 51 0x33 4 52 0x34 @@ -47,17 +47,17 @@ 5 53 0x35 6 54 0x36 7 55 0x37 8 56 0x38 9 57 0x39 -colon 58 0x3A +: (colon) 58 0x3A semicolon 59 0x3B less 60 0x3C -equal 61 0x3D += (equal) 61 0x3D greater 62 0x3E -question 63 0x3F -at 64 0x40 +? (question) 63 0x3F +@ (at) 64 0x40 A 65 0x41 B 66 0x42 C 67 0x43 D 68 0x44 E 69 0x45 @@ -83,13 +83,13 @@ Y 89 0x59 Z 90 0x5A bracketleft 91 0x5B backslash 92 0x5C bracketright 93 0x5D -asciicircum 94 0x5E -underscore 95 0x5F -grave 96 0x60 +^ (asciicircum) 94 0x5E +_ (underscore) 95 0x5F +` (grave) 96 0x60 a 97 0x61 b 98 0x62 c 99 0x63 d 100 0x64 e 101 0x65 @@ -113,120 +113,120 @@ w 119 0x77 x 120 0x78 y 121 0x79 z 122 0x7A braceleft 123 0x7B -bar 124 0x7C +| (bar) 124 0x7C braceright 125 0x7D -asciitilde 126 0x7E +~ (asciitilde) 126 0x7E nobreakspace 160 0xA0 -exclamdown 161 0xA1 -cent 162 0xA2 -sterling 163 0xA3 -currency 164 0xA4 -yen 165 0xA5 -brokenbar 166 0xA6 -section 167 0xA7 -diaeresis 168 0xA8 -copyright 169 0xA9 -ordfeminine 170 0xAA -guillemotleft 171 0xAB -notsign 172 0xAC +\(r! (exclamdown) 161 0xA1 +\(ct (cent) 162 0xA2 +\(Po (sterling) 163 0xA3 +\(Cs (currency) 164 0xA4 +\(Ye (yen) 165 0xA5 +\(bb (brokenbar) 166 0xA6 +\(sc (section) 167 0xA7 +\(ad (diaeresis) 168 0xA8 +\(co (copyright) 169 0xA9 +\(Of (ordfeminine) 170 0xAA +\(Fo (guillemotleft) 171 0xAB +\(no (notsign) 172 0xAC hyphen 173 0xAD -registered 174 0xAE -macron 175 0xAF -degree 176 0xB0 -plusminus 177 0xB1 -twosuperior 178 0xB2 -threesuperior 179 0xB3 -acute 180 0xB4 -mu 181 0xB5 -paragraph 182 0xB6 -periodcentered 183 0xB7 -cedilla 184 0xB8 -onesuperior 185 0xB9 -masculine 186 0xBA -guillemotright 187 0xBB -onequarter 188 0xBC -onehalf 189 0xBD -threequarters 190 0xBE -questiondown 191 0xBF -Agrave 192 0xC0 -Aacute 193 0xC1 -Acircumflex 194 0xC2 -Atilde 195 0xC3 -Adiaeresis 196 0xC4 -Aring 197 0xC5 -AE 198 0xC6 -Ccedilla 199 0xC7 -Egrave 200 0xC8 -Eacute 201 0xC9 -Ecircumflex 202 0xCA -Ediaeresis 203 0xCB -Igrave 204 0xCC -Iacute 205 0xCD -Icircumflex 206 0xCE -Idiaeresis 207 0xCF -ETH 208 0xD0 -Ntilde 209 0xD1 -Ograve 210 0xD2 -Oacute 211 0xD3 -Ocircumflex 212 0xD4 -Otilde 213 0xD5 -Odiaeresis 214 0xD6 -multiply 215 0xD7 -Oslash 216 0xD8 -Ugrave 217 0xD9 -Uacute 218 0xDA -Ucircumflex 219 0xDB -Udiaeresis 220 0xDC -Yacute 221 0xDD -THORN 222 0xDE -ssharp 223 0xDF -agrave 224 0xE0 -aacute 225 0xE1 -acircumflex 226 0xE2 -atilde 227 0xE3 -adiaeresis 228 0xE4 -aring 229 0xE5 -ae 230 0xE6 -ccedilla 231 0xE7 -egrave 232 0xE8 -eacute 233 0xE9 -ecircumflex 234 0xEA -ediaeresis 235 0xEB -igrave 236 0xEC -iacute 237 0xED -icircumflex 238 0xEE -idiaeresis 239 0xEF -eth 240 0xF0 -ntilde 241 0xF1 -ograve 242 0xF2 -oacute 243 0xF3 -ocircumflex 244 0xF4 -otilde 245 0xF5 -odiaeresis 246 0xF6 -division 247 0xF7 -oslash 248 0xF8 -ugrave 249 0xF9 -uacute 250 0xFA -ucircumflex 251 0xFB -udiaeresis 252 0xFC -yacute 253 0xFD -thorn 254 0xFE -ydiaeresis 255 0xFF +\(rg (registered) 174 0xAE +\(a- (macron) 175 0xAF +\(de (degree) 176 0xB0 +\(+- (plusminus) 177 0xB1 +\(S2 (twosuperior) 178 0xB2 +\(S3 (threesuperior) 179 0xB3 +\(aa (acute) 180 0xB4 +\(mc (mu) 181 0xB5 +\(ps (paragraph) 182 0xB6 +\(pc (periodcentered) 183 0xB7 +\(ac (cedilla) 184 0xB8 +\(S1 (onesuperior) 185 0xB9 +\(Om (masculine) 186 0xBA +\(Fc (guillemotright) 187 0xBB +\(14 (onequarter) 188 0xBC +\(12 (onehalf) 189 0xBD +\(34 (threequarters) 190 0xBE +\(r? (questiondown) 191 0xBF +\(`A (Agrave) 192 0xC0 +\('A (Aacute) 193 0xC1 +\(^A (Acircumflex) 194 0xC2 +\(~A (Atilde) 195 0xC3 +\(:A (Adiaeresis) 196 0xC4 +\(oA (Aring) 197 0xC5 +\(AE (AE) 198 0xC6 +\(,C (Ccedilla) 199 0xC7 +\(`E (Egrave) 200 0xC8 +\('E (Eacute) 201 0xC9 +\(^E (Ecircumflex) 202 0xCA +\(:E (Ediaeresis) 203 0xCB +\(`I (Igrave) 204 0xCC +\('I (Iacute) 205 0xCD +\(^I (Icircumflex) 206 0xCE +\(:I (Idiaeresis) 207 0xCF +\(-D (ETH) 208 0xD0 +\(~N (Ntilde) 209 0xD1 +\(`O (Ograve) 210 0xD2 +\('O (Oacute) 211 0xD3 +\(^O (Ocircumflex) 212 0xD4 +\(~O (Otilde) 213 0xD5 +\(:O (Odiaeresis) 214 0xD6 +\(mu (multiply) 215 0xD7 +\(/O (Oslash) 216 0xD8 +\(`U (Ugrave) 217 0xD9 +\('U (Uacute) 218 0xDA +\(^U (Ucircumflex) 219 0xDB +\(:U (Udiaeresis) 220 0xDC +\('Y (Yacute) 221 0xDD +\(TP (THORN) 222 0xDE +\(ss (ssharp) 223 0xDF +\(`a (agrave) 224 0xE0 +\('a (aacute) 225 0xE1 +\(^a (acircumflex) 226 0xE2 +\(~a (atilde) 227 0xE3 +\(:a (adiaeresis) 228 0xE4 +\(oa (aring) 229 0xE5 +\(ae (ae) 230 0xE6 +\(,c (ccedilla) 231 0xE7 +\(`e (egrave) 232 0xE8 +\('e (eacute) 233 0xE9 +\(^e (ecircumflex) 234 0xEA +\(:e (ediaeresis) 235 0xEB +\(`i (igrave) 236 0xEC +\('i (iacute) 237 0xED +\(^i (icircumflex) 238 0xEE +\(:i (idiaeresis) 239 0xEF +\(Sd (eth) 240 0xF0 +\(~n (ntilde) 241 0xF1 +\(`o (ograve) 242 0xF2 +\('o (oacute) 243 0xF3 +\(^o (ocircumflex) 244 0xF4 +\(~o (otilde) 245 0xF5 +\(:o (odiaeresis) 246 0xF6 +\(di (division) 247 0xF7 +\(/o (oslash) 248 0xF8 +\(`u (ugrave) 249 0xF9 +\('u (uacute) 250 0xFA +\(^u (ucircumflex) 251 0xFB +\(:u (udiaeresis) 252 0xFC +\('y (yacute) 253 0xFD +\(Tp (thorn) 254 0xFE +\(:y (ydiaeresis) 255 0xFF +.CE +.CS Aogonek 417 0x1A1 breve 418 0x1A2 Lstroke 419 0x1A3 Lcaron 421 0x1A5 Sacute 422 0x1A6 Scaron 425 0x1A9 Scedilla 426 0x1AA Tcaron 427 0x1AB Zacute 428 0x1AC -.CE -.CS Zcaron 430 0x1AE Zabovedot 431 0x1AF aogonek 433 0x1B1 ogonek 434 0x1B2 lstroke 435 0x1B3 @@ -392,10 +392,12 @@ kana_RO 1243 0x4DB kana_WA 1244 0x4DC kana_N 1245 0x4DD voicedsound 1246 0x4DE semivoicedsound 1247 0x4DF +.CE +.CS Arabic_comma 1452 0x5AC Arabic_semicolon 1467 0x5BB Arabic_question_mark 1471 0x5BF Arabic_hamza 1473 0x5C1 Arabic_maddaonalef 1474 0x5C2 @@ -427,12 +429,10 @@ Arabic_feh 1505 0x5E1 Arabic_qaf 1506 0x5E2 Arabic_kaf 1507 0x5E3 Arabic_lam 1508 0x5E4 Arabic_meem 1509 0x5E5 -.CE -.CS Arabic_noon 1510 0x5E6 Arabic_ha 1511 0x5E7 Arabic_waw 1512 0x5E8 Arabic_alefmaksura 1513 0x5E9 Arabic_yeh 1514 0x5EA @@ -542,13 +542,15 @@ Greek_ALPHAaccent 1953 0x7A1 Greek_EPSILONaccent 1954 0x7A2 Greek_ETAaccent 1955 0x7A3 Greek_IOTAaccent 1956 0x7A4 Greek_IOTAdieresis 1957 0x7A5 +Greek_IOTAaccentdiaeresis 1958 0x7A6 Greek_OMICRONaccent 1959 0x7A7 Greek_UPSILONaccent 1960 0x7A8 Greek_UPSILONdieresis 1961 0x7A9 +Greek_UPSILONaccentdieresis 1962 0x7AA Greek_OMEGAaccent 1963 0x7AB Greek_accentdieresis 1966 0x7AE Greek_horizbar 1967 0x7AF Greek_alphaaccent 1969 0x7B1 Greek_epsilonaccent 1970 0x7B2 @@ -608,10 +610,12 @@ Greek_upsilon 2037 0x7F5 Greek_phi 2038 0x7F6 Greek_chi 2039 0x7F7 Greek_psi 2040 0x7F8 Greek_omega 2041 0x7F9 +.CE +.CS leftradical 2209 0x8A1 topleftradical 2210 0x8A2 horizconnector 2211 0x8A3 topintegral 2212 0x8A4 botintegral 2213 0x8A5 @@ -631,12 +635,10 @@ topvertsummationconnector 2227 0x8B3 botvertsummationconnector 2228 0x8B4 toprightsummation 2229 0x8B5 botrightsummation 2230 0x8B6 rightmiddlesummation 2231 0x8B7 -.CE -.CS lessthanequal 2236 0x8BC notequal 2237 0x8BD greaterthanequal 2238 0x8BE integral 2239 0x8BF therefore 2240 0x8C0 @@ -814,10 +816,12 @@ hebrew_zade 3318 0xCF6 hebrew_qoph 3319 0xCF7 hebrew_resh 3320 0xCF8 hebrew_shin 3321 0xCF9 hebrew_taw 3322 0xCFA +.CE +.CS Thai_kokai 3489 0xDA1 Thai_khokhai 3490 0xDA2 Thai_khokhuat 3491 0xDA3 Thai_khokhwai 3492 0xDA4 Thai_khokhon 3493 0xDA5 @@ -992,41 +996,13 @@ Hangul_J_YeorinHieuh 3834 0xEFA Korean_Won 3839 0xEFF OE 5052 0x13BC oe 5053 0x13BD Ydiaeresis 5054 0x13BE -EuroSign 8364 0x20AC -3270_Duplicate 64769 0xFD01 -3270_FieldMark 64770 0xFD02 -3270_Right2 64771 0xFD03 -3270_Left2 64772 0xFD04 -3270_BackTab 64773 0xFD05 -3270_EraseEOF 64774 0xFD06 -3270_EraseInput 64775 0xFD07 -3270_Reset 64776 0xFD08 -3270_Quit 64777 0xFD09 -3270_PA1 64778 0xFD0A -3270_PA2 64779 0xFD0B -3270_PA3 64780 0xFD0C -3270_Test 64781 0xFD0D -3270_Attn 64782 0xFD0E -3270_CursorBlink 64783 0xFD0F -3270_AltCursor 64784 0xFD10 -3270_KeyClick 64785 0xFD11 -3270_Jump 64786 0xFD12 -3270_Ident 64787 0xFD13 -3270_Rule 64788 0xFD14 -3270_Copy 64789 0xFD15 -3270_Play 64790 0xFD16 -3270_Setup 64791 0xFD17 -3270_Record 64792 0xFD18 -3270_ChangeScreen 64793 0xFD19 -3270_DeleteWord 64794 0xFD1A -3270_ExSelect 64795 0xFD1B -3270_CursorSelect 64796 0xFD1C -3270_PrintScreen 64797 0xFD1D -3270_Enter 64798 0xFD1E +\(eu (EuroSign) 8364 0x20AC +.CE +.CS ISO_Lock 65025 0xFE01 ISO_Level2_Latch 65026 0xFE02 ISO_Level3_Shift 65027 0xFE03 ISO_Level3_Latch 65028 0xFE04 ISO_Level3_Lock 65029 0xFE05 @@ -1163,10 +1139,12 @@ Pointer_EnableKeys 65273 0xFEF9 Pointer_Accelerate 65274 0xFEFA Pointer_DfltBtnNext 65275 0xFEFB Pointer_DfltBtnPrev 65276 0xFEFC Pointer_Drag5 65277 0xFEFD +.CE +.CS BackSpace 65288 0xFF08 Tab 65289 0xFF09 Linefeed 65290 0xFF0A Clear 65291 0xFF0B Return 65293 0xFF0D @@ -1213,22 +1191,17 @@ Down 65364 0xFF54 Prior 65365 0xFF55 Next 65366 0xFF56 End 65367 0xFF57 Begin 65368 0xFF58 -Win_L 65371 0xFF5B -Win_R 65372 0xFF5C -.CE -.CS -App 65373 0xFF5D Select 65376 0xFF60 Print 65377 0xFF61 Execute 65378 0xFF62 Insert 65379 0xFF63 Undo 65381 0xFF65 Redo 65382 0xFF66 -Menu 65383 0xFF67 +Menu (App) 65383 0xFF67 Find 65384 0xFF68 Cancel 65385 0xFF69 Help 65386 0xFF6A Break 65387 0xFF6B Mode_switch 65406 0xFF7E @@ -1311,12 +1284,12 @@ Shift_Lock 65510 0xFFE6 Meta_L 65511 0xFFE7 Meta_R 65512 0xFFE8 Alt_L 65513 0xFFE9 Alt_R 65514 0xFFEA -Super_L 65515 0xFFEB -Super_R 65516 0xFFEC +Super_L (Win_L) 65515 0xFFEB +Super_R (Win_R) 65516 0xFFEC Hyper_L 65517 0xFFED Hyper_R 65518 0xFFEE braille_dot_1 65521 0xFFF1 braille_dot_2 65522 0xFFF2 braille_dot_3 65523 0xFFF3 @@ -1326,719 +1299,12 @@ braille_dot_7 65527 0xFFF7 braille_dot_8 65528 0xFFF8 braille_dot_9 65529 0xFFF9 braille_dot_10 65530 0xFFFA Delete 65535 0xFFFF -Ibreve 16777516 0x100012C -ibreve 16777517 0x100012D -Wcircumflex 16777588 0x1000174 -wcircumflex 16777589 0x1000175 -Ycircumflex 16777590 0x1000176 -ycircumflex 16777591 0x1000177 -SCHWA 16777615 0x100018F -Obarred 16777631 0x100019F -Ohorn 16777632 0x10001A0 -ohorn 16777633 0x10001A1 -Uhorn 16777647 0x10001AF -uhorn 16777648 0x10001B0 -Zstroke 16777653 0x10001B5 -zstroke 16777654 0x10001B6 -EZH 16777655 0x10001B7 -Ocaron 16777681 0x10001D1 -ocaron 16777682 0x10001D2 -Gcaron 16777702 0x10001E6 -gcaron 16777703 0x10001E7 -schwa 16777817 0x1000259 -obarred 16777845 0x1000275 -ezh 16777874 0x1000292 -Cyrillic_GHE_bar 16778386 0x1000492 -Cyrillic_ghe_bar 16778387 0x1000493 -Cyrillic_ZHE_descender 16778390 0x1000496 -Cyrillic_zhe_descender 16778391 0x1000497 -Cyrillic_KA_descender 16778394 0x100049A -Cyrillic_ka_descender 16778395 0x100049B -Cyrillic_KA_vertstroke 16778396 0x100049C -Cyrillic_ka_vertstroke 16778397 0x100049D -Cyrillic_EN_descender 16778402 0x10004A2 -Cyrillic_en_descender 16778403 0x10004A3 -Cyrillic_U_straight 16778414 0x10004AE -Cyrillic_u_straight 16778415 0x10004AF -Cyrillic_U_straight_bar 16778416 0x10004B0 -Cyrillic_u_straight_bar 16778417 0x10004B1 -Cyrillic_HA_descender 16778418 0x10004B2 -Cyrillic_ha_descender 16778419 0x10004B3 -Cyrillic_CHE_descender 16778422 0x10004B6 -Cyrillic_che_descender 16778423 0x10004B7 -Cyrillic_CHE_vertstroke 16778424 0x10004B8 -Cyrillic_che_vertstroke 16778425 0x10004B9 -Cyrillic_SHHA 16778426 0x10004BA -Cyrillic_shha 16778427 0x10004BB -Cyrillic_SCHWA 16778456 0x10004D8 -Cyrillic_schwa 16778457 0x10004D9 -Cyrillic_I_macron 16778466 0x10004E2 -Cyrillic_i_macron 16778467 0x10004E3 -Cyrillic_O_bar 16778472 0x10004E8 -Cyrillic_o_bar 16778473 0x10004E9 -Cyrillic_U_macron 16778478 0x10004EE -Cyrillic_u_macron 16778479 0x10004EF -Armenian_AYB 16778545 0x1000531 -Armenian_BEN 16778546 0x1000532 -Armenian_GIM 16778547 0x1000533 -Armenian_DA 16778548 0x1000534 -Armenian_YECH 16778549 0x1000535 -Armenian_ZA 16778550 0x1000536 -Armenian_E 16778551 0x1000537 -Armenian_AT 16778552 0x1000538 -Armenian_TO 16778553 0x1000539 -Armenian_ZHE 16778554 0x100053A -Armenian_INI 16778555 0x100053B -Armenian_LYUN 16778556 0x100053C -Armenian_KHE 16778557 0x100053D -Armenian_TSA 16778558 0x100053E -Armenian_KEN 16778559 0x100053F -Armenian_HO 16778560 0x1000540 -Armenian_DZA 16778561 0x1000541 -Armenian_GHAT 16778562 0x1000542 -Armenian_TCHE 16778563 0x1000543 -Armenian_MEN 16778564 0x1000544 -Armenian_HI 16778565 0x1000545 -Armenian_NU 16778566 0x1000546 -Armenian_SHA 16778567 0x1000547 -Armenian_VO 16778568 0x1000548 -Armenian_CHA 16778569 0x1000549 -Armenian_PE 16778570 0x100054A -Armenian_JE 16778571 0x100054B -Armenian_RA 16778572 0x100054C -Armenian_SE 16778573 0x100054D -Armenian_VEV 16778574 0x100054E -Armenian_TYUN 16778575 0x100054F -Armenian_RE 16778576 0x1000550 -Armenian_TSO 16778577 0x1000551 -Armenian_VYUN 16778578 0x1000552 -Armenian_PYUR 16778579 0x1000553 -Armenian_KE 16778580 0x1000554 -Armenian_O 16778581 0x1000555 -Armenian_FE 16778582 0x1000556 -Armenian_apostrophe 16778586 0x100055A -Armenian_accent 16778587 0x100055B -Armenian_exclam 16778588 0x100055C -Armenian_separation_mark 16778589 0x100055D -Armenian_question 16778590 0x100055E -Armenian_ayb 16778593 0x1000561 -Armenian_ben 16778594 0x1000562 -Armenian_gim 16778595 0x1000563 -Armenian_da 16778596 0x1000564 -Armenian_yech 16778597 0x1000565 -Armenian_za 16778598 0x1000566 -Armenian_e 16778599 0x1000567 -Armenian_at 16778600 0x1000568 -Armenian_to 16778601 0x1000569 -Armenian_zhe 16778602 0x100056A -Armenian_ini 16778603 0x100056B -Armenian_lyun 16778604 0x100056C -Armenian_khe 16778605 0x100056D -Armenian_tsa 16778606 0x100056E -Armenian_ken 16778607 0x100056F -Armenian_ho 16778608 0x1000570 -Armenian_dza 16778609 0x1000571 -Armenian_ghat 16778610 0x1000572 -Armenian_tche 16778611 0x1000573 -Armenian_men 16778612 0x1000574 -Armenian_hi 16778613 0x1000575 -Armenian_nu 16778614 0x1000576 -Armenian_sha 16778615 0x1000577 -Armenian_vo 16778616 0x1000578 -Armenian_cha 16778617 0x1000579 -Armenian_pe 16778618 0x100057A -Armenian_je 16778619 0x100057B -Armenian_ra 16778620 0x100057C -Armenian_se 16778621 0x100057D -Armenian_vev 16778622 0x100057E -Armenian_tyun 16778623 0x100057F -Armenian_re 16778624 0x1000580 -Armenian_tso 16778625 0x1000581 -Armenian_vyun 16778626 0x1000582 -Armenian_pyur 16778627 0x1000583 -Armenian_ke 16778628 0x1000584 -Armenian_o 16778629 0x1000585 -Armenian_fe 16778630 0x1000586 -Armenian_ligature_ew 16778631 0x1000587 -Armenian_full_stop 16778633 0x1000589 -Armenian_hyphen 16778634 0x100058A -Arabic_madda_above 16778835 0x1000653 -Arabic_hamza_above 16778836 0x1000654 -Arabic_hamza_below 16778837 0x1000655 -Arabic_0 16778848 0x1000660 -Arabic_1 16778849 0x1000661 -Arabic_2 16778850 0x1000662 -Arabic_3 16778851 0x1000663 -Arabic_4 16778852 0x1000664 -Arabic_5 16778853 0x1000665 -Arabic_6 16778854 0x1000666 -Arabic_7 16778855 0x1000667 -Arabic_8 16778856 0x1000668 -Arabic_9 16778857 0x1000669 -Arabic_percent 16778858 0x100066A -Arabic_superscript_alef 16778864 0x1000670 -Arabic_tteh 16778873 0x1000679 -Arabic_peh 16778878 0x100067E -Arabic_tcheh 16778886 0x1000686 -Arabic_ddal 16778888 0x1000688 -Arabic_rreh 16778897 0x1000691 -Arabic_jeh 16778904 0x1000698 -Arabic_veh 16778916 0x10006A4 -Arabic_keheh 16778921 0x10006A9 -Arabic_gaf 16778927 0x10006AF -Arabic_noon_ghunna 16778938 0x10006BA -Arabic_heh_doachashmee 16778942 0x10006BE -Arabic_heh_goal 16778945 0x10006C1 -Farsi_yeh 16778956 0x10006CC -Arabic_yeh_baree 16778962 0x10006D2 -Arabic_fullstop 16778964 0x10006D4 -Farsi_0 16778992 0x10006F0 -Farsi_1 16778993 0x10006F1 -Farsi_2 16778994 0x10006F2 -Farsi_3 16778995 0x10006F3 -Farsi_4 16778996 0x10006F4 -Farsi_5 16778997 0x10006F5 -Farsi_6 16778998 0x10006F6 -Farsi_7 16778999 0x10006F7 -Farsi_8 16779000 0x10006F8 -Farsi_9 16779001 0x10006F9 -Sinh_ng 16780674 0x1000D82 -Sinh_h2 16780675 0x1000D83 -Sinh_a 16780677 0x1000D85 -Sinh_aa 16780678 0x1000D86 -Sinh_ae 16780679 0x1000D87 -Sinh_aee 16780680 0x1000D88 -Sinh_i 16780681 0x1000D89 -Sinh_ii 16780682 0x1000D8A -Sinh_u 16780683 0x1000D8B -Sinh_uu 16780684 0x1000D8C -Sinh_ri 16780685 0x1000D8D -Sinh_rii 16780686 0x1000D8E -Sinh_lu 16780687 0x1000D8F -Sinh_luu 16780688 0x1000D90 -Sinh_e 16780689 0x1000D91 -Sinh_ee 16780690 0x1000D92 -Sinh_ai 16780691 0x1000D93 -Sinh_o 16780692 0x1000D94 -Sinh_oo 16780693 0x1000D95 -Sinh_au 16780694 0x1000D96 -Sinh_ka 16780698 0x1000D9A -Sinh_kha 16780699 0x1000D9B -Sinh_ga 16780700 0x1000D9C -Sinh_gha 16780701 0x1000D9D -Sinh_ng2 16780702 0x1000D9E -Sinh_nga 16780703 0x1000D9F -Sinh_ca 16780704 0x1000DA0 -Sinh_cha 16780705 0x1000DA1 -Sinh_ja 16780706 0x1000DA2 -Sinh_jha 16780707 0x1000DA3 -Sinh_nya 16780708 0x1000DA4 -Sinh_jnya 16780709 0x1000DA5 -Sinh_nja 16780710 0x1000DA6 -Sinh_tta 16780711 0x1000DA7 -Sinh_ttha 16780712 0x1000DA8 -Sinh_dda 16780713 0x1000DA9 -Sinh_ddha 16780714 0x1000DAA -Sinh_nna 16780715 0x1000DAB -Sinh_ndda 16780716 0x1000DAC -Sinh_tha 16780717 0x1000DAD -Sinh_thha 16780718 0x1000DAE -Sinh_dha 16780719 0x1000DAF -Sinh_dhha 16780720 0x1000DB0 -Sinh_na 16780721 0x1000DB1 -Sinh_ndha 16780723 0x1000DB3 -Sinh_pa 16780724 0x1000DB4 -Sinh_pha 16780725 0x1000DB5 -Sinh_ba 16780726 0x1000DB6 -Sinh_bha 16780727 0x1000DB7 -Sinh_ma 16780728 0x1000DB8 -Sinh_mba 16780729 0x1000DB9 -Sinh_ya 16780730 0x1000DBA -Sinh_ra 16780731 0x1000DBB -Sinh_la 16780733 0x1000DBD -Sinh_va 16780736 0x1000DC0 -Sinh_sha 16780737 0x1000DC1 -Sinh_ssha 16780738 0x1000DC2 -Sinh_sa 16780739 0x1000DC3 -Sinh_ha 16780740 0x1000DC4 -Sinh_lla 16780741 0x1000DC5 -Sinh_fa 16780742 0x1000DC6 -Sinh_al 16780746 0x1000DCA -Sinh_aa2 16780751 0x1000DCF -Sinh_ae2 16780752 0x1000DD0 -Sinh_aee2 16780753 0x1000DD1 -Sinh_i2 16780754 0x1000DD2 -Sinh_ii2 16780755 0x1000DD3 -Sinh_u2 16780756 0x1000DD4 -Sinh_uu2 16780758 0x1000DD6 -Sinh_ru2 16780760 0x1000DD8 -Sinh_e2 16780761 0x1000DD9 -Sinh_ee2 16780762 0x1000DDA -Sinh_ai2 16780763 0x1000DDB -Sinh_o2 16780764 0x1000DDC -Sinh_oo2 16780765 0x1000DDD -Sinh_au2 16780766 0x1000DDE -Sinh_lu2 16780767 0x1000DDF -Sinh_ruu2 16780786 0x1000DF2 -Sinh_luu2 16780787 0x1000DF3 -Sinh_kunddaliya 16780788 0x1000DF4 -Georgian_an 16781520 0x10010D0 -Georgian_ban 16781521 0x10010D1 -Georgian_gan 16781522 0x10010D2 -Georgian_don 16781523 0x10010D3 -Georgian_en 16781524 0x10010D4 -Georgian_vin 16781525 0x10010D5 -Georgian_zen 16781526 0x10010D6 -Georgian_tan 16781527 0x10010D7 -Georgian_in 16781528 0x10010D8 -Georgian_kan 16781529 0x10010D9 -Georgian_las 16781530 0x10010DA -Georgian_man 16781531 0x10010DB -Georgian_nar 16781532 0x10010DC -Georgian_on 16781533 0x10010DD -Georgian_par 16781534 0x10010DE -Georgian_zhar 16781535 0x10010DF -Georgian_rae 16781536 0x10010E0 -Georgian_san 16781537 0x10010E1 -Georgian_tar 16781538 0x10010E2 -Georgian_un 16781539 0x10010E3 -Georgian_phar 16781540 0x10010E4 -Georgian_khar 16781541 0x10010E5 -Georgian_ghan 16781542 0x10010E6 -Georgian_qar 16781543 0x10010E7 -Georgian_shin 16781544 0x10010E8 -Georgian_chin 16781545 0x10010E9 -Georgian_can 16781546 0x10010EA -Georgian_jil 16781547 0x10010EB -Georgian_cil 16781548 0x10010EC -Georgian_char 16781549 0x10010ED -Georgian_xan 16781550 0x10010EE -Georgian_jhan 16781551 0x10010EF -Georgian_hae 16781552 0x10010F0 -Georgian_he 16781553 0x10010F1 -Georgian_hie 16781554 0x10010F2 -Georgian_we 16781555 0x10010F3 -Georgian_har 16781556 0x10010F4 -Georgian_hoe 16781557 0x10010F5 -Georgian_fi 16781558 0x10010F6 -Babovedot 16784898 0x1001E02 -babovedot 16784899 0x1001E03 -Dabovedot 16784906 0x1001E0A -dabovedot 16784907 0x1001E0B -Fabovedot 16784926 0x1001E1E -fabovedot 16784927 0x1001E1F -Lbelowdot 16784950 0x1001E36 -lbelowdot 16784951 0x1001E37 -Mabovedot 16784960 0x1001E40 -mabovedot 16784961 0x1001E41 -Pabovedot 16784982 0x1001E56 -pabovedot 16784983 0x1001E57 -Sabovedot 16784992 0x1001E60 -sabovedot 16784993 0x1001E61 -Tabovedot 16785002 0x1001E6A -tabovedot 16785003 0x1001E6B -Wgrave 16785024 0x1001E80 -wgrave 16785025 0x1001E81 -Wacute 16785026 0x1001E82 -wacute 16785027 0x1001E83 -Wdiaeresis 16785028 0x1001E84 -wdiaeresis 16785029 0x1001E85 -Xabovedot 16785034 0x1001E8A -xabovedot 16785035 0x1001E8B -Abelowdot 16785056 0x1001EA0 -abelowdot 16785057 0x1001EA1 -Ahook 16785058 0x1001EA2 -ahook 16785059 0x1001EA3 -Acircumflexacute 16785060 0x1001EA4 -acircumflexacute 16785061 0x1001EA5 -Acircumflexgrave 16785062 0x1001EA6 -acircumflexgrave 16785063 0x1001EA7 -Acircumflexhook 16785064 0x1001EA8 -acircumflexhook 16785065 0x1001EA9 -Acircumflextilde 16785066 0x1001EAA -acircumflextilde 16785067 0x1001EAB -Acircumflexbelowdot 16785068 0x1001EAC -acircumflexbelowdot 16785069 0x1001EAD -Abreveacute 16785070 0x1001EAE -abreveacute 16785071 0x1001EAF -Abrevegrave 16785072 0x1001EB0 -abrevegrave 16785073 0x1001EB1 -Abrevehook 16785074 0x1001EB2 -abrevehook 16785075 0x1001EB3 -Abrevetilde 16785076 0x1001EB4 -abrevetilde 16785077 0x1001EB5 -Abrevebelowdot 16785078 0x1001EB6 -abrevebelowdot 16785079 0x1001EB7 -Ebelowdot 16785080 0x1001EB8 -ebelowdot 16785081 0x1001EB9 -Ehook 16785082 0x1001EBA -ehook 16785083 0x1001EBB -Etilde 16785084 0x1001EBC -etilde 16785085 0x1001EBD -Ecircumflexacute 16785086 0x1001EBE -ecircumflexacute 16785087 0x1001EBF -Ecircumflexgrave 16785088 0x1001EC0 -ecircumflexgrave 16785089 0x1001EC1 -Ecircumflexhook 16785090 0x1001EC2 -ecircumflexhook 16785091 0x1001EC3 -Ecircumflextilde 16785092 0x1001EC4 -ecircumflextilde 16785093 0x1001EC5 -Ecircumflexbelowdot 16785094 0x1001EC6 -ecircumflexbelowdot 16785095 0x1001EC7 -Ihook 16785096 0x1001EC8 -ihook 16785097 0x1001EC9 -Ibelowdot 16785098 0x1001ECA -ibelowdot 16785099 0x1001ECB -Obelowdot 16785100 0x1001ECC -obelowdot 16785101 0x1001ECD -Ohook 16785102 0x1001ECE -ohook 16785103 0x1001ECF -Ocircumflexacute 16785104 0x1001ED0 -ocircumflexacute 16785105 0x1001ED1 -Ocircumflexgrave 16785106 0x1001ED2 -ocircumflexgrave 16785107 0x1001ED3 -Ocircumflexhook 16785108 0x1001ED4 -ocircumflexhook 16785109 0x1001ED5 -Ocircumflextilde 16785110 0x1001ED6 -ocircumflextilde 16785111 0x1001ED7 -Ocircumflexbelowdot 16785112 0x1001ED8 -ocircumflexbelowdot 16785113 0x1001ED9 -Ohornacute 16785114 0x1001EDA -ohornacute 16785115 0x1001EDB -Ohorngrave 16785116 0x1001EDC -ohorngrave 16785117 0x1001EDD -Ohornhook 16785118 0x1001EDE -ohornhook 16785119 0x1001EDF -Ohorntilde 16785120 0x1001EE0 -ohorntilde 16785121 0x1001EE1 -Ohornbelowdot 16785122 0x1001EE2 -ohornbelowdot 16785123 0x1001EE3 -Ubelowdot 16785124 0x1001EE4 -ubelowdot 16785125 0x1001EE5 -Uhook 16785126 0x1001EE6 -uhook 16785127 0x1001EE7 -Uhornacute 16785128 0x1001EE8 -uhornacute 16785129 0x1001EE9 -Uhorngrave 16785130 0x1001EEA -uhorngrave 16785131 0x1001EEB -Uhornhook 16785132 0x1001EEC -uhornhook 16785133 0x1001EED -Uhorntilde 16785134 0x1001EEE -uhorntilde 16785135 0x1001EEF -Uhornbelowdot 16785136 0x1001EF0 -uhornbelowdot 16785137 0x1001EF1 -Ygrave 16785138 0x1001EF2 -ygrave 16785139 0x1001EF3 -Ybelowdot 16785140 0x1001EF4 -ybelowdot 16785141 0x1001EF5 -Yhook 16785142 0x1001EF6 -yhook 16785143 0x1001EF7 -Ytilde 16785144 0x1001EF8 -ytilde 16785145 0x1001EF9 -zerosuperior 16785520 0x1002070 -foursuperior 16785524 0x1002074 -fivesuperior 16785525 0x1002075 -sixsuperior 16785526 0x1002076 -sevensuperior 16785527 0x1002077 -eightsuperior 16785528 0x1002078 -ninesuperior 16785529 0x1002079 -zerosubscript 16785536 0x1002080 -onesubscript 16785537 0x1002081 -twosubscript 16785538 0x1002082 -threesubscript 16785539 0x1002083 -foursubscript 16785540 0x1002084 -fivesubscript 16785541 0x1002085 -sixsubscript 16785542 0x1002086 -sevensubscript 16785543 0x1002087 -eightsubscript 16785544 0x1002088 -ninesubscript 16785545 0x1002089 -EcuSign 16785568 0x10020A0 -ColonSign 16785569 0x10020A1 -CruzeiroSign 16785570 0x10020A2 -FFrancSign 16785571 0x10020A3 -LiraSign 16785572 0x10020A4 -MillSign 16785573 0x10020A5 -NairaSign 16785574 0x10020A6 -PesetaSign 16785575 0x10020A7 -RupeeSign 16785576 0x10020A8 -WonSign 16785577 0x10020A9 -NewSheqelSign 16785578 0x10020AA -DongSign 16785579 0x10020AB -partdifferential 16785922 0x1002202 -emptyset 16785925 0x1002205 -elementof 16785928 0x1002208 -notelementof 16785929 0x1002209 -containsas 16785931 0x100220B -squareroot 16785946 0x100221A -cuberoot 16785947 0x100221B -fourthroot 16785948 0x100221C -dintegral 16785964 0x100222C -tintegral 16785965 0x100222D -because 16785973 0x1002235 -notapproxeq 16785991 0x1002247 -approxeq 16785992 0x1002248 -notidentical 16786018 0x1002262 -stricteq 16786019 0x1002263 -braille_blank 16787456 0x1002800 -braille_dots_1 16787457 0x1002801 -braille_dots_2 16787458 0x1002802 -braille_dots_12 16787459 0x1002803 -braille_dots_3 16787460 0x1002804 -braille_dots_13 16787461 0x1002805 -braille_dots_23 16787462 0x1002806 -braille_dots_123 16787463 0x1002807 -braille_dots_4 16787464 0x1002808 -braille_dots_14 16787465 0x1002809 -braille_dots_24 16787466 0x100280A -braille_dots_124 16787467 0x100280B -braille_dots_34 16787468 0x100280C -braille_dots_134 16787469 0x100280D -braille_dots_234 16787470 0x100280E -braille_dots_1234 16787471 0x100280F -braille_dots_5 16787472 0x1002810 -braille_dots_15 16787473 0x1002811 -braille_dots_25 16787474 0x1002812 -braille_dots_125 16787475 0x1002813 -braille_dots_35 16787476 0x1002814 -braille_dots_135 16787477 0x1002815 -braille_dots_235 16787478 0x1002816 -braille_dots_1235 16787479 0x1002817 -braille_dots_45 16787480 0x1002818 -braille_dots_145 16787481 0x1002819 -braille_dots_245 16787482 0x100281A -braille_dots_1245 16787483 0x100281B -braille_dots_345 16787484 0x100281C -braille_dots_1345 16787485 0x100281D -braille_dots_2345 16787486 0x100281E -braille_dots_12345 16787487 0x100281F -braille_dots_6 16787488 0x1002820 -braille_dots_16 16787489 0x1002821 -braille_dots_26 16787490 0x1002822 -braille_dots_126 16787491 0x1002823 -braille_dots_36 16787492 0x1002824 -braille_dots_136 16787493 0x1002825 -braille_dots_236 16787494 0x1002826 -braille_dots_1236 16787495 0x1002827 -braille_dots_46 16787496 0x1002828 -braille_dots_146 16787497 0x1002829 -braille_dots_246 16787498 0x100282A -braille_dots_1246 16787499 0x100282B -braille_dots_346 16787500 0x100282C -braille_dots_1346 16787501 0x100282D -braille_dots_2346 16787502 0x100282E -braille_dots_12346 16787503 0x100282F -braille_dots_56 16787504 0x1002830 -braille_dots_156 16787505 0x1002831 -braille_dots_256 16787506 0x1002832 -braille_dots_1256 16787507 0x1002833 -braille_dots_356 16787508 0x1002834 -braille_dots_1356 16787509 0x1002835 -braille_dots_2356 16787510 0x1002836 -braille_dots_12356 16787511 0x1002837 -braille_dots_456 16787512 0x1002838 -braille_dots_1456 16787513 0x1002839 -braille_dots_2456 16787514 0x100283A -braille_dots_12456 16787515 0x100283B -braille_dots_3456 16787516 0x100283C -braille_dots_13456 16787517 0x100283D -braille_dots_23456 16787518 0x100283E -braille_dots_123456 16787519 0x100283F -braille_dots_7 16787520 0x1002840 -braille_dots_17 16787521 0x1002841 -braille_dots_27 16787522 0x1002842 -braille_dots_127 16787523 0x1002843 -braille_dots_37 16787524 0x1002844 -braille_dots_137 16787525 0x1002845 -braille_dots_237 16787526 0x1002846 -braille_dots_1237 16787527 0x1002847 -braille_dots_47 16787528 0x1002848 -braille_dots_147 16787529 0x1002849 -braille_dots_247 16787530 0x100284A -braille_dots_1247 16787531 0x100284B -braille_dots_347 16787532 0x100284C -braille_dots_1347 16787533 0x100284D -braille_dots_2347 16787534 0x100284E -braille_dots_12347 16787535 0x100284F -braille_dots_57 16787536 0x1002850 -braille_dots_157 16787537 0x1002851 -braille_dots_257 16787538 0x1002852 -braille_dots_1257 16787539 0x1002853 -braille_dots_357 16787540 0x1002854 -braille_dots_1357 16787541 0x1002855 -braille_dots_2357 16787542 0x1002856 -braille_dots_12357 16787543 0x1002857 -braille_dots_457 16787544 0x1002858 -braille_dots_1457 16787545 0x1002859 -braille_dots_2457 16787546 0x100285A -braille_dots_12457 16787547 0x100285B -braille_dots_3457 16787548 0x100285C -braille_dots_13457 16787549 0x100285D -braille_dots_23457 16787550 0x100285E -braille_dots_123457 16787551 0x100285F -braille_dots_67 16787552 0x1002860 -braille_dots_167 16787553 0x1002861 -braille_dots_267 16787554 0x1002862 -braille_dots_1267 16787555 0x1002863 -braille_dots_367 16787556 0x1002864 -braille_dots_1367 16787557 0x1002865 -braille_dots_2367 16787558 0x1002866 -braille_dots_12367 16787559 0x1002867 -braille_dots_467 16787560 0x1002868 -braille_dots_1467 16787561 0x1002869 -braille_dots_2467 16787562 0x100286A -braille_dots_12467 16787563 0x100286B -braille_dots_3467 16787564 0x100286C -braille_dots_13467 16787565 0x100286D -braille_dots_23467 16787566 0x100286E -braille_dots_123467 16787567 0x100286F -braille_dots_567 16787568 0x1002870 -braille_dots_1567 16787569 0x1002871 -braille_dots_2567 16787570 0x1002872 -braille_dots_12567 16787571 0x1002873 -braille_dots_3567 16787572 0x1002874 -braille_dots_13567 16787573 0x1002875 -braille_dots_23567 16787574 0x1002876 -braille_dots_123567 16787575 0x1002877 -braille_dots_4567 16787576 0x1002878 -braille_dots_14567 16787577 0x1002879 -braille_dots_24567 16787578 0x100287A -braille_dots_124567 16787579 0x100287B -braille_dots_34567 16787580 0x100287C -braille_dots_134567 16787581 0x100287D -braille_dots_234567 16787582 0x100287E -braille_dots_1234567 16787583 0x100287F -braille_dots_8 16787584 0x1002880 -braille_dots_18 16787585 0x1002881 -braille_dots_28 16787586 0x1002882 -braille_dots_128 16787587 0x1002883 -braille_dots_38 16787588 0x1002884 -braille_dots_138 16787589 0x1002885 -braille_dots_238 16787590 0x1002886 -braille_dots_1238 16787591 0x1002887 -braille_dots_48 16787592 0x1002888 -braille_dots_148 16787593 0x1002889 -braille_dots_248 16787594 0x100288A -braille_dots_1248 16787595 0x100288B -braille_dots_348 16787596 0x100288C -braille_dots_1348 16787597 0x100288D -braille_dots_2348 16787598 0x100288E -braille_dots_12348 16787599 0x100288F -braille_dots_58 16787600 0x1002890 -braille_dots_158 16787601 0x1002891 -braille_dots_258 16787602 0x1002892 -braille_dots_1258 16787603 0x1002893 -braille_dots_358 16787604 0x1002894 -braille_dots_1358 16787605 0x1002895 -braille_dots_2358 16787606 0x1002896 -braille_dots_12358 16787607 0x1002897 -braille_dots_458 16787608 0x1002898 -braille_dots_1458 16787609 0x1002899 -braille_dots_2458 16787610 0x100289A -braille_dots_12458 16787611 0x100289B -braille_dots_3458 16787612 0x100289C -braille_dots_13458 16787613 0x100289D -braille_dots_23458 16787614 0x100289E -braille_dots_123458 16787615 0x100289F -braille_dots_68 16787616 0x10028A0 -braille_dots_168 16787617 0x10028A1 -braille_dots_268 16787618 0x10028A2 -braille_dots_1268 16787619 0x10028A3 -braille_dots_368 16787620 0x10028A4 -braille_dots_1368 16787621 0x10028A5 -braille_dots_2368 16787622 0x10028A6 -braille_dots_12368 16787623 0x10028A7 -braille_dots_468 16787624 0x10028A8 -braille_dots_1468 16787625 0x10028A9 -braille_dots_2468 16787626 0x10028AA -braille_dots_12468 16787627 0x10028AB -braille_dots_3468 16787628 0x10028AC -braille_dots_13468 16787629 0x10028AD -braille_dots_23468 16787630 0x10028AE -braille_dots_123468 16787631 0x10028AF -braille_dots_568 16787632 0x10028B0 -braille_dots_1568 16787633 0x10028B1 -braille_dots_2568 16787634 0x10028B2 -braille_dots_12568 16787635 0x10028B3 -braille_dots_3568 16787636 0x10028B4 -braille_dots_13568 16787637 0x10028B5 -braille_dots_23568 16787638 0x10028B6 -braille_dots_123568 16787639 0x10028B7 -braille_dots_4568 16787640 0x10028B8 -braille_dots_14568 16787641 0x10028B9 -braille_dots_24568 16787642 0x10028BA -braille_dots_124568 16787643 0x10028BB -braille_dots_34568 16787644 0x10028BC -braille_dots_134568 16787645 0x10028BD -braille_dots_234568 16787646 0x10028BE -braille_dots_1234568 16787647 0x10028BF -braille_dots_78 16787648 0x10028C0 -braille_dots_178 16787649 0x10028C1 -braille_dots_278 16787650 0x10028C2 -braille_dots_1278 16787651 0x10028C3 -braille_dots_378 16787652 0x10028C4 -braille_dots_1378 16787653 0x10028C5 -braille_dots_2378 16787654 0x10028C6 -braille_dots_12378 16787655 0x10028C7 -braille_dots_478 16787656 0x10028C8 -braille_dots_1478 16787657 0x10028C9 -braille_dots_2478 16787658 0x10028CA -braille_dots_12478 16787659 0x10028CB -braille_dots_3478 16787660 0x10028CC -braille_dots_13478 16787661 0x10028CD -braille_dots_23478 16787662 0x10028CE -braille_dots_123478 16787663 0x10028CF -braille_dots_578 16787664 0x10028D0 -braille_dots_1578 16787665 0x10028D1 -braille_dots_2578 16787666 0x10028D2 -braille_dots_12578 16787667 0x10028D3 -braille_dots_3578 16787668 0x10028D4 -braille_dots_13578 16787669 0x10028D5 -braille_dots_23578 16787670 0x10028D6 -braille_dots_123578 16787671 0x10028D7 -braille_dots_4578 16787672 0x10028D8 -braille_dots_14578 16787673 0x10028D9 -braille_dots_24578 16787674 0x10028DA -braille_dots_124578 16787675 0x10028DB -braille_dots_34578 16787676 0x10028DC -braille_dots_134578 16787677 0x10028DD -braille_dots_234578 16787678 0x10028DE -braille_dots_1234578 16787679 0x10028DF -braille_dots_678 16787680 0x10028E0 -braille_dots_1678 16787681 0x10028E1 -braille_dots_2678 16787682 0x10028E2 -braille_dots_12678 16787683 0x10028E3 -braille_dots_3678 16787684 0x10028E4 -braille_dots_13678 16787685 0x10028E5 -braille_dots_23678 16787686 0x10028E6 -braille_dots_123678 16787687 0x10028E7 -braille_dots_4678 16787688 0x10028E8 -braille_dots_14678 16787689 0x10028E9 -braille_dots_24678 16787690 0x10028EA -braille_dots_124678 16787691 0x10028EB -braille_dots_34678 16787692 0x10028EC -braille_dots_134678 16787693 0x10028ED -braille_dots_234678 16787694 0x10028EE -braille_dots_1234678 16787695 0x10028EF -braille_dots_5678 16787696 0x10028F0 -braille_dots_15678 16787697 0x10028F1 -braille_dots_25678 16787698 0x10028F2 -braille_dots_125678 16787699 0x10028F3 -braille_dots_35678 16787700 0x10028F4 -braille_dots_135678 16787701 0x10028F5 -braille_dots_235678 16787702 0x10028F6 -braille_dots_1235678 16787703 0x10028F7 -braille_dots_45678 16787704 0x10028F8 -braille_dots_145678 16787705 0x10028F9 -braille_dots_245678 16787706 0x10028FA -braille_dots_1245678 16787707 0x10028FB -braille_dots_345678 16787708 0x10028FC -braille_dots_1345678 16787709 0x10028FD -braille_dots_2345678 16787710 0x10028FE -braille_dots_12345678 16787711 0x10028FF +.CE +.CS SunFA_Grave 268828416 0x1005FF00 SunFA_Circum 268828417 0x1005FF01 SunFA_Tilde 268828418 0x1005FF02 SunFA_Acute 268828419 0x1005FF03 SunFA_Diaeresis 268828420 0x1005FF04 @@ -2058,10 +1324,149 @@ SunAudioRaiseVolume 268828537 0x1005FF79 SunVideoDegauss 268828538 0x1005FF7A SunVideoLowerBrightness 268828539 0x1005FF7B SunVideoRaiseBrightness 268828540 0x1005FF7C SunPowerSwitchShift 268828541 0x1005FF7D +XF86BrightnessAuto 268964084 0x100810F4 +XF86DisplayOff 268964085 0x100810F5 +XF86Info 268964198 0x10081166 +XF86AspectRatio 268964215 0x10081177 +XF86DVD 268964229 0x10081185 +XF86Audio 268964232 0x10081188 +XF86ChannelUp 268964242 0x10081192 +XF86ChannelDown 268964243 0x10081193 +XF86Break 268964251 0x1008119B +XF86VideoPhone 268964256 0x100811A0 +XF86ZoomReset 268964260 0x100811A4 +XF86Editor 268964262 0x100811A6 +XF86GraphicsEditor 268964264 0x100811A8 +XF86Presentation 268964265 0x100811A9 +XF86Database 268964266 0x100811AA +XF86Voicemail 268964268 0x100811AC +XF86Addressbook 268964269 0x100811AD +XF86DisplayToggle 268964271 0x100811AF +XF86SpellCheck 268964272 0x100811B0 +XF86ContextMenu 268964278 0x100811B6 +XF86MediaRepeat 268964279 0x100811B7 +XF8610ChannelsUp 268964280 0x100811B8 +XF8610ChannelsDown 268964281 0x100811B9 +XF86Images 268964282 0x100811BA +XF86NotificationCenter 268964284 0x100811BC +XF86PickupPhone 268964285 0x100811BD +XF86HangupPhone 268964286 0x100811BE +XF86Fn 268964304 0x100811D0 +XF86Fn_Esc 268964305 0x100811D1 +XF86FnRightShift 268964325 0x100811E5 +XF86Numeric0 268964352 0x10081200 +XF86Numeric1 268964353 0x10081201 +XF86Numeric2 268964354 0x10081202 +XF86Numeric3 268964355 0x10081203 +XF86Numeric4 268964356 0x10081204 +XF86Numeric5 268964357 0x10081205 +XF86Numeric6 268964358 0x10081206 +XF86Numeric7 268964359 0x10081207 +XF86Numeric8 268964360 0x10081208 +XF86Numeric9 268964361 0x10081209 +XF86NumericStar 268964362 0x1008120A +XF86NumericPound 268964363 0x1008120B +XF86NumericA 268964364 0x1008120C +XF86NumericB 268964365 0x1008120D +XF86NumericC 268964366 0x1008120E +XF86NumericD 268964367 0x1008120F +XF86CameraFocus 268964368 0x10081210 +XF86WPSButton 268964369 0x10081211 +XF86CameraZoomIn 268964373 0x10081215 +XF86CameraZoomOut 268964374 0x10081216 +XF86CameraUp 268964375 0x10081217 +XF86CameraDown 268964376 0x10081218 +XF86CameraLeft 268964377 0x10081219 +XF86CameraRight 268964378 0x1008121A +XF86AttendantOn 268964379 0x1008121B +XF86AttendantOff 268964380 0x1008121C +XF86AttendantToggle 268964381 0x1008121D +XF86LightsToggle 268964382 0x1008121E +XF86ALSToggle 268964400 0x10081230 +XF86Buttonconfig 268964416 0x10081240 +XF86Taskmanager 268964417 0x10081241 +XF86Journal 268964418 0x10081242 +XF86ControlPanel 268964419 0x10081243 +XF86AppSelect 268964420 0x10081244 +XF86Screensaver 268964421 0x10081245 +XF86VoiceCommand 268964422 0x10081246 +XF86Assistant 268964423 0x10081247 +XF86EmojiPicker 268964425 0x10081249 +XF86Dictate 268964426 0x1008124A +XF86BrightnessMin 268964432 0x10081250 +XF86BrightnessMax 268964433 0x10081251 +XF86KbdInputAssistPrev 268964448 0x10081260 +XF86KbdInputAssistNext 268964449 0x10081261 +XF86KbdInputAssistPrevgroup 268964450 0x10081262 +XF86KbdInputAssistNextgroup 268964451 0x10081263 +XF86KbdInputAssistAccept 268964452 0x10081264 +XF86KbdInputAssistCancel 268964453 0x10081265 +XF86RightUp 268964454 0x10081266 +XF86RightDown 268964455 0x10081267 +XF86LeftUp 268964456 0x10081268 +XF86LeftDown 268964457 0x10081269 +XF86RootMenu 268964458 0x1008126A +XF86MediaTopMenu 268964459 0x1008126B +XF86Numeric11 268964460 0x1008126C +XF86Numeric12 268964461 0x1008126D +XF86AudioDesc 268964462 0x1008126E +XF863DMode 268964463 0x1008126F +XF86NextFavorite 268964464 0x10081270 +XF86StopRecord 268964465 0x10081271 +XF86PauseRecord 268964466 0x10081272 +XF86VOD 268964467 0x10081273 +XF86Unmute 268964468 0x10081274 +XF86FastReverse 268964469 0x10081275 +XF86SlowReverse 268964470 0x10081276 +XF86Data 268964471 0x10081277 +XF86OnScreenKeyboard 268964472 0x10081278 +XF86PrivacyScreenToggle 268964473 0x10081279 +XF86SelectiveScreenshot 268964474 0x1008127A +XF86Macro1 268964496 0x10081290 +XF86Macro2 268964497 0x10081291 +XF86Macro3 268964498 0x10081292 +XF86Macro4 268964499 0x10081293 +XF86Macro5 268964500 0x10081294 +XF86Macro6 268964501 0x10081295 +XF86Macro7 268964502 0x10081296 +XF86Macro8 268964503 0x10081297 +XF86Macro9 268964504 0x10081298 +XF86Macro10 268964505 0x10081299 +XF86Macro11 268964506 0x1008129A +XF86Macro12 268964507 0x1008129B +XF86Macro13 268964508 0x1008129C +XF86Macro14 268964509 0x1008129D +XF86Macro15 268964510 0x1008129E +XF86Macro16 268964511 0x1008129F +XF86Macro17 268964512 0x100812A0 +XF86Macro18 268964513 0x100812A1 +XF86Macro19 268964514 0x100812A2 +XF86Macro20 268964515 0x100812A3 +XF86Macro21 268964516 0x100812A4 +XF86Macro22 268964517 0x100812A5 +XF86Macro23 268964518 0x100812A6 +XF86Macro24 268964519 0x100812A7 +XF86Macro25 268964520 0x100812A8 +XF86Macro26 268964521 0x100812A9 +XF86Macro27 268964522 0x100812AA +XF86Macro28 268964523 0x100812AB +XF86Macro29 268964524 0x100812AC +XF86Macro30 268964525 0x100812AD +XF86MacroRecordStart 268964528 0x100812B0 +XF86MacroRecordStop 268964529 0x100812B1 +XF86MacroPresetCycle 268964530 0x100812B2 +XF86MacroPreset1 268964531 0x100812B3 +XF86MacroPreset2 268964532 0x100812B4 +XF86MacroPreset3 268964533 0x100812B5 +XF86KbdLcdMenu1 268964536 0x100812B8 +XF86KbdLcdMenu2 268964537 0x100812B9 +XF86KbdLcdMenu3 268964538 0x100812BA +XF86KbdLcdMenu4 268964539 0x100812BB +XF86KbdLcdMenu5 268964540 0x100812BC XF86Switch_VT_1 269024769 0x1008FE01 XF86Switch_VT_2 269024770 0x1008FE02 XF86Switch_VT_3 269024771 0x1008FE03 XF86Switch_VT_4 269024772 0x1008FE04 XF86Switch_VT_5 269024773 0x1008FE05 @@ -2070,10 +1475,12 @@ XF86Switch_VT_8 269024776 0x1008FE08 XF86Switch_VT_9 269024777 0x1008FE09 XF86Switch_VT_10 269024778 0x1008FE0A XF86Switch_VT_11 269024779 0x1008FE0B XF86Switch_VT_12 269024780 0x1008FE0C +.CE +.CS XF86Ungrab 269024800 0x1008FE20 XF86ClearGrab 269024801 0x1008FE21 XF86Next_VMode 269024802 0x1008FE22 XF86Prev_VMode 269024803 0x1008FE23 XF86LogWindowTree 269024804 0x1008FE24 @@ -2241,13 +1648,14 @@ XF86Keyboard 269025203 0x1008FFB3 XF86WWAN 269025204 0x1008FFB4 XF86RFKill 269025205 0x1008FFB5 XF86AudioPreset 269025206 0x1008FFB6 XF86RotationLockToggle 269025207 0x1008FFB7 +XF86FullScreen 269025208 0x1008FFB8 .CE .SH "SEE ALSO" bind(n), event(n) .SH KEYWORDS bind, binding, event, keysym '\" Local Variables: '\" mode: nroff '\" End: Index: doc/listbox.n ================================================================== --- doc/listbox.n +++ doc/listbox.n @@ -561,11 +561,11 @@ .IP [16] In \fBextended\fR mode, the Escape key cancels the most recent selection and restores all the elements in the selected range to their previous selection state. .IP [17] -Control-slash selects everything in the widget, except in +Control-/ selects everything in the widget, except in \fBsingle\fR and \fBbrowse\fR modes, in which case it selects the active element and deselects everything else. .IP [18] Control-backslash deselects everything in the widget, except in \fBbrowse\fR mode where it has no effect. Index: doc/menu.n ================================================================== --- doc/menu.n +++ doc/menu.n @@ -38,11 +38,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/Mac OS X, 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 @@ -52,11 +52,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/Mac OS X, 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 @@ -314,31 +314,35 @@ any of the following forms: .TP 12 \fBactive\fR . Indicates the entry that is currently active. If no entry is -active then this form is equivalent to \fBnone\fR. This form may +active then this form is equivalent to \fB{}\fR. This form may not be abbreviated. .TP 12 \fBend\fR . Indicates the bottommost entry in the menu. If there are no -entries in the menu then this form is equivalent to \fBnone\fR. +entries in the menu then this form is equivalent to \fB{}\fR. This form may not be abbreviated. .TP 12 \fBlast\fR . Same as \fBend\fR. .TP 12 -\fBnone\fR +\fB{}\fR . Indicates .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 \fBnone\fR causes +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 may not be abbreviated. .TP 12 \fB@\fInumber\fR . In this form, \fInumber\fR is treated as a y-coordinate in the @@ -369,11 +373,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 \fBnone\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. .TP \fIpathName \fBadd \fItype \fR?\fIoption value option value ...\fR? . @@ -445,11 +449,11 @@ information on the format of this list). .TP \fIpathName \fBindex \fIindex\fR . Returns the numerical index corresponding to \fIindex\fR, or -\fBnone\fR if \fIindex\fR was specified as \fBnone\fR. +\fB{}\fR if \fIindex\fR was specified as \fB{}\fR or \fBnone\fR. .TP \fIpathName \fBinsert \fIindex type \fR?\fIoption value option value ...\fR? . Same as the \fBadd\fR widget command except that it inserts the new entry just before the entry given by \fIindex\fR, instead of appending @@ -521,22 +525,22 @@ supported by all entry types. .TP \fB\-activebackground \fIvalue\fR . Specifies a background color to use for displaying this entry when it -is active. -If this option is specified as an empty string (the default), then the +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. This option is not available for separator or tear-off entries. .TP \fB\-activeforeground \fIvalue\fR . Specifies a foreground color to use for displaying this entry when it -is active. +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. .TP \fB\-accelerator \fIvalue\fR @@ -550,11 +554,12 @@ .TP \fB\-background \fIvalue\fR . Specifies a background color to use for displaying this entry when it is in the normal state (neither active nor disabled). -If this option is specified as an empty string (the default), then the +This option is ignored on Aqua/macOS. +If it is specified as an empty string (the default), then the \fB\-background\fR option for the overall menu is used. This option is not available for separator or tear-off entries. .TP \fB\-bitmap \fIvalue\fR . @@ -571,11 +576,11 @@ \fB\-columnbreak \fIvalue\fR . When this option is zero, the entry appears below the previous entry. When this option is one, the entry appears at the top of a new column in the menu. -This option is ignored on Aqua/Mac OS X, where menus are always a single +This option is ignored on Aqua/macOS, where menus are always a single column. .TP \fB\-command \fIvalue\fR . Specifies a Tcl command to execute when the menu entry is invoked. @@ -601,11 +606,12 @@ .TP \fB\-foreground \fIvalue\fR . Specifies a foreground color to use for displaying this entry when it is in the normal state (neither active nor disabled). -If this option is specified as an empty string (the default), then the +This option is ignored on Aqua/macOS. +If it is specified as an empty string (the default), then the \fB\-foreground\fR option for the overall menu is used. This option is not available for separator or tear-off entries. .TP \fB\-hidemargin \fIvalue\fR . Index: doc/menubutton.n ================================================================== --- doc/menubutton.n +++ doc/menubutton.n @@ -22,11 +22,11 @@ \-borderwidth \-highlightthickness \-textvariable \-cursor \-image \-underline \-compound \-justify \-wraplength .SE .SH "WIDGET-SPECIFIC OPTIONS" -.OP \-direction direction Height +.OP \-direction direction Direction Specifies where the menu is going to be popup up. \fBabove\fR tries to pop the menu above the menubutton. \fBbelow\fR tries to pop the menu below the menubutton. \fBleft\fR tries to pop the menu to the left of the menubutton. \fBright\fR tries to pop the menu to the right of the menu button. \fBflush\fR pops the menu directly over the menubutton. Index: doc/messageBox.n ================================================================== --- doc/messageBox.n +++ doc/messageBox.n @@ -64,13 +64,12 @@ Makes \fIwindow\fR the logical parent of the message box. The message box is displayed on top of its parent window. .TP \fB\-title\fR \fItitleString\fR . -Specifies a string to display as the title of the message box. This option -is ignored on Mac OS X, where platform guidelines forbid the use of a title -on this kind of dialog. +Specifies a string to display as the title of the message box. The +default value is an empty string. .TP \fB\-type\fR \fIpredefinedType\fR . Arranges for a predefined set of buttons to be displayed. The following values are possible for \fIpredefinedType\fR: Index: doc/pack.n ================================================================== --- doc/pack.n +++ doc/pack.n @@ -164,11 +164,11 @@ 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 +Synonym for \fBpack content \fIwindow\fR. .SH "THE PACKER ALGORITHM" .PP For each container the packer maintains an ordered list of content windows called the \fIpacking list\fR. The \fB\-in\fR, \fB\-after\fR, and \fB\-before\fR configuration Index: doc/photo.n ================================================================== --- doc/photo.n +++ doc/photo.n @@ -99,10 +99,20 @@ . 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 +.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 .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 @@ -144,11 +154,11 @@ .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. +window it is displayed in will show through. The metadata dict of the image is not changed. .TP \fIimageName \fBcget\fR \fIoption\fR . Returns the current value of the configuration option given by \fIoption\fR. @@ -167,10 +177,14 @@ one or more \fIoption\-value\fR pairs are specified, then the command 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: setting the \fB\-metadata\fR option without any other option +will not invoke the image format driver to recreate the bitmap. +.VE 8.7 .TP \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 @@ -285,13 +299,22 @@ .TP \fB\-grayscale\fR . If this options is specified, the data will not contain color information. All pixel data will be transformed into grayscale. -.RE .VS 8.7 .TP +\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 \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 @@ -320,10 +343,19 @@ \fIformat-name\fR will be used while searching for an image data format handler to read the data. 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 +.TP +\fB\-metadata\fR \fImetadata\fR +. +A specified \fImetadata\fR is passed to the image format driver when interpreting +the data. +Note: The current metadata of the image is not passed to the format driver +and is not changed by the command. +.VE 8.7 .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 @@ -365,10 +397,19 @@ specified, the region extends from (\fIx1,y1\fR) to the bottom-right 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 +.TP +\fB\-metadata\fR \fImetadata\fR +. +A specified \fImetadata\fR is passed to the image format driver when interpreting +the data. +Note: The current metadata of the image is not passed to the format driver +and is not changed by the command. +.VE 8.7 .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 @@ -458,10 +499,20 @@ .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 +.TP +\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 +image is used. +.VE 8.7 .RE .SH "IMAGE FORMATS" .PP The photo image code is structured to allow handlers for additional image file formats to be added easily. The photo image code maintains @@ -680,10 +731,43 @@ this option is used, it specifies the maximum number of shades of each primary color to try to allocate. It can also be used to force the image to be displayed in shades of gray, even on a color display, by giving a single number rather than three numbers separated by slashes. +.VS 8.7 +.SH "METADATA DICTIONARY" +.PP +Each image has a metadata dictionary property. +This dictionary is not relevant to the bitmap representation of the +image, but may contain additional information like resolution or +comments. +Image format drivers may output metadata when image data is +parsed, or may use metadata to be included in image files or formats. +.SS "METADATA KEYS" +.PP +Each image format driver supports an individual set of metadata dictionary +keys. Predefined keys are: +.TP +DPI +. +Horizontal image resolution in DPI as a double value. +Supported by format \fBpng\fR. +.TP +aspect +. +Aspect ratio horizontal divided by vertical as double value. +Supported by formats \fBgif\fR and \fBpng\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 it does not handle. +.PP +.VE 8.7 .SH CREDITS .PP The photo image type was designed and implemented by Paul Mackerras, based on his earlier photo widget and some suggestions from John Ousterhout. Index: doc/place.n ================================================================== --- doc/place.n +++ doc/place.n @@ -195,11 +195,11 @@ 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 +Synonym for \fBplace content \fIwindow\fR. .PP If the configuration of a window has been retrieved with \fBplace info\fR, that configuration can be restored later by first using \fBplace forget\fR to erase any existing information for the window and then invoking \fBplace configure\fR with ADDED doc/print.n Index: doc/print.n ================================================================== --- /dev/null +++ doc/print.n @@ -0,0 +1,63 @@ +.\" Text automatically generated by txt2man +'\" +'\" Copyright (c) 2021 Kevin Walzer/WordTech Communications LLC. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +.TH tk print n "" Tk "Tk Built-in Commands" +.so man.macros +.SH NAME +print \- Print canvas and text widgets using native dialogs and APIs. +.SH SYNOPSIS +\fBtk print \fIwindow\fR +. +.SH DESCRIPTION +.PP +The \fBtk print\fR command posts a dialog that allows users to print output +from the \fBcanvas\fR and \fBtext\fR widgets. The printing will be done using +platform-native APIs and dialogs where available. +.PP +The \fBcanvas\fR widget has long supported PostScript export and both +PostScript and text files can be sent directly to a printer on Unix-like +systems using the +.QW "lp" +and +.QW "lpr" +Unix commands, and the \fBtk print\fR command does not supersede that +functionality; it builds on it. The \fBtk print\fR command is a fuller +implementation that uses native dialogs on macOS and Windows, and a Tk-based +dialog that provides parallel functionality on X11. +.SH PLATFORM NOTES +.TP +\fBmacOS\fR +. +The Mac implementation uses native print dialogs and relies on the underlying +Common Unix Printing System (CUPS) to render text output from the text widget +and PostScript output from the canvas widget to the printer, to a PDF file, or +a PostScript file. +.TP +\fBWindows\fR +. +The Windows implementation is based on the GDI (Graphics Device Interface) +API. Because there are slight differences in how GDI and Tk's \fBcanvas\fR +widget display graphics, printed output from the \fBcanvas\fR on Windows may +not be identical to screen rendering. +.TP +\fBX11\fR +. +The X11 implementation uses a Tk GUI to configure print jobs for sending to a +printer via the +.QW "lpr" +or +.QW "lp" +commands. While these commands have a large number of parameters for +configuring print jobs, printers vary widely in how they support these +parameters. As a result, only printer selection and number of copies are +configured as arguments to the print command; many aspects of print rendering, +such as grayscale or color for the canvas, are instead configured when +PostScript is generated. +.SH "SEE ALSO" +canvas(n), text(n), tk(n) +.SH KEYWORDS +print, output, graphics, text, canvas Index: doc/spinbox.n ================================================================== --- doc/spinbox.n +++ doc/spinbox.n @@ -222,11 +222,11 @@ .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 .CS - \fIspinbox pathName \-from 1 \-to 10 \-validate all \-vcmd {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 options) to a value not accepted by the validation script. .PP ADDED doc/sysnotify.n Index: doc/sysnotify.n ================================================================== --- /dev/null +++ doc/sysnotify.n @@ -0,0 +1,56 @@ +.\" Text automatically generated by txt2man +'\" +'\" Copyright (c) 2020 Kevin Walzer/WordTech Communications LLC. +'\" +'\" 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 +.SH NAME +sysnotify \- Creates a notification window with a title and message. +.SH SYNOPSIS +\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. +.SH EXAMPLE +.PP +Here is an example of the \fBtk sysnotify\fR code: +.PP +.CS +tk sysnotify "Alert" \e + "This is just a test of the Tk System Notification Code." +.CE +.SH PLATFORM NOTES +.PP +The macOS and Windows versions are native implementations using system +API's. The X11 version has a conditional dependency on libnotify, and +falls back to a Tcl-only implementation if libnotify is not installed. On +each platform the notification includes a platform-specific default image to +accompany the text. +.TP +\fBmacOS\fR +. +The macOS version will request permission from the user to authorize +notifications. This must be activated in Apple's System Preferences +Notifications section. +.RS +.PP +If deploying an application using the standalone version of Wish.app, +setting the bundle ID in the applications Info.plist file to begin with +.QW \fBcom\fR +seems necessary for notifications to work. Using a different prefix +for the bundle ID, such as something like +.QW \fBtk.tcl.tkchat\fR , +will cause notifications to silently fail. +.RE +.TP +\fBWindows\fR +. +The image is taken from the system tray, i.e., \fBsysnotify\fR can only be +called when a \fBsystray\fR was installed. +. +.SH KEYWORDS +notify, alert ADDED doc/systray.n Index: doc/systray.n ================================================================== --- /dev/null +++ doc/systray.n @@ -0,0 +1,65 @@ +.\" Text automatically generated by txt2man +'\" +'\" Copyright (c) 2020 Kevin Walzer/WordTech Communications LLC. +'\" +'\" 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 +.SH NAME +systray \- Creates an icon display in the platform-specific system tray. +.SH SYNOPSIS +\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 destroy\fR +.BE +.BE +.SH DESCRIPTION +.PP +The \fBtk systray create\fR command creates an icon in the platform-specific +tray. The widget is configured with a Tk image for the icon display, an +optional string for display in a tooltip, and optional callbacks that are +bound to and . +.PP +The \fBtk systray configure\fR command sets one or more options of the systray +icon. Configurable options are the same as for the \fBcreate\fR subcommand. When +a single option name is given, the command returns the current valus of this +option. When no option is given this command returns the list of all options and +their current value. +.PP + The \fBtk systray destroy\fR command removes the icon from display and +deallocates it. +.PP +From a user-interface standpoint, only one icon per interpreter is +supported; attempts to create additional icons will return an error. The +existing tray icon can be modified with different images and +strings to indicate app state. Loading additional interpreters into a +running instance of Wish will allow additional icons to be displayed. +.SH EXAMPLE +.PP +Here is an example of the \fBtk systray\fR code: +.CS + image create photo book -data R0lGODlhDwAPAKIAAP//////AP8AAMDAwICAgAAAAAAAAAAAACwAAAAADwAPAAADSQhA2u5ksPeKABKSCaya29d4WKgERFF0l1IMQCAKatvBJ0OTdzzXI1xMB3TBZAvATtB6NSLKleXi3OBoLqrVgc0yv+DVSEUuFxIAOw== + tk systray create -image book -text "tk systray sample" -button1 {puts "Here is the tk systray output"} -button3 {puts "here is alternate output"} +.CE +.PP +Here is an example of modifying the \fBtk systray\fR icon: +.CS + image create photo book_page -data R0lGODlhCwAPAKIAAP//////AMDAwICAgAAA/wAAAAAAAAAAACwAAAAACwAPAAADMzi6CzAugiAgDGE68aB0RXgRJBFVX0SNpQlUWfahQOvSsgrX7eZJMlQMWBEYj8iQchlKAAA7 + tk systray configure -image book_page -text "Updated sample" -button1 {puts "Different output from the tk systray"} -button3 {puts "and more different output from the tk systray"} +.CE +.SH PLATFORM NOTES +.PP +The X11 implementation is supported on a "best efforts" basis because it is +dependent on the window manager. The "text" flag, which is implemented as +a tooltip, does not always display if the WM does not support such features; +the systray icon itself may not even display with some window managers. +.PP +On Windows, the Tk image provided in the \fI-image\fR option must be a +photo image. On other platforms either a bitmap image or a photo image +may be provided. +.SH KEYWORDS +image, callback Index: doc/text.n ================================================================== --- doc/text.n +++ doc/text.n @@ -845,10 +845,13 @@ within this application, then the \fBsel\fR tag will be removed from all characters in the text. .IP [4] Whenever the \fBsel\fR tag range changes a virtual event \fB<>\fR is generated. +It might also be generated when selection is affected but not actually changed. +Further, multiple selection changes could happen before events can be processed +leading to multiple events with the same visible selection. .PP The \fBsel\fR tag is automatically defined when a text widget is created, and it may not be deleted with the .QW "\fIpathName \fBtag delete\fR" widget command. Furthermore, the \fB\-selectbackground\fR, @@ -1350,11 +1353,11 @@ are empty strings. .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 \fBtag\fR +command depends on the \fIoption\fR argument that follows the \fBimage\fR argument. The following forms of the command are currently supported: .RS .TP \fIpathName \fBimage cget \fIindex option\fR . @@ -1732,19 +1735,21 @@ all the sequences for which bindings have been defined for \fItagName\fR. .RS .PP The only events for which bindings may be specified are those related to the mouse and keyboard (such as \fBEnter\fR, \fBLeave\fR, \fBButton\fR, -\fBMotion\fR, and \fBKey\fR) or virtual events. Event bindings for a text -widget use the \fBcurrent\fR mark described under \fBMARKS\fR above. An +\fBMotion\fR, and \fBKey\fR) or virtual events. Mouse and keyboard event +bindings for a text widget respectively use the \fBcurrent\fR and \fBinsert\fR +marks described under \fBMARKS\fR above. An \fBEnter\fR event triggers for a tag when the tag first becomes present on the current character, and a \fBLeave\fR event triggers for a tag when it ceases to be present on the current character. \fBEnter\fR and \fBLeave\fR events can happen either because the \fBcurrent\fR mark moved or because the character at that position changed. Note that these events are different than \fBEnter\fR -and \fBLeave\fR events for windows. Mouse and keyboard events are directed to -the current character. If a virtual event is used in a binding, that binding +and \fBLeave\fR events for windows. Mouse events are directed to the current +character, while keyboard events are directed to the insert character. +If a virtual event is used in a binding, that binding can trigger only if the virtual event is defined by an underlying mouse-related or keyboard-related event. .PP It is possible for the current character to have multiple tags, and for each of them to have a binding for a particular event sequence. When this occurs, @@ -2031,11 +2036,11 @@ In the descriptions below, .QW word is dependent on the value of the \fBtcl_wordchars\fR variable. See \fBtclvars\fR(n). .IP [1] -Clicking mouse button 1 positions the insertion cursor just before the +Clicking mouse button 1 positions the insertion cursor at the closest edge of the character underneath the mouse cursor, sets the input focus to this widget, and clears any selection in the widget. Dragging with mouse button 1 strokes out a selection between the insertion cursor and the character under the mouse. .IP [2] Index: doc/tk.n ================================================================== --- doc/tk.n +++ doc/tk.n @@ -83,10 +83,17 @@ .RE .TP \fBtk fontchooser \fIsubcommand\fR ... Controls the Tk font selection dialog. For more details see the \fBfontchooser\fR manual page. +.TP +\fBtk print \fIwindow\fR +. +The \fBtk print\fR command posts a dialog that allows users to print output +from the \fBcanvas\fR and \fBtext\fR widgets. The printing will be done using +platform-native APIs and dialogs where available. For more details see the +\fBprint\fR manual page. .TP \fBtk scaling \fR?\fB\-displayof \fIwindow\fR? ?\fInumber\fR? . Sets and queries the current scaling factor used by Tk to convert between physical units (for example, points, inches, or millimeters) and pixels. The @@ -109,10 +116,22 @@ after the scaling factor is changed will use the new scaling factor, but it is undefined whether existing widgets will resize themselves dynamically to accommodate the new scaling factor. .RE .TP +\fBtk sysnotify \fP \fItitle\fP? \fImessage\fP? +. +The \fBtk sysnotify\fP 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. For more details see the \fBsysnotify\fR manual page. +.TP +\fBtk systray create\fP \fIsubcommand...\fP +. +The \fBtk systray\fP command creates an icon in the platform-specific +tray. For more details see the \fBsystray\fR manual page. +.TP \fBtk useinputmethods \fR?\fB\-displayof \fIwindow\fR? ?\fIboolean\fR? . Sets and queries the state of whether Tk should use XIM (X Input Methods) for filtering events. The resulting state is returned. XIM is used in some locales (i.e., Japanese, Korean), to handle special input devices. This @@ -125,11 +144,11 @@ . Returns the current Tk windowing system, one of \fBx11\fR (X11-based), \fBwin32\fR (MS Windows), or \fBaqua\fR (Mac OS X Aqua). .SH "SEE ALSO" -busy(n), fontchooser(n), send(n), winfo(n) +busy(n), fontchooser(n), print(n), send(n), sysnotify(n), systray(n), winfo(n) .SH KEYWORDS -application name, send +application name, print, send, sysnotify, systray '\" Local Variables: '\" mode: nroff '\" End: DELETED doc/tk4.0.ps Index: doc/tk4.0.ps ================================================================== --- doc/tk4.0.ps +++ /dev/null @@ -1,4602 +0,0 @@ -%! -%%BoundingBox: (atend) -%%Pages: (atend) -%%DocumentFonts: (atend) -%%EndComments -%%BeginProlog -% -% FrameMaker postscript_prolog 3.0, for use with FrameMaker 3.0 -% This postscript_prolog file is Copyright (c) 1986-1991 Frame Technology -% Corporation. All rights reserved. This postscript_prolog file may be -% freely copied and distributed in conjunction with documents created using -% FrameMaker. -% NOTE -% This file fixes the problem with NeWS printers dithering color output. -% Any questions should be sent to mickey@magickingdom.eng.sun.com -% -% Known Problems: -% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1 -/FMversion (3.0) def -% Set up Color vs. Black-and-White - -/FMPrintInColor { % once-thru loop gimmick - % See if we're a NeWSprint printer - /currentcanvas where { - pop systemdict /separationdict known - exit - } if -% originally had the following, which should always be false: -% /currentcanvas where { -% pop currentcanvas /Color known { -% currentcanvas /Color get -% exit -% } if -% } if - systemdict /colorimage known - systemdict /currentcolortransfer known and -exit } loop def - -% Uncomment the following line to force b&w on color printer -% /FMPrintInColor false def -/FrameDict 195 dict def -systemdict /errordict known not {/errordict 10 dict def - errordict /rangecheck {stop} put} if -% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk -FrameDict /tmprangecheck errordict /rangecheck get put -errordict /rangecheck {FrameDict /bug true put} put -FrameDict /bug false put -mark -% Some PS machines read past the CR, so keep the following 3 lines together! -currentfile 5 string readline -00 -0000000000 -cleartomark -errordict /rangecheck FrameDict /tmprangecheck get put -FrameDict /bug get { - /readline { - /gstring exch def - /gfile exch def - /gindex 0 def - { - gfile read pop - dup 10 eq {exit} if - dup 13 eq {exit} if - gstring exch gindex exch put - /gindex gindex 1 add def - } loop - pop - gstring 0 gindex getinterval true - } def - } if -/FMVERSION { - FMversion ne { - /Times-Roman findfont 18 scalefont setfont - 100 100 moveto - (FrameMaker version does not match postscript_prolog!) - dup = - show showpage - } if - } def -/FMLOCAL { - FrameDict begin - 0 def - end - } def - /gstring FMLOCAL - /gfile FMLOCAL - /gindex FMLOCAL - /orgxfer FMLOCAL - /orgproc FMLOCAL - /organgle FMLOCAL - /orgfreq FMLOCAL - /yscale FMLOCAL - /xscale FMLOCAL - /manualfeed FMLOCAL - /paperheight FMLOCAL - /paperwidth FMLOCAL -/FMDOCUMENT { - array /FMfonts exch def - /#copies exch def - FrameDict begin - 0 ne dup {setmanualfeed} if - /manualfeed exch def - /paperheight exch def - /paperwidth exch def - /yscale exch def - /xscale exch def - currenttransfer cvlit /orgxfer exch def - currentscreen cvlit /orgproc exch def - /organgle exch def /orgfreq exch def - setpapername - manualfeed {true} {papersize} ifelse - {manualpapersize} {false} ifelse - {desperatepapersize} if - end - } def - /pagesave FMLOCAL - /orgmatrix FMLOCAL - /landscape FMLOCAL -/FMBEGINPAGE { - FrameDict begin - /pagesave save def - 3.86 setmiterlimit - /landscape exch 0 ne def - landscape { - 90 rotate 0 exch neg translate pop - } - {pop pop} - ifelse - xscale yscale scale - /orgmatrix matrix def - gsave - } def -/FMENDPAGE { - grestore - pagesave restore - end - showpage - } def -/FMFONTDEFINE { - FrameDict begin - findfont - ReEncode - 1 index exch - definefont - FMfonts 3 1 roll - put - end - } def -/FMFILLS { - FrameDict begin - array /fillvals exch def - end - } def -/FMFILL { - FrameDict begin - fillvals 3 1 roll put - end - } def -/FMNORMALIZEGRAPHICS { - newpath - 0.0 0.0 moveto - 1 setlinewidth - 0 setlinecap - 0 0 0 sethsbcolor - 0 setgray - } bind def - /fx FMLOCAL - /fy FMLOCAL - /fh FMLOCAL - /fw FMLOCAL - /llx FMLOCAL - /lly FMLOCAL - /urx FMLOCAL - /ury FMLOCAL -/FMBEGINEPSF { - end - /FMEPSF save def - /showpage {} def - FMNORMALIZEGRAPHICS - [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall - fx fy translate - rotate - fw urx llx sub div fh ury lly sub div scale - llx neg lly neg translate - } bind def -/FMENDEPSF { - FMEPSF restore - FrameDict begin - } bind def -FrameDict begin -/setmanualfeed { -%%BeginFeature *ManualFeed True - statusdict /manualfeed true put -%%EndFeature - } def -/max {2 copy lt {exch} if pop} bind def -/min {2 copy gt {exch} if pop} bind def -/inch {72 mul} def -/pagedimen { - paperheight sub abs 16 lt exch - paperwidth sub abs 16 lt and - {/papername exch def} {pop} ifelse - } def - /papersizedict FMLOCAL -/setpapername { - /papersizedict 14 dict def - papersizedict begin - /papername /unknown def - /Letter 8.5 inch 11.0 inch pagedimen - /LetterSmall 7.68 inch 10.16 inch pagedimen - /Tabloid 11.0 inch 17.0 inch pagedimen - /Ledger 17.0 inch 11.0 inch pagedimen - /Legal 8.5 inch 14.0 inch pagedimen - /Statement 5.5 inch 8.5 inch pagedimen - /Executive 7.5 inch 10.0 inch pagedimen - /A3 11.69 inch 16.5 inch pagedimen - /A4 8.26 inch 11.69 inch pagedimen - /A4Small 7.47 inch 10.85 inch pagedimen - /B4 10.125 inch 14.33 inch pagedimen - /B5 7.16 inch 10.125 inch pagedimen - end - } def -/papersize { - papersizedict begin - /Letter {lettertray letter} def - /LetterSmall {lettertray lettersmall} def - /Tabloid {11x17tray 11x17} def - /Ledger {ledgertray ledger} def - /Legal {legaltray legal} def - /Statement {statementtray statement} def - /Executive {executivetray executive} def - /A3 {a3tray a3} def - /A4 {a4tray a4} def - /A4Small {a4tray a4small} def - /B4 {b4tray b4} def - /B5 {b5tray b5} def - /unknown {unknown} def - papersizedict dup papername known {papername} {/unknown} ifelse get - end - /FMdicttop countdictstack 1 add def - statusdict begin stopped end - countdictstack -1 FMdicttop {pop end} for - } def -/manualpapersize { - papersizedict begin - /Letter {letter} def - /LetterSmall {lettersmall} def - /Tabloid {11x17} def - /Ledger {ledger} def - /Legal {legal} def - /Statement {statement} def - /Executive {executive} def - /A3 {a3} def - /A4 {a4} def - /A4Small {a4small} def - /B4 {b4} def - /B5 {b5} def - /unknown {unknown} def - papersizedict dup papername known {papername} {/unknown} ifelse get - end - stopped - } def -/desperatepapersize { - statusdict /setpageparams known - { - paperwidth paperheight 0 1 - statusdict begin - {setpageparams} stopped pop - end - } if - } def -/savematrix { - orgmatrix currentmatrix pop - } bind def -/restorematrix { - orgmatrix setmatrix - } bind def -/dmatrix matrix def -/dpi 72 0 dmatrix defaultmatrix dtransform - dup mul exch dup mul add sqrt def -/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def -/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def -/DiacriticEncoding [ -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl -/numbersign /dollar /percent /ampersand /quotesingle /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash -/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h -/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar -/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute -/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis -/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis -/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve -/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex -/udieresis /dagger /.notdef /cent /sterling /section /bullet -/paragraph /germandbls /registered /copyright /trademark /acute -/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef -/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown -/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef -/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde -/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright -/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis -/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl -/periodcentered /quotesinglbase /quotedblbase /perthousand -/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute -/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve -/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron -/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron -] def -/ReEncode { - dup - length - dict begin - { - 1 index /FID ne - {def} - {pop pop} ifelse - } forall - 0 eq {/Encoding DiacriticEncoding def} if - currentdict - end - } bind def -/graymode true def - /bwidth FMLOCAL - /bpside FMLOCAL - /bstring FMLOCAL - /onbits FMLOCAL - /offbits FMLOCAL - /xindex FMLOCAL - /yindex FMLOCAL - /x FMLOCAL - /y FMLOCAL -/setpattern { - /bwidth exch def - /bpside exch def - /bstring exch def - /onbits 0 def /offbits 0 def - freq sangle landscape {90 add} if - {/y exch def - /x exch def - /xindex x 1 add 2 div bpside mul cvi def - /yindex y 1 add 2 div bpside mul cvi def - bstring yindex bwidth mul xindex 8 idiv add get - 1 7 xindex 8 mod sub bitshift and 0 ne - {/onbits onbits 1 add def 1} - {/offbits offbits 1 add def 0} - ifelse - } - setscreen - {} settransfer - offbits offbits onbits add div FMsetgray - /graymode false def - } bind def -/grayness { - FMsetgray - graymode not { - /graymode true def - orgxfer cvx settransfer - orgfreq organgle orgproc cvx setscreen - } if - } bind def - /HUE FMLOCAL - /SAT FMLOCAL - /BRIGHT FMLOCAL - /Colors FMLOCAL -FMPrintInColor - - { - /HUE 0 def - /SAT 0 def - /BRIGHT 0 def - % array of arrays Hue and Sat values for the separations [HUE BRIGHT] - /Colors - [[0 0 ] % black - [0 0 ] % white - [0.00 1.0] % red - [0.37 1.0] % green - [0.60 1.0] % blue - [0.50 1.0] % cyan - [0.83 1.0] % magenta - [0.16 1.0] % comment / yellow - ] def - - /BEGINBITMAPCOLOR { - BITMAPCOLOR} def - /BEGINBITMAPCOLORc { - BITMAPCOLORc} def - /BEGINBITMAPTRUECOLOR { - BITMAPTRUECOLOR } def - /BEGINBITMAPTRUECOLORc { - BITMAPTRUECOLORc } def - /K { - Colors exch get dup - 0 get /HUE exch store - 1 get /BRIGHT exch store - HUE 0 eq BRIGHT 0 eq and - {1.0 SAT sub setgray} - {HUE SAT BRIGHT sethsbcolor} - ifelse - } def - /FMsetgray { - /SAT exch 1.0 exch sub store - HUE 0 eq BRIGHT 0 eq and - {1.0 SAT sub setgray} - {HUE SAT BRIGHT sethsbcolor} - ifelse - } bind def - } - - { - /BEGINBITMAPCOLOR { - BITMAPGRAY} def - /BEGINBITMAPCOLORc { - BITMAPGRAYc} def - /BEGINBITMAPTRUECOLOR { - BITMAPTRUEGRAY } def - /BEGINBITMAPTRUECOLORc { - BITMAPTRUEGRAYc } def - /FMsetgray {setgray} bind def - /K { - pop - } def - } -ifelse -/normalize { - transform round exch round exch itransform - } bind def -/dnormalize { - dtransform round exch round exch idtransform - } bind def -/lnormalize { - 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop - } bind def -/H { - lnormalize setlinewidth - } bind def -/Z { - setlinecap - } bind def - /fillvals FMLOCAL -/X { - fillvals exch get - dup type /stringtype eq - {8 1 setpattern} - {grayness} - ifelse - } bind def -/V { - gsave eofill grestore - } bind def -/N { - stroke - } bind def -/M {newpath moveto} bind def -/E {lineto} bind def -/D {curveto} bind def -/O {closepath} bind def - /n FMLOCAL -/L { - /n exch def - newpath - normalize - moveto - 2 1 n {pop normalize lineto} for - } bind def -/Y { - L - closepath - } bind def - /x1 FMLOCAL - /x2 FMLOCAL - /y1 FMLOCAL - /y2 FMLOCAL - /rad FMLOCAL -/R { - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - x1 y1 - x2 y1 - x2 y2 - x1 y2 - 4 Y - } bind def -/RR { - /rad exch def - normalize - /y2 exch def - /x2 exch def - normalize - /y1 exch def - /x1 exch def - newpath - x1 y1 rad add moveto - x1 y2 x2 y2 rad arcto - x2 y2 x2 y1 rad arcto - x2 y1 x1 y1 rad arcto - x1 y1 x1 y2 rad arcto - closepath - 16 {pop} repeat - } bind def -/C { - grestore - gsave - R - clip - } bind def - /FMpointsize FMLOCAL -/F { - FMfonts exch get - FMpointsize scalefont - setfont - } bind def -/Q { - /FMpointsize exch def - F - } bind def -/T { - moveto show - } bind def -/RF { - rotate - 0 ne {-1 1 scale} if - } bind def -/TF { - gsave - moveto - RF - show - grestore - } bind def -/P { - moveto - 0 32 3 2 roll widthshow - } bind def -/PF { - gsave - moveto - RF - 0 32 3 2 roll widthshow - grestore - } bind def -/S { - moveto - 0 exch ashow - } bind def -/SF { - gsave - moveto - RF - 0 exch ashow - grestore - } bind def -/B { - moveto - 0 32 4 2 roll 0 exch awidthshow - } bind def -/BF { - gsave - moveto - RF - 0 32 4 2 roll 0 exch awidthshow - grestore - } bind def -/G { - gsave - newpath - normalize translate 0.0 0.0 moveto - dnormalize scale - 0.0 0.0 1.0 5 3 roll arc - closepath fill - grestore - } bind def -/A { - gsave - savematrix - newpath - 2 index 2 div add exch 3 index 2 div sub exch - normalize 2 index 2 div sub exch 3 index 2 div add exch - translate - scale - 0.0 0.0 1.0 5 3 roll arc - restorematrix - stroke - grestore - } bind def - /x FMLOCAL - /y FMLOCAL - /w FMLOCAL - /h FMLOCAL - /xx FMLOCAL - /yy FMLOCAL - /ww FMLOCAL - /hh FMLOCAL - /FMsaveobject FMLOCAL - /FMoptop FMLOCAL - /FMdicttop FMLOCAL -/BEGINPRINTCODE { - /FMdicttop countdictstack 1 add def - /FMoptop count 4 sub def - /FMsaveobject save def - userdict begin - /showpage {} def - FMNORMALIZEGRAPHICS - 3 index neg 3 index neg translate - } bind def -/ENDPRINTCODE { - count -1 FMoptop {pop pop} for - countdictstack -1 FMdicttop {pop end} for - FMsaveobject restore - } bind def -/gn { - 0 - { 46 mul - cf read pop - 32 sub - dup 46 lt {exit} if - 46 sub add - } loop - add - } bind def - /str FMLOCAL -/cfs { - /str sl string def - 0 1 sl 1 sub {str exch val put} for - str def - } bind def -/ic [ - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 - 0 - {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} - {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} - {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} - {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} - {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} - {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} - {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} - {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} - {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} - ] def - /sl FMLOCAL - /val FMLOCAL - /ws FMLOCAL - /im FMLOCAL - /bs FMLOCAL - /cs FMLOCAL - /len FMLOCAL - /pos FMLOCAL -/ms { - /sl exch def - /val 255 def - /ws cfs - /im cfs - /val 0 def - /bs cfs - /cs cfs - } bind def -400 ms -/ip { - is - 0 - cf cs readline pop - { ic exch get exec - add - } forall - pop - - } bind def -/wh { - /len exch def - /pos exch def - ws 0 len getinterval im pos len getinterval copy pop - pos len - } bind def -/bl { - /len exch def - /pos exch def - bs 0 len getinterval im pos len getinterval copy pop - pos len - } bind def -/s1 1 string def -/fl { - /len exch def - /pos exch def - /val cf s1 readhexstring pop 0 get def - pos 1 pos len add 1 sub {im exch val put} for - pos len - } bind def -/hx { - 3 copy getinterval - cf exch readhexstring pop pop - } bind def - /h FMLOCAL - /w FMLOCAL - /d FMLOCAL - /lb FMLOCAL - /bitmapsave FMLOCAL - /is FMLOCAL - /cf FMLOCAL -/wbytes { - dup - 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse - } bind def -/BEGINBITMAPBWc { - 1 {} COMMONBITMAPc - } bind def -/BEGINBITMAPGRAYc { - 8 {} COMMONBITMAPc - } bind def -/BEGINBITMAP2BITc { - 2 {} COMMONBITMAPc - } bind def -/COMMONBITMAPc { - /r exch def - /d exch def - gsave - translate rotate scale /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - r - /is im 0 lb getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {ip} image - bitmapsave restore - grestore - } bind def -/BEGINBITMAPBW { - 1 {} COMMONBITMAP - } bind def -/BEGINBITMAPGRAY { - 8 {} COMMONBITMAP - } bind def -/BEGINBITMAP2BIT { - 2 {} COMMONBITMAP - } bind def -/COMMONBITMAP { - /r exch def - /d exch def - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - r - /is w d wbytes string def - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {cf is readhexstring pop} image - bitmapsave restore - grestore - } bind def - /proc1 FMLOCAL - /proc2 FMLOCAL - /newproc FMLOCAL -/Fmcc { - /proc2 exch cvlit def - /proc1 exch cvlit def - /newproc proc1 length proc2 length add array def - newproc 0 proc1 putinterval - newproc proc1 length proc2 putinterval - newproc cvx -} bind def -/ngrayt 256 array def -/nredt 256 array def -/nbluet 256 array def -/ngreent 256 array def - /gryt FMLOCAL - /blut FMLOCAL - /grnt FMLOCAL - /redt FMLOCAL - /indx FMLOCAL - /cynu FMLOCAL - /magu FMLOCAL - /yelu FMLOCAL - /k FMLOCAL - /u FMLOCAL -/colorsetup { - currentcolortransfer - /gryt exch def - /blut exch def - /grnt exch def - /redt exch def - 0 1 255 { - /indx exch def - /cynu 1 red indx get 255 div sub def - /magu 1 green indx get 255 div sub def - /yelu 1 blue indx get 255 div sub def - /k cynu magu min yelu min def - /u k currentundercolorremoval exec def - nredt indx 1 0 cynu u sub max sub redt exec put - ngreent indx 1 0 magu u sub max sub grnt exec put - nbluet indx 1 0 yelu u sub max sub blut exec put - ngrayt indx 1 k currentblackgeneration exec sub gryt exec put - } for - {255 mul cvi nredt exch get} - {255 mul cvi ngreent exch get} - {255 mul cvi nbluet exch get} - {255 mul cvi ngrayt exch get} - setcolortransfer - {pop 0} setundercolorremoval - {} setblackgeneration - } bind def - /tran FMLOCAL -/fakecolorsetup { - /tran 256 string def - 0 1 255 {/indx exch def - tran indx - red indx get 77 mul - green indx get 151 mul - blue indx get 28 mul - add add 256 idiv put} for - currenttransfer - {255 mul cvi tran exch get 255.0 div} - exch Fmcc settransfer -} bind def -/BITMAPCOLOR { - /d 8 def - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - colorsetup - /is w d wbytes string def - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {cf is readhexstring pop} {is} {is} true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPCOLORc { - /d 8 def - gsave - translate rotate scale /h exch def /w exch def - /lb w d wbytes def - sl lb lt {lb ms} if - /bitmapsave save def - colorsetup - /is im 0 lb getinterval def - ws 0 lb getinterval is copy pop - /cf currentfile def - w h d [w 0 0 h neg 0 h] - {ip} {is} {is} true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPTRUECOLORc { - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - - /is w string def - - ws 0 w getinterval is copy pop - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - {ip} {gip} {bip} true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPTRUECOLOR { - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - /is w string def - /gis w string def - /bis w string def - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - { cf is readhexstring pop } - { cf gis readhexstring pop } - { cf bis readhexstring pop } - true 3 colorimage - bitmapsave restore - grestore - } bind def -/BITMAPTRUEGRAYc { - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - - /is w string def - - ws 0 w getinterval is copy pop - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - {ip gip bip w gray} image - bitmapsave restore - grestore - } bind def -/ww FMLOCAL -/r FMLOCAL -/g FMLOCAL -/b FMLOCAL -/i FMLOCAL -/gray { - /ww exch def - /b exch def - /g exch def - /r exch def - 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul - b i get .114 mul add add r i 3 -1 roll floor cvi put } for - r - } bind def -/BITMAPTRUEGRAY { - gsave - translate rotate scale /h exch def /w exch def - /bitmapsave save def - /is w string def - /gis w string def - /bis w string def - /cf currentfile def - w h 8 [w 0 0 h neg 0 h] - { cf is readhexstring pop - cf gis readhexstring pop - cf bis readhexstring pop w gray} image - bitmapsave restore - grestore - } bind def -/BITMAPGRAY { - 8 {fakecolorsetup} COMMONBITMAP - } bind def -/BITMAPGRAYc { - 8 {fakecolorsetup} COMMONBITMAPc - } bind def -/ENDBITMAP { - } bind def -end - /ALDsave FMLOCAL - /ALDmatrix matrix def ALDmatrix currentmatrix pop -/StartALD { - /ALDsave save def - savematrix - ALDmatrix setmatrix - } bind def -/InALD { - restorematrix - } bind def -/DoneALD { - ALDsave restore - } bind def -%%EndProlog -%%BeginSetup -(3.0) FMVERSION -1 1 612 792 0 1 13 FMDOCUMENT -0 0 /Helvetica-Bold FMFONTDEFINE -1 0 /Times-Bold FMFONTDEFINE -2 0 /Times-Italic FMFONTDEFINE -3 0 /Times-Roman FMFONTDEFINE -4 0 /Helvetica FMFONTDEFINE -5 0 /Courier FMFONTDEFINE -6 0 /Courier-Oblique FMFONTDEFINE -32 FMFILLS -0 0 FMFILL -1 0.1 FMFILL -2 0.3 FMFILL -3 0.5 FMFILL -4 0.7 FMFILL -5 0.9 FMFILL -6 0.97 FMFILL -7 1 FMFILL -8 <0f1e3c78f0e1c387> FMFILL -9 <0f87c3e1f0783c1e> FMFILL -10 FMFILL -11 FMFILL -12 <8142241818244281> FMFILL -13 <03060c183060c081> FMFILL -14 <8040201008040201> FMFILL -16 1 FMFILL -17 0.9 FMFILL -18 0.7 FMFILL -19 0.5 FMFILL -20 0.3 FMFILL -21 0.1 FMFILL -22 0.03 FMFILL -23 0 FMFILL -24 FMFILL -25 FMFILL -26 <3333333333333333> FMFILL -27 <0000ffff0000ffff> FMFILL -28 <7ebddbe7e7dbbd7e> FMFILL -29 FMFILL -30 <7fbfdfeff7fbfdfe> FMFILL -%%EndSetup -%%Page: "1" 1 -%%BeginPaperSize: Letter -%%EndPaperSize -612 792 0 FMBEGINPAGE -98.1 675 512.1 675 2 L -7 X -0 K -V -2 H -0 Z -0 X -N -98.1 450 512.1 450 2 L -7 X -V -2 Z -0 X -N -98.1 108 512.1 126 R -7 X -V -0 10 Q -0 X -(1) 506.54 119.33 T -1 24 Q --0.48 (Tk4.0 Overview and Porting Guide) 152.1 605 S -2 12 Q -(John Ouster) 152.1 563 T -(hout) 210.84 563 T -98.1 135 512.1 423 R -7 X -V -3 10 Q -0 X -(Tk version 4.0 is a major new release with many improvements, new features, and bug) 152.1 416.33 T -(\336xes. This document provides an introduction to the new features and describes the most) 152.1 404.33 T --0.18 (common problems you are likely to encounter when porting scripts from Tk 3.6, the previ-) 152.1 392.33 P -(ous release. This is) 152.1 380.33 T -2 F -(not) 230.66 380.33 T -3 F -( an introduction to Tk: I assume that you are already familiar with) 243.43 380.33 T -(Tk 3.6 as described in the book) 152.1 368.33 T -2 F -(T) 279.79 368.33 T -(cl and the Tk T) 284.43 368.33 T -(oolkit) 343.48 368.33 T -3 F -(.) 366.24 368.33 T --0.26 (The good news about Tk 4.0 is that it has many improvements over Tk 3.6. Here are a) 170.1 356.33 P -(few of the most important new features:) 152.1 344.33 T -3 12 Q -(\245) 152.1 329.33 T -3 10 Q -(Tk 4.0 includes a general-purpose mechanism for manipulating color images \050Tk 3.6) 162.9 329.33 T -(supports only monochrome images\051.) 162.9 317.33 T -3 12 Q -(\245) 152.1 302.33 T -3 10 Q --0.17 (The text widget in Tk 4.0 includes many new features such as tab stops, embedded win-) 162.9 302.33 P -(dows, horizontal scrolling, and many new formatting options.) 162.9 290.33 T -3 12 Q -(\245) 152.1 275.33 T -3 10 Q -(The binding mechanism in Tk 4.0 is much more powerful in Tk 3.6.) 162.9 275.33 T -3 12 Q -(\245) 152.1 260.33 T -3 10 Q -(Motif compliance is much better) 162.9 260.33 T -(. For example, there is now support for keyboard tra-) 292.82 260.33 T -(versal and focus highlights.) 162.9 248.33 T -3 12 Q -(\245) 152.1 233.33 T -3 10 Q -(Many widgets have been improved. For example, buttons and labels can display multi-) 162.9 233.33 T -(line justi\336ed text, and scales can handle real values.) 162.9 221.33 T -(The bad news about Tk 4.0 is that it contains several incompatibilities with Tk 3.6.) 170.1 206.33 T -(Ever since the \336rst release of Tk I have assumed that there would eventually be a major) 152.1 194.33 T -(new release of Tk with substantial incompatibilities. I knew that I wouldn\325) 152.1 182.33 T -(t be able to get) 450.06 182.33 T -(all of the features of Tk right the \336rst time; rather than live forever with all of my early) 152.1 170.33 T -(mistakes, I wanted to have a chance to correct them. Tk 4.0 is that correction. I apologize) 152.1 158.33 T --0.05 (for the incompatibilities, but I hope they improve Tk enough to justify the dif) 152.1 146.33 P --0.05 (\336culties you) 460.55 146.33 P -44.1 351 98.1 423 C -35.1 360 197.1 414 R -7 X -0 K -V -1 9 Q -0 X -(FIGURE 1) 35.1 408 T -(T) 35.1 387 T -(ABLE 1) 40.43 387 T -26.1 351 125.1 423 R -7 X -V -40.5 63 571.5 729 C -FMENDPAGE -%%EndPage: "1" 2 -%%Page: "2" 2 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(2) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X -(encounter during porting. Tk 4.0 is a one-time correction: we will try very hard to avoid) 152.1 632.33 T -(substantial incompatibilities \050especially in Tk\325) 152.1 620.3 T -(s T) 337 620.3 T -(cl-level interfaces\051 in future releases.) 348.79 620.3 T --0.4 (Sections 1-1) 170.1 608.3 P --0.4 (1 cover the major areas of change in Tk 4.0: bindings, focus, text widgets,) 219.02 608.3 P --0 (Motif compliance, other widget changes, images, color management, event handling, sup-) 152.1 596.26 P -(port for multiple displays, the) 152.1 584.23 T -5 F -(send) 273.14 584.23 T -3 F -( command, and the selection. Section 12 summarizes) 297.13 584.23 T -(several smaller changes. Section 13 lists all of the incompatibilities that af) 152.1 572.19 T -(fect T) 448.4 572.19 T -(cl scripts,) 471.29 572.19 T --0.02 (along with suggestions for how to deal with them. The explanations here are not intended) 152.1 560.16 P -(to be comprehensive, but rather to introduce you to the issues; for complete information) 152.1 548.12 T -(on new or modi\336ed commands, refer to the reference documentation that comes with the) 152.1 536.09 T -(distribution.) 152.1 524.05 T -98.1 480.7 512.1 483.72 C -152.1 481.92 512.1 481.92 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 482.21 143.1 482.21 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(1) 134.63 487.72 T -(Bindings) 152.1 487.72 T -3 10 Q --0.35 (The changes for Tk 4.0 that are most likely to af) 152.1 464.03 P --0.35 (fect existing T) 341.31 464.03 P --0.35 (cl scripts are those related to) 397.64 464.03 P -(bindings. The new binding mechanism in Tk 4.0 is much more powerful than that of Tk) 152.1 452 T -(3.6, particularly in the way it allows behaviors to be combined, but several incompatible) 152.1 439.96 T -(changes were required to implement the new features. These changes are likely to break) 152.1 427.93 T -(most Tk 3.6 scripts. Fortunately) 152.1 415.89 T -(, it is relatively easy to upgrade your bindings to work) 279.16 415.89 T -(under Tk 4.0.) 152.1 403.86 T --0.27 (The basic mechanism for bindings is the same as in Tk 3.6. A binding associates a T) 170.1 391.86 P --0.27 (cl) 502.65 391.86 P -(script with a particular event \050or sequence of events\051 occurring in one or more windows;) 152.1 379.82 T --0.11 (the script will be invoked automatically whenever the event sequence occurs in any of the) 152.1 367.79 P --0.13 (speci\336ed windows. The Tk 4.0 binding mechanism has three major feature changes. First,) 152.1 355.75 P -(there is a more general mechanism for specifying the relationship between windows and) 152.1 343.72 T -(bindings, called) 152.1 331.68 T -2 F -(binding tags) 217.89 331.68 T -3 F -(. Second, the con\337ict resolution mechanism \050which is) 267.6 331.68 T -(invoked when more than one binding matches an event\051 has been changed to allow more) 152.1 319.65 T -(than one binding script to execute for a single event. Third, the) 152.1 307.61 T -5 F -(Any) 405.81 307.61 T -3 F -( modi\336er is now) 423.8 307.61 T -(implicit in all binding patterns. These changes are discussed separately in the subsections) 152.1 295.58 T -(that follow) 152.1 283.54 T -(.) 195.04 283.54 T --0.16 (Overall, the main ef) 170.1 271.54 P --0.16 (fect of Tk 4.0\325) 249.37 271.54 P --0.16 (s binding changes is that it allows more bindings to) 306.06 271.54 P -(trigger than Tk 3.6 does. Feedback from the T) 152.1 259.51 T -(cl/Tk community about the Tk 3.6 binding) 335.71 259.51 T -(mechanism indicated that it was too conservative about triggering bindings. This caused) 152.1 247.47 T -(the system to lose behaviors relatively easily and made the binding structure fragile. It) 152.1 235.44 T --0.35 (appears to be easier to deal with too many binding invocations than too few) 152.1 223.4 P --0.35 (, so Tk 4.0 tries) 449.17 223.4 P -(to err in this direction.) 152.1 211.37 T -0 F -(1.1) 127.41 181.37 T -(Binding tags) 152.1 181.37 T -3 F -(In Tk 3.6 you specify the window\050s\051 for a binding in one of three ways:) 152.1 165.37 T -3 12 Q -(\245) 152.1 150.37 T -3 10 Q -(Y) 162.9 150.37 T -(ou give the name of a window) 169.12 150.37 T -(, such as) 289.49 150.37 T -5 F -(.a.b.c) 326.13 150.37 T -3 F -(, in which case the binding applies) 362.11 150.37 T -(only to that window) 162.9 138.33 T -(.) 242.49 138.33 T -FMENDPAGE -%%EndPage: "2" 3 -%%Page: "3" 3 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(1 Bindings) 98.1 668.33 T -0 F -(3) 506.54 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 12 Q -0 X -(\245) 152.1 632.33 T -3 10 Q --0.06 (Y) 162.9 632.33 P --0.06 (ou give the name of a class, such as) 169.12 632.33 P -5 F --0.15 (Button) 313.45 632.33 P -3 F --0.06 (, in which case the binding applies to all) 349.43 632.33 P -(the windows of that class.) 162.9 620.33 T -3 12 Q -(\245) 152.1 605.33 T -3 10 Q -(Y) 162.9 605.33 T -(ou specify) 169.12 605.33 T -5 F -(all) 212.97 605.33 T -3 F -(, in which case the binding applies to all windows.) 230.96 605.33 T --0.3 (In Tk4.0 you specify the window\050s\051 using a more general mechanism called a) 170.1 590.33 P -2 F --0.3 (binding) 479.35 590.33 P -(tag) 152.1 578.33 T -3 F -(. A binding tag may be an arbitrary string, but if it starts with a \322.\323 then it must be the) 164.87 578.33 T -(name of a window) 152.1 566.33 T -(. If you specify a class name or) 225.56 566.33 T -5 F -(all) 352.4 566.33 T -3 F -( as a binding tag, it will usually) 370.39 566.33 T --0.1 (have the same ef) 152.1 554.33 P --0.1 (fect as in Tk 3.6, but you may also specify other strings that were not per-) 218.51 554.33 P -(mitted in Tk 3.6.) 152.1 542.33 T --0.07 (Each window in Tk 4.0 has a list of binding tags. When an event occurs in a window) 170.1 530.33 P --0.07 (,) 507.17 530.33 P --0.19 (Tk fetches the window\325) 152.1 518.33 P --0.19 (s binding tags and matches the event against all of the bindings for) 245.62 518.33 P --0.09 (any of the tags. By default, the binding tags for a window consist of the window name, its) 152.1 506.33 P --0.14 (class name, the name of its nearest toplevel ancestor) 152.1 494.33 P --0.14 (, and) 359.61 494.33 P -5 F --0.33 (all) 381.26 494.33 P -3 F --0.14 (. For example, a button win-) 399.25 494.33 P -(dow named) 152.1 482.33 T -5 F -(.b) 200.95 482.33 T -3 F -( will have the tags) 212.95 482.33 T -5 9 Q -(.b Button . all) 179.1 468 T -3 10 Q -(by default and all of the following bindings will apply to the window:) 152.1 454.33 T -5 9 Q -(bind .b {identify "press here to exit"}) 179.1 440 T -(bind Button {%W invoke}) 179.1 430 T -(bind all {help %W}) 179.1 420 T -3 10 Q -(So far) 152.1 406.33 T -(, this mechanism produces the same behavior as in Tk 3.6 except that bindings cre-) 175.85 406.33 T -(ated for a toplevel also apply to its descendants \050see Section 1.5 for more on this issue\051.) 152.1 394.33 T -(Y) 170.1 382.33 T -(ou can use the) 176.32 382.33 T -5 F -(bindtags) 235.71 382.33 T -3 F -( command to change the binding tags for a window or) 283.69 382.33 T -(their order) 152.1 370.33 T -(. For example, the command) 193.46 370.33 T -5 9 Q -(bindtags .b {.b MyButton all}) 179.1 356 T -3 10 Q -(will change the binding tags for) 152.1 342.33 T -5 F -(.b) 281.46 342.33 T -3 F -( to the three values in the list. This provides a simple) 293.45 342.33 T -(way to make radical changes the behavior of a window) 152.1 330.33 T -(. After the above command is) 371.55 330.33 T -(invoked none of the) 152.1 318.33 T -5 F -(Button) 234.26 318.33 T -3 F -( class bindings will apply to) 270.24 318.33 T -5 F -(.b) 384.63 318.33 T -3 F -(. Instead, bindings for) 396.63 318.33 T -5 F --0.81 (MyButton) 152.1 306.33 P -3 F --0.34 ( will apply; this might give the button a totally dif) 200.07 306.33 P --0.34 (ferent set of behaviors than a) 395.88 306.33 P -(normal button. In addition, the) 152.1 294.33 T -5 F -(bindtags) 276.75 294.33 T -3 F -( command removes the \322.\323 tag, so bindings on) 324.72 294.33 T -(\322.\323 will not apply to) 152.1 282.33 T -5 F -(.b) 234.27 282.33 T -3 F -(.) 246.27 282.33 T -(Y) 170.1 270.33 T -(ou can also place additional tags on a window with the) 176.32 270.33 T -5 F -(bindtags) 397.55 270.33 T -3 F -( command to) 445.53 270.33 T -(combine a number of behaviors. For example,) 152.1 258.33 T -5 9 Q -(bindtags .b {.b MyButton Button . all}) 179.1 244 T -3 10 Q -(gives) 152.1 230.33 T -5 F -(.b) 175.7 230.33 T -3 F -( the behaviors of) 187.69 230.33 T -5 F -(MyButton) 257.08 230.33 T -3 F -( bindings as well as those speci\336ed by) 305.06 230.33 T -5 F -(Button) 459.96 230.33 T -3 F -(bindings.) 152.1 218.33 T -(Overall, binding tags are similar to the tag mechanisms already used internally by) 170.1 206.33 T -(canvas and text widgets in Tk 3.6, except that binding tags apply to windows instead of) 152.1 194.33 T -(graphical objects or textual characters.) 152.1 182.33 T -FMENDPAGE -%%EndPage: "3" 4 -%%Page: "4" 4 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(4) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -0 F -0 X -(1.2) 127.41 632.33 T -(Con\337ict resolution) 152.1 632.33 T -3 F -(It is possible for several bindings to match a particular event. In Tk 3.6 at most one event) 152.1 616.33 T -(is actually allowed to trigger: a set of con\337ict resolution rules determines the winner) 152.1 604.22 T -(. In) 488.27 604.22 T -(general, a more speci\336c binding takes precedence over a less speci\336c binding. For exam-) 152.1 592.11 T --0.27 (ple, any binding for a speci\336c widget takes precedence over any class or) 152.1 580 P -5 F --0.66 (all) 439.96 580 P -3 F --0.27 ( binding, and) 457.95 580 P -(a binding on) 152.1 567.89 T -5 F -() 204.57 567.89 T -3 F -( takes precedence over a binding on) 270.54 567.89 T -5 F -(.) 416.24 567.89 T -3 F --0.26 (The mechanism for con\337ict resolution is similar in Tk 4.0 except that one binding can) 170.1 555.89 P --0.35 (trigger for) 152.1 543.78 P -2 F --0.35 (each) 194.7 543.78 P -3 F --0.35 ( binding tag on the window where the event occurs. The bindings trigger in) 213.57 543.78 P -(the order of the tags. Thus if button) 152.1 531.67 T -5 F -(.b) 296.17 531.67 T -3 F -( has the default binding tags, one binding for) 308.16 531.67 T -5 F -(.b) 489.71 531.67 T -3 F -(can trigger) 152.1 519.56 T -(, followed by one for) 194.72 519.56 T -5 F -(Button) 281.32 519.56 T -3 F -(, followed by one for \322) 317.3 519.56 T -5 F -(.) 408.34 519.56 T -3 F -(\323, followed by one for) 414.34 519.56 T -5 F -(all) 152.1 507.44 T -3 F -(. If there are no matching bindings for a given tag then none will trigger) 170.09 507.44 T -(, and if there) 456.98 507.44 T -(are several matching bindings for a given tag then a single one is chosen using the same) 152.1 495.33 T -(rules as in Tk 3.6.) 152.1 483.22 T -(The philosophy behind binding tags in Tk 4.0 is that each binding tag corresponds to) 170.1 471.22 T -(an independent behavior) 152.1 459.11 T -(, so bindings with dif) 249.96 459.11 T -(ferent tags should usually be additive. Sup-) 334.46 459.11 T -(pose you de\336ned the following binding:) 152.1 447 T -5 9 Q -(bind .b {puts "press here to exit"}) 179.1 432.67 T -3 10 Q -(This binding will add to the behavior de\336ned by the Button class binding for) 152.1 419 T -5 F -() 460.81 419 T -3 F -(.) 502.79 419 T -(In Tk 3.6, the widget-speci\336c binding will replace the class binding, which will break the) 152.1 406.89 T -(behavior of the button so that it no longer has normal button behavior) 152.1 394.78 T -(.) 429.71 394.78 T -(Sometimes there need to be interactions between binding tags. For example, you) 170.1 382.78 T -(might wish to keep most of the default button behavior for) 152.1 370.67 T -5 F -(.b) 388.34 370.67 T -3 F -( but replace the default) 400.33 370.67 T -(behavior for) 152.1 358.56 T -5 F -() 203.72 358.56 T -3 F -( with some other behavior) 293.67 358.56 T -(. T) 397.49 358.56 T -(o allow bindings to be) 407.9 358.56 T --0.17 (overridden, Tk 4.0 allows the) 152.1 346.44 P -5 F --0.41 (break) 271.44 346.44 P -3 F --0.17 ( command to be invoked from inside a binding. This) 301.43 346.44 P -(causes all remaining binding tags for that binding to be skipped. Consider the following) 152.1 334.33 T -(binding:) 152.1 322.22 T -5 9 Q -(bind .b {myRelease .b; break}) 179.1 307.89 T -3 10 Q --0.21 (This will cause the) 152.1 294.22 P -5 F --0.5 (myRelease) 228.99 294.22 P -3 F --0.21 ( procedure to be invoked, then the) 282.96 294.22 P -5 F --0.5 (break) 420.28 294.22 P -3 F --0.21 ( command will) 450.26 294.22 P --0.37 (cause the class binding for the event to be skipped \050assuming that the widget name appears) 152.1 282.11 P -(before its class in the binding tags for) 152.1 270 T -5 F -(.b) 304.78 270 T -3 F -(\051, along with any bindings for other tags.) 316.77 270 T -2 F -(Note:) 119.09 254 T --0.07 (Y) 152.1 254 P --0.07 (ou cannot invoke) 156.74 254 P -6 F --0.17 (break) 227.31 254 P -2 F --0.07 ( fr) 257.29 254 P --0.07 (om within the) 266.02 254 P -6 F --0.17 (myRelease) 322.73 254 P -2 F --0.07 ( pr) 376.7 254 P --0.07 (ocedur) 387.64 254 P --0.07 (e in the above example:) 415.03 254 P --0.02 (this will generate a T) 152.1 242.89 P --0.02 (cl err) 236.05 242.89 P --0.02 (or) 257.59 242.89 P --0.02 (. However) 265.37 242.89 P --0.02 (, you can invoke the command \322) 305.31 242.89 P -6 F --0.05 (return -code) 434.25 242.89 P -(break) 152.1 231.78 T -2 F -(\323 in the pr) 182.08 231.78 T -(ocedur) 223.64 231.78 T -(e to achieve the same effect as the) 251.03 231.78 T -6 F -(break) 389.25 231.78 T -2 F -( in the binding script.) 419.23 231.78 T -0 F -(1.3) 127.41 202.78 T -(Implicit Any) 152.1 202.78 T -3 F --0.13 (In Tk 3.6 extraneous modi\336ers prevent a binding from matching an event. For example, if) 152.1 186.78 P -(a binding is de\336ned for) 152.1 174.67 T -5 F -() 247.32 174.67 T -3 F -( and the mouse button is pressed with the) 307.29 174.67 T -5 F -(Num-) 474.68 174.67 T -(Lock) 152.1 162.56 T -3 F -( key down, then the binding will not match. If you want a binding to trigger even) 176.09 162.56 T -(when extraneous modi\336ers are present, you must specify the) 152.1 150.45 T -5 F -(Any) 396.37 150.45 T -3 F -( modi\336er) 414.36 150.45 T -(, as in) 450.33 150.45 T -5 F -() 152.1 138.33 T -3 F -(.) 206.07 138.33 T -FMENDPAGE -%%EndPage: "4" 5 -%%Page: "5" 5 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(1 Bindings) 98.1 668.33 T -0 F -(5) 506.54 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X --0.06 (In Tk 4.0, all bindings have the) 170.1 632.33 P -5 F --0.15 (Any) 297.08 632.33 P -3 F --0.06 ( modi\336er present implicitly) 315.08 632.33 P --0.06 (. The) 423.35 632.33 P -5 F --0.15 (Any) 446.26 632.33 P -3 F --0.06 ( modi\336er is) 464.25 632.33 P -(still allowed for compatibility) 152.1 620.33 T -(, but it has no meaning. Thus a binding for) 270.55 620.33 T -5 F -() 443.23 620.33 T -3 F -(will match a button press event even if) 152.1 608.33 T -5 F -(NumLock) 309.21 608.33 T -3 F -(,) 351.19 608.33 T -5 F -(Shift) 356.19 608.33 T -3 F -(,) 386.17 608.33 T -5 F -(Control) 391.17 608.33 T -3 F -(, or any combina-) 433.15 608.33 T -(tion of them. If you wish for a binding not to trigger when a modi\336er is present, you can) 152.1 596.33 T -(just de\336ne an empty binding for that modi\336er combination. For example,) 152.1 584.33 T -5 9 Q -(bind .b {# this script is a no-op}) 179.1 570 T -3 10 Q -(creates a binding that will trigger on mouse button presses when the) 152.1 556.33 T -5 F -(Control) 426.36 556.33 T -3 F -( key is) 468.34 556.33 T --0.22 (down. If there is also a) 152.1 544.33 P -5 F --0.52 () 244.35 544.33 P -3 F --0.22 ( binding for) 334.3 544.33 P -5 F --0.52 (.b) 383.35 544.33 P -3 F --0.22 (, it will no longer be invoked) 395.34 544.33 P --0.02 (if the) 152.1 532.33 P -5 F --0.05 (Control) 175.37 532.33 P -3 F --0.02 ( key is down, due to the con\337ict resolution rules. The script for the above) 217.35 532.33 P -(binding is just a T) 152.1 520.33 T -(cl comment, so it has no ef) 223.59 520.33 T -(fect when it is invoked. Alternatively) 330.84 520.33 T -(, you) 478.98 520.33 T -(could use) 152.1 508.33 T -5 F -(%s) 192.63 508.33 T -3 F -( in the binding script to extract the modi\336er state, then test to see that only) 204.62 508.33 T -(desired modi\336ers are present.) 152.1 496.33 T -0 F -(1.4) 127.41 466.33 T -(Porting problems: widget bindings vs. class bindings) 152.1 466.33 T -3 F --0.38 (Y) 152.1 450.33 P --0.38 (ou are likely to encounter two problems with bindings when you port Tk 3.6 scripts to Tk) 158.32 450.33 P --0.18 (4.0: widget bindings vs. class bindings, and events on top-level windows. This section dis-) 152.1 438.33 P -(cusses the \336rst problem and the following section discusses the second problem.) 152.1 426.33 T -(In Tk 3.6, if a widget-speci\336c binding matches an event then no class binding will) 170.1 414.33 T --0.15 (trigger for the event; in Tk 4.0 both bindings will trigger) 152.1 402.33 P --0.15 (. Because of this change, you will) 375.75 402.33 P --0.09 (need to modify most of your widget-speci\336c bindings in one of two ways. If a widget-spe-) 152.1 390.33 P -(ci\336c binding in Tk 3.6 was intended to supplement the class binding, this could only be) 152.1 378.33 T -(done by duplicating the code of the class binding in the widget binding script. This dupli-) 152.1 366.33 T --0.02 (cated code is no longer necessary in Tk 4.0 and will probably interfere with the new class) 152.1 354.33 P -(bindings in Tk 4.0; you should remove the duplicated class code, leaving only the widget-) 152.1 342.33 T -(speci\336c code in the binding script. If a widget-speci\336c binding in Tk 3.6 was intended to) 152.1 330.33 T --0.17 (override the class binding, this will no longer occur by default in Tk 4.0; you should add a) 152.1 318.33 P -5 F --0.54 (break) 152.1 306.33 P -3 F --0.22 ( command at the end of the binding script to prevent the class binding from trigger-) 182.08 306.33 P -(ing. If a widget binding in Tk 3.6 didn\325) 152.1 294.33 T -(t con\337ict with a class binding, then you will not) 308.49 294.33 T -(need to modify it for Tk 4.0. For example, a widget binding for) 152.1 282.33 T -5 F -() 407.49 282.33 T -3 F -( in a text widget) 443.47 282.33 T -(would not need to be modi\336ed, since it doesn\325) 152.1 270.33 T -(t con\337ict with a class binding.) 336.53 270.33 T -0 F -(1.5) 127.41 240.33 T -(Porting problems: events on top-levels) 152.1 240.33 T -3 F --0.26 (The second binding problem you are likely to encounter in porting Tk 3.6 scripts to Tk 4.0) 152.1 224.33 P -(is that in Tk 4.0 a binding on a toplevel will match events on any of the internal windows) 152.1 212.33 T -(within that top-level. For example, suppose you have a binding created as follows:) 152.1 200.33 T -5 9 Q -(toplevel .t) 179.1 186 T -(button .t.b1 ...) 179.1 176 T -(button .t.b2 ...) 179.1 166 T -(bind .t action) 179.1 156 T -FMENDPAGE -%%EndPage: "5" 6 -%%Page: "6" 6 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(6) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X --0.27 (This binding will trigger not only when the mouse enters) 152.1 632.33 P -5 F --0.64 (.t) 379.29 632.33 P -3 F --0.27 (, but also when it enters either) 391.28 632.33 P -5 F -(.t.b1) 152.1 620.33 T -3 F -( or) 182.08 620.33 T -5 F -(.t.b2) 195.41 620.33 T -3 F -(. This is because the binding tags for a window include its nearest) 225.39 620.33 T -(ancestor toplevel by default. The toplevel is present in the binding tags to make it easy to) 152.1 608.33 T -(set up accelerator keys that apply in all the windows of a panel. For example,) 152.1 596.33 T -5 9 Q -(bind .t {controlAProc %W}) 179.1 582 T -3 10 Q -(will cause) 152.1 568.33 T -5 F -(controlAProc) 194.85 568.33 T -3 F -( to be invoked whenever) 266.81 568.33 T -5 F -(Control-a) 367.56 568.33 T -3 F -( is typed in any of the) 421.53 568.33 T --0.12 (windows in) 152.1 556.33 P -5 F --0.29 (.t) 200.72 556.33 P -3 F --0.12 (. The procedure will receive the name of the focus window as its ar) 212.71 556.33 P --0.12 (gument.) 479.62 556.33 P -(Unfortunately) 170.1 544.33 T -(, if you have created bindings on toplevel windows in your Tk 3.6) 225.52 544.33 T --0.16 (scripts, they probably expect to trigger only for events in the toplevel, so the bindings will) 152.1 532.33 P -(misbehave under Tk 4.0. Fortunately you can reproduce the behavior of Tk 3.6 by using) 152.1 520.33 T -(the) 152.1 508.33 T -5 F -(%W) 166.81 508.33 T -3 F -( substitution in the binding script. For example, to ensure that) 178.8 508.33 T -5 F -(action) 427.28 508.33 T -3 F -( is invoked) 463.26 508.33 T -(only for) 152.1 496.33 T -5 F -(Enter) 186.52 496.33 T -3 F -( events in a toplevel window itself, create the following binding in place) 216.51 496.33 T -(of the one above:) 152.1 484.33 T -5 9 Q -(bind .t {) 179.1 470 T -(if {"%W" == ".t"} {) 200.63 460 T -(action) 222.23 450 T -(}) 200.63 440 T -(}) 179.1 430 T -3 10 Q --0.01 (When an) 152.1 416.33 P -5 F --0.03 (Enter) 190.38 416.33 P -3 F --0.01 ( event occurs in a descendant of) 220.36 416.33 P -5 F --0.03 (.t) 350.45 416.33 P -3 F --0.01 ( such as) 362.45 416.33 P -5 F --0.03 (.t.x) 396.56 416.33 P -3 F --0.01 (, a binding for) 420.54 416.33 P -5 F --0.03 (Enter) 479.63 416.33 P -3 F -(in) 152.1 404.33 T -5 F -(.t.x) 162.37 404.33 T -3 F -( will trigger \336rst, if there is one. Then the above binding will trigger) 186.36 404.33 T -(. Since) 457.58 404.33 T -5 F -(%W) 487.29 404.33 T -3 F -(will be substituted with) 152.1 392.33 T -5 F -(.t.x) 248.17 392.33 T -3 F -(, the) 272.15 392.33 T -5 F -(if) 291.86 392.33 T -3 F -( condition will not be satis\336ed and the binding will) 303.86 392.33 T -(not do anything.) 152.1 380.33 T --0.14 ( An alternative solution is to remove the toplevel window from the binding tags of all) 170.1 368.33 P --0.12 (its internal windows. However) 152.1 356.33 P --0.12 (, this means that you won\325) 274.03 356.33 P --0.12 (t be able to take advantage of the) 378.73 356.33 P -(tag to create key bindings that apply everywhere within the toplevel.) 152.1 344.33 T -0 F -(1.6) 127.41 314.33 T -(Internal bindings in canvases and texts) 152.1 314.33 T -3 F -(The same changes in con\337ict resolution described in Section 1.2 also apply to bindings) 152.1 298.33 T --0.05 (created internally for the items of a canvas or the tags of a text widget. If a canvas item or) 152.1 286.33 P --0.29 (character of text has multiple tags, then one binding can trigger for each tag on each event.) 152.1 274.33 P --0.32 (The bindings trigger in the priority order of the tags. Similar porting problems are likely to) 152.1 262.33 P --0.19 (occur as described in Section 1.4; if a binding for one tag needs to override that of another) 152.1 250.33 P -(tag, you\325ll need to add a) 152.1 238.33 T -5 F -(break) 251.2 238.33 T -3 F -( command under Tk 4.0; if a binding for one tag dupli-) 281.18 238.33 T --0.28 (cated the code from another tag\325) 152.1 226.33 P --0.28 (s binding, so that they will compose in Tk 3.6, you\325ll have) 279.76 226.33 P -(to remove the duplicated code in Tk 4.0.) 152.1 214.33 T -FMENDPAGE -%%EndPage: "6" 7 -%%Page: "7" 7 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(2 Focus management) 98.1 668.33 T -0 F -(7) 506.54 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -98.1 623.98 512.1 627 C -152.1 625.2 512.1 625.2 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 625.49 143.1 625.49 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(2) 134.63 631 T -(Focus management) 152.1 631 T -3 10 Q -(The input focus is another area where Tk 4.0 contains major changes. Fortunately) 152.1 607.31 T -(, the) 477.87 607.31 T --0.09 (focus changes should not require as many modi\336cations to your Tk 3.6 scripts as the bind-) 152.1 595.31 P -(ing changes.) 152.1 583.31 T -0 F -(2.1) 127.41 553.31 T -(One focus window per toplevel) 152.1 553.31 T -3 F -(Tk 3.6 only keeps track of a single focus window for each application, and this results in) 152.1 537.31 T -(two problems. First, it doesn\325) 152.1 525.31 T -(t allow an application to use multiple displays since this) 269.64 525.31 T --0.16 (could result in multiple simultaneous focus windows, one on each display) 152.1 513.31 P --0.16 (. Second, the Tk) 444.99 513.31 P -(3.6 model doesn\325) 152.1 501.31 T -(t work very well for applications that have multiple toplevels: when the) 221.04 501.31 T -(mouse moves from one toplevel to another) 152.1 489.31 T -(, the focus window should switch to whatever) 322.7 489.31 T --0.24 (window had the focus the last time the mouse was in the new toplevel, but Tk 3.6 does not) 152.1 477.31 P -(remember this information.) 152.1 465.31 T -(Tk 4.0 corrects both of these problems. It remembers one focus window for each) 170.1 453.31 T -(toplevel, which can be queried with the) 152.1 441.31 T -5 F -(focus -lastfor) 311.98 441.31 T -3 F -( command. When the win-) 395.94 441.31 T -(dow manager gives the focus to a toplevel window \050because the mouse entered the win-) 152.1 429.31 T -(dow or because you clicked on the window) 152.1 417.31 T -(, depending on the focus model being used by) 324.38 417.31 T -(the window manager\051, Tk passes the focus on to the remembered window) 152.1 405.31 T -(. Several win-) 446.23 405.31 T -(dows in an application can have the focus at the same time, one on each display the appli-) 152.1 393.31 T -(cation is using. When asking for the current focus window in the) 152.1 381.31 T -5 F -(focus) 413.31 381.31 T -3 F -( command, you) 443.29 381.31 T -(can use the) 152.1 369.31 T -5 F -(-displayof) 199 369.31 T -3 F -( switch to specify a particular display) 258.97 369.31 T -(.) 407.66 369.31 T -(When you set the focus to a window with the) 170.1 357.31 T -5 F -(focus) 353.31 357.31 T -3 F -( command, Tk remembers that) 383.29 357.31 T -(window as the most recent focus window for its toplevel. In addition, if the application) 152.1 345.31 T -(currently has the focus for the window\325) 152.1 333.31 T -(s display) 309.2 333.31 T -(, Tk moves the focus to the speci\336ed win-) 343.82 333.31 T --0.35 (dow; this can be used, for example to move the focus to a dialog when the dialog is posted,) 152.1 321.31 P -(or to perform keyboard traversal among the toplevels of an application. If the application) 152.1 309.31 T -(doesn\325) 152.1 297.31 T -(t currently have the focus for the display) 178.57 297.31 T -(, then Tk will not normally take the focus) 339.74 297.31 T -(from its current owner) 152.1 285.31 T -(. However) 241.2 285.31 T -(, you can specify the) 282.43 285.31 T -5 F -(-force) 367.36 285.31 T -3 F -( ar) 403.34 285.31 T -(gument to) 413.43 285.31 T -5 F -(focus) 456.18 285.31 T -3 F -( to) 486.17 285.31 T -(insist that Tk grab the focus for this application \050in general this is probably not a good) 152.1 273.31 T -(idea, since it may clash with the window manager) 152.1 261.31 T -(\325) 352.05 261.31 T -(s focus policy\051.) 354.83 261.31 T -0 F -(2.2) 127.41 231.31 T -(Keyboard traversal) 152.1 231.31 T -3 F --0.38 (Tk 4.0 has a much more complete implementation of keyboard traversal than Tk 3.6. In Tk) 152.1 215.31 P -(3.6 there is built-in support only for keyboard traversal of menus. In Tk 4.0 keyboard tra-) 152.1 203.31 T -(versal is implemented for all widgets. Y) 152.1 191.31 T -(ou can type) 311.27 191.31 T -5 F -(Tab) 359.85 191.31 T -3 F -( to move the focus among the) 377.84 191.31 T --0.4 (windows within a toplevel and) 152.1 179.31 P -5 F --0.95 (Shift+Tab) 275.31 179.31 P -3 F --0.4 ( to move in the reverse direction. The order of) 329.28 179.31 P --0.11 (traversal is de\336ned by the stacking order of widgets, with the lowest widget \336rst in the tra-) 152.1 167.31 P -(versal order) 152.1 155.31 T -(. All Tk widgets now provide a) 199 155.31 T -5 F -(-takefocus) 326.14 155.31 T -3 F -( option, which determines) 386.11 155.31 T -FMENDPAGE -%%EndPage: "7" 8 -%%Page: "8" 8 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(8) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X -(whether the window should accept the focus during traversal or be skipped. This option) 152.1 632.33 T -(has several features; see the) 152.1 620.33 T -5 F -(options.n) 265.61 620.33 T -3 F -( manual entry for details.) 319.58 620.33 T -(All of the Tk widgets provide a traversal highlight ring as required by Motif. The) 170.1 608.33 T -(highlight ring turns dark when the widget has the input focus. Its size and colors are con-) 152.1 596.33 T -(trolled by the) 152.1 584.33 T -5 F -(-highlightthickness) 207.9 584.33 T -3 F -(,) 321.84 584.33 T -5 F -(-highlightbackground) 326.83 584.33 T -3 F -(, and) 446.77 584.33 T -5 F -(-) 152.1 572.33 T -(highlightcolor) 158.1 572.33 T -3 F -( options. Y) 242.05 572.33 T -(ou may notice that widgets appear to have extra space) 285.2 572.33 T -(around them in Tk 4.0; this is due to the traversal highlight ring, which is normally the) 152.1 560.33 T -(same color as the background for widgets.) 152.1 548.33 T -0 F -(2.3) 127.41 518.33 T -(Support for focus-follows-mouse) 152.1 518.33 T -3 F -(Both Tk 3.6 and Tk 4.0 use an) 152.1 502.33 T -2 F -(explicit focus model) 275.91 502.33 T -3 F -( within a toplevel. This means that) 355.86 502.33 T -(moving the mouse among the windows of a toplevel does not normally move the focus;) 152.1 490.33 T --0.06 (you have to click or perform some other action \050such as pressing) 152.1 478.33 P -5 F --0.15 (Tab) 412.26 478.33 P -3 F --0.06 (\051 to move the focus.) 430.25 478.33 P -(Tk 3.6 has no support for an) 152.1 466.33 T -2 F -(implicit focus model) 267.58 466.33 T -3 F -( where the window under the mouse) 348.64 466.33 T -(always has the focus. In Tk 4.0 you can invoke the library procedure) 152.1 454.33 T -5 F -(tk_focusFol-) 428.83 454.33 T -(lowsMouse) 152.1 442.33 T -3 F -( to switch to an implicit focus model; in this mode whenever the mouse) 206.07 442.33 T -(enters a new window the focus will switch to that window) 152.1 430.33 T -(.) 384.07 430.33 T -0 F -(2.4) 127.41 400.33 T -(No default focus window) 152.1 400.33 T -(, no \322none\323 focus.) 269.45 400.33 T -3 F --0.16 (Tk 3.6 has the notion of a default focus window) 152.1 384.33 P --0.16 (, which receives the focus if the focus win-) 341.56 384.33 P -(dow is deleted. It is also possible for an application to abandon the input focus by setting) 152.1 372.33 T -(the focus to) 152.1 360.33 T -5 F -(none) 201.23 360.33 T -3 F -(. In Tk 4.0 both of these features have been eliminated. There is no) 225.22 360.33 T -(default focus window) 152.1 348.33 T -(, and the focus can never be explicitly abandoned. If the focus win-) 238.05 348.33 T -(dow is destroyed, Tk resets the input focus to the toplevel containing the old focus win-) 152.1 336.33 T -(dow) 152.1 324.33 T -(. If the toplevel is destroyed, the window manager will reclaim the focus and move it) 168.66 324.33 T -(elsewhere.) 152.1 312.33 T --0.18 (If you really want to abandon the focus in Tk 4.0 so that keyboard events are ignored,) 170.1 300.33 P -(you can create a dummy window with no key bindings \050set its binding tags to an empty) 152.1 288.33 T -(string to be sure\051, make sure that is never mapped, and give it the input focus.) 152.1 276.33 T -0 F -(2.5) 127.41 246.33 T -(Better focus events) 152.1 246.33 T -3 F --0.13 (Tk 3.6 has a quirky event model for) 152.1 230.33 P -5 F --0.32 (FocusIn) 296.77 230.33 P -3 F --0.13 ( and) 338.75 230.33 P -5 F --0.32 (FocusOut) 357.92 230.33 P -3 F --0.13 ( events: when the window) 405.89 230.33 P --0.23 (manager gives the focus to a toplevel, Tk generates a) 152.1 218.33 P -5 F --0.55 (FocusIn) 364.36 218.33 P -3 F --0.23 ( event for the toplevel and) 406.33 218.33 P -(another) 152.1 206.33 T -5 F -(FocusIn) 184.57 206.33 T -3 F -( event for the focus window) 226.55 206.33 T -(, but no events for any other windows.) 337.76 206.33 T -(When the window manager moves the focus somewhere else,) 152.1 194.33 T -5 F -(FocusOut) 400.79 194.33 T -3 F -( events are gen-) 448.77 194.33 T --0 (erated for these same two windows. In Tk 4.0,) 152.1 182.33 P -5 F --0 (FocusIn) 339.73 182.33 P -3 F --0 ( and) 381.71 182.33 P -5 F --0 (FocusOut) 401.13 182.33 P -3 F --0 ( events are gen-) 449.11 182.33 P --0.26 (erated in the same way as) 152.1 170.33 P -5 F --0.63 (Enter) 255.43 170.33 P -3 F --0.26 ( and) 285.41 170.33 P -5 F --0.63 (Leave) 304.31 170.33 P -3 F --0.26 ( events: when the focus arrives, a) 334.29 170.33 P -5 F --0.63 (FocusIn) 467.89 170.33 P -3 F --0.05 (event is generated for each window from the toplevel down to the focus window) 152.1 158.33 P --0.05 (, with dif-) 472.5 158.33 P -FMENDPAGE -%%EndPage: "8" 9 -%%Page: "9" 9 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(3 T) 98.1 668.33 T -(ext widgets) 111.43 668.33 T -0 F -(9) 506.54 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X --0.33 (ferent detail \336elds for dif) 152.1 632.33 P --0.33 (ferent windows \050see Xlib documentation for information on these) 250.53 632.33 P -(values\051. The reverse happens when the focus leaves a window) 152.1 620.33 T -(.) 399.57 620.33 T -0 F -(2.6) 127.41 590.33 T -(Porting issues) 152.1 590.33 T -3 F -(If you didn\325) 152.1 574.33 T -(t have any special focus-related code in Tk 3.6, then you shouldn\325) 199.66 574.33 T -(t need to) 462.9 574.33 T -(make any changes for 4.0; things will just work better) 152.1 562.33 T -(. If you wrote code in Tk 3.6 to get) 366.96 562.33 T -(around the weaknesses with its focus mechanism, then you should remove most or all of) 152.1 550.33 T -(that code. For example, if you implemented keyboard traversal yourself, or if you built) 152.1 538.33 T -(your own mechanism to remember a separate focus window for each toplevel and give it) 152.1 526.33 T -(the input focus whenever the toplevel gets the focus, you can simply remove this code,) 152.1 514.33 T --0.33 (since Tk 4.0 performs these functions for you. If you wrote code that depends on the weird) 152.1 502.33 P --0.03 (event model in Tk 3.6, that code will need to be rewritten for Tk 4.0. The Tk 4.0 model is) 152.1 490.33 P -(general enough to duplicate any ef) 152.1 478.33 T -(fects that were possible in Tk 3.6.) 289.86 478.33 T -98.1 434.98 512.1 438 C -152.1 436.2 512.1 436.2 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 436.49 143.1 436.49 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(3) 134.63 442 T -(T) 152.1 442 T -(ext widgets) 158.54 442 T -3 10 Q -(T) 152.1 418.31 T -(ext widgets have under) 157.51 418.31 T -(gone a major overhaul for Tk 4.0 and they have improved in) 249.76 418.31 T -(many ways. The changes to text widgets are almost entirely upward-compatible from Tk) 152.1 406.31 T -(3.6.) 152.1 394.31 T -0 F -(3.1) 127.41 364.31 T -(Embedded windows.) 152.1 364.31 T -3 F -(Tk 3.6 supported two kinds of annotations in texts: marks and tags. In Tk 4.0 a third kind) 152.1 348.31 T --0.04 (of annotation is available: an embedded window) 152.1 336.31 P --0.04 (. This allows you to embed other widgets) 344.99 336.31 P -(inside a text widget, mixed in with the text. The text widget acts as a geometry manager) 152.1 324.31 T -(for these windows, laying them out and wrapping them just as if each embedded window) 152.1 312.31 T -(were a single character in the text. Y) 152.1 300.31 T -(ou can even have texts with nothing in them but) 297.64 300.31 T -(embedded windows. The) 152.1 288.31 T -5 F -(window) 254.8 288.31 T -3 F -( widget command for text widgets provides several) 290.78 288.31 T -(options to manage embedded windows.) 152.1 276.31 T -0 F -(3.2) 127.41 246.31 T -(More options for tags.) 152.1 246.31 T -3 F -(In Tk 4.0 tags support many new options providing additional control over how informa-) 152.1 230.31 T -(tion is displayed. Here is a summary of the new options:) 152.1 218.31 T -3 12 Q -(\245) 152.1 203.31 T -3 10 Q -(Y) 162.9 203.31 T -(ou can now specify tab stops with the) 169.12 203.31 T -5 F -(-tabs) 321.79 203.31 T -3 F -( option. Each tab stop can use left, cen-) 351.78 203.31 T -(ter) 162.9 191.31 T -(, right, or numeric justi\336cation. T) 173.04 191.31 T -(ab stops can also be speci\336ed for the widget as a) 305.6 191.31 T -(whole.) 162.9 179.31 T -3 12 Q -(\245) 152.1 164.31 T -3 10 Q -(Y) 162.9 164.31 T -(ou can specify justi\336cation \050left, center or right\051 with the) 169.12 164.31 T -5 F -(-justify) 398.12 164.31 T -3 F -( option.) 446.09 164.31 T -FMENDPAGE -%%EndPage: "9" 10 -%%Page: "10" 10 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(10) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 12 Q -0 X -(\245) 152.1 632.33 T -3 10 Q -(Y) 162.9 632.33 T -(ou can now specify line spacing with three options,) 169.12 632.33 T -5 F -(-spacing1) 376.75 632.33 T -3 F -(,) 430.72 632.33 T -5 F -(-spacing2) 435.72 632.33 T -3 F -(, and) 489.69 632.33 T -5 F -(-) 162.9 620.2 T -(spacing3) 168.9 620.2 T -3 F -(, which control the spacing above a line, between wrapped lines, and) 216.87 620.2 T -(below a line.) 162.9 608.06 T -3 12 Q -(\245) 152.1 593.06 T -3 10 Q -(Y) 162.9 593.06 T -(ou can now specify mar) 169.12 593.06 T -(gins with the) 264.41 593.06 T -5 F -(-lmargin1) 318.55 593.06 T -3 F -(,) 372.52 593.06 T -5 F -(-lmargin2) 377.52 593.06 T -3 F -(, and) 431.49 593.06 T -5 F -(-rmargin) 453.42 593.06 T -3 F -(options.) 162.9 580.92 T -3 12 Q -(\245) 152.1 565.92 T -3 10 Q --0.25 (Y) 162.9 565.92 P --0.25 (ou can now adjust the vertical position of text \050e.g. for superscripts or subscripts\051 with) 169.12 565.92 P -(the) 162.9 553.79 T -5 F -(-offset) 177.61 553.79 T -3 F -( option.) 219.59 553.79 T -3 12 Q -(\245) 152.1 538.79 T -3 10 Q --0.03 (Y) 162.9 538.79 P --0.03 (ou can now specify the wrapping style \050word wrapping, character wrapping, or none\051) 169.12 538.79 P -(with the) 162.9 526.65 T -5 F -(-wrap) 197.88 526.65 T -3 F -( option.) 227.86 526.65 T -3 12 Q -(\245) 152.1 511.65 T -3 10 Q -(Y) 162.9 511.65 T -(ou can now request overstriking with the) 169.12 511.65 T -5 F -(-overstrike) 334.83 511.65 T -3 F -( option.) 400.8 511.65 T -0 F -(3.3) 127.41 481.65 T -(Bindings) 152.1 481.65 T -3 F --0.19 (The default bindings for text widgets have been completely rewritten in Tk 4.0. They now) 152.1 465.65 P -(support almost all of the Motif behavior \050everything except add mode and secondary) 152.1 453.52 T --0.36 (selections\051. They also include a substantial subset of the Emacs bindings for cursor motion) 152.1 441.38 P -(and basic editing. The) 152.1 429.24 T -5 F -(tk_strictMotif) 242.87 429.24 T -3 F -( variable disables the Emacs bindings.) 326.82 429.24 T -0 F -(3.4) 127.41 399.24 T -(Miscellaneous new features) 152.1 399.24 T -3 F -(In addition to the major changes described above, text widgets also include the following) 152.1 383.24 T -(new features:) 152.1 371.11 T -1 F -(Horizontal scr) 162.9 356.11 T -(olling) 224.07 356.11 T -3 F -(. T) 247.95 356.11 T -(ext widgets can now be scrolled horizontally as well as verti-) 258.36 356.11 T -(cally) 162.9 343.97 T -(, using the) 181.68 343.97 T -5 F -(-) 225.55 343.97 T -(xscrollcommand) 231.54 343.97 T -3 F -( option and the) 315.5 343.97 T -5 F -(xview) 377.68 343.97 T -3 F -( widget command.) 407.67 343.97 T -1 F -(Sear) 162.9 328.97 T -(ching) 182.15 328.97 T -3 F -(. T) 205.48 328.97 T -(ext widgets have a new) 215.88 328.97 T -5 F -(search) 311.64 328.97 T -3 F -( widget command, which provides ef) 347.62 328.97 T -(\336-) 495.67 328.97 T --0.19 (cient searching of text widgets using either exact matching, glob-style matching, or reg-) 162.9 316.83 P -(ular expressions. Y) 162.9 304.7 T -(ou can search forwards or backwards.) 238.79 304.7 T -1 F -(Mark gravity) 162.9 289.7 T -3 F -(. In Tk 3.6 marks always had \322right gravity\323, which means they stick to) 219.71 289.7 T -(the character on the right side of the mark; if you insert at the position of a mark, the) 162.9 277.56 T --0.1 (new character goes before the mark. In Tk 4.0 you can specify whether marks have left) 162.9 265.42 P -(or right gravity) 162.9 253.29 T -(.) 222.77 253.29 T -1 F -(Scr) 162.9 238.29 T -(een information) 177.15 238.29 T -3 F -(. In Tk 4.0 there are two new widget commands for text widgets) 245.16 238.29 T -(that return information about the screen layout. The) 162.9 226.15 T -5 F -(dlineinfo) 371.92 226.15 T -3 F -( widget command) 425.89 226.15 T -(returns the bounding box of a display line \050all the information displayed on one line of) 162.9 214.02 T -(the window) 162.9 201.88 T -(, which may be either a whole line of text or a partial line if wrapping has) 209.16 201.88 T -(occurred\051. The) 162.9 189.74 T -5 F -(bbox) 224.23 189.74 T -3 F -( widget command returns the screen area occupied by a single) 248.21 189.74 T -(character) 162.9 177.61 T -(.) 198.97 177.61 T -1 F -(Extended insert command) 162.9 162.61 T -3 F -(. The) 275.06 162.61 T -5 F -(insert) 298.1 162.61 T -3 F -( widget command now supports an addi-) 334.08 162.61 T --0.32 (tional ar) 162.9 150.47 P --0.32 (gument giving a list of tags to apply to the new characters. Y) 195.43 150.47 P --0.32 (ou can also include) 434 150.47 P -(several text and tag ar) 162.9 138.33 T -(guments in a single) 250.42 138.33 T -5 F -(insert) 330.38 138.33 T -3 F -( command.) 366.36 138.33 T -FMENDPAGE -%%EndPage: "10" 11 -%%Page: "11" 11 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(4 Better Motif compliance) 98.1 668.33 T -0 F -(1) 501.54 668.33 T -(1) 506.54 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -1 F -0 X -(See command) 162.9 632.33 T -3 F -(. There is a new) 222.03 632.33 T -5 F -(see) 288.08 632.33 T -3 F -( widget command, which adjusts the view in the) 306.07 632.33 T -(widget if needed to ensure that a particular character is visible in the window) 162.9 620.29 T -(.) 470.07 620.29 T -0 F -(3.5) 127.41 590.29 T -(Porting issues: tag stickiness, change in end) 152.1 590.29 T -3 F -(There are two changes in text widgets that may require modi\336cations to Tk 3.6 scripts.) 152.1 574.29 T --0.06 (The \336rst change has to do with tag stickiness. In Tk 3.6, tags are sticky to the right: if you) 152.1 562.24 P -(insert new text just after a tagged range, the new text acquires the tags of the preceding) 152.1 550.19 T -(character) 152.1 538.14 T -(. If you insert text before a tagged range in Tk 3.6, the new characters do not) 188.17 538.14 T --0.34 (acquire the tags of the range. In Tk 4.0, tags are not sticky on either side: new text acquires) 152.1 526.09 P -(a tag from surrounding characters only if the tag is present on both sides of the insertion) 152.1 514.05 T -(position. The sticky behavior in Tk 3.6 was rarely useful and special code was often) 152.1 502 T -(needed to work around it. Y) 152.1 489.95 T -(ou should be able to eliminate this code in Tk 4.0.) 263.24 489.95 T -(The second incompatible change in text widgets is that the index) 170.1 477.95 T -5 F -(end) 431.32 477.95 T -3 F -( now refers to) 449.31 477.95 T --0.14 (the position just after the \336nal newline in the text, whereas in Tk 3.6 it referred to the posi-) 152.1 465.9 P --0.1 (tion just before the \336nal newline. This makes it possible to apply tags to the \336nal newline,) 152.1 453.86 P -(which was not possible in Tk 3.6, but you may need to modify your scripts if you depend) 152.1 441.81 T -(on the old position of) 152.1 429.76 T -5 F -(end) 240.11 429.76 T -3 F -(.) 258.1 429.76 T -98.1 386.4 512.1 389.43 C -152.1 387.63 512.1 387.63 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 387.92 143.1 387.92 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(4) 134.63 393.43 T -(Better Motif compliance) 152.1 393.43 T -3 10 Q -(All of the widgets have been modi\336ed in Tk 4.0 to improve their Motif compliance. This) 152.1 369.74 T --0.3 (was done by adding features that were missing and reworking the bindings to comply with) 152.1 357.69 P -(Motif conventions. I believe that the widgets are now completely Motif compliant except) 152.1 345.64 T -(for the following missing features:) 152.1 333.6 T -3 12 Q -(\245) 152.1 318.6 T -3 10 Q -(There is no support for secondary selections.) 162.9 318.6 T -3 12 Q -(\245) 152.1 303.6 T -3 10 Q -(There is no support for \322add mode\323 in widgets such as texts and listboxes.) 162.9 303.6 T -3 12 Q -(\245) 152.1 288.6 T -3 10 Q -(There is no support for drag and drop.) 162.9 288.6 T --0.02 (Please let me know if you \336nd any other discrepancies between the Tk widgets and Motif) 152.1 273.59 P -(widgets. W) 152.1 261.55 T -(e plan to eliminate the remaining incompatibilities over the next year or two.) 196.82 261.55 T -98.1 218.19 512.1 221.21 C -152.1 219.41 512.1 219.41 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 219.7 143.1 219.7 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(5) 134.63 225.21 T -(W) 152.1 225.21 T -(idget changes) 163.31 225.21 T -3 10 Q --0.07 (All of the Tk 4.0 widgets have been improved over their 3.6 counterparts, mostly in small) 152.1 201.52 P --0.23 (and backwards compatible ways. Here is a summary of the widget improvements; see Sec-) 152.1 189.48 P -(tion 13 for information about incompatible changes.) 152.1 177.43 T -3 12 Q -(\245) 152.1 162.43 T -3 10 Q -(All widgets now have a) 162.9 162.43 T -5 F -(cget) 259.78 162.43 T -3 F -( command, which provides an easier way to retrieve the) 283.76 162.43 T -(value of a con\336guration option. In other situations where con\336guration options are) 162.9 150.38 T -(used, such as for menu entries or text tags, a) 162.9 138.33 T -5 F -(cget) 342.21 138.33 T -3 F -( command is also available.) 366.2 138.33 T -FMENDPAGE -%%EndPage: "11" 12 -%%Page: "12" 12 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(12) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 12 Q -0 X -(\245) 152.1 632.33 T -3 10 Q --0.22 (All widgets now have) 162.9 632.33 P -5 F --0.53 (-highlightthickness) 251.96 632.33 P -3 F --0.22 (,) 365.9 632.33 P -5 F --0.53 (-highlightbackground) 370.68 632.33 P -3 F --0.22 (, and) 490.61 632.33 P -5 F -(-) 162.9 620.33 T -(highlightcolor) 168.9 620.33 T -3 F -( options for displaying a highlight ring when the widget \050or one) 252.85 620.33 T -(of its descendants\051 has the input focus.) 162.9 608.33 T -3 12 Q -(\245) 152.1 593.33 T -3 10 Q -(Entry widgets now support justi\336cation and provide a) 162.9 593.33 T -5 F -(-show) 379.99 593.33 T -3 F -( option for \050not\051 display-) 409.97 593.33 T -(ing passwords. They will autosize to \336t their text if) 162.9 581.33 T -5 F -(-width 0) 369.17 581.33 T -3 F -( is speci\336ed.) 417.14 581.33 T -3 12 Q -(\245) 152.1 566.33 T -3 10 Q --0.16 (The label/button family of widgets now supports multiline text and justi\336cation, includ-) 162.9 566.33 P -(ing new options) 162.9 554.33 T -5 F -(-wraplength) 229.25 554.33 T -3 F -( and) 295.22 554.33 T -5 F -(-justify) 314.65 554.33 T -3 F -(. These features make the message) 361.97 554.33 T --0.04 (widget obsolete. There is also a new) 162.9 542.33 P -5 F --0.1 (-underline) 310.27 542.33 P -3 F --0.04 ( option for highlighting a character) 370.23 542.33 P -(for keyboard traversal.) 162.9 530.33 T -3 12 Q -(\245) 152.1 515.33 T -3 10 Q --0.23 (Listboxes now support all of the Motif selection modes, including single selection, mul-) 162.9 515.33 P -(tiple selection, and multiple disjoint selections, via the) 162.9 503.33 T -5 F -(-selectmode) 382.78 503.33 T -3 F -( option. They) 448.74 503.33 T -(will autosize to \336t their contents if) 162.9 491.33 T -5 F -(-width 0) 302.54 491.33 T -3 F -( or) 350.52 491.33 T -5 F -(-height 0) 363.84 491.33 T -3 F -( is speci\336ed. There are) 417.81 491.33 T -(new) 162.9 479.33 T -5 F -(see) 182.05 479.33 T -3 F -(,) 200.04 479.33 T -5 F -(bbox) 205.04 479.33 T -3 F -(, and) 229.02 479.33 T -5 F -(activate) 250.95 479.33 T -3 F -( widget commands.) 298.92 479.33 T -3 12 Q -(\245) 152.1 464.33 T -3 10 Q -(Canvas polygons now support) 162.9 464.33 T -5 F -(-outline) 286.16 464.33 T -3 F -( and) 334.14 464.33 T -5 F -(-width) 353.57 464.33 T -3 F -( options for drawing outlines.) 389.55 464.33 T -3 12 Q -(\245) 152.1 449.33 T -3 10 Q --0.03 (Scale widgets now support real values as well as integers \050see the) 162.9 449.33 P -5 F --0.08 (-resolution) 426.77 449.33 P -3 F --0.03 ( and) 492.73 449.33 P -5 F --0.54 (-digits) 162.9 437.33 P -3 F --0.22 ( options\051, and they have a) 204.88 437.33 P -5 F --0.54 (-variable) 308.73 437.33 P -3 F --0.22 ( option to link to a T) 362.7 437.33 P --0.22 (cl variable. They) 442.83 437.33 P --0.28 (have two new widget commands,) 162.9 425.33 P -5 F --0.67 (coords) 297.52 425.33 P -3 F --0.28 ( and) 333.5 425.33 P -5 F --0.67 (identify) 352.37 425.33 P -3 F --0.28 (, and their bindings are now) 399.69 425.33 P -(de\336ned in T) 162.9 413.33 T -(cl rather than being hardwired in C code as in Tk 3.6.) 210.5 413.33 T -3 12 Q -(\245) 152.1 398.33 T -3 10 Q -(Scrollbar widgets now have a new interface to the controlling widget, which provides) 162.9 398.33 T --0.04 (more \337exibility than the old style \050but the old style is still supported for compatibility\051.) 162.9 386.33 P -(There is a new option) 162.9 374.33 T -5 F -(-jump) 252 374.33 T -3 F -( to prevent continuous updates while dragging the slider) 281.98 374.33 T -(,) 505.88 374.33 T --0.24 (and a new option) 162.9 362.33 P -5 F --0.59 (-elementborderwidth) 232.98 362.33 P -3 F --0.24 ( to control the border width of the arrows) 346.92 362.33 P -(and slider separately from the widget\325) 162.9 350.33 T -(s outer border) 314.18 350.33 T -(. There are four new widget com-) 369.14 350.33 T -(mands,) 162.9 338.33 T -5 F -(activate) 193.99 338.33 T -3 F -(,) 241.97 338.33 T -5 F -(delta) 246.96 338.33 T -3 F -(,) 276.95 338.33 T -5 F -(fraction) 281.95 338.33 T -3 F -(, and) 329.92 338.33 T -5 F -(identify) 351.85 338.33 T -3 F -(, and the default bindings) 399.17 338.33 T -(are now de\336ned in T) 162.9 326.33 T -(cl rather than being hardwired in C code as in Tk 3.6.) 244.91 326.33 T -3 12 Q -(\245) 152.1 311.33 T -3 10 Q --0.13 (Menu entries now have several new con\336guration options such as) 162.9 311.33 P -5 F --0.31 (-foreground) 426.97 311.33 P -3 F --0.13 ( and) 492.93 311.33 P -5 F --0.41 (-) 162.9 299.33 P --0.41 (indicatoron) 168.9 299.33 P -3 F --0.17 (, and tear) 234.86 299.33 P --0.17 (-of) 271.23 299.33 P --0.17 (f menus have been reimplemented to be more Motif-like.) 282.7 299.33 P -(New menu entries can be created in the middle of a menu using the) 162.9 287.33 T -5 F -(insert) 434.36 287.33 T -3 F -( widget) 470.34 287.33 T -(command, and there is a) 162.9 275.33 T -5 F -(type) 262.83 275.33 T -3 F -( widget command that returns the type of a menu entry) 286.81 275.33 T -(.) 505.45 275.33 T -3 12 Q -(\245) 152.1 260.33 T -3 10 Q -(Menubuttons now have a) 162.9 260.33 T -5 F -(-indicatoron) 266.16 260.33 T -3 F -( option for displaying an option menu indi-) 338.12 260.33 T --0.38 (cator) 162.9 248.33 P --0.38 (. There is now support for option menus via the) 182.33 248.33 P -5 F --0.91 (tk_optionMenu) 370.9 248.33 P -3 F --0.38 ( procedure, and) 448.86 248.33 P -(popups are simpli\336ed with the) 162.9 236.33 T -5 F -(tk_popup) 286.44 236.33 T -3 F -( procedure.) 334.42 236.33 T -3 12 Q -(\245) 152.1 221.33 T -3 10 Q --0.03 (The variable) 162.9 221.33 P -5 F --0.07 (tk_strictMotif) 215.57 221.33 P -3 F --0.03 ( is used in more places to enforce even stricter Motif) 299.53 221.33 P -(compliance.) 162.9 209.33 T -FMENDPAGE -%%EndPage: "12" 13 -%%Page: "13" 13 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(6 Images) 98.1 668.33 T -0 F -(13) 500.99 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -98.1 623.98 512.1 627 C -152.1 625.2 512.1 625.2 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 625.49 143.1 625.49 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(6) 134.63 631 T -(Images) 152.1 631 T -3 10 Q -(Tk 4.0 contains a general-purpose image mechanism for displaying color pictures and) 152.1 607.31 T -(other complex objects. There is a new command,) 152.1 595.26 T -5 F -(image) 350.84 595.26 T -3 F -(, which may be used to create) 380.82 595.26 T -(image objects. For example, the command) 152.1 583.21 T -5 9 Q -(image create photo myFace -f) 179.1 568.88 T -(ile picture.ppm) 330.09 568.88 T -3 10 Q -(creates a new image named) 152.1 555.21 T -5 F -(myFace) 264.5 555.21 T -3 F -(. The image is of type) 300.48 555.21 T -5 F -(photo) 390.14 555.21 T -3 F -( \050a full-color represen-) 420.12 555.21 T -(tation that dithers on monochrome or color) 152.1 543.17 T -(-mapped displays\051 and the source data for the) 323.46 543.17 T -(image is in the \336le named) 152.1 531.12 T -5 F -(picture.ppm) 257.59 531.12 T -3 F -(. Once an image has been created, it can be) 323.56 531.12 T --0.15 (used in many dif) 152.1 519.07 P --0.15 (ferent places by specifying a) 218.37 519.07 P -5 F --0.36 (-image) 334.46 519.07 P -3 F --0.15 ( option. For example, the command) 370.44 519.07 P -5 9 Q -(label .l -image myFace) 179.1 504.74 T -3 10 Q -(will create a label widget that displays the image, and if) 152.1 491.07 T -5 F -(.c) 377.5 491.07 T -3 F -( is a canvas widget the com-) 389.49 491.07 T -(mand) 152.1 479.02 T -5 9 Q -(.c create image 400 200 -image myFace) 179.1 464.69 T -3 10 Q -(will create an image item in the canvas that displays) 152.1 451.02 T -5 F -(myFace) 363.06 451.02 T -3 F -(.) 399.04 451.02 T -(The image mechanism provides a great deal of \337exibility:) 170.1 439.02 T -3 12 Q -(\245) 152.1 424.02 T -3 10 Q --0.18 (Once an image has been de\336ned, it can be used in many dif) 162.9 424.02 P --0.18 (ferent places, even on dif) 397.84 424.02 P --0.18 (fer-) 497.68 424.02 P -(ent displays.) 162.9 411.98 T -3 12 Q -(\245) 152.1 396.98 T -3 10 Q -(Images provide image commands, analogous to widget commands, that can be used to) 162.9 396.98 T -(manipulate the image; any changes in an image are automatically re\337ected in all of its) 162.9 384.93 T -(instances.) 162.9 372.88 T -3 12 Q -(\245) 152.1 357.88 T -3 10 Q --0.21 (There can be many dif) 162.9 357.88 P --0.21 (ferent types of images. Tk 4.0 has two built-in types,) 251.78 357.88 P -5 F --0.51 (photo) 463.11 357.88 P -3 F --0.21 ( and) 493.1 357.88 P -5 F -(bitmap) 162.9 345.83 T -3 F -(. Other image types can be de\336ned in C as extensions \050see the documentation) 198.88 345.83 T --0.16 (for the) 162.9 333.79 P -5 F --0.39 (Tk_CreateImageType) 191.44 333.79 P -3 F --0.16 ( library procedure\051. The photo image type was imple-) 299.38 333.79 P -(mented by Paul Mackerras, based on his earlier photo widget.) 162.9 321.74 T -3 12 Q -(\245) 152.1 306.74 T -3 10 Q -(W) 162.9 306.74 T -(ithin the photo image type, there can be many dif) 171.93 306.74 T -(ferent \336le formats. In Tk 4.0, only) 368.29 306.74 T --0.11 (PPM, PGM, and GIF formats are built-in, but other formats can be added as extensions) 162.9 294.69 P -(\050see the documentation for the) 162.9 282.64 T -5 F -(Tk_CreatePhotoImageFormat) 286.97 282.64 T -3 F -( library proce-) 436.89 282.64 T -(dure\051. Readers for XPM, TIFF) 162.9 270.59 T -(, and others are available from the T) 284.23 270.59 T -(cl community) 428.41 270.59 T -(.) 483.01 270.59 T -98.1 227.24 512.1 230.26 C -152.1 228.46 512.1 228.46 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 228.75 143.1 228.75 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(7) 134.63 234.26 T -(Color management) 152.1 234.26 T -3 10 Q -(Tk 3.6 suf) 152.1 210.57 T -(fers from a relatively weak mechanism for managing colors. It uses only the) 192.73 210.57 T -(default colormap for a screen, and if all the entries in that colormap \336ll up then Tk) 152.1 198.52 T -(switches to monochrome mode and \322rounds\323 all future colors to black or white. This) 152.1 186.48 T -(approach is becoming increasingly unpleasant because of applications such as Frame and) 152.1 174.43 T -(W) 152.1 162.38 T -(eb browsers that use up all the entries in the default colormap.) 160.74 162.38 T -(Tk 4.0 has a much more powerful color management mechanism. If a colormap \336lls) 170.1 150.38 T -(up, Tk allocates future colors by picking the closest match from the available colors, so) 152.1 138.33 T -FMENDPAGE -%%EndPage: "13" 14 -%%Page: "14" 14 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(14) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X -(that it need not revert to monochrome mode. Tk also manages colors better by delaying) 152.1 632.33 T --0.3 (color allocation until colors are actually needed; in many cases, such as 3D borders, colors) 152.1 620.33 P -(are never needed. When colors are scarce Tk changes the way it displays beveled borders) 152.1 608.33 T --0.38 (so that it uses stippling instead of additional colors for the light and dark shadows. Y) 152.1 596.33 P --0.38 (ou can) 484.01 596.33 P -(\336nd out whether a colormap has \336lled up using the new command) 152.1 584.33 T -5 F -(winfo colormap-) 418.59 584.33 T -(full) 152.1 572.33 T -3 F -(.) 176.09 572.33 T --0.26 (Tk 4.0 also allows you to allocate new colormaps for toplevel and frame widgets with) 170.1 560.33 P -(the) 152.1 548.33 T -5 F -(-colormap) 166.81 548.33 T -3 F -( option, and you change the visual type in these widgets \050with the) 220.78 548.33 T -5 F -(-) 152.1 536.33 T -(visual) 158.1 536.33 T -3 F -( option\051 to take advantage of visuals other than the default visual for a screen.) 194.08 536.33 T -(New commands) 152.1 524.33 T -5 F -(winfo visualsavailable) 219.27 524.33 T -3 F -( and) 351.2 524.33 T -5 F -(wm colormapwindows) 370.63 524.33 T -3 F -( have) 478.57 524.33 T -(been added to help manage colormaps and visuals.) 152.1 512.33 T -(The default color scheme in Tk 4.0 has changed from a tan palette \050\322bisque\323\051 to a) 170.1 500.33 T -(gray palette, which seems to becoming standard for Motif. There is a new T) 152.1 488.33 T -(cl procedure) 454.78 488.33 T -5 F --0.36 (tk_setPalette) 152.1 476.33 P -3 F --0.15 ( that changes the palette of an application on the \337y) 230.06 476.33 P --0.15 (, and there is also a) 433.89 476.33 P -(procedure) 152.1 464.33 T -5 F -(tk_bisque) 194.56 464.33 T -3 F -( to restore the palette to the old bisque colors.) 248.53 464.33 T -(The Tk 3.6 color model mechanism is no longer necessary so it has been removed in) 170.1 452.33 T -(Tk 4.0. If you want to \336nd out whether a screen is monochrome or color) 152.1 440.33 T -(, you cannot use) 440.38 440.33 T -(the) 152.1 428.33 T -5 F -(tk colormodel) 166.81 428.33 T -3 F -( command anymore; use) 244.77 428.33 T -5 F -(winfo depth) 345.25 428.33 T -3 F -( instead.) 411.22 428.33 T -98.1 384.98 512.1 388 C -152.1 386.2 512.1 386.2 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 386.49 143.1 386.49 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(8) 134.63 392 T -(Event handling: \336leevent and after) 152.1 392 T -3 10 Q -(Tk 4.0 contains several improvements in the area of event handling besides those already) 152.1 368.31 T -(mentioned for bindings:) 152.1 356.31 T -3 12 Q -(\245) 152.1 341.31 T -3 10 Q -(There is a new command) 162.9 341.31 T -5 F -(f) 265.87 341.31 T -(ileevent) 271.87 341.31 T -3 F -( for performing event-driven I/O to and from) 319.84 341.31 T --0.12 (\336les. The) 162.9 329.31 P -5 F --0.29 (f) 202.35 329.31 P --0.29 (ileevent) 208.35 329.31 P -3 F --0.12 ( command is modelled very closely after Mark Diekhans\325) 256.33 329.31 P -5 F --0.29 (add-) 488.11 329.31 P -(input) 162.9 317.31 T -3 F -( extension, which has been used widely with Tk 3.6.) 192.88 317.31 T -3 12 Q -(\245) 152.1 302.31 T -3 10 Q --0.34 (The) 162.9 302.31 P -5 F --0.82 (after) 180.6 302.31 P -3 F --0.34 ( command has two new options,) 210.58 302.31 P -5 F --0.82 (idle) 339.82 302.31 P -3 F --0.34 ( and) 363.81 302.31 P -5 F --0.82 (cancel) 382.55 302.31 P -3 F --0.34 (.) 418.53 302.31 P -5 F --0.82 (After idle) 423.19 302.31 P -3 F --0.34 ( can be) 482.33 302.31 P --0.2 (used to schedule a script as an \322idle handler\323, which means it runs the next time that Tk) 162.9 290.31 P -(enters the event loop and \336nds no work to do.) 162.9 278.31 T -5 F -(After cancel) 348.06 278.31 T -3 F -( may be used to delete) 420.02 278.31 T -(a previously-scheduled) 162.9 266.31 T -5 F -(after) 257.83 266.31 T -3 F -( script, so that it will no longer be invoked.) 287.81 266.31 T -98.1 222.95 512.1 225.98 C -152.1 224.18 512.1 224.18 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 224.46 143.1 224.46 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(9) 134.63 229.98 T -(Multiple displays) 152.1 229.98 T -3 10 Q -(Although Tk has always allowed a single application to open windows on several dis-) 152.1 206.29 T -(plays, the support for multiple displays is weak in Tk 3.6. For example, many of the bind-) 152.1 194.29 T -(ings break if users work simultaneously in windows on dif) 152.1 182.29 T -(ferent displays, and) 385.94 182.29 T -(mechanisms like the selection and the input focus have insuf) 152.1 170.29 T -(\336cient support for multiple) 394.26 170.29 T -(displays.) 152.1 158.29 T -FMENDPAGE -%%EndPage: "14" 15 -%%Page: "15" 15 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(10 The send command) 98.1 668.33 T -0 F -(15) 500.99 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X --0.33 (Tk 4.0 contains numerous modi\336cations to improve the handling of multiple displays.) 170.1 632.33 P --0.18 (Several commands, such as) 152.1 620.24 P -5 F --0.44 (selection) 263.78 620.24 P -3 F --0.18 (,) 317.76 620.24 P -5 F --0.44 (send) 322.57 620.24 P -3 F --0.18 (, and) 346.55 620.24 P -5 F --0.44 (focus) 368.12 620.24 P -3 F --0.18 (, have a new) 398.1 620.24 P -5 F --0.44 (-displayof) 449.82 620.24 P -3 F -(ar) 152.1 608.15 T -(gument so that you can select a particular display) 159.69 608.15 T -(. In addition, the bindings have been) 356.12 608.15 T -(reworked to handle interactions occurring simultaneously on dif) 152.1 596.05 T -(ferent displays. W) 408.13 596.05 T -(ith Tk) 480.73 596.05 T -(4.0 it should be possible to create applications that really use multiple displays gracefully) 152.1 583.96 T -(.) 508.44 583.96 T -98.1 540.6 512.1 543.63 C -152.1 541.83 512.1 541.83 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 542.12 143.1 542.12 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(10) 127.96 547.63 T -(The send command) 152.1 547.63 T -3 10 Q --0.2 (The) 152.1 523.94 P -5 F --0.48 (send) 169.94 523.94 P -3 F --0.2 ( command has been completely overhauled for Tk 4.0 to eliminate several prob-) 193.93 523.94 P -(lems in Tk 3.6 and add a number of new features:) 152.1 511.85 T -3 12 Q -(\245) 152.1 496.85 T -3 10 Q -(Tk 3.6 aborts a) 162.9 496.85 T -5 F -(send) 225.36 496.85 T -3 F -( command if no response is received within 5 seconds; this made) 249.34 496.85 T -(it very dif) 162.9 484.75 T -(\336cult to invoke long-running commands. Tk 4.0 eliminates the timeout and) 202.14 484.75 T -(uses a dif) 162.9 472.66 T -(ferent mechanism to tell if the tar) 200.47 472.66 T -(get application has crashed.) 333.53 472.66 T -3 12 Q -(\245) 152.1 457.66 T -3 10 Q --0.36 (The) 162.9 457.66 P -5 F --0.87 (winfo interps) 180.58 457.66 P -3 F --0.36 ( command no longer returns the names of applications that have) 257.66 457.66 P -(exited or crashed.) 162.9 445.57 T -3 12 Q -(\245) 152.1 430.57 T -3 10 Q -(Asynchronous sends are possible using the) 162.9 430.57 T -5 F -(-async) 336.67 430.57 T -3 F -( switch.) 372.65 430.57 T -3 12 Q -(\245) 152.1 415.57 T -3 10 Q -(Commands can be sent to displays other than that of the root window) 162.9 415.57 T -(, using the) 439.3 415.57 T -5 F -(-) 162.9 403.47 T -(displayof) 168.9 403.47 T -3 F -( switch.) 222.87 403.47 T -3 12 Q -(\245) 152.1 388.47 T -3 10 Q -(W) 162.9 388.47 T -(indow server security is now checked on each) 171.93 388.47 T -5 F -(send) 357.89 388.47 T -3 F -(, so Tk 4.0 deals better with) 381.88 388.47 T -(changes in the security of the server) 162.9 376.38 T -(.) 306.12 376.38 T -3 12 Q -(\245) 152.1 361.38 T -3 10 Q -(More complete error information \050including the) 162.9 361.38 T -5 F -(errorCode) 356.09 361.38 T -3 F -( and) 410.06 361.38 T -5 F -(errorInfo) 429.49 361.38 T -3 F -( vari-) 483.46 361.38 T -(ables\051 is propagated back to the sender after errors.) 162.9 349.29 T -3 12 Q -(\245) 152.1 334.29 T -3 10 Q -(Y) 162.9 334.29 T -(ou can query and change the name of an application with the) 169.12 334.29 T -5 F -(tk appname) 414.48 334.29 T -3 F -( com-) 474.45 334.29 T -(mand.) 162.9 322.19 T -(Unfortunately the improvements to the Tk 4.0) 152.1 307.19 T -5 F -(send) 338.65 307.19 T -3 F -( mechanism required substantial) 362.63 307.19 T -(changes to the transport protocol for sends; this makes it impossible for Tk 4.0 applica-) 152.1 295.1 T -(tions to communicate with Tk 3.6 applications via) 152.1 283.01 T -5 F -(send) 355.04 283.01 T -3 F -(. The new transport protocol is) 379.02 283.01 T -(more \337exible than the old protocol, so it should be possible to make protocol improve-) 152.1 270.91 T -(ments in an upward-compatible way) 152.1 258.82 T -(.) 296.9 258.82 T -98.1 215.47 512.1 218.49 C -152.1 216.69 512.1 216.69 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 216.98 143.1 216.98 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(1) 128.62 222.49 T -(1) 134.63 222.49 T -(The selection and clipboard) 152.1 222.49 T -3 10 Q -(In Tk 3.6 the selection mechanism can deal only with the display of the root window and) 152.1 198.8 T --0.13 (with the primary selection; there is no support for multiple displays, secondary selections,) 152.1 186.71 P -(or the clipboard. Tk 4.0 eliminates all of these shortcomings. The) 152.1 174.61 T -5 F -(-displayof) 415.82 174.61 T -3 F -( option) 475.78 174.61 T --0.12 (can be used to specify a particular display in the selection command, and there is now full) 152.1 162.52 P -(access to all of the X selection types. Tk 4.0 also includes a new) 152.1 150.43 T -5 F -(clipboard) 411.36 150.43 T -3 F -( command) 465.33 150.43 T -(for manipulating the clipboard.) 152.1 138.33 T -FMENDPAGE -%%EndPage: "15" 16 -%%Page: "16" 16 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(16) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -98.1 623.98 512.1 627 C -152.1 625.2 512.1 625.2 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 625.49 143.1 625.49 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(12) 127.96 631 T -(Miscellaneous changes) 152.1 631 T -3 10 Q -(Here is a quick summary of the remaining changes in Tk 4.0:) 152.1 607.31 T -3 12 Q -(\245) 152.1 592.31 T -3 10 Q --0.17 (The) 162.9 592.31 P -5 F --0.42 (wish) 180.76 592.31 P -3 F --0.17 ( application has been modi\336ed so that the) 204.75 592.31 P -5 F --0.42 (-f) 371.58 592.31 P --0.42 (ile) 383.57 592.31 P -3 F --0.17 ( switch is no longer needed) 401.56 592.31 P -(or recommended. This makes) 162.9 580.31 T -5 F -(wish) 283.64 580.31 T -3 F -( just like) 307.63 580.31 T -5 F -(tclsh) 344.56 580.31 T -3 F -(, where you specify the script \336le) 374.54 580.31 T -(as the \336rst ar) 162.9 568.31 T -(gument to the program, e.g.) 214.07 568.31 T -5 F -(wish foo.tcl) 327.33 568.31 T -3 F -(. The) 399.29 568.31 T -5 F -(-f) 422.33 568.31 T -(ile) 434.32 568.31 T -3 F -( switch is still) 452.31 568.31 T -(permitted for backward compatibility) 162.9 556.31 T -(, but its use is deprecated.) 311.87 556.31 T -3 12 Q -(\245) 152.1 541.31 T -5 10 Q -(Wish) 162.9 541.31 T -3 F -( now sets the application\325) 186.89 541.31 T -(s class from the application name \050what appears in the) 288.49 541.31 T --0.37 (title bar of the window by default\051, rather than always using) 162.9 529.31 P -5 F --0.88 (Tk) 400.9 529.31 P -3 F --0.37 ( as the class as in Tk 3.6.) 412.89 529.31 P -(This makes application-speci\336c options easier to use.) 162.9 517.31 T -3 12 Q -(\245) 152.1 502.31 T -3 10 Q -(T) 162.9 502.31 T -(oplevel windows are now resizable by default, whereas in Tk 3.6 they were not. Y) 168.31 502.31 T -(ou) 496.22 502.31 T -(can use the) 162.9 490.31 T -5 F -(wm resizable) 209.8 490.31 T -3 F -( command to make windows non-reiszable.) 281.77 490.31 T -3 12 Q -(\245) 152.1 475.31 T -3 10 Q -(Tk 4.0 patches around an Xlib bug whereby long-running applications tended to reach) 162.9 475.31 T -(the end of the space of X resource ids, wrap around to 0 again, and then crash. Tk now) 162.9 463.31 T -(reuses resource identi\336ers so that wrap-around should never occur) 162.9 451.31 T -(.) 427.14 451.31 T -3 12 Q -(\245) 152.1 436.31 T -3 10 Q --0.13 (There is a new) 162.9 436.31 P -5 F --0.31 (winfo manager) 223.43 436.31 P -3 F --0.13 ( command that tells which geometry manager is con-) 301.08 436.31 P -(trolling a particular widget.) 162.9 424.31 T -3 12 Q -(\245) 152.1 409.31 T -3 10 Q -(There is a new) 162.9 409.31 T -5 F -(bell) 223.96 409.31 T -3 F -( command that does what its name suggests.) 247.94 409.31 T -3 12 Q -(\245) 152.1 394.31 T -3 10 Q -(There are new) 162.9 394.31 T -5 F -(winfo pointerx) 222.56 394.31 T -3 F -(,) 306.51 394.31 T -5 F -(winfo pointery) 311.51 394.31 T -3 F -(, and) 394.81 394.31 T -5 F -(winfo pointerxy) 416.74 394.31 T -3 F -(commands that can be used to query the position of the mouse pointer) 162.9 382.31 T -(.) 442.17 382.31 T -98.1 338.95 512.1 341.98 C -152.1 340.18 512.1 340.18 2 L -0.5 H -2 Z -0 X -0 K -N -98.1 340.46 143.1 340.46 2 L -0 Z -N -40.5 63 571.5 729 C -0 12 Q -0 X -0 K -(13) 127.96 345.98 T -(Summary of Incompatibilites) 152.1 345.98 T -3 10 Q --0.24 (This section lists all of the incompatible changes in Tk 4.0 that may require changes in T) 152.1 322.29 P --0.24 (cl) 502.62 322.29 P --0.22 (scripts written for T) 152.1 310.29 P --0.22 (cl 3.6. Each incompatibility is described in terms of the problem it pro-) 230.42 310.29 P -(duces when you run your Tk 3.6 script under Tk 4.0 and a possible work-around. Only) 152.1 298.29 T -(T) 152.1 286.29 T -(cl-level incompatibilities are covered here. For incompatible changes at the C level, see) 157.51 286.29 T -(the) 152.1 274.29 T -5 F -(README) 166.81 274.29 T -3 F -( and) 202.79 274.29 T -5 F -(changes) 222.22 274.29 T -3 F -( \336les in the distribution. The problems and solutions are) 264.2 274.29 T -(roughly in order of importance, with the most important problems \336rst.) 152.1 262.29 T -1 F -(Pr) 152.1 247.29 T -(oblem #1:) 162.46 247.29 T -3 F -(When you change the background color of a widget, a small ring in the) 206.88 247.29 T -(default background color remains around the edge of the widget.) 152.1 235.29 T -2 F -(Solution:) 170.1 223.29 T -3 F -(This is the focus traversal highlight, whose color is speci\336ed separately) 209.25 223.29 T -(from) 170.1 211.29 T -5 F -(-background) 192.03 211.29 T -3 F -(; use the) 257.99 211.29 T -5 F -(-highlightbackground) 293.8 211.29 T -3 F -( option to change the) 413.74 211.29 T -(color of the highlight. Or) 170.1 199.29 T -(, you can set) 269.92 199.29 T -5 F -(-highlightthickness) 322.38 199.29 T -3 F -( to 0 to eliminate) 436.31 199.29 T -(the traversal highlight altogether) 170.1 187.29 T -(.) 299.74 187.29 T -1 F -(Pr) 152.1 172.29 T -(oblem #2:) 162.46 172.29 T -3 F -(Bindings de\336ned for a widget no longer replace the corresponding class) 206.88 172.29 T -(bindings, so unwanted class bindings get invoked in addition to the widget bindings.) 152.1 160.29 T -FMENDPAGE -%%EndPage: "16" 17 -%%Page: "17" 17 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(13 Summary of Incompatibilites) 98.1 668.33 T -0 F -(17) 500.99 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -2 F -0 X -(Solution:) 170.1 632.33 T -3 F -(Add a) 209.25 632.33 T -5 F -(break) 235.89 632.33 T -3 F -( command at the end of the widget binding, or rework the) 265.88 632.33 T -(widget binding so that it\325) 170.1 620.33 T -(s OK for the class binding to execute.) 270.05 620.33 T -1 F -(Pr) 152.1 605.33 T -(oblem #3:) 162.46 605.33 T -3 F -(Bindings on toplevel windows are invoked when events occur for internal) 206.88 605.33 T -(windows inside the toplevels.) 152.1 593.33 T -2 F -(Solution:) 170.1 581.33 T -3 F -(Use the) 209.25 581.33 T -5 F -(%W) 242 581.33 T -3 F -( substitution to extract the name of the window where the event) 253.99 581.33 T -(actually occurred, and only execute the rest of the binding script if this matches the) 170.1 569.33 T -(name of the toplevel.) 170.1 557.33 T -1 F --0.15 (Pr) 152.1 542.33 P --0.15 (oblem #4:) 162.46 542.33 P -3 F --0.15 (The) 206.58 542.33 P -5 F --0.37 (-command) 224.46 542.33 P -3 F --0.15 ( option for a cascade menu entry is no longer invoked when) 272.44 542.33 P -(the submenu is posted.) 152.1 530.33 T -2 F -(Solution:) 170.1 518.33 T -3 F -(Use the) 209.25 518.33 T -5 F -(-postcommand) 242 518.33 T -3 F -( option for the submenu instead.) 313.96 518.33 T -1 F -(Pr) 152.1 503.33 T -(oblem #5:) 162.46 503.33 T -3 F -(The) 206.88 503.33 T -5 F -(-geometry) 224.92 503.33 T -3 F -( option is no longer supported by listboxes, frames, and) 278.89 503.33 T -(toplevels.) 152.1 491.33 T -2 F -(Solution:) 170.1 479.33 T -3 F -(Use the) 209.25 479.33 T -5 F -(-width) 242 479.33 T -3 F -( and) 277.98 479.33 T -5 F -(-height) 297.41 479.33 T -3 F -( options instead.) 339.39 479.33 T -1 F -(Pr) 152.1 464.33 T -(oblem #6:) 162.46 464.33 T -3 F -(The procedure) 206.88 464.33 T -5 F -(tk_listboxSingleSelect) 267.38 464.33 T -3 F -( no longer exists.) 399.3 464.33 T -2 F -(Solution:) 170.1 452.33 T -3 F -(Use the) 209.25 452.33 T -5 F -(-selectmode) 242 452.33 T -3 F -( option on the listbox instead.) 307.96 452.33 T -1 F -(Pr) 152.1 437.33 T -(oblem #7:) 162.46 437.33 T -3 F -(Canvases no longer have a) 206.88 437.33 T -5 F -(-scrollincrement) 315.96 437.33 T -3 F -( option.) 411.91 437.33 T -2 F -(Solution:) 170.1 425.33 T -3 F -(Use the new) 209.25 425.33 T -5 F -(-xscrollincrement) 261.15 425.33 T -3 F -( and) 363.09 425.33 T -5 F -(-yscrollincrement) 382.52 425.33 T -3 F -(options instead.) 170.1 413.33 T -1 F -(Pr) 152.1 398.33 T -(oblem #8:) 162.46 398.33 T -3 F -(The) 206.88 398.33 T -5 F -(tk colormodel) 224.92 398.33 T -3 F -( command no longer exists.) 302.88 398.33 T -2 F --0.28 (Solution:) 170.1 386.33 P -3 F --0.28 (T) 208.97 386.33 P --0.28 (o \336nd out whether a window is monochrome or color) 214.37 386.33 P --0.28 (, use) 424.34 386.33 P -5 F --0.68 (winfo depth) 444.6 386.33 P -3 F -(to extract the window\325) 170.1 374.33 T -(s depth; a depth of 1 means monochrome.) 259.76 374.33 T -1 F --0.08 (Pr) 152.1 359.33 P --0.08 (oblem #9:) 162.46 359.33 P -3 F --0.08 (The class of Tk applications is no longer) 206.72 359.33 P -5 F --0.19 (Tk) 370.97 359.33 P -3 F --0.08 (, so options speci\336ed for the) 382.96 359.33 P -5 F --0.19 (Tk) 497.69 359.33 P -3 F -(class in your) 152.1 347.33 T -5 F -(.Xdefaults) 205.12 347.33 T -3 F -( \336le are no longer used.) 265.09 347.33 T -2 F -(Solution:) 170.1 335.33 T -3 F -(Modify your) 209.25 335.33 T -5 F -(.Xdefaults) 262.55 335.33 T -3 F -( \336le \050and any T) 322.52 335.33 T -(cl code that sets options\051 to) 382.88 335.33 T -(specify the name of the application \050with the \336rst letter capitalized\051 as the class) 170.1 323.33 T -(instead of) 170.1 311.33 T -5 F -(Tk) 211.74 311.33 T -3 F -(.) 223.73 311.33 T -1 F --0.15 (Pr) 152.1 296.33 P --0.15 (oblem #10:) 162.46 296.33 P -3 F --0.15 (When text is added to a text widget just after a tagged area, the new text no) 211.57 296.33 P -(longer receives the tag.) 152.1 284.33 T -2 F --0.1 (Solution:) 170.1 272.33 P -3 F --0.1 (Explicitly tag the new text with the desired tags. If you want the tags on the) 209.15 272.33 P --0.08 (new text to be the same as those at some other point in the text, you can use the) 170.1 260.33 P -5 F --0.2 (tag) 488.31 260.33 P -(names) 170.1 248.33 T -3 F -( widget command to query existing tags.) 200.08 248.33 T -1 F -(Pr) 152.1 233.33 T -(oblem #1) 162.46 233.33 T -(1:) 200.5 233.33 T -3 F -(W) 211.33 233.33 T -(idgets appear lar) 220.36 233.33 T -(ger than they did in Tk 3.6.) 286.24 233.33 T -2 F -(Solution:) 170.1 221.33 T -3 F -(There are two issues here. The \336rst is that all widgets now have a focus tra-) 209.25 221.33 T --0.24 (versal highlight ring that turns dark when the widget has the focus; this is required for) 170.1 209.33 P -(Motif compliance but you can eliminate it by specifying a 0 value for the) 170.1 197.33 T -5 F -( -high-) 462.4 197.33 T -(lightthickness) 170.1 185.33 T -3 F -( option. The second issue is that the default padding for buttons) 254.05 185.33 T --0.17 (and menubuttons has been increased to match the sizes of Motif widgets. If you don\325) 170.1 173.33 P --0.17 (t) 506.99 173.33 P -(mind being dif) 170.1 161.33 T -(ferent from Motif, you can set the) 228.78 161.33 T -5 F -(-padx) 366.45 161.33 T -3 F -( and) 396.44 161.33 T -5 F -(-) 415.86 161.33 T -(pady) 421.86 161.33 T -3 F -( options back to) 445.85 161.33 T -FMENDPAGE -%%EndPage: "17" 18 -%%Page: "18" 18 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(18) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -3 F -0 X -(their Tk 3.6 values \050use the) 170.1 632.33 T -5 F -(conf) 281.41 632.33 T -(igure) 305.4 632.33 T -3 F -( widget command in Tk 3.6 to see what the) 335.38 632.33 T -(old values were\051.) 170.1 620.33 T -1 F -(Pr) 152.1 605.33 T -(oblem #12:) 162.46 605.33 T -3 F -(Listboxes now return the selection as a string with newlines separating the) 211.88 605.33 T -(values, rather than a T) 152.1 593.33 T -(cl, list.) 240.49 593.33 T -2 F -(Solution:) 170.1 581.33 T -3 F -(Modify your code to handle the new format. Y) 209.25 581.33 T -(ou can convert the selection) 395.06 581.33 T -(back into the old list format with a script like the following:) 170.1 569.33 T -5 9 Q -(split [selection get] \134n) 179.1 555 T -1 10 Q -(Pr) 152.1 541.33 T -(oblem #13:) 162.46 541.33 T -3 F -(Tk 4.0 applications cannot) 211.88 541.33 T -5 F -(send) 320.42 541.33 T -3 F -( to or be sent from Tk 3.6 applications.) 344.4 541.33 T -2 F -(Solution:) 170.1 529.33 T -3 F -(The only solution is to upgrade all your applications to Tk 4.0.) 209.25 529.33 T -1 F --0.17 (Pr) 152.1 514.33 P --0.17 (oblem #14:) 162.46 514.33 P -3 F --0.17 (In texts,) 211.54 514.33 P -5 F --0.4 (end) 245.91 514.33 P -3 F --0.17 ( now refers to a position just after the \336nal newline, instead of) 263.9 514.33 P -(the \336nal newline.) 152.1 502.33 T -2 F --0.08 (Solution:) 170.1 490.33 P -3 F --0.08 (If you wish to refer to the \336nal newline, use the index) 209.17 490.33 P -5 F --0.19 (end-1char) 424.98 490.33 P -3 F --0.08 ( instead) 478.95 490.33 P -(of) 170.1 478.33 T -5 F -(end) 180.92 478.33 T -3 F -(.) 198.91 478.33 T -1 F -(Pr) 152.1 463.33 T -(oblem #15:) 162.46 463.33 T -3 F -(In entry widgets,) 211.88 463.33 T -5 F -(sel.last) 281.83 463.33 T -3 F -( now refers to the character just after the last) 329.8 463.33 T -(selected one, rather than the last selected one. The second index for the) 152.1 451.33 T -5 F -(delete) 438.81 451.33 T -3 F -( widget) 474.79 451.33 T -(command has changed in the same way) 152.1 439.33 T -(.) 309.66 439.33 T -2 F -(Solution:) 170.1 427.33 T -3 F -(Add one to the values used in your scripts.) 209.25 427.33 T -1 F -(Pr) 152.1 412.33 T -(oblem #16:) 162.46 412.33 T -3 F -(Because) 211.88 412.33 T -5 F -(Any) 247.68 412.33 T -3 F -( is implicit in all bindings, bindings trigger when extra modi-) 265.67 412.33 T -(\336ers are present, whereas they didn\325) 152.1 400.33 T -(t trigger in Tk 3.6.) 296.24 400.33 T -2 F -(Solution:) 170.1 388.33 T -3 F -(In most cases it\325) 209.25 388.33 T -(s probably \336ne to ignore the extra modi\336ers. If you really) 273.93 388.33 T --0.12 (don\325) 170.1 376.33 P --0.12 (t want any actions to be taken when extra modi\336ers are present, create additional) 188.24 376.33 P -(bindings for the cases with extra modi\336ers, and specify a single blank character \050or) 170.1 364.33 T -(any script that does nothing\051 as the script for those bindings. Alternatively) 170.1 352.33 T -(, you can) 465.93 352.33 T -(use the) 170.1 340.33 T -5 F -(%s) 200.63 340.33 T -3 F -( substitution to extract the mouse and modi\336er state in the event binding,) 212.63 340.33 T -(then you can test this value for modi\336ers you do or don\325) 170.1 328.33 T -(t want.) 394.5 328.33 T -1 F -(Pr) 152.1 313.33 T -(oblem #17:) 162.46 313.33 T -3 F -(In scrollbars there is no longer a) 211.88 313.33 T -5 F -(-foreground) 343.17 313.33 T -3 F -( or) 409.13 313.33 T -5 F -(-activefore-) 422.45 313.33 T -(ground) 152.1 301.33 T -3 F -( option, and) 188.08 301.33 T -5 F -(-background) 238.05 301.33 T -3 F -( has a dif) 304.02 301.33 T -(ferent meaning.) 340.2 301.33 T -2 F --0.4 (Solution:) 170.1 289.33 P -3 F --0.4 (Use) 208.85 289.33 P -5 F --0.96 (-troughcolor) 226.49 289.33 P -3 F --0.4 ( everywhere that you used) 298.45 289.33 P -5 F --0.96 (-background) 403.87 289.33 P -3 F --0.4 ( in Tk 3.6,) 469.83 289.33 P -5 F -(-background) 170.1 277.33 T -3 F -( everywhere you used to use) 236.06 277.33 T -5 F -(-foreground) 352.08 277.33 T -3 F -(, and) 418.04 277.33 T -5 F -(-activeback-) 439.97 277.33 T -(ground) 170.1 265.33 T -3 F -( everywhere you used to use) 206.08 265.33 T -5 F -(-activeforeground) 322.1 265.33 T -3 F -(.) 424.04 265.33 T -1 F -(Pr) 152.1 250.33 T -(oblem #18:) 162.46 250.33 T -3 F -(Options for colors seem to have changed in scale widgets.) 211.88 250.33 T -2 F -(Solution:) 170.1 238.33 T -3 F -(Use) 209.25 238.33 T -5 F -(-background) 227.29 238.33 T -3 F -( where you used to use) 293.25 238.33 T -5 F -(-sliderforeground) 387.07 238.33 T -3 F -(,) 489.02 238.33 T -5 F -(-) 170.1 226.33 T -(troughcolor) 176.1 226.33 T -3 F -( where you used to use) 242.06 226.33 T -5 F -(-background) 335.88 226.33 T -3 F -(, and) 401.84 226.33 T -5 F -( -activeback-) 421.27 226.33 T -(ground) 170.1 214.33 T -3 F -( everywhere you used to use) 206.08 214.33 T -5 F -(-activeforeground) 322.1 214.33 T -3 F -(.) 424.04 214.33 T -1 F -(Pr) 152.1 199.33 T -(oblem #19:) 162.46 199.33 T -3 F -(Scale widgets no longer accept hexadecimal or octal numbers in the) 211.88 199.33 T -5 F -(set) 485.84 199.33 T -3 F -(command or the) 152.1 187.33 T -5 F -(-from) 219.55 187.33 T -3 F -( and) 249.54 187.33 T -5 F -(-to) 268.97 187.33 T -3 F -( options.) 286.96 187.33 T -2 F -(Solution:) 170.1 175.33 T -3 F -(Use) 209.25 175.33 T -5 F -(format) 227.29 175.33 T -3 F -( or) 263.27 175.33 T -5 F -(expr) 276.59 175.33 T -3 F -( to convert the values to decimal.) 300.58 175.33 T -1 F -(Pr) 152.1 160.33 T -(oblem #20:) 162.46 160.33 T -3 F -(In checkbuttons, radiobuttons, and menu entries, the) 211.88 160.33 T -5 F -(-selector) 423.4 160.33 T -3 F -( option) 477.37 160.33 T -(no longer exists.) 152.1 148.33 T -FMENDPAGE -%%EndPage: "18" 19 -%%Page: "19" 19 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(13 Summary of Incompatibilites) 98.1 668.33 T -0 F -(19) 500.99 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -2 F -0 X -(Solution:) 170.1 632.33 T -3 F -(Use) 209.25 632.33 T -5 F -(-selectcolor) 227.29 632.33 T -3 F -( instead of) 299.25 632.33 T -5 F -(-select) 343.39 632.33 T -3 F -(. T) 385.36 632.33 T -(o specify that no indicator) 395.77 632.33 T -(should be drawn at all, use the) 170.1 620.33 T -5 F -(-indicatoron) 293.9 620.33 T -3 F -( option instead of setting) 365.86 620.33 T -5 F -(-select) 467.2 620.33 T -3 F -(to an empty string.) 170.1 608.33 T -1 F --0.12 (Pr) 152.1 593.33 P --0.12 (oblem #21:) 162.46 593.33 P -3 F --0.12 (The indices of menu entries have changed, and operations on menu entry 0) 211.64 593.33 P -(no longer work.) 152.1 581.33 T -2 F -(Solution:) 170.1 569.33 T -3 F -(This is because menus now have a tearof) 209.25 569.33 T -(f entry at the top by default, and) 372.55 569.33 T -(this occupies entry 0, so your \336rst entry is now entry 1. Y) 170.1 557.33 T -(ou can either set the) 398.95 557.33 T -5 F -(-) 170.1 545.33 T -(tearoff) 176.1 545.33 T -3 F -( option to 0 to eliminate the tearof) 218.07 545.33 T -(f entry or add 1 to all the indices you) 354.2 545.33 T -(use in your scripts.) 170.1 533.33 T -1 F --0.22 (Pr) 152.1 518.33 P --0.22 (oblem #22:) 162.46 518.33 P -3 F --0.22 (The) 211.44 518.33 P -5 F --0.53 (enable) 229.26 518.33 P -3 F --0.22 ( and) 265.24 518.33 P -5 F --0.53 (disable) 284.23 518.33 P -3 F --0.22 ( widget commands are no longer supported by) 326.21 518.33 P -(menus.) 152.1 506.33 T -2 F -(Solution:) 170.1 494.33 T -3 F -(Use the) 209.25 494.33 T -5 F -(-state) 242 494.33 T -3 F -( con\336guration option instead.) 277.98 494.33 T -1 F -(Pr) 152.1 479.33 T -(oblem #23:) 162.46 479.33 T -3 F -(The) 211.88 479.33 T -5 F -(activate) 229.92 479.33 T -3 F -( and) 277.89 479.33 T -5 F -(deactivate) 297.32 479.33 T -3 F -( widget commands are no longer sup-) 357.29 479.33 T -(ported by buttons, checkbuttons, radiobuttons, and menus.) 152.1 467.33 T -2 F -(Solution:) 170.1 455.33 T -3 F -(Use the) 209.25 455.33 T -5 F -(-state) 242 455.33 T -3 F -( con\336guration option instead.) 277.98 455.33 T -1 F -(Pr) 152.1 440.33 T -(oblem #24:) 162.46 440.33 T -3 F -(Canvas arc items no longer use the) 211.88 440.33 T -5 F -(-f) 353.72 440.33 T -(ill) 365.71 440.33 T -3 F -( and) 383.7 440.33 T -5 F -(-stipple) 403.13 440.33 T -3 F -( options for) 451.11 440.33 T -(drawing when the) 152.1 428.33 T -5 F -(-style) 226.21 428.33 T -3 F -( option is) 262.19 428.33 T -5 F -(arc) 301.9 428.33 T -3 F -(.) 319.89 428.33 T -2 F -(Solution:) 170.1 416.33 T -3 F -(Use the) 209.25 416.33 T -5 F -(-outline) 242 416.33 T -3 F -( and) 289.97 416.33 T -5 F -(-outlinestipple) 309.4 416.33 T -3 F -( options instead.) 399.35 416.33 T -1 F --0.29 (Pr) 152.1 401.33 P --0.29 (oblem #25:) 162.46 401.33 P -3 F --0.29 (The variable) 211.29 401.33 P -5 F --0.7 (tkVersion) 263.43 401.33 P -3 F --0.29 ( no longer exists \050it has been obsolete for several) 317.4 401.33 P -(releases\051.) 152.1 389.33 T -2 F -(Solution:) 170.1 377.33 T -3 F -(Use) 209.25 377.33 T -5 F -(tk_version) 227.29 377.33 T -3 F -( instead.) 287.26 377.33 T -1 F -(Pr) 152.1 362.33 T -(oblem #26:) 162.46 362.33 T -3 F -(The syntax of the) 211.88 362.33 T -5 F -(scan) 284.05 362.33 T -3 F -( widget commands for texts has changed.) 308.03 362.33 T -2 F -(Solution:) 170.1 350.33 T -3 F -(Modify your code to use the new syntax.) 209.25 350.33 T -1 F -(Pr) 152.1 335.33 T -(oblem #27:) 162.46 335.33 T -5 F -(wish) 211.88 335.33 T -3 F -( no longer recognizes the) 235.86 335.33 T -5 F -(-help) 338.84 335.33 T -3 F -( option.) 368.82 335.33 T -2 F -(Solution:) 170.1 323.33 T -3 F -(Implement this option yourself in your) 209.25 323.33 T -5 F -(wish) 366.38 323.33 T -3 F -( scripts.) 390.37 323.33 T -1 F -(Pr) 152.1 308.33 T -(oblem #28:) 162.46 308.33 T -3 F -(Tk 4.0 always prints real numbers such as canvas coordinates with a deci-) 211.88 308.33 T -(mal point. This can cause syntax errors if you later use them in situations where integers) 152.1 296.33 T -(are expected.) 152.1 284.33 T -2 F -(Solution:) 170.1 272.33 T -3 F -(Change your code so that real numbers work OK, or use the) 209.25 272.33 T -5 F -(expr) 451.57 272.33 T -3 F -( com-) 475.55 272.33 T -(mand \050with the) 170.1 260.33 T -5 F -(round) 233.12 260.33 T -3 F -( function\051 to convert the numbers to integers.) 263.1 260.33 T -1 F -(Pr) 152.1 245.33 T -(oblem #29:) 162.46 245.33 T -3 F -(The) 211.88 245.33 T -5 F -(pack info) 229.92 245.33 T -3 F -( command returns dif) 283.89 245.33 T -(ferent information, and) 369.48 245.33 T -5 F -(pack) 464.41 245.33 T -(newinfo) 152.1 233.33 T -3 F -( no longer exists.) 194.08 233.33 T -2 F -(Solution:) 170.1 221.33 T -3 F -(Use) 209.25 221.33 T -5 F -(pack info) 227.29 221.33 T -3 F -( where you used to use) 281.26 221.33 T -5 F -(pack newinfo) 375.08 221.33 T -3 F -(.) 447.04 221.33 T -5 F -(Pack info) 452.04 221.33 T -3 F -(was obsolete, so it has been eliminated.) 170.1 209.33 T -1 F -(Pr) 152.1 194.33 T -(oblem #30:) 162.46 194.33 T -3 F -(The) 211.88 194.33 T -5 F -(view) 229.92 194.33 T -3 F -( widget command for entries no longer exists, nor does the) 253.9 194.33 T -5 F -(-) 152.1 182.33 T -(scrollcommand) 158.1 182.33 T -3 F -( option.) 236.05 182.33 T -2 F --0.29 (Solution:) 170.1 170.33 P -3 F --0.29 (Use) 208.96 170.33 P -5 F --0.69 (xview) 226.71 170.33 P -3 F --0.29 ( where you used to use) 256.7 170.33 P -5 F --0.69 (view) 348.8 170.33 P -3 F --0.29 (; use) 372.78 170.33 P -5 F --0.69 (-xscrollcommand) 393.31 170.33 P -3 F --0.29 ( where) 483.26 170.33 P -(you used to use) 170.1 158.33 T -5 F -(-scrollcommand) 234.51 158.33 T -3 F -(.) 318.46 158.33 T -FMENDPAGE -%%EndPage: "19" 20 -%%Page: "20" 20 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(20) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -1 F -0 X -(Pr) 152.1 632.33 T -(oblem #31:) 162.46 632.33 T -3 F -(The) 211.88 632.33 T -5 F -(-padx) 229.92 632.33 T -3 F -( and) 259.9 632.33 T -5 F -(-pady) 279.33 632.33 T -3 F -( options are ignored for the button family of wid-) 309.31 632.33 T -(gets if a bitmap or image is being displayed: the padding is always 0.) 152.1 620.02 T -2 F --0.27 (Solution:) 170.1 608.02 P -3 F --0.27 (Pack the button inside a frame, with extra padding in the frame. Or) 208.98 608.02 P --0.27 (, redo the) 472.94 608.02 P -(image or bitmap to incorporate padding into it.) 170.1 595.71 T -1 F -(Pr) 152.1 580.71 T -(oblem #32:) 162.46 580.71 T -3 F -(In radiobuttons, the) 211.88 580.71 T -5 F -(-value) 292.38 580.71 T -3 F -( option no longer defaults to the name of the) 328.36 580.71 T -(widget; it defaults to an empty string.) 152.1 568.4 T -2 F -(Solution:) 170.1 556.4 T -3 F -(Specify the widget\325) 209.25 556.4 T -(s name explicitly as the value of the option.) 286.98 556.4 T -1 F -(Pr) 152.1 541.4 T -(oblem #33:) 162.46 541.4 T -3 F -(The) 211.88 541.4 T -5 F -(-menu) 229.92 541.4 T -3 F -( option for menubuttons and cascade menu entries may refer) 259.9 541.4 T -(only to a child of the menubutton or menu.) 152.1 529.08 T -2 F -(Solution:) 170.1 517.08 T -3 F -(Rename menus to meet this requirement.) 209.25 517.08 T -1 F -(Pr) 152.1 502.08 T -(oblem #34:) 162.46 502.08 T -3 F -(The interpretation of) 211.88 502.08 T -5 F -(@y) 297.09 502.08 T -3 F -( in menus has changed: it never returns) 309.08 502.08 T -5 F -(none) 467.86 502.08 T -3 F -(,) 491.84 502.08 T -(even if the y-coordinate is outside the menu \050it returns the index of the closest entry\051.) 152.1 489.77 T -2 F -(Solution:) 170.1 477.77 T -3 F -(If you care about this distinction, check the y-coordinate explicitly to see if) 209.25 477.77 T --0.17 (it is less than 0 or greater than or equal to the window\325) 170.1 465.46 P --0.17 (s height \050use) 385.7 465.46 P -5 F --0.41 (winfo height) 438.21 465.46 P -3 F -(to get the height\051.) 170.1 453.15 T -1 F --0.13 (Pr) 152.1 438.15 P --0.13 (oblem #35:) 162.46 438.15 P -3 F --0.13 (The) 211.62 438.15 P -5 F --0.3 (invoke) 229.54 438.15 P -3 F --0.13 ( and) 265.52 438.15 P -5 F --0.3 (activate) 284.7 438.15 P -3 F --0.13 ( widget commands for menus no longer post) 332.67 438.15 P -(cascaded submenus.) 152.1 425.83 T -2 F -(Solution:) 170.1 413.83 T -3 F -(Use the) 209.25 413.83 T -5 F -(postcascade) 242 413.83 T -3 F -( widget command to post submenus.) 307.96 413.83 T -1 F -(Pr) 152.1 398.83 T -(oblem #36:) 162.46 398.83 T -3 F -(The selection tar) 211.88 398.83 T -(gets) 278.31 398.83 T -5 F -(APPLICATION) 296.91 398.83 T -3 F -( and) 362.87 398.83 T -5 F -(WINDOW_NAME) 382.3 398.83 T -3 F -( are no longer) 448.27 398.83 T -(supported.) 152.1 386.52 T -2 F -(Solution:) 170.1 374.52 T -3 F -(Use tar) 209.25 374.52 T -(gets) 237.65 374.52 T -5 F -(TK_APPLICATION) 256.25 374.52 T -3 F -( and) 340.21 374.52 T -5 F -(TK_WINDOW) 359.64 374.52 T -3 F -( instead.) 413.61 374.52 T -1 F -(Pr) 152.1 359.52 T -(oblem #37:) 162.46 359.52 T -3 F -(There is no longer a default focus.) 211.88 359.52 T -2 F -(Solution:) 170.1 347.52 T -3 F -(None: modify your code not to depend on this feature.) 209.25 347.52 T -1 F -(Pr) 152.1 332.52 T -(oblem #38:) 162.46 332.52 T -3 F -(The) 211.88 332.52 T -5 F -(focus) 229.92 332.52 T -3 F -( command now returns an empty string to indicate that the) 259.9 332.52 T -(application doesn\325) 152.1 320.21 T -(t have the input focus, instead of) 225.48 320.21 T -5 F -(none) 358.17 320.21 T -3 F -(.) 382.15 320.21 T -2 F -(Solution:) 170.1 308.21 T -3 F -(Modify your code to check for an empty string instead of) 209.25 308.21 T -5 F -(none) 440.47 308.21 T -3 F -(.) 464.46 308.21 T -1 F -(Pr) 152.1 293.21 T -(oblem #39:) 162.46 293.21 T -5 F -(FocusIn) 211.88 293.21 T -3 F -( and) 253.85 293.21 T -5 F -(FocusOut) 273.28 293.21 T -3 F -( events are delivered to more windows than) 321.26 293.21 T -(they used to be.) 152.1 280.9 T -2 F --0.02 (Solution:) 170.1 268.9 P -3 F --0.02 (Modify your code to use the new set of events. The old event set was some-) 209.23 268.9 P -(what bizarre, and the new set matches more closely what happens elsewhere, such as) 170.1 256.58 T -(with) 170.1 244.27 T -5 F -(Enter) 190.37 244.27 T -3 F -( and) 220.35 244.27 T -5 F -(Leave) 239.78 244.27 T -3 F -( events.) 269.77 244.27 T -1 F --0.28 (Pr) 152.1 229.27 P --0.28 (oblem #40:) 162.46 229.27 P -5 F --0.67 (wm maxsize) 211.32 229.27 P -3 F --0.28 ( and) 270.62 229.27 P -5 F --0.67 (wm minsize) 289.49 229.27 P -3 F --0.28 ( no longer accept empty ar) 348.79 229.27 P --0.28 (guments. This) 453.52 229.27 P -(means that you cannot use these commands to make windows non-resizable.) 152.1 216.96 T -2 F -(Solution:) 170.1 204.96 T -3 F -(Use the) 209.25 204.96 T -5 F -(wm resizable) 242 204.96 T -3 F -( command to make windows resizable.) 313.96 204.96 T -1 F -(Pr) 152.1 189.96 T -(oblem #41:) 162.46 189.96 T -3 F -(In the placer) 211.88 189.96 T -(, if you specify both) 261.43 189.96 T -5 F -(-x) 344.15 189.96 T -3 F -( and) 356.15 189.96 T -5 F -(-relx) 375.58 189.96 T -3 F -( then they add, instead of) 405.56 189.96 T -(the most recent speci\336cation replacing the earlier one. Ditto for) 152.1 177.65 T -5 F -(-y) 407.74 177.65 T -3 F -( and) 419.73 177.65 T -5 F -(-rely) 439.16 177.65 T -3 F -(,) 468.5 177.65 T -5 F -(-width) 473.49 177.65 T -3 F -(and) 152.1 165.33 T -5 F -(-relwidth) 169.03 165.33 T -3 F -(, and) 223 165.33 T -5 F -(-height) 244.93 165.33 T -3 F -( and) 286.91 165.33 T -5 F -(-relheight) 306.33 165.33 T -3 F -(.) 366.3 165.33 T -2 F -(Solution:) 170.1 153.33 T -3 F -(If you no longer want one of these options to be used, set it to 0 explicitly) 209.25 153.33 T -(.) 503.14 153.33 T -1 F -(Pr) 152.1 138.33 T -(oblem #42:) 162.46 138.33 T -3 F -(The command \322) 211.88 138.33 T -5 F -(focus none) 276.27 138.33 T -3 F -(\323 doesn\325) 336.24 138.33 T -(t work in Tk 4.0.) 369.64 138.33 T -FMENDPAGE -%%EndPage: "20" 21 -%%Page: "21" 21 -612 792 0 FMBEGINPAGE -4 10 Q -0 X -0 K -(13 Summary of Incompatibilites) 98.1 668.33 T -0 F -(21) 500.99 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -2 F -0 X -(Solution:) 170.1 632.33 T -3 F -(Create a dummy widget that is never mapped and set the focus to that wid-) 209.25 632.33 T -(get.) 170.1 620.33 T -1 F -(Pr) 152.1 605.33 T -(oblem #43:) 162.46 605.33 T -5 F -(%D) 211.88 605.33 T -3 F -( substitutions are no longer supported in bindings, nor are the event) 223.87 605.33 T -(types) 152.1 593.33 T -5 F -(CirculateRequest) 175.7 593.33 T -3 F -(,) 271.64 593.33 T -5 F -(Conf) 276.64 593.33 T -(igureRequest) 300.63 593.33 T -3 F -(,) 372.59 593.33 T -5 F -(MapRequest) 377.59 593.33 T -3 F -(, and) 437.55 593.33 T -5 F -(Resiz-) 459.48 593.33 T -(eRequest) 152.1 581.33 T -3 F -(.) 200.07 581.33 T -2 F --0.25 (Solution:) 170.1 569.33 P -3 F --0.25 (Use the name of the display instead of %D to identify a display; you can get) 209 569.33 P -(the display name with the) 170.1 557.33 T -5 F -(winfo screen) 275.31 557.33 T -3 F -( command. The desupported event types) 347.27 557.33 T -(never really worked anyway) 170.1 545.33 T -(, so there should be no code that depends on them.) 282.96 545.33 T -1 F -(Pr) 152.1 530.33 T -(oblem #44:) 162.46 530.33 T -5 F -(%) 211.88 530.33 T -3 F -( binding substitutions that return window identi\336ers, such as) 217.87 530.33 T -5 F -(%a) 461.63 530.33 T -3 F -( and) 473.62 530.33 T -5 F -(%S) 493.05 530.33 T -3 F -(,) 505.05 530.33 T -(now produce hexadecimal results instead of decimal.) 152.1 518.33 T -2 F -(Solution:) 170.1 506.33 T -3 F -(Use the) 209.25 506.33 T -5 F -(format) 242 506.33 T -3 F -( command to turn them back to decimal.) 277.98 506.33 T -1 F -(Pr) 152.1 491.33 T -(oblem #45:) 162.46 491.33 T -5 F -(Enter) 211.88 491.33 T -3 F -(,) 241.46 491.33 T -5 F -(Leave) 246.46 491.33 T -3 F -(,) 276.44 491.33 T -5 F -(FocusIn) 281.44 491.33 T -3 F -(, and) 323.42 491.33 T -5 F -(FocusOut) 345.34 491.33 T -3 F -( events with detail) 393.32 491.33 T -5 F -(Notify-) 468.83 491.33 T -(Inferior) 152.1 479.33 T -3 F -( are now ignored by the binding mechanism, so they\325re not visible to T) 200.07 479.33 T -(cl) 483.08 479.33 T -(scripts.) 152.1 467.33 T -2 F --0.13 (Solution:) 170.1 455.33 P -3 F --0.13 (In most cases, T) 209.12 455.33 P --0.13 (cl scripts work better if these bindings are ignored. Y) 273 455.33 P --0.13 (ou can) 483.49 455.33 P -(still use C code to access these events if you really need them. Or) 170.1 443.33 T -(, create bindings on) 431.18 443.33 T --0.33 (the inferior windows and use) 170.1 431.33 P -5 F --0.8 (NotifyAncestor) 286.96 431.33 P -3 F --0.33 ( bindings on the children instead of) 370.91 431.33 P -5 F -(NotifyInferior) 170.1 419.33 T -3 F -( bindings on the parent.) 254.05 419.33 T -FMENDPAGE -%%EndPage: "21" 22 -%%Page: "22" 22 -612 792 0 FMBEGINPAGE -0 10 Q -0 X -0 K -(22) 98.1 668.33 T -4 F -(Tk4.0 Overview and Porting Guide) 359.34 668.33 T -98.1 660.6 512.1 660.6 2 L -0.25 H -0 Z -N -98.1 135 512.1 639 R -7 X -V -FMENDPAGE -%%EndPage: "22" 23 -%%Trailer -%%BoundingBox: 0 0 612 792 -%%Pages: 22 1 -%%DocumentFonts: Helvetica-Bold -%%+ Times-Bold -%%+ Times-Italic -%%+ Times-Roman -%%+ Helvetica -%%+ Courier -%%+ Courier-Oblique Index: doc/tk_mac.n ================================================================== --- doc/tk_mac.n +++ doc/tk_mac.n @@ -216,15 +216,21 @@ The Aqua/Mac OS X defines additional dialogs that applications should support. .TP \fB::tk::mac::standardAboutPanel\fR . -Brings the standard Cocoa about panel to the front, with all its information -filled in from your application bundle files (standard about panel with no -options specified). See Apple Technote TN2179 and the AppKit documentation for --[NSApplication orderFrontStandardAboutPanelWithOptions:] for details on the -Info.plist keys and app bundle files used by the about panel. +Brings the standard Cocoa about panel to the front with information filled in +from the application bundle files. The panel displays the application icon and +the values associated to the info.plist keys named CFBundleName, +CFBundleShortVersionString, NSAboutPanelOptionVersion and +NSHumanReadableCopyright. If a file named \fICredits.html\fR or +\fICredits.rtf\fR exists in the bundle's Resources directory then its contents +will be displayed in a scrolling text box at the bottom of the dialog. See the +documentation for -[NSApplication orderFrontStandardAboutPanelWithOptions:] +for more details. A hook is also provided for a custom About dialog. If a Tcl +proc named tkAboutDialog is defined in the main interpreter then that +procedure will be called instead of opening the standardAboutPanel. .SH "SYSTEM CONFIGURATION" .PP There are a number of additional global configuration options that control the details of how Tk renders by default. .TP Index: doc/tkvars.n ================================================================== --- doc/tkvars.n +++ doc/tkvars.n @@ -24,11 +24,11 @@ file that is normally processed whenever a Tk application starts up, plus other files containing procedures that implement default behaviors for widgets. .RS .PP -The initial value of \fBtcl_library\fR is set when Tk is added to +The initial value of \fBtk_library\fR is set when Tk is added to an interpreter; this is done by searching several different directories until one is found that contains an appropriate Tk startup script. If the \fBTK_LIBRARY\fR environment variable exists, then the directory it names is checked first. If \fBTK_LIBRARY\fR is not set or does not refer to an appropriate @@ -48,11 +48,11 @@ The patch level is incremented for each new release or patch, and it uniquely identifies an official version of Tk. .RS .PP This value is normally the same as the result of -.QW "\fBpackage require\fR \fBTk\fR" . +.QW "\fBpackage require\fR \fBtk\fR" . .RE .TP \fBtk_strictMotif\fR . This variable is set to zero by default. Index: doc/toplevel.n ================================================================== --- doc/toplevel.n +++ doc/toplevel.n @@ -38,11 +38,13 @@ .VE "8.7, TIP262" .OP \-class class Class Specifies a class for the window. This class will be used when querying the option database for the window's other options, and it will also be used later for -other purposes such as bindings. +other purposes such as bindings. Some window managers display the +class name for windows in their dock while some others display the +window title. The \fB\-class\fR option may not be changed with the \fBconfigure\fR widget command. .OP \-colormap colormap Colormap Specifies a colormap to use for the window. The value may be either \fBnew\fR, in which case a new colormap is Index: doc/ttk_button.n ================================================================== --- doc/ttk_button.n +++ doc/ttk_button.n @@ -46,12 +46,14 @@ .\" .OP \-anchor anchor Anchor .\" .OP \-relief relief Relief .SH "WIDGET COMMAND" .PP In addition to the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -commands, buttons support the following additional widget commands: +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +button widgets support the following additional commands: .TP \fIpathName \fBinvoke\fR Invokes the command associated with the button. .SH "STANDARD STYLES" .PP Index: doc/ttk_checkbutton.n ================================================================== --- doc/ttk_checkbutton.n +++ doc/ttk_checkbutton.n @@ -35,13 +35,14 @@ The name of a global variable whose value is linked to the widget. Defaults to the widget pathname if not specified. .SH "WIDGET COMMAND" .PP In addition to the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -commands, checkbuttons support the following additional -widget commands: +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +checkbutton widgets support the following additional commands: .TP \fIpathname\fB invoke\fR Toggles between the selected and deselected states and evaluates the associated \fB\-command\fR. If the widget is currently selected, sets the \fB\-variable\fR Index: doc/ttk_combobox.n ================================================================== --- doc/ttk_combobox.n +++ doc/ttk_combobox.n @@ -53,19 +53,15 @@ .OP \-width width Width Specifies an integer value indicating the desired width of the entry window, in average-size characters of the widget's font. .SH "WIDGET COMMAND" .PP -The following subcommands are possible for combobox widgets: -'\".TP -'\"\fIpathName \fBcget\fR \fIoption\fR -'\"Returns the current value of the specified \fIoption\fR. -'\"See \fIttk::widget(n)\fR. -'\".TP -'\"\fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -'\"Modify or query widget options. -'\"See \fIttk::widget(n)\fR. +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +combobox widgets support the following additional commands: .TP \fIpathName \fBcurrent\fR ?\fInewIndex\fR? If \fInewIndex\fR is supplied, sets the combobox value to the element at position \fInewIndex\fR in the list of \fB\-values\fR (in addition to integers, the \fBend\fR index is supported and indicates @@ -73,41 +69,22 @@ Otherwise, returns the index of the current value in the list of \fB\-values\fR or \fB\-1\fR if the current value does not appear in the list. .TP \fIpathName \fBget\fR Returns the current value of the combobox. -'\".TP -'\"\fIpathName \fBidentify \fIx y\fR -'\"Returns the name of the element at position \fIx\fR, \fIy\fR. -'\"See \fIttk::widget(n)\fR. -'\".TP -'\"\fIpathName \fBinstate \fIstateSpec\fR ?\fIscript\fR? -'\"Test the widget state. -'\"See \fIttk::widget(n)\fR. .TP \fIpathName \fBset\fR \fIvalue\fR Sets the value of the combobox to \fIvalue\fR. -'\".TP -'\"\fIpathName \fBstate\fR ?\fIstateSpec\fR? -'\"Modify or query the widget state. -'\"See \fIttk::widget(n)\fR. .PP The combobox widget also supports the following \fBttk::entry\fR -widget subcommands (see \fIttk::entry(n)\fR for details): +widget commands: .DS .ta 5.5c 11c \fBbbox\fR \fBdelete\fR \fBicursor\fR \fBindex\fR \fBinsert\fR \fBselection\fR \fBxview\fR .DE -The combobox widget also supports the following generic \fBttk::widget\fR -widget subcommands (see \fIttk::widget(n)\fR for details): -.DS -.ta 5.5c 11c -\fBcget\fR \fBconfigure\fR \fBidentify\fR -\fBinstate\fR \fBstate\fR -.DE .SH "VIRTUAL EVENTS" .PP The combobox widget generates a \fB<>\fR virtual event when the user selects an element from the list of values. If the selection action unposts the listbox, Index: doc/ttk_entry.n ================================================================== --- doc/ttk_entry.n +++ doc/ttk_entry.n @@ -137,11 +137,15 @@ .QW \fBsel.l\fR . In general, out-of-range indices are automatically rounded to the nearest legal value. .SH "WIDGET COMMAND" .PP -The following subcommands are possible for entry widgets: +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR, \fBstyle\fR and \fBxview\fR +commands (see \fBttk::widget\fR), +entry widgets support the following additional commands: .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 @@ -148,18 +152,10 @@ 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. -'\".TP -'\"\fIpathName \fBcget\fR \fIoption\fR -'\"Returns the current value of the specified \fIoption\fR. -'\"See \fIttk::widget(n)\fR. -'\".TP -'\"\fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -'\"Modify or query widget options. -'\"See \fIttk::widget(n)\fR. .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 @@ -172,25 +168,17 @@ Returns the entry's string. .TP \fIpathName \fBicursor \fIindex\fR Arrange for the insert cursor to be displayed just before the character given by \fIindex\fR. Returns the empty string. -'\".TP -'\"\fIpathName \fBidentify \fIx y\fR -'\"Returns the name of the element at position \fIx\fR, \fIy\fR, -'\"or the empty string if the coordinates are outside the window. .TP \fIpathName \fBindex\fI index\fR Returns the numerical index corresponding to \fIindex\fR. .TP \fIpathName \fBinsert \fIindex string\fR Insert \fIstring\fR just before the character indicated by \fIindex\fR. Returns the empty string. -'\".TP -'\"\fIpathName \fBinstate \fIstatespec\fR ?\fIscript\fR? -'\"Test the widget state. -'\"See \fIttk::widget(n)\fR. .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 @@ -209,29 +197,17 @@ 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. .RE -'\".TP -'\"\fIpathName \fBstate\fR ?\fIstateSpec\fR? -'\"Modify or query the widget state. -'\"See \fIttk::widget(n)\fR. .TP \fIpathName \fBvalidate\fR Force revalidation, independent of the conditions specified by the \fB\-validate\fR option. Returns 0 if validation fails, 1 if it succeeds. Sets or clears the \fBinvalid\fR state accordingly. See \fBVALIDATION\fR below for more details. -.PP -The entry widget also supports the following generic \fBttk::widget\fR -widget subcommands (see \fIttk::widget(n)\fR for details): -.DS -.ta 5.5c 11c -\fBcget\fR \fBconfigure\fR \fBidentify\fR -\fBinstate\fR \fBstate\fR \fBxview\fR -.DE .SH VALIDATION .PP The \fB\-validate\fR, \fB\-validatecommand\fR, and \fB\-invalidcommand\fR options are used to enable entry widget validation. .SS "VALIDATION MODES" Index: doc/ttk_frame.n ================================================================== --- doc/ttk_frame.n +++ doc/ttk_frame.n @@ -33,13 +33,14 @@ If specified, the widget's requested width in pixels. .OP \-height height Height If specified, the widget's requested height in pixels. .SH "WIDGET COMMAND" .PP -Supports the standard widget commands -\fBconfigure\fR, \fBcget\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR; -see \fIttk::widget(n)\fR. +Frame widgets support the standard commands +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +(see \fBttk::widget\fR). .SH "NOTES" .PP Note that if the \fBpack\fR, \fBgrid\fR, or other geometry managers are used to manage the children of the \fBframe\fR, by the GM's requested size will normally take precedence Index: doc/ttk_image.n ================================================================== --- doc/ttk_image.n +++ doc/ttk_image.n @@ -77,17 +77,20 @@ based on the \fB\-border\fR option. The \fB\-border\fR divides the image into 9 regions: four fixed corners, top and left edges (which may be tiled horizontally), left and right edges (which may be tiled vertically), and the central area (which may be tiled in both directions). +.PP +An image element that is not meant to claim any space (for example when used +as a background image) should use \fB\-width 0\fR and \fB\-height 0\fR. .SH "EXAMPLE" .PP .CS set img1 [image create photo \-file button.png] set img2 [image create photo \-file button-pressed.png] set img3 [image create photo \-file button-active.png] -style element create Button.button image \e +ttk::style element create Button.button image \e [list $img1 pressed $img2 active $img3] \e \-border {2 4} \-sticky we .CE .SH "SEE ALSO" ttk::intro(n), ttk::style(n), ttk_vsapi(n), image(n), photo(n) Index: doc/ttk_label.n ================================================================== --- doc/ttk_label.n +++ doc/ttk_label.n @@ -40,13 +40,14 @@ then automatic wrapping is not performed; otherwise the text is split into lines such that no line is longer than the specified value. .SH "WIDGET COMMAND" .PP -Supports the standard widget commands -\fBconfigure\fR, \fBcget\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR; -see \fIttk::widget(n)\fR. +Label widgets support the standard commands +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +(see \fBttk::widget\fR). .SH "STYLING OPTIONS" .PP The class name for a \fBttk::label\fP is \fBTLabel\fP. .PP Dynamic states: \fBdisabled\fP, \fBreadonly\fP. Index: doc/ttk_labelframe.n ================================================================== --- doc/ttk_labelframe.n +++ doc/ttk_labelframe.n @@ -60,13 +60,14 @@ sets the keyboard focus to the first child of the \fBttk::labelframe\fR widget. .OP \-width width Width If specified, the widget's requested width in pixels. .SH "WIDGET COMMAND" .PP -Supports the standard widget commands -\fBconfigure\fR, \fBcget\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR; -see \fIttk::widget(n)\fR. +Labelframe widgets support the standard commands +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +(see \fBttk::widget\fR). .SH "STYLING OPTIONS" .PP The class name for a \fBttk::labelframe\fP is \fBTLabelframe\fP. The text label has a class of \fBTLabelframe.Label\fP. Index: doc/ttk_menubutton.n ================================================================== --- doc/ttk_menubutton.n +++ doc/ttk_menubutton.n @@ -36,13 +36,14 @@ .\" not documented: may go away: .\" .OP \-anchor anchor Anchor .\" .OP \-padding padding Pad .SH "WIDGET COMMAND" .PP -Menubutton widgets support the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -methods. No other widget methods are used. +Menubutton widgets support the standard commands +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +(see \fBttk::widget\fR). .SH "STANDARD STYLES" .PP \fBTtk::menubutton\fR widgets support the \fBToolbutton\fR style in all standard themes, which is useful for creating widgets for toolbars. .SH "STYLING OPTIONS" Index: doc/ttk_notebook.n ================================================================== --- doc/ttk_notebook.n +++ doc/ttk_notebook.n @@ -100,23 +100,23 @@ .QW \fBend\fR , which returns the number of tabs (only valid for .QW "\fIpathname \fBindex\fR" ). .SH "WIDGET COMMAND" +.PP +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +notebook widgets support the following additional commands: .TP \fIpathname \fBadd \fIwindow\fR ?\fIoptions...\fR? Adds a new tab to the notebook. See \fBTAB OPTIONS\fR for the list of available \fIoptions\fR. If \fIwindow\fR is currently managed by the notebook but hidden, it is restored to its previous position. .TP -\fIpathname \fBconfigure\fR ?\fIoptions\fR? -See \fIttk::widget(n)\fR. -.TP -\fIpathname \fBcget \fIoption\fR -See \fIttk::widget(n)\fR. -.TP \fIpathname \fBforget \fItabid\fR Removes the tab specified by \fItabid\fR, unmaps and unmanages the associated window. .TP \fIpathname \fBhide \fItabid\fR @@ -149,23 +149,17 @@ or the name of a managed subwindow. If \fIsubwindow\fR is already managed by the notebook, moves it to the specified position. See \fBTAB OPTIONS\fR for the list of available options. .TP -\fIpathname \fBinstate \fIstatespec \fR?\fIscript...\fR? -See \fIttk::widget(n)\fR. -.TP \fIpathname \fBselect\fR ?\fItabid\fR? Selects the specified tab. The associated content window will be displayed, and the previously-selected window (if different) is unmapped. If \fItabid\fR is omitted, returns the widget name of the currently selected pane. .TP -\fIpathname \fBstate\fR ?\fIstatespec\fR? -See \fIttk::widget(n)\fR. -.TP \fIpathname \fBtab \fItabid\fR ?\fI\-option \fR?\fIvalue ...\fR Query or modify the options of the specific tab. If no \fI\-option\fR is specified, returns a dictionary of the tab option values. If one \fI\-option\fR is specified, Index: doc/ttk_panedwindow.n ================================================================== --- doc/ttk_panedwindow.n +++ doc/ttk_panedwindow.n @@ -46,13 +46,16 @@ .OP \-weight weight Weight An integer specifying the relative stretchability of the pane. When the paned window is resized, the extra space is added or subtracted to each pane proportionally to its \fB\-weight\fR. .SH "WIDGET COMMAND" -Supports the standard \fBconfigure\fR, \fBcget\fR, \fBstate\fR, -and \fBinstate\fR commands; see \fIttk::widget(n)\fR for details. -Additional commands: +.PP +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +panedwindow widgets support the following additional commands: .TP \fIpathname \fBadd \fIsubwindow options...\fR Adds a new pane to the window. See \fBPANE OPTIONS\fR for the list of available options. .TP @@ -104,18 +107,10 @@ .\" Full story: "total size" is either the -height (resp -width), .\" or the actual window height (resp actual window width), .\" depending on which changed most recently. Returns the new position of sash number \fIindex\fR. .\" Full story: new position may be different than the requested position. -.PP -The panedwindow widget also supports the following generic \fBttk::widget\fR -widget subcommands (see \fIttk::widget(n)\fR for details): -.DS -.ta 5.5c 11c -\fBcget\fR \fBconfigure\fR -\fBinstate\fR \fBstate\fR -.DE .SH "VIRTUAL EVENTS" .PP The panedwindow widget generates an \fB<>\fR virtual event on LeaveNotify/NotifyInferior events, because Tk does not execute binding scripts for events when the pointer crosses from a parent to a child. The Index: doc/ttk_progressbar.n ================================================================== --- doc/ttk_progressbar.n +++ doc/ttk_progressbar.n @@ -64,33 +64,22 @@ If specified to an existing variable, the \fB\-value\fR of the progress bar is automatically set to the value of the variable whenever the latter is modified. .SH "WIDGET COMMAND" .PP -.TP -\fIpathName \fBcget \fIoption\fR -Returns the current value of the specified \fIoption\fR; see \fIttk::widget(n)\fR. -.TP -\fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -Modify or query widget options; see \fIttk::widget(n)\fR. -.TP -\fIpathName \fBidentify \fIx y\fR -Returns the name of the element at position \fIx\fR, \fIy\fR. -See \fIttk::widget(n)\fR. -.TP -\fIpathName \fBinstate \fIstatespec\fR ?\fIscript\fR? -Test the widget state; see \fIttk::widget(n)\fR. +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +progressbar widgets support the following additional commands: .TP \fIpathName \fBstart\fR ?\fIinterval\fR? Begin autoincrement mode: schedules a recurring timer event that calls \fBstep\fR every \fIinterval\fR milliseconds. If omitted, \fIinterval\fR defaults to 50 milliseconds (20 steps/second). .TP -\fIpathName \fBstate\fR ?\fIstateSpec\fR? -Modify or query the widget state; see \fIttk::widget(n)\fR. -.TP \fIpathName \fBstep\fR ?\fIamount\fR? Increments the \fB\-value\fR by \fIamount\fR. \fIamount\fR defaults to 1.0 if omitted. .TP \fIpathName \fBstop\fR Index: doc/ttk_radiobutton.n ================================================================== --- doc/ttk_radiobutton.n +++ doc/ttk_radiobutton.n @@ -35,13 +35,14 @@ The name of a global variable whose value is linked to the widget. Default value is \fB::selectedButton\fR. .SH "WIDGET COMMAND" .PP In addition to the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -commands, radiobuttons support the following additional -widget commands: +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +radiobutton widgets support the following additional commands: .TP \fIpathname\fB invoke\fR Sets the \fB\-variable\fR to the \fB\-value\fR, selects the widget, and evaluates the associated \fB\-command\fR. Returns the result of the \fB\-command\fR, or the empty Index: doc/ttk_scale.n ================================================================== --- doc/ttk_scale.n +++ doc/ttk_scale.n @@ -49,59 +49,40 @@ value of the variable changes, the scale will update to reflect this value. Whenever the scale is manipulated interactively, the variable will be modified to reflect the scale's new value. .SH "WIDGET COMMAND" .PP -.TP -\fIpathName \fBcget \fIoption\fR -. -Returns the current value of the specified \fIoption\fR; see -\fIttk::widget(n)\fR. -.TP -\fIpathName \fBconfigure \fR?\fIoption\fR? ?\fIvalue option value ...\fR? -. -Modify or query widget options; see \fIttk::widget(n)\fR. +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +scale widgets support the following additional commands: .TP \fIpathName \fBget \fR?\fIx y\fR? -. Get the current value of the \fB\-value\fR option, or the value corresponding to the coordinates \fIx,y\fR if they are specified. \fIX\fR and \fIy\fR are pixel coordinates relative to the scale widget origin. .TP -\fIpathName \fBidentify \fIx y\fR -Returns the name of the element at position \fIx\fR, \fIy\fR. -See \fIttk::widget(n)\fR. -.TP -\fIpathName \fBinstate \fIstatespec\fR ?\fIscript\fR? -. -Test the widget state; see \fIttk::widget(n)\fR. -.TP \fIpathName \fBset \fIvalue\fR -. Set the value of the widget (i.e. the \fB\-value\fR option) to \fIvalue\fR. The value will be clipped to the range given by the \fB\-from\fR and \fB\-to\fR options. Note that setting the linked variable (i.e. the variable named in the \fB\-variable\fR option) does not cause such clipping. -.TP -\fIpathName \fBstate\fR ?\fIstateSpec\fR? -. -Modify or query the widget state; see \fIttk::widget(n)\fR. .SH "INTERNAL COMMANDS" .PP .TP \fIpathName \fBcoords \fR?\fIvalue\fR? -. Get the coordinates corresponding to \fIvalue\fR, or the coordinates corresponding to the current value of the \fB\-value\fR option if \fIvalue\fR is omitted. .SH "STYLING OPTIONS" .PP The class name for a \fBttk::scale\fP is \fBTScale\fP. .PP Dynamic states: \fBactive\fP. .PP -\fBTProgressbar\fP styling options configurable with \fBttk::style\fP +\fBTScale\fP styling options configurable with \fBttk::style\fP are: .PP \fB\-background\fP \fIcolor\fP .br \fB\-borderwidth\fP \fIamount\fP Index: doc/ttk_scrollbar.n ================================================================== --- doc/ttk_scrollbar.n +++ doc/ttk_scrollbar.n @@ -45,36 +45,25 @@ .OP \-orient orient Orient One of \fBhorizontal\fR or \fBvertical\fR. Specifies the orientation of the scrollbar. .SH "WIDGET COMMAND" .PP -.TP -\fIpathName \fBcget \fIoption\fR -Returns the current value of the specified \fIoption\fR; see \fIttk::widget(n)\fR. -.TP -\fIpathName \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -Modify or query widget options; see \fIttk::widget(n)\fR. +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +commands (see \fBttk::widget\fR), +scrollbar widgets support the following additional commands: .TP \fIpathName \fBget\fR Returns the scrollbar settings in the form of a list whose elements are the arguments to the most recent \fBset\fR widget command. .TP -\fIpathName \fBidentify \fIx y\fR -Returns the name of the element at position \fIx\fR, \fIy\fR. -See \fIttk::widget(n)\fR. -.TP -\fIpathName \fBinstate \fIstatespec\fR ?\fIscript\fR? -Test the widget state; see \fIttk::widget(n)\fR. -.TP \fIpathName \fBset \fIfirst last\fR This command is normally invoked by the scrollbar's associated widget from an \fB\-xscrollcommand\fR or \fB\-yscrollcommand\fR callback. Specifies the visible range to be displayed. \fIfirst\fR and \fIlast\fR are real fractions between 0 and 1. -.TP -\fIpathName \fBstate\fR ?\fIstateSpec\fR? -Modify or query the widget state; see \fIttk::widget(n)\fR. .SH "INTERNAL COMMANDS" .PP The following widget commands are used internally by the \fBTScrollbar\fP widget class bindings. .TP Index: doc/ttk_separator.n ================================================================== --- doc/ttk_separator.n +++ doc/ttk_separator.n @@ -24,13 +24,14 @@ .OP \-orient orient Orient One of \fBhorizontal\fR or \fBvertical\fR. Specifies the orientation of the separator. .SH "WIDGET COMMAND" .PP -Separator widgets support the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -methods. No other widget methods are used. +Separator widgets support the standard commands +\fBcget\fR, \fBconfigure\fR, \fBidentify element\fR, \fBinstate\fR, +\fBstate\fR and \fBstyle\fR +(see \fBttk::widget\fR). .PP .SH "STYLING OPTIONS" .PP The class name for a \fBttk::separator\fP is \fBTSeparator\fP. .PP Index: doc/ttk_sizegrip.n ================================================================== --- doc/ttk_sizegrip.n +++ doc/ttk_sizegrip.n @@ -21,13 +21,14 @@ \-class \-cursor \-style \-takefocus .SE .SH "WIDGET COMMAND" .PP -Sizegrip widgets support the standard -\fBcget\fR, \fBconfigure\fR, \fBidentify\fR, \fBinstate\fR, and \fBstate\fR -methods. No other widget methods are used. +Sizegrip widgets support the standard commands +\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 size grip by default. Adding a \fBttk::sizegrip\fR there is harmless, since Index: doc/ttk_style.n ================================================================== --- doc/ttk_style.n +++ doc/ttk_style.n @@ -13,11 +13,11 @@ \fBttk::style\fR \fIoption\fR ?\fIargs\fR? .BE .SH NOTES .PP See also the Tcl'2004 conference presentation, -available at https://tktable.sourceforge.net/tile/tile-tcl2004.pdf +available at http://tktable.sourceforge.net/tile/tile-tcl2004.pdf .SH DEFINITIONS .PP Each widget is assigned a \fIstyle\fR, which specifies the set of elements making up the widget and how they are arranged, along with dynamic and default @@ -25,16 +25,24 @@ By default, the style name is the same as the widget's class; this may be overridden by the \fB\-style\fR option. .PP A \fItheme\fR is a collection of elements and styles which controls the overall look and feel of an application. +The +.QW . +style is the theme root style on which derived styles are based. .SH DESCRIPTION .PP The \fBttk::style\fR command takes the following arguments: .TP \fBttk::style configure \fIstyle\fR ?\fI\-option\fR ?\fIvalue option value...\fR? ? Sets the default value of the specified option(s) in \fIstyle\fR. +If \fIstyle\fR does not exist, it is created. +If only \fIstyle\fR and \fI-option\fR are specified, get the default value +for option \fI-option\fR of style \fIstyle\fR. +If only \fIstyle\fR is specified, get the default value for all options +of style \fIstyle\fR. .TP \fBttk::style element\fR \fIargs\fR .RS .TP \fBttk::style element create\fR \fIelementName\fR \fItype\fR ?\fIargs...\fR? @@ -66,16 +74,22 @@ .QW normal state). If the \fIdefault\fR argument is present, it is used as a fallback value in case no specification for \fI\-option\fR is found. .\" Otherwise -- signal error? return empty string? Leave unspecified for now. +If \fIstyle\fR does not exist, it is created. .TP \fBttk::style map \fIstyle\fR ?\fI\-option\fB { \fIstatespec value...\fB }\fR? -Sets dynamic values of the specified option(s) in \fIstyle\fR. +Sets dynamic (state dependent) values of the specified option(s) in \fIstyle\fR. Each \fIstatespec / value\fR pair is examined in order; the value corresponding to the first matching \fIstatespec\fR is used. +If \fIstyle\fR does not exist, it is created. +If only \fIstyle\fR and \fI-option\fR are specified, get the dynamic values +for option \fI-option\fR of style \fIstyle\fR. +If only \fIstyle\fR is specified, get the dynamic values for all options +of style \fIstyle\fR. .TP \fBttk::style theme\fR \fIargs\fR .RS .TP \fBttk::style theme create\fR \fIthemeName\fR ?\fB\-parent \fIbasedon\fR? ?\fB\-settings \fIscript...\fR ? @@ -91,10 +105,14 @@ \fBttk::style theme settings \fIthemeName\fR \fIscript\fR Temporarily sets the current theme to \fIthemeName\fR, evaluate \fIscript\fR, then restore the previous theme. Typically \fIscript\fR simply defines styles and elements, though arbitrary Tcl code may appear. +.TP +\fBttk::style theme styles\fR ?\fIthemeName\fR? +Returns a list of all styles in \fIthemeName\fR. If \fIthemeName\fR +is omitted, the current theme is used. .TP \fBttk::style theme use\fR ?\fIthemeName\fR? Without an argument the result is the name of the current theme. Otherwise this command sets the current theme to \fIthemeName\fR, and refreshes all widgets. Index: doc/ttk_treeview.n ================================================================== --- doc/ttk_treeview.n +++ doc/ttk_treeview.n @@ -74,38 +74,92 @@ If \fBnone\fR, the selection will not be changed. .PP Note that application code and tag bindings can set the selection however they wish, regardless of the value of \fB\-selectmode\fR. .RE +.OP \-selecttype selectType SelectType +Controls how the built-in class bindings manage the selection. +One of \fBitem\fR or \fBcell\fR. .OP \-show show Show A list containing zero or more of the following values, specifying which elements of the tree to display. .RS .IP \fBtree\fR Display tree labels in column #0. .IP \fBheadings\fR Display the heading row. .PP -The default is \fBtree headings\fR, i.e., show all elements. +The default is \fBtree headings\fR. .PP \fBNOTE:\fR Column #0 always refers to the tree column, even if \fB\-show tree\fR is not specified. .RE +.OP \-striped striped Striped +Boolean specifying zebra striped item coloring. +Note: +Striped items uses the \fB\-stripedbackground\fR option if set by the theme or a tag. +If not supported by the current theme, it will not show. +.OP \-titlecolumns titleColumns TitleColumns +Number of display columns at the left that should not be scrolled. The tree column counts, even +if \fB\-show tree\fR is not specified. Thus for value N of this option, column #N is +the first one that is scrollable. Default is 0. +.OP \-titleitems titleItems TitleItems +Number of items at the top that should not be vertically scrolled. Default is 0. .SH "WIDGET COMMAND" .PP +In addition to the standard +\fBcget\fR, \fBconfigure\fR, \fBinstate\fR, +\fBstate\fR, \fBstyle\fR, \fBxview\fR and \fByview\fR +commands (see \fBttk::widget\fR), +treeview widgets support the following additional commands: .TP \fIpathname \fBbbox \fIitem\fR ?\fIcolumn\fR? Returns the bounding box (relative to the treeview widget's window) of the specified \fIitem\fR in the form \fIx y width height\fR. -If \fIcolumn\fR is specified, returns the bounding box of that cell. If the \fIitem\fR is not visible -(i.e., if it is a descendant of a closed item or is scrolled offscreen), +(i.e., if it is a descendant of a closed item or is vertically scrolled offscreen), returns the empty list. +If \fIcolumn\fR is specified and is not hidden (by the \fB\-displaycolumns\fR option), +returns the bounding box of that cell within \fIitem\fR (even if the cell +is horizontally scrolled offscreen). +.TP +\fIpathname \fBcellselection\fR ?\fIselop arg ...\fR? +Manages cell selection. Cell selection is independent from item selection +handled by the \fBselection\fR command. A cell is given by a list of two +elements, item and column. +For the rectangle versions of commands, the cells must be in displayed columns. +Any change to \fB\-columns\fR clears the cell selection. +A \fIcellList\fR argument may be a single cell or a list of cells. +If \fIselop\fR is not specified, returns the list of selected cells. +Otherwise, \fIselop\fR is one of the following: +.RS +.TP +\fIpathname \fBcellselection set \fIcellList\fR +\fIcellList\fR becomes the new cell selection. +.TP +\fIpathname \fBcellselection set \fIfirstCell\fR \fIlastCell\fR +The rectangle defined becomes the new cell selection. +.TP +\fIpathname \fBcellselection add \fIcellList\fR +Add \fIcellList\fR to the cell selection +.TP +\fIpathname \fBcellselection add \fIfirstCell\fR \fIlastCell\fR +The rectangle defined is added to the cell selection. +.TP +\fIpathname \fBcellselection remove \fIcellList\fR +Remove \fIcellList\fR from the cell selection +.TP +\fIpathname \fBcellselection remove \fIfirstCell\fR \fIlastCell\fR +The rectangle defined is removed from the cell selection. +.TP +\fIpathname \fBcellselection toggle \fIcellList\fR +Toggle the cell selection state of each cell in \fIcellList\fR. .TP -\fIpathname \fBcget \fIoption\fR -Returns the current value of the specified \fIoption\fR; see \fIttk::widget(n)\fR. +\fIpathname \fBcellselection toggle \fIfirstCell\fR \fIlastCell\fR +Toggle the cell selection state of each cell in the rectangle defined. +.RE .TP \fIpathname \fBchildren \fIitem\fR ?\fInewchildren\fR? If \fInewchildren\fR is not specified, returns the list of children belonging to \fIitem\fR. .RS @@ -130,10 +184,11 @@ .TP \fB\-id \fIname\fR The column name. This is a read-only option. For example, [\fI$pathname \fBcolumn #\fIn \fB\-id\fR] returns the data column associated with display column #\fIn\fR. +The tree column has -id \fB#0\fR. .TP \fB\-anchor \fIanchor\fR Specifies how the text in this column should be aligned with respect to the cell. \fIAnchor\fR is one of \fBn\fR, \fBne\fR, \fBe\fR, \fBse\fR, @@ -141,30 +196,31 @@ .TP \fB\-minwidth \fIminwidth\fR The minimum width of the column in pixels. The treeview widget will not make the column any smaller than \fB\-minwidth\fR when the widget is resized or the user drags a -column separator. Default is 20 pixels. +heading column separator. Default is 20 pixels. +.TP +\fB\-separator \fIboolean\fR +Specifies whether or not a column separator should be drawn to the right +of the column. Default is false. .TP \fB\-stretch \fIboolean\fR Specifies whether or not the column width should be adjusted -when the widget is resized or the user drags a column separator. +when the widget is resized or the user drags a heading column separator. \fIBoolean\fR may have any of the forms accepted by \fBTcl_GetBoolean\fR. By default columns are stretchable. .TP \fB\-width \fIwidth\fR The width of the column in pixels. Default is 200 pixels. The specified column width may be changed by Tk in order to honor \fB\-stretch\fR and/or \fB\-minwidth\fR, or when the widget is resized or the user drags a -column separator. +heading column separator. .PP Use \fIpathname column #0\fR to configure the tree column. .RE .TP -\fIpathname \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? -Modify or query widget options; see \fIttk::widget(n)\fR. -.TP \fIpathname \fBdelete \fIitemList\fR Deletes each of the items in \fIitemList\fR and all of their descendants. The root item may not be deleted. See also: \fBdetach\fR. .TP @@ -229,17 +285,22 @@ .IP tree The tree area. .IP cell A data cell. .RE +.TP \fIpathname \fBidentify item \fIx y\fR Returns the item ID of the item at position \fIy\fR. .TP \fIpathname \fBidentify column \fIx y\fR Returns the display column identifier of the cell at position \fIx\fR. The tree column has ID \fB#0\fR. .TP +\fIpathname \fBidentify cell \fIx y\fR +Returns the cell identifier of the cell at position \fIx y\fR. +A cell identifier is a list of item ID and column ID. +.TP \fIpathname \fBidentify element \fIx y\fR The element at position \fIx,y\fR. .TP \fIpathname \fBidentify row \fIx y\fR Obsolescent synonym for \fIpathname \fBidentify item\fR. @@ -270,13 +331,10 @@ \fIpathname \fBinsert\fR returns the item identifier of the newly created item. See \fBITEM OPTIONS\fR for the list of available options. .RE .TP -\fIpathname \fBinstate \fIstatespec\fR ?\fIscript\fR? -Test the widget state; see \fIttk::widget(n)\fR. -.TP \fIpathname \fBitem \fIitem\fR ?\fI\-option \fR?\fIvalue \-option value...\fR? Query or modify the options for the specified \fIitem\fR. If no \fI\-option\fR is specified, returns a dictionary of option/value pairs. If a single \fI\-option\fR is specified, @@ -311,10 +369,12 @@ sets all of \fIitem\fR's ancestors to \fB\-open true\fR, and scrolls the widget if necessary so that \fIitem\fR is within the visible portion of the tree. .TP \fIpathname \fBselection\fR ?\fIselop itemList\fR? +Manages item selection. Item selection is independent from cell selection +handled by the \fBcellselection\fR command. If \fIselop\fR is not specified, returns the list of selected items. Otherwise, \fIselop\fR is one of the following: .RS .TP \fIpathname \fBselection set \fIitemList\fR @@ -336,14 +396,17 @@ With two arguments, returns the current value of the specified \fIcolumn\fR. With three arguments, sets the value of column \fIcolumn\fR in item \fIitem\fR to the specified \fIvalue\fR. See also \fBCOLUMN IDENTIFIERS\fR. .TP -\fIpathname \fBstate\fR ?\fIstateSpec\fR? -Modify or query the widget state; see \fIttk::widget(n)\fR. -.TP \fIpathName \fBtag \fIargs...\fR +Manages tags. Tags can be set on items as well as on cells. +The set of tags is shared between items and cells. However item tagging is +independent from cell tagging (for instance adding a tag on an item does +not also add this tag on the cells in that item). Cell tags take precedence +over item tags when drawing. +The following subcommands are supported: .RS .TP \fIpathName \fBtag add \fItag items\fR Adds the specified \fItag\fR to each of the listed \fIitems\fR. If \fItag\fR is already present for a particular item, @@ -352,10 +415,12 @@ \fIpathName \fBtag bind \fItagName \fR?\fIsequence\fR? ?\fIscript\fR? Add a Tk binding script for the event sequence \fIsequence\fR to the tag \fItagName\fR. When an X event is delivered to an item, binding scripts for each of the item's \fB\-tags\fR are evaluated in order as per \fIbindtags(n)\fR. +If the event can be associated with a cell (i.e. mouse events) any +bindings for the cell's \fB\-tags\fR are evaluated as well. .RS .PP \fB\fR, \fB\fR, and virtual events are sent to the focus item. \fB