Hex Artifact Content

Artifact 108adb813014bef62f61cd11a999cb35d05d9915:


0000: 2f 2a 20 0a 20 2a 20 74 6b 43 6d 64 73 2e 63 20  /* . * tkCmds.c 
0010: 28 43 54 6b 29 20 2d 2d 0a 20 2a 0a 20 2a 09 54  (CTk) --. *. *.T
0020: 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e  his file contain
0030: 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  s a collection o
0040: 66 20 54 6b 2d 72 65 6c 61 74 65 64 20 54 63 6c  f Tk-related Tcl
0050: 20 63 6f 6d 6d 61 6e 64 73 0a 20 2a 09 74 68 61   commands. *.tha
0060: 74 20 64 69 64 6e 27 74 20 66 69 74 20 69 6e 20  t didn't fit in 
0070: 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 66  any particular f
0080: 69 6c 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 6b  ile of the toolk
0090: 69 74 2e 0a 20 2a 0a 20 2a 20 43 6f 70 79 72 69  it.. *. * Copyri
00a0: 67 68 74 20 28 63 29 20 31 39 39 30 2d 31 39 39  ght (c) 1990-199
00b0: 34 20 54 68 65 20 52 65 67 65 6e 74 73 20 6f 66  4 The Regents of
00c0: 20 74 68 65 20 55 6e 69 76 65 72 73 69 74 79 20   the University 
00d0: 6f 66 20 43 61 6c 69 66 6f 72 6e 69 61 2e 0a 20  of California.. 
00e0: 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  * Copyright (c) 
00f0: 31 39 39 34 2d 31 39 39 35 20 53 75 6e 20 4d 69  1994-1995 Sun Mi
0100: 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 2e  crosystems, Inc.
0110: 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63  . * Copyright (c
0120: 29 20 31 39 39 34 2d 31 39 39 35 20 43 6c 65 76  ) 1994-1995 Clev
0130: 65 6c 61 6e 64 20 43 6c 69 6e 69 63 20 46 6f 75  eland Clinic Fou
0140: 6e 64 61 74 69 6f 6e 0a 20 2a 0a 20 2a 20 53 65  ndation. *. * Se
0150: 65 20 74 68 65 20 66 69 6c 65 20 22 6c 69 63 65  e the file "lice
0160: 6e 73 65 2e 74 65 72 6d 73 22 20 66 6f 72 20 69  nse.terms" for i
0170: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 73  nformation on us
0180: 61 67 65 20 61 6e 64 20 72 65 64 69 73 74 72 69  age and redistri
0190: 62 75 74 69 6f 6e 0a 20 2a 20 6f 66 20 74 68 69  bution. * of thi
01a0: 73 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20  s file, and for 
01b0: 61 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46 20  a DISCLAIMER OF 
01c0: 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e 0a  ALL WARRANTIES..
01d0: 20 2a 0a 20 2a 20 40 28 23 29 20 24 49 64 3a 20   *. * @(#) $Id: 
01e0: 63 74 6b 2e 73 68 61 72 2c 76 20 31 2e 35 30 20  ctk.shar,v 1.50 
01f0: 31 39 39 36 2f 30 31 2f 31 35 20 31 34 3a 34 37  1996/01/15 14:47
0200: 3a 31 36 20 61 6e 64 72 65 77 6d 20 45 78 70 20  :16 andrewm Exp 
0210: 61 6e 64 72 65 77 6d 20 24 0a 20 2a 2f 0a 0a 23  andrewm $. */..#
0220: 69 6e 63 6c 75 64 65 20 22 74 6b 50 6f 72 74 2e  include "tkPort.
0230: 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 74 6b 49  h".#include "tkI
0240: 6e 74 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 3c  nt.h".#include <
0250: 65 72 72 6e 6f 2e 68 3e 0a 0a 2f 2a 0a 20 2a 20  errno.h>../*. * 
0260: 46 6f 72 77 61 72 64 20 64 65 63 6c 61 72 61 74  Forward declarat
0270: 69 6f 6e 73 20 66 6f 72 20 70 72 6f 63 65 64 75  ions for procedu
0280: 72 65 73 20 64 65 66 69 6e 65 64 20 6c 61 74 65  res defined late
0290: 72 20 69 6e 20 74 68 69 73 20 66 69 6c 65 3a 0a  r in this file:.
02a0: 20 2a 2f 0a 0a 73 74 61 74 69 63 20 63 68 61 72   */..static char
02b0: 20 2a 09 09 57 61 69 74 56 61 72 69 61 62 6c 65   *..WaitVariable
02c0: 50 72 6f 63 20 5f 41 4e 53 49 5f 41 52 47 53 5f  Proc _ANSI_ARGS_
02d0: 28 28 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69  ((ClientData cli
02e0: 65 6e 74 44 61 74 61 2c 0a 09 09 09 20 20 20 20  entData,....    
02f0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
0300: 72 70 2c 20 63 68 61 72 20 2a 6e 61 6d 65 31 2c  rp, char *name1,
0310: 20 63 68 61 72 20 2a 6e 61 6d 65 32 2c 0a 09 09   char *name2,...
0320: 09 20 20 20 20 69 6e 74 20 66 6c 61 67 73 29 29  .    int flags))
0330: 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 09 09 57  ;.static void..W
0340: 61 69 74 57 69 6e 64 6f 77 50 72 6f 63 20 5f 41  aitWindowProc _A
0350: 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c 69 65 6e  NSI_ARGS_((Clien
0360: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61  tData clientData
0370: 2c 0a 09 09 09 20 20 20 20 58 45 76 65 6e 74 20  ,....    XEvent 
0380: 2a 65 76 65 6e 74 50 74 72 29 29 3b 0a 0a 73 74  *eventPtr));..st
0390: 61 74 69 63 20 69 6e 74 09 09 47 65 74 46 6f 63  atic int..GetFoc
03a0: 75 73 4f 6b 20 5f 41 4e 53 49 5f 41 52 47 53 5f  usOk _ANSI_ARGS_
03b0: 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e  ((Tcl_Interp *in
03c0: 74 65 72 70 2c 0a 09 09 09 20 20 20 20 54 6b 57  terp,....    TkW
03d0: 69 6e 64 6f 77 20 2a 77 69 6e 50 74 72 2c 20 69  indow *winPtr, i
03e0: 6e 74 20 2a 66 6c 61 67 50 74 72 29 29 3b 0a 73  nt *flagPtr));.s
03f0: 74 61 74 69 63 20 63 68 61 72 20 65 72 72 6f 72  tatic char error
0400: 5f 62 75 66 66 65 72 5b 32 30 30 5d 3b 0a 0c 0a  _buffer[200];...
0410: 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*. *-----------
0420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20  -----------. *. 
0460: 2a 20 54 6b 5f 42 65 6c 6c 43 6d 64 20 2d 2d 0a  * Tk_BellCmd --.
0470: 20 2a 0a 20 2a 09 54 68 69 73 20 70 72 6f 63 65   *. *.This proce
0480: 64 75 72 65 20 69 73 20 69 6e 76 6f 6b 65 64 20  dure is invoked 
0490: 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20 22  to process the "
04a0: 62 65 6c 6c 22 20 54 63 6c 20 63 6f 6d 6d 61 6e  bell" Tcl comman
04b0: 64 2e 0a 20 2a 09 53 65 65 20 74 68 65 20 75 73  d.. *.See the us
04c0: 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  er documentation
04d0: 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20   for details on 
04e0: 77 68 61 74 20 69 74 20 64 6f 65 73 2e 0a 20 2a  what it does.. *
04f0: 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a 09  . * Results:. *.
0500: 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72  A standard Tcl r
0510: 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 64  esult.. *. * Sid
0520: 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53 65  e effects:. *.Se
0530: 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75 6d  e the user docum
0540: 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d  entation.. *. *-
0550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0590: 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 69 6e 74 0a 54  -----. */..int.T
05a0: 6b 5f 42 65 6c 6c 43 6d 64 28 63 6c 69 65 6e 74  k_BellCmd(client
05b0: 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 61 72  Data, interp, ar
05c0: 67 63 2c 20 61 72 67 76 29 0a 20 20 20 20 43 6c  gc, argv).    Cl
05d0: 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44  ientData clientD
05e0: 61 74 61 3b 09 2f 2a 20 4d 61 69 6e 20 77 69 6e  ata;./* Main win
05f0: 64 6f 77 20 61 73 73 6f 63 69 61 74 65 64 20 77  dow associated w
0600: 69 74 68 20 69 6e 74 65 72 70 72 65 74 65 72 2e  ith interpreter.
0610: 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74 65   */.    Tcl_Inte
0620: 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20  rp *interp;../* 
0630: 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65  Current interpre
0640: 74 65 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74 20  ter. */.    int 
0650: 61 72 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62 65  argc;.../* Numbe
0660: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20  r of arguments. 
0670: 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 2a 61 72  */.    char **ar
0680: 67 76 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e 74  gv;../* Argument
0690: 20 73 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a 20   strings. */.{. 
06a0: 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77     Tk_Window tkw
06b0: 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64 6f 77 29  in = (Tk_Window)
06c0: 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20   clientData;.   
06d0: 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 68 3b 0a   size_t length;.
06e0: 0a 20 20 20 20 69 66 20 28 28 61 72 67 63 20 21  .    if ((argc !
06f0: 3d 20 31 29 20 26 26 20 28 61 72 67 63 20 21 3d  = 1) && (argc !=
0700: 20 33 29 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65   3)) {..Tcl_Appe
0710: 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  ndResult(interp,
0720: 20 22 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   "wrong # args: 
0730: 73 68 6f 75 6c 64 20 62 65 20 5c 22 22 2c 20 61  should be \"", a
0740: 72 67 76 5b 30 5d 2c 0a 09 09 22 20 3f 2d 64 69  rgv[0],..." ?-di
0750: 73 70 6c 61 79 6f 66 20 77 69 6e 64 6f 77 3f 5c  splayof window?\
0760: 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c  "", (char *) NUL
0770: 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f  L);..return TCL_
0780: 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 0a 20 20  ERROR;.    }..  
0790: 20 20 69 66 20 28 61 72 67 63 20 3d 3d 20 33 29    if (argc == 3)
07a0: 20 7b 0a 09 6c 65 6e 67 74 68 20 3d 20 73 74 72   {..length = str
07b0: 6c 65 6e 28 61 72 67 76 5b 31 5d 29 3b 0a 09 69  len(argv[1]);..i
07c0: 66 20 28 28 6c 65 6e 67 74 68 20 3c 20 32 29 20  f ((length < 2) 
07d0: 7c 7c 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76  || (strncmp(argv
07e0: 5b 31 5d 2c 20 22 2d 64 69 73 70 6c 61 79 6f 66  [1], "-displayof
07f0: 22 2c 20 6c 65 6e 67 74 68 29 20 21 3d 20 30 29  ", length) != 0)
0800: 29 20 7b 0a 09 20 20 20 20 54 63 6c 5f 41 70 70  ) {..    Tcl_App
0810: 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70  endResult(interp
0820: 2c 20 22 62 61 64 20 6f 70 74 69 6f 6e 20 5c 22  , "bad option \"
0830: 22 2c 20 61 72 67 76 5b 31 5d 2c 0a 09 09 20 20  ", argv[1],...  
0840: 20 20 22 5c 22 3a 20 6d 75 73 74 20 62 65 20 2d    "\": must be -
0850: 64 69 73 70 6c 61 79 6f 66 22 2c 20 28 63 68 61  displayof", (cha
0860: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 20 20 20  r *) NULL);..   
0870: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f   return TCL_ERRO
0880: 52 3b 0a 09 7d 0a 09 74 6b 77 69 6e 20 3d 20 54  R;..}..tkwin = T
0890: 6b 5f 4e 61 6d 65 54 6f 57 69 6e 64 6f 77 28 69  k_NameToWindow(i
08a0: 6e 74 65 72 70 2c 20 61 72 67 76 5b 32 5d 2c 20  nterp, argv[2], 
08b0: 74 6b 77 69 6e 29 3b 0a 09 69 66 20 28 74 6b 77  tkwin);..if (tkw
08c0: 69 6e 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 20  in == NULL) {.. 
08d0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52     return TCL_ER
08e0: 52 4f 52 3b 0a 09 7d 0a 20 20 20 20 7d 0a 20 20  ROR;..}.    }.  
08f0: 20 20 43 74 6b 44 69 73 70 6c 61 79 42 65 6c 6c    CtkDisplayBell
0900: 28 54 6b 5f 44 69 73 70 6c 61 79 28 74 6b 77 69  (Tk_Display(tkwi
0910: 6e 29 29 3b 0a 20 20 20 20 43 74 6b 5f 44 69 73  n));.    Ctk_Dis
0920: 70 6c 61 79 46 6c 75 73 68 28 54 6b 5f 44 69 73  playFlush(Tk_Dis
0930: 70 6c 61 79 28 74 6b 77 69 6e 29 29 3b 0a 20 20  play(tkwin));.  
0940: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b    return TCL_OK;
0950: 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d  .}.../*. *------
0960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
09a0: 0a 20 2a 0a 20 2a 20 54 6b 5f 42 69 6e 64 43 6d  . *. * Tk_BindCm
09b0: 64 20 2d 2d 0a 20 2a 0a 20 2a 09 54 68 69 73 20  d --. *. *.This 
09c0: 70 72 6f 63 65 64 75 72 65 20 69 73 20 69 6e 76  procedure is inv
09d0: 6f 6b 65 64 20 74 6f 20 70 72 6f 63 65 73 73 20  oked to process 
09e0: 74 68 65 20 22 62 69 6e 64 22 20 54 63 6c 20 63  the "bind" Tcl c
09f0: 6f 6d 6d 61 6e 64 2e 0a 20 2a 09 53 65 65 20 74  ommand.. *.See t
0a00: 68 65 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74  he user document
0a10: 61 74 69 6f 6e 20 66 6f 72 20 64 65 74 61 69 6c  ation for detail
0a20: 73 20 6f 6e 20 77 68 61 74 20 69 74 20 64 6f 65  s on what it doe
0a30: 73 2e 0a 20 2a 0a 20 2a 20 52 65 73 75 6c 74 73  s.. *. * Results
0a40: 3a 0a 20 2a 09 41 20 73 74 61 6e 64 61 72 64 20  :. *.A standard 
0a50: 54 63 6c 20 72 65 73 75 6c 74 2e 0a 20 2a 0a 20  Tcl result.. *. 
0a60: 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a  * Side effects:.
0a70: 20 2a 09 53 65 65 20 74 68 65 20 75 73 65 72 20   *.See the user 
0a80: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20  documentation.. 
0a90: 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *. *------------
0aa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ac0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a  ----------. */..
0ae0: 69 6e 74 0a 54 6b 5f 42 69 6e 64 43 6d 64 28 63  int.Tk_BindCmd(c
0af0: 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72  lientData, inter
0b00: 70 2c 20 61 72 67 63 2c 20 61 72 67 76 29 0a 20  p, argc, argv). 
0b10: 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c     ClientData cl
0b20: 69 65 6e 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69  ientData;./* Mai
0b30: 6e 20 77 69 6e 64 6f 77 20 61 73 73 6f 63 69 61  n window associa
0b40: 74 65 64 20 77 69 74 68 20 69 6e 74 65 72 70 72  ted with interpr
0b50: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 54 63 6c  eter. */.    Tcl
0b60: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b  _Interp *interp;
0b70: 09 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74  ../* Current int
0b80: 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20  erpreter. */.   
0b90: 20 69 6e 74 20 61 72 67 63 3b 09 09 09 2f 2a 20   int argc;.../* 
0ba0: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  Number of argume
0bb0: 6e 74 73 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72  nts. */.    char
0bc0: 20 2a 2a 61 72 67 76 3b 09 09 2f 2a 20 41 72 67   **argv;../* Arg
0bd0: 75 6d 65 6e 74 20 73 74 72 69 6e 67 73 2e 20 2a  ument strings. *
0be0: 2f 0a 7b 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f  /.{.    Tk_Windo
0bf0: 77 20 74 6b 77 69 6e 20 3d 20 28 54 6b 5f 57 69  w tkwin = (Tk_Wi
0c00: 6e 64 6f 77 29 20 63 6c 69 65 6e 74 44 61 74 61  ndow) clientData
0c10: 3b 0a 20 20 20 20 54 6b 57 69 6e 64 6f 77 20 2a  ;.    TkWindow *
0c20: 77 69 6e 50 74 72 3b 0a 20 20 20 20 43 6c 69 65  winPtr;.    Clie
0c30: 6e 74 44 61 74 61 20 6f 62 6a 65 63 74 3b 0a 0a  ntData object;..
0c40: 20 20 20 20 69 66 20 28 28 61 72 67 63 20 3c 20      if ((argc < 
0c50: 32 29 20 7c 7c 20 28 61 72 67 63 20 3e 20 34 29  2) || (argc > 4)
0c60: 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52  ) {..Tcl_AppendR
0c70: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
0c80: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
0c90: 75 6c 64 20 62 65 20 5c 22 22 2c 20 61 72 67 76  uld be \"", argv
0ca0: 5b 30 5d 2c 0a 09 09 22 20 77 69 6e 64 6f 77 20  [0],..." window 
0cb0: 3f 70 61 74 74 65 72 6e 3f 20 3f 63 6f 6d 6d 61  ?pattern? ?comma
0cc0: 6e 64 3f 5c 22 22 2c 20 28 63 68 61 72 20 2a 29  nd?\"", (char *)
0cd0: 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20   NULL);..return 
0ce0: 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d  TCL_ERROR;.    }
0cf0: 0a 20 20 20 20 69 66 20 28 61 72 67 76 5b 31 5d  .    if (argv[1]
0d00: 5b 30 5d 20 3d 3d 20 27 2e 27 29 20 7b 0a 09 77  [0] == '.') {..w
0d10: 69 6e 50 74 72 20 3d 20 28 54 6b 57 69 6e 64 6f  inPtr = (TkWindo
0d20: 77 20 2a 29 20 54 6b 5f 4e 61 6d 65 54 6f 57 69  w *) Tk_NameToWi
0d30: 6e 64 6f 77 28 69 6e 74 65 72 70 2c 20 61 72 67  ndow(interp, arg
0d40: 76 5b 31 5d 2c 20 74 6b 77 69 6e 29 3b 0a 09 69  v[1], tkwin);..i
0d50: 66 20 28 77 69 6e 50 74 72 20 3d 3d 20 4e 55 4c  f (winPtr == NUL
0d60: 4c 29 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e  L) {..    return
0d70: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 09   TCL_ERROR;..}..
0d80: 6f 62 6a 65 63 74 20 3d 20 28 43 6c 69 65 6e 74  object = (Client
0d90: 44 61 74 61 29 20 77 69 6e 50 74 72 2d 3e 70 61  Data) winPtr->pa
0da0: 74 68 4e 61 6d 65 3b 0a 20 20 20 20 7d 20 65 6c  thName;.    } el
0db0: 73 65 20 7b 0a 09 77 69 6e 50 74 72 20 3d 20 28  se {..winPtr = (
0dc0: 54 6b 57 69 6e 64 6f 77 20 2a 29 20 63 6c 69 65  TkWindow *) clie
0dd0: 6e 74 44 61 74 61 3b 0a 09 6f 62 6a 65 63 74 20  ntData;..object 
0de0: 3d 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 54  = (ClientData) T
0df0: 6b 5f 47 65 74 55 69 64 28 61 72 67 76 5b 31 5d  k_GetUid(argv[1]
0e00: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66  );.    }..    if
0e10: 20 28 61 72 67 63 20 3d 3d 20 34 29 20 7b 0a 09   (argc == 4) {..
0e20: 69 6e 74 20 61 70 70 65 6e 64 20 3d 20 30 3b 0a  int append = 0;.
0e30: 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6d  .unsigned long m
0e40: 61 73 6b 3b 0a 0a 09 69 66 20 28 61 72 67 76 5b  ask;...if (argv[
0e50: 33 5d 5b 30 5d 20 3d 3d 20 30 29 20 7b 0a 09 20  3][0] == 0) {.. 
0e60: 20 20 20 72 65 74 75 72 6e 20 54 6b 5f 44 65 6c     return Tk_Del
0e70: 65 74 65 42 69 6e 64 69 6e 67 28 69 6e 74 65 72  eteBinding(inter
0e80: 70 2c 20 77 69 6e 50 74 72 2d 3e 6d 61 69 6e 50  p, winPtr->mainP
0e90: 74 72 2d 3e 62 69 6e 64 69 6e 67 54 61 62 6c 65  tr->bindingTable
0ea0: 2c 0a 09 09 20 20 20 20 6f 62 6a 65 63 74 2c 20  ,...    object, 
0eb0: 61 72 67 76 5b 32 5d 29 3b 0a 09 7d 0a 09 69 66  argv[2]);..}..if
0ec0: 20 28 61 72 67 76 5b 33 5d 5b 30 5d 20 3d 3d 20   (argv[3][0] == 
0ed0: 27 2b 27 29 20 7b 0a 09 20 20 20 20 61 72 67 76  '+') {..    argv
0ee0: 5b 33 5d 2b 2b 3b 0a 09 20 20 20 20 61 70 70 65  [3]++;..    appe
0ef0: 6e 64 20 3d 20 31 3b 0a 09 7d 0a 09 6d 61 73 6b  nd = 1;..}..mask
0f00: 20 3d 20 54 6b 5f 43 72 65 61 74 65 42 69 6e 64   = Tk_CreateBind
0f10: 69 6e 67 28 69 6e 74 65 72 70 2c 20 77 69 6e 50  ing(interp, winP
0f20: 74 72 2d 3e 6d 61 69 6e 50 74 72 2d 3e 62 69 6e  tr->mainPtr->bin
0f30: 64 69 6e 67 54 61 62 6c 65 2c 0a 09 09 6f 62 6a  dingTable,...obj
0f40: 65 63 74 2c 20 61 72 67 76 5b 32 5d 2c 20 61 72  ect, argv[2], ar
0f50: 67 76 5b 33 5d 2c 20 61 70 70 65 6e 64 29 3b 0a  gv[3], append);.
0f60: 09 69 66 20 28 6d 61 73 6b 20 3d 3d 20 30 29 20  .if (mask == 0) 
0f70: 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 43  {..    return TC
0f80: 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 20 20 20 20  L_ERROR;..}.    
0f90: 7d 20 65 6c 73 65 20 69 66 20 28 61 72 67 63 20  } else if (argc 
0fa0: 3d 3d 20 33 29 20 7b 0a 09 63 68 61 72 20 2a 63  == 3) {..char *c
0fb0: 6f 6d 6d 61 6e 64 3b 0a 0a 09 63 6f 6d 6d 61 6e  ommand;...comman
0fc0: 64 20 3d 20 54 6b 5f 47 65 74 42 69 6e 64 69 6e  d = Tk_GetBindin
0fd0: 67 28 69 6e 74 65 72 70 2c 20 77 69 6e 50 74 72  g(interp, winPtr
0fe0: 2d 3e 6d 61 69 6e 50 74 72 2d 3e 62 69 6e 64 69  ->mainPtr->bindi
0ff0: 6e 67 54 61 62 6c 65 2c 0a 09 09 6f 62 6a 65 63  ngTable,...objec
1000: 74 2c 20 61 72 67 76 5b 32 5d 29 3b 0a 09 69 66  t, argv[2]);..if
1010: 20 28 63 6f 6d 6d 61 6e 64 20 3d 3d 20 4e 55 4c   (command == NUL
1020: 4c 29 20 7b 0a 09 20 20 20 20 54 63 6c 5f 52 65  L) {..    Tcl_Re
1030: 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  setResult(interp
1040: 29 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54  );..    return T
1050: 43 4c 5f 4f 4b 3b 0a 09 7d 0a 09 54 63 6c 5f 53  CL_OK;..}..Tcl_S
1060: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  etResult(interp,
1070: 20 63 6f 6d 6d 61 6e 64 2c 20 54 43 4c 5f 56 4f   command, TCL_VO
1080: 4c 41 54 49 4c 45 29 3b 0a 20 20 20 20 7d 20 65  LATILE);.    } e
1090: 6c 73 65 20 7b 0a 09 54 6b 5f 47 65 74 41 6c 6c  lse {..Tk_GetAll
10a0: 42 69 6e 64 69 6e 67 73 28 69 6e 74 65 72 70 2c  Bindings(interp,
10b0: 20 77 69 6e 50 74 72 2d 3e 6d 61 69 6e 50 74 72   winPtr->mainPtr
10c0: 2d 3e 62 69 6e 64 69 6e 67 54 61 62 6c 65 2c 20  ->bindingTable, 
10d0: 6f 62 6a 65 63 74 29 3b 0a 20 20 20 20 7d 0a 20  object);.    }. 
10e0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b     return TCL_OK
10f0: 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d  ;.}.../*. *-----
1100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1140: 2d 0a 20 2a 0a 20 2a 20 54 6b 42 69 6e 64 45 76  -. *. * TkBindEv
1150: 65 6e 74 50 72 6f 63 20 2d 2d 0a 20 2a 0a 20 2a  entProc --. *. *
1160: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
1170: 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 54 6b  is invoked by Tk
1180: 5f 48 61 6e 64 6c 65 45 76 65 6e 74 20 66 6f 72  _HandleEvent for
1190: 20 65 61 63 68 20 65 76 65 6e 74 3b 20 20 69 74   each event;  it
11a0: 0a 20 2a 09 63 61 75 73 65 73 20 61 6e 79 20 61  . *.causes any a
11b0: 70 70 72 6f 70 72 69 61 74 65 20 62 69 6e 64 69  ppropriate bindi
11c0: 6e 67 73 20 66 6f 72 20 74 68 61 74 20 65 76 65  ngs for that eve
11d0: 6e 74 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64  nt to be invoked
11e0: 2e 0a 20 2a 0a 20 2a 20 52 65 73 75 6c 74 73 3a  .. *. * Results:
11f0: 0a 20 2a 09 4e 6f 6e 65 2e 0a 20 2a 0a 20 2a 20  . *.None.. *. * 
1200: 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a  Side effects:. *
1210: 09 44 65 70 65 6e 64 73 20 6f 6e 20 77 68 61 74  .Depends on what
1220: 20 62 69 6e 64 69 6e 67 73 20 68 61 76 65 20 62   bindings have b
1230: 65 65 6e 20 65 73 74 61 62 6c 69 73 68 65 64 20  een established 
1240: 77 69 74 68 20 74 68 65 20 22 62 69 6e 64 22 0a  with the "bind".
1250: 20 2a 09 63 6f 6d 6d 61 6e 64 2e 0a 20 2a 0a 20   *.command.. *. 
1260: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
1270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
12a0: 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 76 6f 69  -------. */..voi
12b0: 64 0a 54 6b 42 69 6e 64 45 76 65 6e 74 50 72 6f  d.TkBindEventPro
12c0: 63 28 77 69 6e 50 74 72 2c 20 65 76 65 6e 74 50  c(winPtr, eventP
12d0: 74 72 29 0a 20 20 20 20 54 6b 57 69 6e 64 6f 77  tr).    TkWindow
12e0: 20 2a 77 69 6e 50 74 72 3b 09 09 09 2f 2a 20 50   *winPtr;.../* P
12f0: 6f 69 6e 74 65 72 20 74 6f 20 69 6e 66 6f 20 61  ointer to info a
1300: 62 6f 75 74 20 77 69 6e 64 6f 77 2e 20 2a 2f 0a  bout window. */.
1310: 20 20 20 20 58 45 76 65 6e 74 20 2a 65 76 65 6e      XEvent *even
1320: 74 50 74 72 3b 09 09 09 2f 2a 20 49 6e 66 6f 72  tPtr;.../* Infor
1330: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 65 76 65  mation about eve
1340: 6e 74 2e 20 2a 2f 0a 7b 0a 23 64 65 66 69 6e 65  nt. */.{.#define
1350: 20 4d 41 58 5f 4f 42 4a 53 20 32 30 0a 20 20 20   MAX_OBJS 20.   
1360: 20 43 6c 69 65 6e 74 44 61 74 61 20 6f 62 6a 65   ClientData obje
1370: 63 74 73 5b 4d 41 58 5f 4f 42 4a 53 5d 2c 20 2a  cts[MAX_OBJS], *
1380: 6f 62 6a 50 74 72 3b 0a 20 20 20 20 73 74 61 74  objPtr;.    stat
1390: 69 63 20 54 6b 5f 55 69 64 20 61 6c 6c 55 69 64  ic Tk_Uid allUid
13a0: 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 54 6b 57   = NULL;.    TkW
13b0: 69 6e 64 6f 77 20 2a 74 6f 70 4c 65 76 50 74 72  indow *topLevPtr
13c0: 3b 0a 20 20 20 20 69 6e 74 20 69 2c 20 63 6f 75  ;.    int i, cou
13d0: 6e 74 3b 0a 20 20 20 20 63 68 61 72 20 2a 70 3b  nt;.    char *p;
13e0: 0a 20 20 20 20 54 63 6c 5f 48 61 73 68 45 6e 74  .    Tcl_HashEnt
13f0: 72 79 20 2a 68 50 74 72 3b 0a 0a 20 20 20 20 69  ry *hPtr;..    i
1400: 66 20 28 28 77 69 6e 50 74 72 2d 3e 6d 61 69 6e  f ((winPtr->main
1410: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20  Ptr == NULL) || 
1420: 28 77 69 6e 50 74 72 2d 3e 6d 61 69 6e 50 74 72  (winPtr->mainPtr
1430: 2d 3e 62 69 6e 64 69 6e 67 54 61 62 6c 65 20 3d  ->bindingTable =
1440: 3d 20 4e 55 4c 4c 29 29 20 7b 0a 09 72 65 74 75  = NULL)) {..retu
1450: 72 6e 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6f  rn;.    }..    o
1460: 62 6a 50 74 72 20 3d 20 6f 62 6a 65 63 74 73 3b  bjPtr = objects;
1470: 0a 20 20 20 20 69 66 20 28 77 69 6e 50 74 72 2d  .    if (winPtr-
1480: 3e 6e 75 6d 54 61 67 73 20 21 3d 20 30 29 20 7b  >numTags != 0) {
1490: 0a 09 2f 2a 0a 09 20 2a 20 4d 61 6b 65 20 61 20  ../*.. * Make a 
14a0: 63 6f 70 79 20 6f 66 20 74 68 65 20 74 61 67 73  copy of the tags
14b0: 20 66 6f 72 20 74 68 65 20 77 69 6e 64 6f 77 2c   for the window,
14c0: 20 72 65 70 6c 61 63 69 6e 67 20 77 69 6e 64 6f   replacing windo
14d0: 77 20 6e 61 6d 65 73 0a 09 20 2a 20 77 69 74 68  w names.. * with
14e0: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65   pointers to the
14f0: 20 70 61 74 68 4e 61 6d 65 20 66 72 6f 6d 20 74   pathName from t
1500: 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 77  he appropriate w
1510: 69 6e 64 6f 77 2e 0a 09 20 2a 2f 0a 0a 09 69 66  indow... */...if
1520: 20 28 77 69 6e 50 74 72 2d 3e 6e 75 6d 54 61 67   (winPtr->numTag
1530: 73 20 3e 20 4d 41 58 5f 4f 42 4a 53 29 20 7b 0a  s > MAX_OBJS) {.
1540: 09 20 20 20 20 6f 62 6a 50 74 72 20 3d 20 28 43  .    objPtr = (C
1550: 6c 69 65 6e 74 44 61 74 61 20 2a 29 20 63 6b 61  lientData *) cka
1560: 6c 6c 6f 63 28 28 75 6e 73 69 67 6e 65 64 29 0a  lloc((unsigned).
1570: 09 09 20 20 20 20 28 77 69 6e 50 74 72 2d 3e 6e  ..    (winPtr->n
1580: 75 6d 54 61 67 73 20 2a 20 73 69 7a 65 6f 66 28  umTags * sizeof(
1590: 43 6c 69 65 6e 74 44 61 74 61 29 29 29 3b 0a 09  ClientData)));..
15a0: 7d 0a 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69  }..for (i = 0; i
15b0: 20 3c 20 77 69 6e 50 74 72 2d 3e 6e 75 6d 54 61   < winPtr->numTa
15c0: 67 73 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20  gs; i++) {..    
15d0: 70 20 3d 20 28 63 68 61 72 20 2a 29 20 77 69 6e  p = (char *) win
15e0: 50 74 72 2d 3e 74 61 67 50 74 72 5b 69 5d 3b 0a  Ptr->tagPtr[i];.
15f0: 09 20 20 20 20 69 66 20 28 2a 70 20 3d 3d 20 27  .    if (*p == '
1600: 2e 27 29 20 7b 0a 09 09 68 50 74 72 20 3d 20 54  .') {...hPtr = T
1610: 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 79  cl_FindHashEntry
1620: 28 26 77 69 6e 50 74 72 2d 3e 6d 61 69 6e 50 74  (&winPtr->mainPt
1630: 72 2d 3e 6e 61 6d 65 54 61 62 6c 65 2c 20 70 29  r->nameTable, p)
1640: 3b 0a 09 09 69 66 20 28 68 50 74 72 20 21 3d 20  ;...if (hPtr != 
1650: 4e 55 4c 4c 29 20 7b 0a 09 09 20 20 20 20 70 20  NULL) {...    p 
1660: 3d 20 28 28 54 6b 57 69 6e 64 6f 77 20 2a 29 20  = ((TkWindow *) 
1670: 54 63 6c 5f 47 65 74 48 61 73 68 56 61 6c 75 65  Tcl_GetHashValue
1680: 28 68 50 74 72 29 29 2d 3e 70 61 74 68 4e 61 6d  (hPtr))->pathNam
1690: 65 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09  e;...} else {...
16a0: 20 20 20 20 70 20 3d 20 4e 55 4c 4c 3b 0a 09 09      p = NULL;...
16b0: 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 6f 62  }..    }..    ob
16c0: 6a 50 74 72 5b 69 5d 20 3d 20 28 43 6c 69 65 6e  jPtr[i] = (Clien
16d0: 74 44 61 74 61 29 20 70 3b 0a 09 7d 0a 09 63 6f  tData) p;..}..co
16e0: 75 6e 74 20 3d 20 77 69 6e 50 74 72 2d 3e 6e 75  unt = winPtr->nu
16f0: 6d 54 61 67 73 3b 0a 20 20 20 20 7d 20 65 6c 73  mTags;.    } els
1700: 65 20 7b 0a 09 6f 62 6a 50 74 72 5b 30 5d 20 3d  e {..objPtr[0] =
1710: 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 77 69   (ClientData) wi
1720: 6e 50 74 72 2d 3e 70 61 74 68 4e 61 6d 65 3b 0a  nPtr->pathName;.
1730: 09 6f 62 6a 50 74 72 5b 31 5d 20 3d 20 28 43 6c  .objPtr[1] = (Cl
1740: 69 65 6e 74 44 61 74 61 29 20 77 69 6e 50 74 72  ientData) winPtr
1750: 2d 3e 63 6c 61 73 73 55 69 64 3b 0a 09 66 6f 72  ->classUid;..for
1760: 20 28 74 6f 70 4c 65 76 50 74 72 20 3d 20 77 69   (topLevPtr = wi
1770: 6e 50 74 72 3b 0a 09 09 28 74 6f 70 4c 65 76 50  nPtr;...(topLevP
1780: 74 72 20 21 3d 20 4e 55 4c 4c 29 20 26 26 20 21  tr != NULL) && !
1790: 28 74 6f 70 4c 65 76 50 74 72 2d 3e 66 6c 61 67  (topLevPtr->flag
17a0: 73 20 26 20 54 4b 5f 54 4f 50 5f 4c 45 56 45 4c  s & TK_TOP_LEVEL
17b0: 29 3b 0a 09 09 74 6f 70 4c 65 76 50 74 72 20 3d  );...topLevPtr =
17c0: 20 74 6f 70 4c 65 76 50 74 72 2d 3e 70 61 72 65   topLevPtr->pare
17d0: 6e 74 50 74 72 29 20 7b 0a 09 20 20 20 20 2f 2a  ntPtr) {..    /*
17e0: 20 45 6d 70 74 79 20 6c 6f 6f 70 20 62 6f 64 79   Empty loop body
17f0: 2e 20 2a 2f 0a 09 7d 0a 09 69 66 20 28 28 77 69  . */..}..if ((wi
1800: 6e 50 74 72 20 21 3d 20 74 6f 70 4c 65 76 50 74  nPtr != topLevPt
1810: 72 29 20 26 26 20 28 74 6f 70 4c 65 76 50 74 72  r) && (topLevPtr
1820: 20 21 3d 20 4e 55 4c 4c 29 29 20 7b 0a 09 20 20   != NULL)) {..  
1830: 20 20 63 6f 75 6e 74 20 3d 20 34 3b 0a 09 20 20    count = 4;..  
1840: 20 20 6f 62 6a 50 74 72 5b 32 5d 20 3d 20 28 43    objPtr[2] = (C
1850: 6c 69 65 6e 74 44 61 74 61 29 20 74 6f 70 4c 65  lientData) topLe
1860: 76 50 74 72 2d 3e 70 61 74 68 4e 61 6d 65 3b 0a  vPtr->pathName;.
1870: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 63  .} else {..    c
1880: 6f 75 6e 74 20 3d 20 33 3b 0a 09 7d 0a 09 69 66  ount = 3;..}..if
1890: 20 28 61 6c 6c 55 69 64 20 3d 3d 20 4e 55 4c 4c   (allUid == NULL
18a0: 29 20 7b 0a 09 20 20 20 20 61 6c 6c 55 69 64 20  ) {..    allUid 
18b0: 3d 20 54 6b 5f 47 65 74 55 69 64 28 22 61 6c 6c  = Tk_GetUid("all
18c0: 22 29 3b 0a 09 7d 0a 09 6f 62 6a 50 74 72 5b 63  ");..}..objPtr[c
18d0: 6f 75 6e 74 2d 31 5d 20 3d 20 28 43 6c 69 65 6e  ount-1] = (Clien
18e0: 74 44 61 74 61 29 20 61 6c 6c 55 69 64 3b 0a 20  tData) allUid;. 
18f0: 20 20 20 7d 0a 20 20 20 20 54 6b 5f 42 69 6e 64     }.    Tk_Bind
1900: 45 76 65 6e 74 28 77 69 6e 50 74 72 2d 3e 6d 61  Event(winPtr->ma
1910: 69 6e 50 74 72 2d 3e 62 69 6e 64 69 6e 67 54 61  inPtr->bindingTa
1920: 62 6c 65 2c 20 65 76 65 6e 74 50 74 72 2c 20 28  ble, eventPtr, (
1930: 54 6b 5f 57 69 6e 64 6f 77 29 20 77 69 6e 50 74  Tk_Window) winPt
1940: 72 2c 0a 09 20 20 20 20 63 6f 75 6e 74 2c 20 6f  r,..    count, o
1950: 62 6a 50 74 72 29 3b 0a 20 20 20 20 69 66 20 28  bjPtr);.    if (
1960: 6f 62 6a 50 74 72 20 21 3d 20 6f 62 6a 65 63 74  objPtr != object
1970: 73 29 20 7b 0a 09 63 6b 66 72 65 65 28 28 63 68  s) {..ckfree((ch
1980: 61 72 20 2a 29 20 6f 62 6a 50 74 72 29 3b 0a 20  ar *) objPtr);. 
1990: 20 20 20 7d 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d     }.}.../*. *--
19a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19e0: 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 54 6b 5f 42 69  ----. *. * Tk_Bi
19f0: 6e 64 74 61 67 73 43 6d 64 20 2d 2d 0a 20 2a 0a  ndtagsCmd --. *.
1a00: 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75 72   *.This procedur
1a10: 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20  e is invoked to 
1a20: 70 72 6f 63 65 73 73 20 74 68 65 20 22 62 69 6e  process the "bin
1a30: 64 74 61 67 73 22 20 54 63 6c 20 63 6f 6d 6d 61  dtags" Tcl comma
1a40: 6e 64 2e 0a 20 2a 09 53 65 65 20 74 68 65 20 75  nd.. *.See the u
1a50: 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ser documentatio
1a60: 6e 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e  n for details on
1a70: 20 77 68 61 74 20 69 74 20 64 6f 65 73 2e 0a 20   what it does.. 
1a80: 2a 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a  *. * Results:. *
1a90: 09 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20  .A standard Tcl 
1aa0: 72 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69  result.. *. * Si
1ab0: 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53  de effects:. *.S
1ac0: 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75  ee the user docu
1ad0: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a  mentation.. *. *
1ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b20: 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 69 6e 74 0a  ------. */..int.
1b30: 54 6b 5f 42 69 6e 64 74 61 67 73 43 6d 64 28 63  Tk_BindtagsCmd(c
1b40: 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72  lientData, inter
1b50: 70 2c 20 61 72 67 63 2c 20 61 72 67 76 29 0a 20  p, argc, argv). 
1b60: 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c     ClientData cl
1b70: 69 65 6e 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69  ientData;./* Mai
1b80: 6e 20 77 69 6e 64 6f 77 20 61 73 73 6f 63 69 61  n window associa
1b90: 74 65 64 20 77 69 74 68 20 69 6e 74 65 72 70 72  ted with interpr
1ba0: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 54 63 6c  eter. */.    Tcl
1bb0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b  _Interp *interp;
1bc0: 09 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74  ../* Current int
1bd0: 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20  erpreter. */.   
1be0: 20 69 6e 74 20 61 72 67 63 3b 09 09 09 2f 2a 20   int argc;.../* 
1bf0: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  Number of argume
1c00: 6e 74 73 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72  nts. */.    char
1c10: 20 2a 2a 61 72 67 76 3b 09 09 2f 2a 20 41 72 67   **argv;../* Arg
1c20: 75 6d 65 6e 74 20 73 74 72 69 6e 67 73 2e 20 2a  ument strings. *
1c30: 2f 0a 7b 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f  /.{.    Tk_Windo
1c40: 77 20 74 6b 77 69 6e 20 3d 20 28 54 6b 5f 57 69  w tkwin = (Tk_Wi
1c50: 6e 64 6f 77 29 20 63 6c 69 65 6e 74 44 61 74 61  ndow) clientData
1c60: 3b 0a 20 20 20 20 54 6b 57 69 6e 64 6f 77 20 2a  ;.    TkWindow *
1c70: 77 69 6e 50 74 72 2c 20 2a 77 69 6e 50 74 72 32  winPtr, *winPtr2
1c80: 3b 0a 20 20 20 20 69 6e 74 20 69 2c 20 74 61 67  ;.    int i, tag
1c90: 41 72 67 63 3b 0a 20 20 20 20 63 68 61 72 20 2a  Argc;.    char *
1ca0: 70 2c 20 2a 2a 74 61 67 41 72 67 76 3b 0a 0a 20  p, **tagArgv;.. 
1cb0: 20 20 20 69 66 20 28 28 61 72 67 63 20 3c 20 32     if ((argc < 2
1cc0: 29 20 7c 7c 20 28 61 72 67 63 20 3e 20 33 29 29  ) || (argc > 3))
1cd0: 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65   {..Tcl_AppendRe
1ce0: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 72  sult(interp, "wr
1cf0: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
1d00: 6c 64 20 62 65 20 5c 22 22 2c 20 61 72 67 76 5b  ld be \"", argv[
1d10: 30 5d 2c 0a 09 09 22 20 77 69 6e 64 6f 77 20 3f  0],..." window ?
1d20: 74 61 67 73 3f 5c 22 22 2c 20 28 63 68 61 72 20  tags?\"", (char 
1d30: 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72  *) NULL);..retur
1d40: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
1d50: 20 7d 0a 20 20 20 20 77 69 6e 50 74 72 20 3d 20   }.    winPtr = 
1d60: 28 54 6b 57 69 6e 64 6f 77 20 2a 29 20 54 6b 5f  (TkWindow *) Tk_
1d70: 4e 61 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74  NameToWindow(int
1d80: 65 72 70 2c 20 61 72 67 76 5b 31 5d 2c 20 74 6b  erp, argv[1], tk
1d90: 77 69 6e 29 3b 0a 20 20 20 20 69 66 20 28 77 69  win);.    if (wi
1da0: 6e 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a  nPtr == NULL) {.
1db0: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f  .return TCL_ERRO
1dc0: 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  R;.    }.    if 
1dd0: 28 61 72 67 63 20 3d 3d 20 32 29 20 7b 0a 09 69  (argc == 2) {..i
1de0: 66 20 28 77 69 6e 50 74 72 2d 3e 6e 75 6d 54 61  f (winPtr->numTa
1df0: 67 73 20 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20  gs == 0) {..    
1e00: 54 63 6c 5f 41 70 70 65 6e 64 45 6c 65 6d 65 6e  Tcl_AppendElemen
1e10: 74 28 69 6e 74 65 72 70 2c 20 77 69 6e 50 74 72  t(interp, winPtr
1e20: 2d 3e 70 61 74 68 4e 61 6d 65 29 3b 0a 09 20 20  ->pathName);..  
1e30: 20 20 54 63 6c 5f 41 70 70 65 6e 64 45 6c 65 6d    Tcl_AppendElem
1e40: 65 6e 74 28 69 6e 74 65 72 70 2c 20 77 69 6e 50  ent(interp, winP
1e50: 74 72 2d 3e 63 6c 61 73 73 55 69 64 29 3b 0a 09  tr->classUid);..
1e60: 20 20 20 20 66 6f 72 20 28 77 69 6e 50 74 72 32      for (winPtr2
1e70: 20 3d 20 77 69 6e 50 74 72 3b 0a 09 09 20 20 20   = winPtr;...   
1e80: 20 28 77 69 6e 50 74 72 32 20 21 3d 20 4e 55 4c   (winPtr2 != NUL
1e90: 4c 29 20 26 26 20 21 28 77 69 6e 50 74 72 32 2d  L) && !(winPtr2-
1ea0: 3e 66 6c 61 67 73 20 26 20 54 4b 5f 54 4f 50 5f  >flags & TK_TOP_
1eb0: 4c 45 56 45 4c 29 3b 0a 09 09 20 20 20 20 77 69  LEVEL);...    wi
1ec0: 6e 50 74 72 32 20 3d 20 77 69 6e 50 74 72 32 2d  nPtr2 = winPtr2-
1ed0: 3e 70 61 72 65 6e 74 50 74 72 29 20 7b 0a 09 09  >parentPtr) {...
1ee0: 2f 2a 20 45 6d 70 74 79 20 6c 6f 6f 70 20 62 6f  /* Empty loop bo
1ef0: 64 79 2e 20 2a 2f 0a 09 20 20 20 20 7d 0a 09 20  dy. */..    }.. 
1f00: 20 20 20 69 66 20 28 28 77 69 6e 50 74 72 20 21     if ((winPtr !
1f10: 3d 20 77 69 6e 50 74 72 32 29 20 26 26 20 28 77  = winPtr2) && (w
1f20: 69 6e 50 74 72 32 20 21 3d 20 4e 55 4c 4c 29 29  inPtr2 != NULL))
1f30: 20 7b 0a 09 09 54 63 6c 5f 41 70 70 65 6e 64 45   {...Tcl_AppendE
1f40: 6c 65 6d 65 6e 74 28 69 6e 74 65 72 70 2c 20 77  lement(interp, w
1f50: 69 6e 50 74 72 32 2d 3e 70 61 74 68 4e 61 6d 65  inPtr2->pathName
1f60: 29 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 54  );..    }..    T
1f70: 63 6c 5f 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74  cl_AppendElement
1f80: 28 69 6e 74 65 72 70 2c 20 22 61 6c 6c 22 29 3b  (interp, "all");
1f90: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
1fa0: 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20  for (i = 0; i < 
1fb0: 77 69 6e 50 74 72 2d 3e 6e 75 6d 54 61 67 73 3b  winPtr->numTags;
1fc0: 20 69 2b 2b 29 20 7b 0a 09 09 54 63 6c 5f 41 70   i++) {...Tcl_Ap
1fd0: 70 65 6e 64 45 6c 65 6d 65 6e 74 28 69 6e 74 65  pendElement(inte
1fe0: 72 70 2c 20 28 63 68 61 72 20 2a 29 20 77 69 6e  rp, (char *) win
1ff0: 50 74 72 2d 3e 74 61 67 50 74 72 5b 69 5d 29 3b  Ptr->tagPtr[i]);
2000: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 72 65 74 75  ..    }..}..retu
2010: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 7d  rn TCL_OK;.    }
2020: 0a 20 20 20 20 69 66 20 28 77 69 6e 50 74 72 2d  .    if (winPtr-
2030: 3e 74 61 67 50 74 72 20 21 3d 20 4e 55 4c 4c 29  >tagPtr != NULL)
2040: 20 7b 0a 09 54 6b 46 72 65 65 42 69 6e 64 69 6e   {..TkFreeBindin
2050: 67 54 61 67 73 28 77 69 6e 50 74 72 29 3b 0a 20  gTags(winPtr);. 
2060: 20 20 20 7d 0a 20 20 20 20 69 66 20 28 61 72 67     }.    if (arg
2070: 76 5b 32 5d 5b 30 5d 20 3d 3d 20 30 29 20 7b 0a  v[2][0] == 0) {.
2080: 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a  .return TCL_OK;.
2090: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 54 63      }.    if (Tc
20a0: 6c 5f 53 70 6c 69 74 4c 69 73 74 28 69 6e 74 65  l_SplitList(inte
20b0: 72 70 2c 20 61 72 67 76 5b 32 5d 2c 20 26 74 61  rp, argv[2], &ta
20c0: 67 41 72 67 63 2c 20 26 74 61 67 41 72 67 76 29  gArgc, &tagArgv)
20d0: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 09 72   != TCL_OK) {..r
20e0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
20f0: 0a 20 20 20 20 7d 0a 20 20 20 20 77 69 6e 50 74  .    }.    winPt
2100: 72 2d 3e 6e 75 6d 54 61 67 73 20 3d 20 74 61 67  r->numTags = tag
2110: 41 72 67 63 3b 0a 20 20 20 20 77 69 6e 50 74 72  Argc;.    winPtr
2120: 2d 3e 74 61 67 50 74 72 20 3d 20 28 43 6c 69 65  ->tagPtr = (Clie
2130: 6e 74 44 61 74 61 20 2a 29 20 63 6b 61 6c 6c 6f  ntData *) ckallo
2140: 63 28 28 75 6e 73 69 67 6e 65 64 29 0a 09 20 20  c((unsigned)..  
2150: 20 20 28 74 61 67 41 72 67 63 20 2a 20 73 69 7a    (tagArgc * siz
2160: 65 6f 66 28 43 6c 69 65 6e 74 44 61 74 61 29 29  eof(ClientData))
2170: 29 3b 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20  );.    for (i = 
2180: 30 3b 20 69 20 3c 20 74 61 67 41 72 67 63 3b 20  0; i < tagArgc; 
2190: 69 2b 2b 29 20 7b 0a 09 70 20 3d 20 74 61 67 41  i++) {..p = tagA
21a0: 72 67 76 5b 69 5d 3b 0a 09 69 66 20 28 70 5b 30  rgv[i];..if (p[0
21b0: 5d 20 3d 3d 20 27 2e 27 29 20 7b 0a 09 20 20 20  ] == '.') {..   
21c0: 20 63 68 61 72 20 2a 63 6f 70 79 3b 0a 0a 09 20   char *copy;... 
21d0: 20 20 20 2f 2a 0a 09 20 20 20 20 20 2a 20 48 61     /*..     * Ha
21e0: 6e 64 6c 65 20 6e 61 6d 65 73 20 73 74 61 72 74  ndle names start
21f0: 69 6e 67 20 77 69 74 68 20 22 2e 22 20 73 70 65  ing with "." spe
2200: 63 69 61 6c 6c 79 3a 20 73 74 6f 72 65 20 61 20  cially: store a 
2210: 6d 61 6c 6c 6f 63 27 65 64 0a 09 20 20 20 20 20  malloc'ed..     
2220: 2a 20 73 74 72 69 6e 67 2c 20 72 61 74 68 65 72  * string, rather
2230: 20 74 68 61 6e 20 61 20 55 69 64 3b 20 20 61 74   than a Uid;  at
2240: 20 65 76 65 6e 74 20 74 69 6d 65 20 77 65 27 6c   event time we'l
2250: 6c 20 6c 6f 6f 6b 20 75 70 20 74 68 65 0a 09 20  l look up the.. 
2260: 20 20 20 20 2a 20 6e 61 6d 65 20 69 6e 20 74 68      * name in th
2270: 65 20 77 69 6e 64 6f 77 20 74 61 62 6c 65 20 61  e window table a
2280: 6e 64 20 75 73 65 20 74 68 65 20 63 6f 72 72 65  nd use the corre
2290: 73 70 6f 6e 64 69 6e 67 20 77 69 6e 64 6f 77 2c  sponding window,
22a0: 0a 09 20 20 20 20 20 2a 20 69 66 20 74 68 65 72  ..     * if ther
22b0: 65 20 69 73 20 6f 6e 65 2e 0a 09 20 20 20 20 20  e is one...     
22c0: 2a 2f 0a 0a 09 20 20 20 20 63 6f 70 79 20 3d 20  */...    copy = 
22d0: 28 63 68 61 72 20 2a 29 20 63 6b 61 6c 6c 6f 63  (char *) ckalloc
22e0: 28 28 75 6e 73 69 67 6e 65 64 29 20 28 73 74 72  ((unsigned) (str
22f0: 6c 65 6e 28 70 29 20 2b 20 31 29 29 3b 0a 09 20  len(p) + 1));.. 
2300: 20 20 20 73 74 72 63 70 79 28 63 6f 70 79 2c 20     strcpy(copy, 
2310: 70 29 3b 0a 09 20 20 20 20 77 69 6e 50 74 72 2d  p);..    winPtr-
2320: 3e 74 61 67 50 74 72 5b 69 5d 20 3d 20 28 43 6c  >tagPtr[i] = (Cl
2330: 69 65 6e 74 44 61 74 61 29 20 63 6f 70 79 3b 0a  ientData) copy;.
2340: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 77  .} else {..    w
2350: 69 6e 50 74 72 2d 3e 74 61 67 50 74 72 5b 69 5d  inPtr->tagPtr[i]
2360: 20 3d 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20   = (ClientData) 
2370: 54 6b 5f 47 65 74 55 69 64 28 70 29 3b 0a 09 7d  Tk_GetUid(p);..}
2380: 0a 20 20 20 20 7d 0a 20 20 20 20 63 6b 66 72 65  .    }.    ckfre
2390: 65 28 28 63 68 61 72 20 2a 29 20 74 61 67 41 72  e((char *) tagAr
23a0: 67 76 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  gv);.    return 
23b0: 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20  TCL_OK;.}.../*. 
23c0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
23d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2400: 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 54 6b  -------. *. * Tk
2410: 46 72 65 65 42 69 6e 64 69 6e 67 54 61 67 73 20  FreeBindingTags 
2420: 2d 2d 0a 20 2a 0a 20 2a 09 54 68 69 73 20 70 72  --. *. *.This pr
2430: 6f 63 65 64 75 72 65 20 69 73 20 63 61 6c 6c 65  ocedure is calle
2440: 64 20 74 6f 20 66 72 65 65 20 61 6c 6c 20 6f 66  d to free all of
2450: 20 74 68 65 20 62 69 6e 64 69 6e 67 20 74 61 67   the binding tag
2460: 73 0a 20 2a 09 61 73 73 6f 63 69 61 74 65 64 20  s. *.associated 
2470: 77 69 74 68 20 61 20 77 69 6e 64 6f 77 3b 20 20  with a window;  
2480: 74 79 70 69 63 61 6c 6c 79 20 69 74 20 69 73 20  typically it is 
2490: 6f 6e 6c 79 20 69 6e 76 6f 6b 65 64 20 77 68 65  only invoked whe
24a0: 72 65 0a 20 2a 09 74 68 65 72 65 20 61 72 65 20  re. *.there are 
24b0: 77 69 6e 64 6f 77 2d 73 70 65 63 69 66 69 63 20  window-specific 
24c0: 74 61 67 73 2e 0a 20 2a 0a 20 2a 20 52 65 73 75  tags.. *. * Resu
24d0: 6c 74 73 3a 0a 20 2a 09 4e 6f 6e 65 2e 0a 20 2a  lts:. *.None.. *
24e0: 0a 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73  . * Side effects
24f0: 3a 0a 20 2a 09 41 6e 79 20 62 69 6e 64 69 6e 67  :. *.Any binding
2500: 20 74 61 67 73 20 66 6f 72 20 77 69 6e 50 74 72   tags for winPtr
2510: 20 61 72 65 20 66 72 65 65 64 2e 0a 20 2a 0a 20   are freed.. *. 
2520: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
2530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2560: 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 76 6f 69  -------. */..voi
2570: 64 0a 54 6b 46 72 65 65 42 69 6e 64 69 6e 67 54  d.TkFreeBindingT
2580: 61 67 73 28 77 69 6e 50 74 72 29 0a 20 20 20 20  ags(winPtr).    
2590: 54 6b 57 69 6e 64 6f 77 20 2a 77 69 6e 50 74 72  TkWindow *winPtr
25a0: 3b 09 09 2f 2a 20 57 69 6e 64 6f 77 20 77 68 6f  ;../* Window who
25b0: 73 65 20 74 61 67 73 20 61 72 65 20 74 6f 20 62  se tags are to b
25c0: 65 20 72 65 6c 65 61 73 65 64 2e 20 2a 2f 0a 7b  e released. */.{
25d0: 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20  .    int i;.    
25e0: 63 68 61 72 20 2a 70 3b 0a 0a 20 20 20 20 66 6f  char *p;..    fo
25f0: 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 77 69  r (i = 0; i < wi
2600: 6e 50 74 72 2d 3e 6e 75 6d 54 61 67 73 3b 20 69  nPtr->numTags; i
2610: 2b 2b 29 20 7b 0a 09 70 20 3d 20 28 63 68 61 72  ++) {..p = (char
2620: 20 2a 29 20 28 77 69 6e 50 74 72 2d 3e 74 61 67   *) (winPtr->tag
2630: 50 74 72 5b 69 5d 29 3b 0a 09 69 66 20 28 2a 70  Ptr[i]);..if (*p
2640: 20 3d 3d 20 27 2e 27 29 20 7b 0a 09 20 20 20 20   == '.') {..    
2650: 2f 2a 0a 09 20 20 20 20 20 2a 20 4e 61 6d 65 73  /*..     * Names
2660: 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 22   starting with "
2670: 2e 22 20 61 72 65 20 6d 61 6c 6c 6f 63 65 64 20  ." are malloced 
2680: 72 61 74 68 65 72 20 74 68 61 6e 20 55 69 64 73  rather than Uids
2690: 2c 20 73 6f 0a 09 20 20 20 20 20 2a 20 74 68 65  , so..     * the
26a0: 79 20 68 61 76 65 20 74 6f 20 62 65 20 66 72 65  y have to be fre
26b0: 65 64 2e 0a 09 20 20 20 20 20 2a 2f 0a 20 20 20  ed...     */.   
26c0: 20 0a 09 20 20 20 20 63 6b 66 72 65 65 28 70 29   ..    ckfree(p)
26d0: 3b 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 63  ;..}.    }.    c
26e0: 6b 66 72 65 65 28 28 63 68 61 72 20 2a 29 20 77  kfree((char *) w
26f0: 69 6e 50 74 72 2d 3e 74 61 67 50 74 72 29 3b 0a  inPtr->tagPtr);.
2700: 20 20 20 20 77 69 6e 50 74 72 2d 3e 6e 75 6d 54      winPtr->numT
2710: 61 67 73 20 3d 20 30 3b 0a 20 20 20 20 77 69 6e  ags = 0;.    win
2720: 50 74 72 2d 3e 74 61 67 50 74 72 20 3d 20 4e 55  Ptr->tagPtr = NU
2730: 4c 4c 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d  LL;.}.../*. *---
2740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2780: 2d 2d 2d 0a 20 2a 0a 20 2a 20 54 6b 5f 44 65 73  ---. *. * Tk_Des
2790: 74 72 6f 79 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a  troyCmd --. *. *
27a0: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
27b0: 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72  is invoked to pr
27c0: 6f 63 65 73 73 20 74 68 65 20 22 64 65 73 74 72  ocess the "destr
27d0: 6f 79 22 20 54 63 6c 20 63 6f 6d 6d 61 6e 64 2e  oy" Tcl command.
27e0: 0a 20 2a 09 53 65 65 20 74 68 65 20 75 73 65 72  . *.See the user
27f0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
2800: 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  or details on wh
2810: 61 74 20 69 74 20 64 6f 65 73 2e 0a 20 2a 0a 20  at it does.. *. 
2820: 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a 09 41 20  * Results:. *.A 
2830: 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72 65 73  standard Tcl res
2840: 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 64 65 20  ult.. *. * Side 
2850: 65 66 66 65 63 74 73 3a 0a 20 2a 09 53 65 65 20  effects:. *.See 
2860: 74 68 65 20 75 73 65 72 20 64 6f 63 75 6d 65 6e  the user documen
2870: 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d  tation.. *. *---
2880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
28a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
28b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
28c0: 2d 2d 2d 0a 20 2a 2f 0a 0a 69 6e 74 0a 54 6b 5f  ---. */..int.Tk_
28d0: 44 65 73 74 72 6f 79 43 6d 64 28 63 6c 69 65 6e  DestroyCmd(clien
28e0: 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 61  tData, interp, a
28f0: 72 67 63 2c 20 61 72 67 76 29 0a 20 20 20 20 43  rgc, argv).    C
2900: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74  lientData client
2910: 44 61 74 61 3b 09 09 2f 2a 20 4d 61 69 6e 20 77  Data;../* Main w
2920: 69 6e 64 6f 77 20 61 73 73 6f 63 69 61 74 65 64  indow associated
2930: 20 77 69 74 68 0a 09 09 09 09 20 2a 20 69 6e 74   with..... * int
2940: 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20  erpreter. */.   
2950: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74   Tcl_Interp *int
2960: 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e 74  erp;../* Current
2970: 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a 2f   interpreter. */
2980: 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b 09 09  .    int argc;..
2990: 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61 72  ./* Number of ar
29a0: 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 20 20  guments. */.    
29b0: 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09 2f 2a  char **argv;../*
29c0: 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69 6e 67   Argument string
29d0: 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 54 6b 5f 57  s. */.{.    Tk_W
29e0: 69 6e 64 6f 77 20 77 69 6e 64 6f 77 3b 0a 20 20  indow window;.  
29f0: 20 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77 69    Tk_Window tkwi
2a00: 6e 20 3d 20 28 54 6b 5f 57 69 6e 64 6f 77 29 20  n = (Tk_Window) 
2a10: 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20 20  clientData;.    
2a20: 69 6e 74 20 69 3b 0a 0a 20 20 20 20 66 6f 72 20  int i;..    for 
2a30: 28 69 20 3d 20 31 3b 20 69 20 3c 20 61 72 67 63  (i = 1; i < argc
2a40: 3b 20 69 2b 2b 29 20 7b 0a 09 77 69 6e 64 6f 77  ; i++) {..window
2a50: 20 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57 69 6e 64   = Tk_NameToWind
2a60: 6f 77 28 69 6e 74 65 72 70 2c 20 61 72 67 76 5b  ow(interp, argv[
2a70: 69 5d 2c 20 74 6b 77 69 6e 29 3b 0a 09 69 66 20  i], tkwin);..if 
2a80: 28 77 69 6e 64 6f 77 20 3d 3d 20 4e 55 4c 4c 29  (window == NULL)
2a90: 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54   {..    return T
2aa0: 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 09 54 6b  CL_ERROR;..}..Tk
2ab0: 5f 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 28 77  _DestroyWindow(w
2ac0: 69 6e 64 6f 77 29 3b 0a 20 20 20 20 7d 0a 20 20  indow);.    }.  
2ad0: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b    return TCL_OK;
2ae0: 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d  .}.../*. *------
2af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2b30: 0a 20 2a 0a 20 2a 20 54 6b 5f 45 78 69 74 43 6d  . *. * Tk_ExitCm
2b40: 64 20 2d 2d 0a 20 2a 0a 20 2a 09 54 68 69 73 20  d --. *. *.This 
2b50: 70 72 6f 63 65 64 75 72 65 20 69 73 20 69 6e 76  procedure is inv
2b60: 6f 6b 65 64 20 74 6f 20 70 72 6f 63 65 73 73 20  oked to process 
2b70: 74 68 65 20 22 65 78 69 74 22 20 54 63 6c 20 63  the "exit" Tcl c
2b80: 6f 6d 6d 61 6e 64 2e 0a 20 2a 09 53 65 65 20 74  ommand.. *.See t
2b90: 68 65 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74  he user document
2ba0: 61 74 69 6f 6e 20 66 6f 72 20 64 65 74 61 69 6c  ation for detail
2bb0: 73 20 6f 6e 20 77 68 61 74 20 69 74 20 64 6f 65  s on what it doe
2bc0: 73 2e 0a 20 2a 09 4e 6f 74 65 3a 20 74 68 69 73  s.. *.Note: this
2bd0: 20 63 6f 6d 6d 61 6e 64 20 72 65 70 6c 61 63 65   command replace
2be0: 73 20 74 68 65 20 54 63 6c 20 22 65 78 69 74 22  s the Tcl "exit"
2bf0: 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f 72 64 65   command in orde
2c00: 72 0a 20 2a 09 74 6f 20 70 72 6f 70 65 72 6c 79  r. *.to properly
2c10: 20 64 65 73 74 72 6f 79 20 61 6c 6c 20 77 69 6e   destroy all win
2c20: 64 6f 77 73 2e 0a 20 2a 0a 20 2a 20 52 65 73 75  dows.. *. * Resu
2c30: 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61 6e 64 61  lts:. *.A standa
2c40: 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e 0a 20  rd Tcl result.. 
2c50: 2a 0a 20 2a 20 53 69 64 65 20 65 66 66 65 63 74  *. * Side effect
2c60: 73 3a 0a 20 2a 09 53 65 65 20 74 68 65 20 75 73  s:. *.See the us
2c70: 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  er documentation
2c80: 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d  .. *. *---------
2c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a  -------------. *
2cd0: 2f 0a 0a 09 2f 2a 41 52 47 53 55 53 45 44 2a 2f  /.../*ARGSUSED*/
2ce0: 0a 69 6e 74 0a 54 6b 5f 45 78 69 74 43 6d 64 28  .int.Tk_ExitCmd(
2cf0: 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65  clientData, inte
2d00: 72 70 2c 20 61 72 67 63 2c 20 61 72 67 76 29 0a  rp, argc, argv).
2d10: 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 63      ClientData c
2d20: 6c 69 65 6e 74 44 61 74 61 3b 09 09 2f 2a 20 4d  lientData;../* M
2d30: 61 69 6e 20 77 69 6e 64 6f 77 20 61 73 73 6f 63  ain window assoc
2d40: 69 61 74 65 64 20 77 69 74 68 0a 09 09 09 09 20  iated with..... 
2d50: 2a 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a  * interpreter. *
2d60: 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70  /.    Tcl_Interp
2d70: 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 43 75   *interp;../* Cu
2d80: 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65  rrent interprete
2d90: 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74 20 61 72  r. */.    int ar
2da0: 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20  gc;.../* Number 
2db0: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f  of arguments. */
2dc0: 0a 20 20 20 20 63 68 61 72 20 2a 2a 61 72 67 76  .    char **argv
2dd0: 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 73  ;../* Argument s
2de0: 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20  trings. */.{.   
2df0: 20 69 6e 74 20 76 61 6c 75 65 3b 0a 0a 20 20 20   int value;..   
2e00: 20 69 66 20 28 28 61 72 67 63 20 21 3d 20 31 29   if ((argc != 1)
2e10: 20 26 26 20 28 61 72 67 63 20 21 3d 20 32 29 29   && (argc != 2))
2e20: 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65   {..Tcl_AppendRe
2e30: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 72  sult(interp, "wr
2e40: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
2e50: 6c 64 20 62 65 20 5c 22 22 2c 20 61 72 67 76 5b  ld be \"", argv[
2e60: 30 5d 2c 0a 09 09 22 20 3f 72 65 74 75 72 6e 43  0],..." ?returnC
2e70: 6f 64 65 3f 5c 22 22 2c 20 28 63 68 61 72 20 2a  ode?\"", (char *
2e80: 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e  ) NULL);..return
2e90: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20   TCL_ERROR;.    
2ea0: 7d 0a 20 20 20 20 69 66 20 28 61 72 67 63 20 3d  }.    if (argc =
2eb0: 3d 20 31 29 20 7b 0a 09 76 61 6c 75 65 20 3d 20  = 1) {..value = 
2ec0: 30 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  0;.    } else {.
2ed0: 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 28  .if (Tcl_GetInt(
2ee0: 69 6e 74 65 72 70 2c 20 61 72 67 76 5b 31 5d 2c  interp, argv[1],
2ef0: 20 26 76 61 6c 75 65 29 20 21 3d 20 54 43 4c 5f   &value) != TCL_
2f00: 4f 4b 29 20 7b 0a 09 20 20 20 20 72 65 74 75 72  OK) {..    retur
2f10: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a  n TCL_ERROR;..}.
2f20: 20 20 20 20 7d 0a 0a 20 20 20 20 77 68 69 6c 65      }..    while
2f30: 20 28 74 6b 4d 61 69 6e 57 69 6e 64 6f 77 4c 69   (tkMainWindowLi
2f40: 73 74 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 09 54  st != NULL) {..T
2f50: 6b 5f 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 28  k_DestroyWindow(
2f60: 28 54 6b 5f 57 69 6e 64 6f 77 29 20 74 6b 4d 61  (Tk_Window) tkMa
2f70: 69 6e 57 69 6e 64 6f 77 4c 69 73 74 2d 3e 77 69  inWindowList->wi
2f80: 6e 50 74 72 29 3b 0a 20 20 20 20 7d 0a 20 20 20  nPtr);.    }.   
2f90: 20 65 78 69 74 28 76 61 6c 75 65 29 3b 0a 20 20   exit(value);.  
2fa0: 20 20 2f 2a 20 4e 4f 54 52 45 41 43 48 45 44 20    /* NOTREACHED 
2fb0: 2a 2f 0a 20 20 20 20 72 65 74 75 72 6e 20 54 43  */.    return TC
2fc0: 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d  L_OK;.}.../*. *-
2fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3010: 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 54 6b 5f 4c  -----. *. * Tk_L
3020: 6f 77 65 72 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a  owerCmd --. *. *
3030: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
3040: 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72  is invoked to pr
3050: 6f 63 65 73 73 20 74 68 65 20 22 6c 6f 77 65 72  ocess the "lower
3060: 22 20 54 63 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 20  " Tcl command.. 
3070: 2a 09 53 65 65 20 74 68 65 20 75 73 65 72 20 64  *.See the user d
3080: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
3090: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
30a0: 20 69 74 20 64 6f 65 73 2e 0a 20 2a 0a 20 2a 20   it does.. *. * 
30b0: 52 65 73 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74  Results:. *.A st
30c0: 61 6e 64 61 72 64 20 54 63 6c 20 72 65 73 75 6c  andard Tcl resul
30d0: 74 2e 0a 20 2a 0a 20 2a 20 53 69 64 65 20 65 66  t.. *. * Side ef
30e0: 66 65 63 74 73 3a 0a 20 2a 09 53 65 65 20 74 68  fects:. *.See th
30f0: 65 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74 61  e user documenta
3100: 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d  tion.. *. *-----
3110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3150: 2d 0a 20 2a 2f 0a 0a 09 2f 2a 20 41 52 47 53 55  -. */.../* ARGSU
3160: 53 45 44 20 2a 2f 0a 69 6e 74 0a 54 6b 5f 4c 6f  SED */.int.Tk_Lo
3170: 77 65 72 43 6d 64 28 63 6c 69 65 6e 74 44 61 74  werCmd(clientDat
3180: 61 2c 20 69 6e 74 65 72 70 2c 20 61 72 67 63 2c  a, interp, argc,
3190: 20 61 72 67 76 29 0a 20 20 20 20 43 6c 69 65 6e   argv).    Clien
31a0: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61  tData clientData
31b0: 3b 09 2f 2a 20 4d 61 69 6e 20 77 69 6e 64 6f 77  ;./* Main window
31c0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
31d0: 0a 09 09 09 09 20 2a 20 69 6e 74 65 72 70 72 65  ..... * interpre
31e0: 74 65 72 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f  ter. */.    Tcl_
31f0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09  Interp *interp;.
3200: 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65  ./* Current inte
3210: 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20  rpreter. */.    
3220: 69 6e 74 20 61 72 67 63 3b 09 09 09 2f 2a 20 4e  int argc;.../* N
3230: 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
3240: 74 73 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72 20  ts. */.    char 
3250: 2a 2a 61 72 67 76 3b 09 09 2f 2a 20 41 72 67 75  **argv;../* Argu
3260: 6d 65 6e 74 20 73 74 72 69 6e 67 73 2e 20 2a 2f  ment strings. */
3270: 0a 7b 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77  .{.    Tk_Window
3280: 20 6d 61 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64   main = (Tk_Wind
3290: 6f 77 29 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a  ow) clientData;.
32a0: 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b      Tk_Window tk
32b0: 77 69 6e 2c 20 6f 74 68 65 72 3b 0a 0a 20 20 20  win, other;..   
32c0: 20 69 66 20 28 28 61 72 67 63 20 21 3d 20 32 29   if ((argc != 2)
32d0: 20 26 26 20 28 61 72 67 63 20 21 3d 20 33 29 29   && (argc != 3))
32e0: 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65   {..Tcl_AppendRe
32f0: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 72  sult(interp, "wr
3300: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
3310: 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61 72 67  ld be \"",...arg
3320: 76 5b 30 5d 2c 20 22 20 77 69 6e 64 6f 77 20 3f  v[0], " window ?
3330: 62 65 6c 6f 77 54 68 69 73 3f 5c 22 22 2c 20 28  belowThis?\"", (
3340: 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09  char *) NULL);..
3350: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
3360: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 6b 77  ;.    }..    tkw
3370: 69 6e 20 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57 69  in = Tk_NameToWi
3380: 6e 64 6f 77 28 69 6e 74 65 72 70 2c 20 61 72 67  ndow(interp, arg
3390: 76 5b 31 5d 2c 20 6d 61 69 6e 29 3b 0a 20 20 20  v[1], main);.   
33a0: 20 69 66 20 28 74 6b 77 69 6e 20 3d 3d 20 4e 55   if (tkwin == NU
33b0: 4c 4c 29 20 7b 0a 09 72 65 74 75 72 6e 20 54 43  LL) {..return TC
33c0: 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20  L_ERROR;.    }. 
33d0: 20 20 20 69 66 20 28 61 72 67 63 20 3d 3d 20 32     if (argc == 2
33e0: 29 20 7b 0a 09 6f 74 68 65 72 20 3d 20 4e 55 4c  ) {..other = NUL
33f0: 4c 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  L;.    } else {.
3400: 09 6f 74 68 65 72 20 3d 20 54 6b 5f 4e 61 6d 65  .other = Tk_Name
3410: 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65 72 70 2c  ToWindow(interp,
3420: 20 61 72 67 76 5b 32 5d 2c 20 6d 61 69 6e 29 3b   argv[2], main);
3430: 0a 09 69 66 20 28 6f 74 68 65 72 20 3d 3d 20 4e  ..if (other == N
3440: 55 4c 4c 29 20 7b 0a 09 20 20 20 20 72 65 74 75  ULL) {..    retu
3450: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d  rn TCL_ERROR;..}
3460: 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 54  .    }.    if (T
3470: 6b 5f 52 65 73 74 61 63 6b 57 69 6e 64 6f 77 28  k_RestackWindow(
3480: 74 6b 77 69 6e 2c 20 42 65 6c 6f 77 2c 20 6f 74  tkwin, Below, ot
3490: 68 65 72 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20  her) != TCL_OK) 
34a0: 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73  {..Tcl_AppendRes
34b0: 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 61 6e  ult(interp, "can
34c0: 27 74 20 6c 6f 77 65 72 20 5c 22 22 2c 20 61 72  't lower \"", ar
34d0: 67 76 5b 31 5d 2c 20 22 5c 22 20 61 62 6f 76 65  gv[1], "\" above
34e0: 20 5c 22 22 2c 0a 09 09 61 72 67 76 5b 32 5d 2c   \"",...argv[2],
34f0: 20 22 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20   "\"", (char *) 
3500: 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54  NULL);..return T
3510: 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a  CL_ERROR;.    }.
3520: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f      return TCL_O
3530: 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d  K;.}.../*. *----
3540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3580: 2d 2d 0a 20 2a 0a 20 2a 20 54 6b 5f 52 61 69 73  --. *. * Tk_Rais
3590: 65 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a 09 54 68  eCmd --. *. *.Th
35a0: 69 73 20 70 72 6f 63 65 64 75 72 65 20 69 73 20  is procedure is 
35b0: 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72 6f 63 65  invoked to proce
35c0: 73 73 20 74 68 65 20 22 72 61 69 73 65 22 20 54  ss the "raise" T
35d0: 63 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 20 2a 09 53  cl command.. *.S
35e0: 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75  ee the user docu
35f0: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64 65  mentation for de
3600: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
3610: 20 64 6f 65 73 2e 0a 20 2a 0a 20 2a 20 52 65 73   does.. *. * Res
3620: 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61 6e 64  ults:. *.A stand
3630: 61 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e 0a  ard Tcl result..
3640: 20 2a 0a 20 2a 20 53 69 64 65 20 65 66 66 65 63   *. * Side effec
3650: 74 73 3a 0a 20 2a 09 53 65 65 20 74 68 65 20 75  ts:. *.See the u
3660: 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ser documentatio
3670: 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d  n.. *. *--------
3680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  --------------. 
36c0: 2a 2f 0a 0a 09 2f 2a 20 41 52 47 53 55 53 45 44  */.../* ARGSUSED
36d0: 20 2a 2f 0a 69 6e 74 0a 54 6b 5f 52 61 69 73 65   */.int.Tk_Raise
36e0: 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20  Cmd(clientData, 
36f0: 69 6e 74 65 72 70 2c 20 61 72 67 63 2c 20 61 72  interp, argc, ar
3700: 67 76 29 0a 20 20 20 20 43 6c 69 65 6e 74 44 61  gv).    ClientDa
3710: 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b 09 2f  ta clientData;./
3720: 2a 20 4d 61 69 6e 20 77 69 6e 64 6f 77 20 61 73  * Main window as
3730: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 09 09  sociated with...
3740: 09 09 20 2a 20 69 6e 74 65 72 70 72 65 74 65 72  .. * interpreter
3750: 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74  . */.    Tcl_Int
3760: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a  erp *interp;../*
3770: 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72   Current interpr
3780: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74  eter. */.    int
3790: 20 61 72 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62   argc;.../* Numb
37a0: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e  er of arguments.
37b0: 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 2a 61   */.    char **a
37c0: 72 67 76 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e  rgv;../* Argumen
37d0: 74 20 73 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a  t strings. */.{.
37e0: 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20 6d 61      Tk_Window ma
37f0: 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64 6f 77 29  in = (Tk_Window)
3800: 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20   clientData;.   
3810: 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77 69 6e   Tk_Window tkwin
3820: 2c 20 6f 74 68 65 72 3b 0a 0a 20 20 20 20 69 66  , other;..    if
3830: 20 28 28 61 72 67 63 20 21 3d 20 32 29 20 26 26   ((argc != 2) &&
3840: 20 28 61 72 67 63 20 21 3d 20 33 29 29 20 7b 0a   (argc != 3)) {.
3850: 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c  .Tcl_AppendResul
3860: 74 28 69 6e 74 65 72 70 2c 20 22 77 72 6f 6e 67  t(interp, "wrong
3870: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
3880: 62 65 20 5c 22 22 2c 0a 09 09 61 72 67 76 5b 30  be \"",...argv[0
3890: 5d 2c 20 22 20 77 69 6e 64 6f 77 20 3f 61 62 6f  ], " window ?abo
38a0: 76 65 54 68 69 73 3f 5c 22 22 2c 20 28 63 68 61  veThis?\"", (cha
38b0: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74  r *) NULL);..ret
38c0: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20  urn TCL_ERROR;. 
38d0: 20 20 20 7d 0a 0a 20 20 20 20 74 6b 77 69 6e 20     }..    tkwin 
38e0: 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57 69 6e 64 6f  = Tk_NameToWindo
38f0: 77 28 69 6e 74 65 72 70 2c 20 61 72 67 76 5b 31  w(interp, argv[1
3900: 5d 2c 20 6d 61 69 6e 29 3b 0a 20 20 20 20 69 66  ], main);.    if
3910: 20 28 74 6b 77 69 6e 20 3d 3d 20 4e 55 4c 4c 29   (tkwin == NULL)
3920: 20 7b 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f 45   {..return TCL_E
3930: 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20  RROR;.    }.    
3940: 69 66 20 28 61 72 67 63 20 3d 3d 20 32 29 20 7b  if (argc == 2) {
3950: 0a 09 6f 74 68 65 72 20 3d 20 4e 55 4c 4c 3b 0a  ..other = NULL;.
3960: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6f 74      } else {..ot
3970: 68 65 72 20 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57  her = Tk_NameToW
3980: 69 6e 64 6f 77 28 69 6e 74 65 72 70 2c 20 61 72  indow(interp, ar
3990: 67 76 5b 32 5d 2c 20 6d 61 69 6e 29 3b 0a 09 69  gv[2], main);..i
39a0: 66 20 28 6f 74 68 65 72 20 3d 3d 20 4e 55 4c 4c  f (other == NULL
39b0: 29 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20  ) {..    return 
39c0: 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 20 20  TCL_ERROR;..}.  
39d0: 20 20 7d 0a 20 20 20 20 69 66 20 28 54 6b 5f 52    }.    if (Tk_R
39e0: 65 73 74 61 63 6b 57 69 6e 64 6f 77 28 74 6b 77  estackWindow(tkw
39f0: 69 6e 2c 20 41 62 6f 76 65 2c 20 6f 74 68 65 72  in, Above, other
3a00: 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 09  ) != TCL_OK) {..
3a10: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74  Tcl_AppendResult
3a20: 28 69 6e 74 65 72 70 2c 20 22 63 61 6e 27 74 20  (interp, "can't 
3a30: 72 61 69 73 65 20 5c 22 22 2c 20 61 72 67 76 5b  raise \"", argv[
3a40: 31 5d 2c 20 22 5c 22 20 61 62 6f 76 65 20 5c 22  1], "\" above \"
3a50: 22 2c 0a 09 09 61 72 67 76 5b 32 5d 2c 20 22 5c  ",...argv[2], "\
3a60: 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c  "", (char *) NUL
3a70: 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f  L);..return TCL_
3a80: 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20  ERROR;.    }.   
3a90: 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a   return TCL_OK;.
3aa0: 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d  }.../*. *-------
3ab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ac0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
3af0: 20 2a 0a 20 2a 20 54 6b 5f 54 6b 43 6d 64 20 2d   *. * Tk_TkCmd -
3b00: 2d 0a 20 2a 0a 20 2a 09 54 68 69 73 20 70 72 6f  -. *. *.This pro
3b10: 63 65 64 75 72 65 20 69 73 20 69 6e 76 6f 6b 65  cedure is invoke
3b20: 64 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65  d to process the
3b30: 20 22 74 6b 22 20 54 63 6c 20 63 6f 6d 6d 61 6e   "tk" Tcl comman
3b40: 64 2e 0a 20 2a 09 53 65 65 20 74 68 65 20 75 73  d.. *.See the us
3b50: 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  er documentation
3b60: 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20   for details on 
3b70: 77 68 61 74 20 69 74 20 64 6f 65 73 2e 0a 20 2a  what it does.. *
3b80: 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a 09  . * Results:. *.
3b90: 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72  A standard Tcl r
3ba0: 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 64  esult.. *. * Sid
3bb0: 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53 65  e effects:. *.Se
3bc0: 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75 6d  e the user docum
3bd0: 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d  entation.. *. *-
3be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c20: 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 09 2f 2a 20 41  -----. */.../* A
3c30: 52 47 53 55 53 45 44 20 2a 2f 0a 69 6e 74 0a 54  RGSUSED */.int.T
3c40: 6b 5f 54 6b 43 6d 64 28 63 6c 69 65 6e 74 44 61  k_TkCmd(clientDa
3c50: 74 61 2c 20 69 6e 74 65 72 70 2c 20 61 72 67 63  ta, interp, argc
3c60: 2c 20 61 72 67 76 29 0a 20 20 20 20 43 6c 69 65  , argv).    Clie
3c70: 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74  ntData clientDat
3c80: 61 3b 09 2f 2a 20 4d 61 69 6e 20 77 69 6e 64 6f  a;./* Main windo
3c90: 77 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  w associated wit
3ca0: 68 0a 09 09 09 09 20 2a 20 69 6e 74 65 72 70 72  h..... * interpr
3cb0: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 54 63 6c  eter. */.    Tcl
3cc0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b  _Interp *interp;
3cd0: 09 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74  ../* Current int
3ce0: 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20  erpreter. */.   
3cf0: 20 69 6e 74 20 61 72 67 63 3b 09 09 09 2f 2a 20   int argc;.../* 
3d00: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  Number of argume
3d10: 6e 74 73 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72  nts. */.    char
3d20: 20 2a 2a 61 72 67 76 3b 09 09 2f 2a 20 41 72 67   **argv;../* Arg
3d30: 75 6d 65 6e 74 20 73 74 72 69 6e 67 73 2e 20 2a  ument strings. *
3d40: 2f 0a 7b 0a 20 20 20 20 63 68 61 72 20 63 3b 0a  /.{.    char c;.
3d50: 20 20 20 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74      size_t lengt
3d60: 68 3b 0a 0a 20 20 20 20 69 66 20 28 61 72 67 63  h;..    if (argc
3d70: 20 3c 20 32 29 20 7b 0a 09 54 63 6c 5f 41 70 70   < 2) {..Tcl_App
3d80: 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70  endResult(interp
3d90: 2c 20 22 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  , "wrong # args:
3da0: 20 73 68 6f 75 6c 64 20 62 65 20 5c 22 22 2c 0a   should be \"",.
3db0: 09 09 61 72 67 76 5b 30 5d 2c 20 22 20 6f 70 74  ..argv[0], " opt
3dc0: 69 6f 6e 20 3f 61 72 67 3f 5c 22 22 2c 20 28 63  ion ?arg?\"", (c
3dd0: 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72  har *) NULL);..r
3de0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
3df0: 0a 20 20 20 20 7d 0a 20 20 20 20 63 20 3d 20 61  .    }.    c = a
3e00: 72 67 76 5b 31 5d 5b 30 5d 3b 0a 20 20 20 20 6c  rgv[1][0];.    l
3e10: 65 6e 67 74 68 20 3d 20 73 74 72 6c 65 6e 28 61  ength = strlen(a
3e20: 72 67 76 5b 31 5d 29 3b 0a 20 20 20 20 69 66 20  rgv[1]);.    if 
3e30: 28 28 63 20 3d 3d 20 27 61 27 29 20 26 26 20 28  ((c == 'a') && (
3e40: 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c  strncmp(argv[1],
3e50: 20 22 61 70 70 6e 61 6d 65 22 2c 20 6c 65 6e 67   "appname", leng
3e60: 74 68 29 20 3d 3d 20 30 29 29 20 7b 0a 20 20 20  th) == 0)) {.   
3e70: 20 20 20 20 20 72 65 74 75 72 6e 20 43 74 6b 5f       return Ctk_
3e80: 55 6e 73 75 70 70 6f 72 74 65 64 28 69 6e 74 65  Unsupported(inte
3e90: 72 70 2c 20 22 74 6b 20 61 70 70 6e 61 6d 65 22  rp, "tk appname"
3ea0: 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  );.    } else {.
3eb0: 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c  .Tcl_AppendResul
3ec0: 74 28 69 6e 74 65 72 70 2c 20 22 62 61 64 20 6f  t(interp, "bad o
3ed0: 70 74 69 6f 6e 20 5c 22 22 2c 20 61 72 67 76 5b  ption \"", argv[
3ee0: 31 5d 2c 0a 09 09 22 5c 22 3a 20 6d 75 73 74 20  1],..."\": must 
3ef0: 62 65 20 61 70 70 6e 61 6d 65 22 2c 20 28 63 68  be appname", (ch
3f00: 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65  ar *) NULL);..re
3f10: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
3f20: 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e      }.    return
3f30: 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a   TCL_OK;.}.../*.
3f40: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
3f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f80: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 54  --------. *. * T
3f90: 6b 5f 54 6b 77 61 69 74 43 6d 64 20 2d 2d 0a 20  k_TkwaitCmd --. 
3fa0: 2a 0a 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64  *. *.This proced
3fb0: 75 72 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 74  ure is invoked t
3fc0: 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20 22 74  o process the "t
3fd0: 6b 77 61 69 74 22 20 54 63 6c 20 63 6f 6d 6d 61  kwait" Tcl comma
3fe0: 6e 64 2e 0a 20 2a 09 53 65 65 20 74 68 65 20 75  nd.. *.See the u
3ff0: 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ser documentatio
4000: 6e 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e  n for details on
4010: 20 77 68 61 74 20 69 74 20 64 6f 65 73 2e 0a 20   what it does.. 
4020: 2a 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a  *. * Results:. *
4030: 09 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20  .A standard Tcl 
4040: 72 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69  result.. *. * Si
4050: 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53  de effects:. *.S
4060: 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75  ee the user docu
4070: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a  mentation.. *. *
4080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
40a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
40b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
40c0: 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 09 2f 2a 20  ------. */.../* 
40d0: 41 52 47 53 55 53 45 44 20 2a 2f 0a 69 6e 74 0a  ARGSUSED */.int.
40e0: 54 6b 5f 54 6b 77 61 69 74 43 6d 64 28 63 6c 69  Tk_TkwaitCmd(cli
40f0: 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c  entData, interp,
4100: 20 61 72 67 63 2c 20 61 72 67 76 29 0a 20 20 20   argc, argv).   
4110: 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65   ClientData clie
4120: 6e 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69 6e 20  ntData;./* Main 
4130: 77 69 6e 64 6f 77 20 61 73 73 6f 63 69 61 74 65  window associate
4140: 64 20 77 69 74 68 0a 09 09 09 09 20 2a 20 69 6e  d with..... * in
4150: 74 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20  terpreter. */.  
4160: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e    Tcl_Interp *in
4170: 74 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e  terp;../* Curren
4180: 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a  t interpreter. *
4190: 2f 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b 09  /.    int argc;.
41a0: 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61  ../* Number of a
41b0: 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 20  rguments. */.   
41c0: 20 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09 2f   char **argv;../
41d0: 2a 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69 6e  * Argument strin
41e0: 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 54 6b 5f  gs. */.{.    Tk_
41f0: 57 69 6e 64 6f 77 20 74 6b 77 69 6e 20 3d 20 28  Window tkwin = (
4200: 54 6b 5f 57 69 6e 64 6f 77 29 20 63 6c 69 65 6e  Tk_Window) clien
4210: 74 44 61 74 61 3b 0a 20 20 20 20 69 6e 74 20 63  tData;.    int c
4220: 2c 20 64 6f 6e 65 3b 0a 20 20 20 20 73 69 7a 65  , done;.    size
4230: 5f 74 20 6c 65 6e 67 74 68 3b 0a 0a 20 20 20 20  _t length;..    
4240: 69 66 20 28 61 72 67 63 20 21 3d 20 33 29 20 7b  if (argc != 3) {
4250: 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75  ..Tcl_AppendResu
4260: 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 72 6f 6e  lt(interp, "wron
4270: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64  g # args: should
4280: 20 62 65 20 5c 22 22 2c 0a 09 09 61 72 67 76 5b   be \"",...argv[
4290: 30 5d 2c 20 22 20 76 61 72 69 61 62 6c 65 7c 76  0], " variable|v
42a0: 69 73 69 62 6c 65 7c 77 69 6e 64 6f 77 20 6e 61  isible|window na
42b0: 6d 65 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20  me\"", (char *) 
42c0: 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54  NULL);..return T
42d0: 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a  CL_ERROR;.    }.
42e0: 20 20 20 20 63 20 3d 20 61 72 67 76 5b 31 5d 5b      c = argv[1][
42f0: 30 5d 3b 0a 20 20 20 20 6c 65 6e 67 74 68 20 3d  0];.    length =
4300: 20 73 74 72 6c 65 6e 28 61 72 67 76 5b 31 5d 29   strlen(argv[1])
4310: 3b 0a 20 20 20 20 69 66 20 28 28 63 20 3d 3d 20  ;.    if ((c == 
4320: 27 76 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70  'v') && (strncmp
4330: 28 61 72 67 76 5b 31 5d 2c 20 22 76 61 72 69 61  (argv[1], "varia
4340: 62 6c 65 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  ble", length) ==
4350: 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e   0)..    && (len
4360: 67 74 68 20 3e 3d 20 32 29 29 20 7b 0a 09 69 66  gth >= 2)) {..if
4370: 20 28 54 63 6c 5f 54 72 61 63 65 56 61 72 28 69   (Tcl_TraceVar(i
4380: 6e 74 65 72 70 2c 20 61 72 67 76 5b 32 5d 2c 0a  nterp, argv[2],.
4390: 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c  ..TCL_GLOBAL_ONL
43a0: 59 7c 54 43 4c 5f 54 52 41 43 45 5f 57 52 49 54  Y|TCL_TRACE_WRIT
43b0: 45 53 7c 54 43 4c 5f 54 52 41 43 45 5f 55 4e 53  ES|TCL_TRACE_UNS
43c0: 45 54 53 2c 0a 09 09 57 61 69 74 56 61 72 69 61  ETS,...WaitVaria
43d0: 62 6c 65 50 72 6f 63 2c 20 28 43 6c 69 65 6e 74  bleProc, (Client
43e0: 44 61 74 61 29 20 26 64 6f 6e 65 29 20 21 3d 20  Data) &done) != 
43f0: 54 43 4c 5f 4f 4b 29 20 7b 0a 09 20 20 20 20 72  TCL_OK) {..    r
4400: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
4410: 0a 09 7d 0a 09 64 6f 6e 65 20 3d 20 30 3b 0a 09  ..}..done = 0;..
4420: 77 68 69 6c 65 20 28 21 64 6f 6e 65 29 20 7b 0a  while (!done) {.
4430: 09 20 20 20 20 54 6b 5f 44 6f 4f 6e 65 45 76 65  .    Tk_DoOneEve
4440: 6e 74 28 30 29 3b 0a 09 7d 0a 09 54 63 6c 5f 55  nt(0);..}..Tcl_U
4450: 6e 74 72 61 63 65 56 61 72 28 69 6e 74 65 72 70  ntraceVar(interp
4460: 2c 20 61 72 67 76 5b 32 5d 2c 0a 09 09 54 43 4c  , argv[2],...TCL
4470: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 7c 54 43 4c  _GLOBAL_ONLY|TCL
4480: 5f 54 52 41 43 45 5f 57 52 49 54 45 53 7c 54 43  _TRACE_WRITES|TC
4490: 4c 5f 54 52 41 43 45 5f 55 4e 53 45 54 53 2c 0a  L_TRACE_UNSETS,.
44a0: 09 09 57 61 69 74 56 61 72 69 61 62 6c 65 50 72  ..WaitVariablePr
44b0: 6f 63 2c 20 28 43 6c 69 65 6e 74 44 61 74 61 29  oc, (ClientData)
44c0: 20 26 64 6f 6e 65 29 3b 0a 20 20 20 20 7d 20 65   &done);.    } e
44d0: 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 76  lse if ((c == 'v
44e0: 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28 61  ') && (strncmp(a
44f0: 72 67 76 5b 31 5d 2c 20 22 76 69 73 69 62 69 6c  rgv[1], "visibil
4500: 69 74 79 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  ity", length) ==
4510: 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e   0)..    && (len
4520: 67 74 68 20 3e 3d 20 32 29 29 20 7b 0a 09 54 6b  gth >= 2)) {..Tk
4530: 5f 57 69 6e 64 6f 77 20 77 69 6e 64 6f 77 3b 0a  _Window window;.
4540: 0a 09 77 69 6e 64 6f 77 20 3d 20 54 6b 5f 4e 61  ..window = Tk_Na
4550: 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65 72  meToWindow(inter
4560: 70 2c 20 61 72 67 76 5b 32 5d 2c 20 74 6b 77 69  p, argv[2], tkwi
4570: 6e 29 3b 0a 09 69 66 20 28 77 69 6e 64 6f 77 20  n);..if (window 
4580: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 20 20 20 20  == NULL) {..    
4590: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
45a0: 3b 0a 09 7d 0a 09 54 6b 5f 43 72 65 61 74 65 45  ;..}..Tk_CreateE
45b0: 76 65 6e 74 48 61 6e 64 6c 65 72 28 77 69 6e 64  ventHandler(wind
45c0: 6f 77 2c 20 43 54 4b 5f 4d 41 50 5f 45 56 45 4e  ow, CTK_MAP_EVEN
45d0: 54 5f 4d 41 53 4b 7c 43 54 4b 5f 44 45 53 54 52  T_MASK|CTK_DESTR
45e0: 4f 59 5f 45 56 45 4e 54 5f 4d 41 53 4b 2c 0a 09  OY_EVENT_MASK,..
45f0: 20 20 20 20 57 61 69 74 57 69 6e 64 6f 77 50 72      WaitWindowPr
4600: 6f 63 2c 20 28 43 6c 69 65 6e 74 44 61 74 61 29  oc, (ClientData)
4610: 20 26 64 6f 6e 65 29 3b 0a 09 64 6f 6e 65 20 3d   &done);..done =
4620: 20 30 3b 0a 09 77 68 69 6c 65 20 28 21 64 6f 6e   0;..while (!don
4630: 65 29 20 7b 0a 09 20 20 20 20 54 6b 5f 44 6f 4f  e) {..    Tk_DoO
4640: 6e 65 45 76 65 6e 74 28 30 29 3b 0a 09 7d 0a 09  neEvent(0);..}..
4650: 54 6b 5f 44 65 6c 65 74 65 45 76 65 6e 74 48 61  Tk_DeleteEventHa
4660: 6e 64 6c 65 72 28 77 69 6e 64 6f 77 2c 20 43 54  ndler(window, CT
4670: 4b 5f 4d 41 50 5f 45 56 45 4e 54 5f 4d 41 53 4b  K_MAP_EVENT_MASK
4680: 7c 43 54 4b 5f 44 45 53 54 52 4f 59 5f 45 56 45  |CTK_DESTROY_EVE
4690: 4e 54 5f 4d 41 53 4b 2c 0a 09 20 20 20 20 57 61  NT_MASK,..    Wa
46a0: 69 74 57 69 6e 64 6f 77 50 72 6f 63 2c 20 28 43  itWindowProc, (C
46b0: 6c 69 65 6e 74 44 61 74 61 29 20 26 64 6f 6e 65  lientData) &done
46c0: 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66  );.    } else if
46d0: 20 28 28 63 20 3d 3d 20 27 77 27 29 20 26 26 20   ((c == 'w') && 
46e0: 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d  (strncmp(argv[1]
46f0: 2c 20 22 77 69 6e 64 6f 77 22 2c 20 6c 65 6e 67  , "window", leng
4700: 74 68 29 20 3d 3d 20 30 29 29 20 7b 0a 09 54 6b  th) == 0)) {..Tk
4710: 5f 57 69 6e 64 6f 77 20 77 69 6e 64 6f 77 3b 0a  _Window window;.
4720: 0a 09 77 69 6e 64 6f 77 20 3d 20 54 6b 5f 4e 61  ..window = Tk_Na
4730: 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65 72  meToWindow(inter
4740: 70 2c 20 61 72 67 76 5b 32 5d 2c 20 74 6b 77 69  p, argv[2], tkwi
4750: 6e 29 3b 0a 09 69 66 20 28 77 69 6e 64 6f 77 20  n);..if (window 
4760: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 20 20 20 20  == NULL) {..    
4770: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
4780: 3b 0a 09 7d 0a 09 54 6b 5f 43 72 65 61 74 65 45  ;..}..Tk_CreateE
4790: 76 65 6e 74 48 61 6e 64 6c 65 72 28 77 69 6e 64  ventHandler(wind
47a0: 6f 77 2c 20 43 54 4b 5f 44 45 53 54 52 4f 59 5f  ow, CTK_DESTROY_
47b0: 45 56 45 4e 54 5f 4d 41 53 4b 2c 0a 09 20 20 20  EVENT_MASK,..   
47c0: 20 57 61 69 74 57 69 6e 64 6f 77 50 72 6f 63 2c   WaitWindowProc,
47d0: 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 26 64   (ClientData) &d
47e0: 6f 6e 65 29 3b 0a 09 64 6f 6e 65 20 3d 20 30 3b  one);..done = 0;
47f0: 0a 09 77 68 69 6c 65 20 28 21 64 6f 6e 65 29 20  ..while (!done) 
4800: 7b 0a 09 20 20 20 20 54 6b 5f 44 6f 4f 6e 65 45  {..    Tk_DoOneE
4810: 76 65 6e 74 28 30 29 3b 0a 09 7d 0a 09 2f 2a 0a  vent(0);..}../*.
4820: 09 20 2a 20 4e 6f 74 65 3a 20 20 74 68 65 72 65  . * Note:  there
4830: 27 73 20 6e 6f 20 6e 65 65 64 20 74 6f 20 64 65  's no need to de
4840: 6c 65 74 65 20 74 68 65 20 65 76 65 6e 74 20 68  lete the event h
4850: 61 6e 64 6c 65 72 2e 20 20 49 74 20 77 61 73 0a  andler.  It was.
4860: 09 20 2a 20 64 65 6c 65 74 65 64 20 61 75 74 6f  . * deleted auto
4870: 6d 61 74 69 63 61 6c 6c 79 20 77 68 65 6e 20 74  matically when t
4880: 68 65 20 77 69 6e 64 6f 77 20 77 61 73 20 64 65  he window was de
4890: 73 74 72 6f 79 65 64 2e 0a 09 20 2a 2f 0a 20 20  stroyed... */.  
48a0: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 54 63 6c 5f    } else {..Tcl_
48b0: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74  AppendResult(int
48c0: 65 72 70 2c 20 22 62 61 64 20 6f 70 74 69 6f 6e  erp, "bad option
48d0: 20 5c 22 22 2c 20 61 72 67 76 5b 31 5d 2c 0a 09   \"", argv[1],..
48e0: 09 22 5c 22 3a 20 6d 75 73 74 20 62 65 20 76 61  ."\": must be va
48f0: 72 69 61 62 6c 65 2c 20 76 69 73 69 62 69 6c 69  riable, visibili
4900: 74 79 2c 20 6f 72 20 77 69 6e 64 6f 77 22 2c 20  ty, or window", 
4910: 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a  (char *) NULL);.
4920: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f  .return TCL_ERRO
4930: 52 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a  R;.    }..    /*
4940: 0a 20 20 20 20 20 2a 20 43 6c 65 61 72 20 6f 75  .     * Clear ou
4950: 74 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65  t the interprete
4960: 72 27 73 20 72 65 73 75 6c 74 2c 20 73 69 6e 63  r's result, sinc
4970: 65 20 69 74 20 6d 61 79 20 68 61 76 65 20 62 65  e it may have be
4980: 65 6e 20 73 65 74 0a 20 20 20 20 20 2a 20 62 79  en set.     * by
4990: 20 65 76 65 6e 74 20 68 61 6e 64 6c 65 72 73 2e   event handlers.
49a0: 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 54 63  .     */..    Tc
49b0: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
49c0: 74 65 72 70 29 3b 0a 20 20 20 20 72 65 74 75 72  terp);.    retur
49d0: 6e 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0a 09 2f 2a  n TCL_OK;.}.../*
49e0: 20 41 52 47 53 55 53 45 44 20 2a 2f 0a 73 74 61   ARGSUSED */.sta
49f0: 74 69 63 20 63 68 61 72 20 2a 0a 57 61 69 74 56  tic char *.WaitV
4a00: 61 72 69 61 62 6c 65 50 72 6f 63 28 63 6c 69 65  ariableProc(clie
4a10: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20  ntData, interp, 
4a20: 6e 61 6d 65 31 2c 20 6e 61 6d 65 32 2c 20 66 6c  name1, name2, fl
4a30: 61 67 73 29 0a 20 20 20 20 43 6c 69 65 6e 74 44  ags).    ClientD
4a40: 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b 09  ata clientData;.
4a50: 2f 2a 20 50 6f 69 6e 74 65 72 20 74 6f 20 69 6e  /* Pointer to in
4a60: 74 65 67 65 72 20 74 6f 20 73 65 74 20 74 6f 20  teger to set to 
4a70: 31 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49 6e  1. */.    Tcl_In
4a80: 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f  terp *interp;../
4a90: 2a 20 49 6e 74 65 72 70 72 65 74 65 72 20 63 6f  * Interpreter co
4aa0: 6e 74 61 69 6e 69 6e 67 20 76 61 72 69 61 62 6c  ntaining variabl
4ab0: 65 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a  e. */.    char *
4ac0: 6e 61 6d 65 31 3b 09 09 2f 2a 20 4e 61 6d 65 20  name1;../* Name 
4ad0: 6f 66 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a  of variable. */.
4ae0: 20 20 20 20 63 68 61 72 20 2a 6e 61 6d 65 32 3b      char *name2;
4af0: 09 09 2f 2a 20 53 65 63 6f 6e 64 20 70 61 72 74  ../* Second part
4b00: 20 6f 66 20 76 61 72 69 61 62 6c 65 20 6e 61 6d   of variable nam
4b10: 65 2e 20 2a 2f 0a 20 20 20 20 69 6e 74 20 66 6c  e. */.    int fl
4b20: 61 67 73 3b 09 09 09 2f 2a 20 49 6e 66 6f 72 6d  ags;.../* Inform
4b30: 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61 74  ation about what
4b40: 20 68 61 70 70 65 6e 65 64 2e 20 2a 2f 0a 7b 0a   happened. */.{.
4b50: 20 20 20 20 69 6e 74 20 2a 64 6f 6e 65 50 74 72      int *donePtr
4b60: 20 3d 20 28 69 6e 74 20 2a 29 20 63 6c 69 65 6e   = (int *) clien
4b70: 74 44 61 74 61 3b 0a 0a 20 20 20 20 2a 64 6f 6e  tData;..    *don
4b80: 65 50 74 72 20 3d 20 31 3b 0a 20 20 20 20 72 65  ePtr = 1;.    re
4b90: 74 75 72 6e 20 28 63 68 61 72 20 2a 29 20 4e 55  turn (char *) NU
4ba0: 4c 4c 3b 0a 7d 0a 0a 09 2f 2a 41 52 47 53 55 53  LL;.}.../*ARGSUS
4bb0: 45 44 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64  ED*/.static void
4bc0: 0a 57 61 69 74 57 69 6e 64 6f 77 50 72 6f 63 28  .WaitWindowProc(
4bd0: 63 6c 69 65 6e 74 44 61 74 61 2c 20 65 76 65 6e  clientData, even
4be0: 74 50 74 72 29 0a 20 20 20 20 43 6c 69 65 6e 74  tPtr).    Client
4bf0: 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b  Data clientData;
4c00: 09 2f 2a 20 50 6f 69 6e 74 65 72 20 74 6f 20 69  ./* Pointer to i
4c10: 6e 74 65 67 65 72 20 74 6f 20 73 65 74 20 74 6f  nteger to set to
4c20: 20 31 2e 20 2a 2f 0a 20 20 20 20 58 45 76 65 6e   1. */.    XEven
4c30: 74 20 2a 65 76 65 6e 74 50 74 72 3b 09 09 2f 2a  t *eventPtr;../*
4c40: 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   Information abo
4c50: 75 74 20 65 76 65 6e 74 2e 20 2a 2f 0a 7b 0a 20  ut event. */.{. 
4c60: 20 20 20 69 6e 74 20 2a 64 6f 6e 65 50 74 72 20     int *donePtr 
4c70: 3d 20 28 69 6e 74 20 2a 29 20 63 6c 69 65 6e 74  = (int *) client
4c80: 44 61 74 61 3b 0a 20 20 20 20 2a 64 6f 6e 65 50  Data;.    *doneP
4c90: 74 72 20 3d 20 31 3b 0a 7d 0a 0c 0a 2f 2a 0a 20  tr = 1;.}.../*. 
4ca0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
4cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4cd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4ce0: 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 54 6b  -------. *. * Tk
4cf0: 5f 55 70 64 61 74 65 43 6d 64 20 2d 2d 0a 20 2a  _UpdateCmd --. *
4d00: 0a 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75  . *.This procedu
4d10: 72 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f  re is invoked to
4d20: 20 70 72 6f 63 65 73 73 20 74 68 65 20 22 75 70   process the "up
4d30: 64 61 74 65 22 20 54 63 6c 20 63 6f 6d 6d 61 6e  date" Tcl comman
4d40: 64 2e 0a 20 2a 09 53 65 65 20 74 68 65 20 75 73  d.. *.See the us
4d50: 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  er documentation
4d60: 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20   for details on 
4d70: 77 68 61 74 20 69 74 20 64 6f 65 73 2e 0a 20 2a  what it does.. *
4d80: 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a 09  . * Results:. *.
4d90: 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72  A standard Tcl r
4da0: 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 64  esult.. *. * Sid
4db0: 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53 65  e effects:. *.Se
4dc0: 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75 6d  e the user docum
4dd0: 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d  entation.. *. *-
4de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e20: 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 09 2f 2a 20 41  -----. */.../* A
4e30: 52 47 53 55 53 45 44 20 2a 2f 0a 69 6e 74 0a 54  RGSUSED */.int.T
4e40: 6b 5f 55 70 64 61 74 65 43 6d 64 28 63 6c 69 65  k_UpdateCmd(clie
4e50: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20  ntData, interp, 
4e60: 61 72 67 63 2c 20 61 72 67 76 29 0a 20 20 20 20  argc, argv).    
4e70: 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e  ClientData clien
4e80: 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69 6e 20 77  tData;./* Main w
4e90: 69 6e 64 6f 77 20 61 73 73 6f 63 69 61 74 65 64  indow associated
4ea0: 20 77 69 74 68 0a 09 09 09 09 20 2a 20 69 6e 74   with..... * int
4eb0: 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20  erpreter. */.   
4ec0: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74   Tcl_Interp *int
4ed0: 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e 74  erp;../* Current
4ee0: 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a 2f   interpreter. */
4ef0: 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b 09 09  .    int argc;..
4f00: 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61 72  ./* Number of ar
4f10: 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 20 20  guments. */.    
4f20: 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09 2f 2a  char **argv;../*
4f30: 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69 6e 67   Argument string
4f40: 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 69 6e 74 20  s. */.{.    int 
4f50: 66 6c 61 67 73 3b 0a 0a 20 20 20 20 69 66 20 28  flags;..    if (
4f60: 61 72 67 63 20 3d 3d 20 31 29 20 7b 0a 09 66 6c  argc == 1) {..fl
4f70: 61 67 73 20 3d 20 54 4b 5f 44 4f 4e 54 5f 57 41  ags = TK_DONT_WA
4f80: 49 54 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  IT;.    } else i
4f90: 66 20 28 61 72 67 63 20 3d 3d 20 32 29 20 7b 0a  f (argc == 2) {.
4fa0: 09 69 66 20 28 73 74 72 6e 63 6d 70 28 61 72 67  .if (strncmp(arg
4fb0: 76 5b 31 5d 2c 20 22 69 64 6c 65 74 61 73 6b 73  v[1], "idletasks
4fc0: 22 2c 20 73 74 72 6c 65 6e 28 61 72 67 76 5b 31  ", strlen(argv[1
4fd0: 5d 29 29 20 21 3d 20 30 29 20 7b 0a 09 20 20 20  ])) != 0) {..   
4fe0: 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c   Tcl_AppendResul
4ff0: 74 28 69 6e 74 65 72 70 2c 20 22 62 61 64 20 61  t(interp, "bad a
5000: 72 67 75 6d 65 6e 74 20 5c 22 22 2c 20 61 72 67  rgument \"", arg
5010: 76 5b 31 5d 2c 0a 09 09 20 20 20 20 22 5c 22 3a  v[1],...    "\":
5020: 20 6d 75 73 74 20 62 65 20 69 64 6c 65 74 61 73   must be idletas
5030: 6b 73 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  ks", (char *) NU
5040: 4c 4c 29 3b 0a 09 20 20 20 20 72 65 74 75 72 6e  LL);..    return
5050: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 09   TCL_ERROR;..}..
5060: 66 6c 61 67 73 20 3d 20 54 4b 5f 49 44 4c 45 5f  flags = TK_IDLE_
5070: 45 56 45 4e 54 53 3b 0a 20 20 20 20 7d 20 65 6c  EVENTS;.    } el
5080: 73 65 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64  se {..Tcl_Append
5090: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22  Result(interp, "
50a0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
50b0: 6f 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61  ould be \"",...a
50c0: 72 67 76 5b 30 5d 2c 20 22 20 3f 69 64 6c 65 74  rgv[0], " ?idlet
50d0: 61 73 6b 73 3f 5c 22 22 2c 20 28 63 68 61 72 20  asks?\"", (char 
50e0: 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72  *) NULL);..retur
50f0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
5100: 20 7d 0a 0a 20 20 20 20 2f 2a 0a 20 20 20 20 20   }..    /*.     
5110: 2a 20 48 61 6e 64 6c 65 20 61 6c 6c 20 70 65 6e  * Handle all pen
5120: 64 69 6e 67 20 65 76 65 6e 74 73 2e 0a 20 20 20  ding events..   
5130: 20 20 2a 2f 0a 0a 20 20 20 20 77 68 69 6c 65 20    */..    while 
5140: 28 54 6b 5f 44 6f 4f 6e 65 45 76 65 6e 74 28 66  (Tk_DoOneEvent(f
5150: 6c 61 67 73 29 20 21 3d 20 30 29 20 7b 0a 09 2f  lags) != 0) {../
5160: 2a 20 45 6d 70 74 79 20 6c 6f 6f 70 20 62 6f 64  * Empty loop bod
5170: 79 20 2a 2f 0a 20 20 20 20 7d 0a 0a 20 20 20 20  y */.    }..    
5180: 2f 2a 0a 20 20 20 20 20 2a 20 4d 75 73 74 20 63  /*.     * Must c
5190: 6c 65 61 72 20 74 68 65 20 69 6e 74 65 72 70 72  lear the interpr
51a0: 65 74 65 72 27 73 20 72 65 73 75 6c 74 20 62 65  eter's result be
51b0: 63 61 75 73 65 20 65 76 65 6e 74 20 68 61 6e 64  cause event hand
51c0: 6c 65 72 73 20 63 6f 75 6c 64 0a 20 20 20 20 20  lers could.     
51d0: 2a 20 68 61 76 65 20 65 78 65 63 75 74 65 64 20  * have executed 
51e0: 63 6f 6d 6d 61 6e 64 73 2e 0a 20 20 20 20 20 2a  commands..     *
51f0: 2f 0a 0a 20 20 20 20 54 63 6c 5f 52 65 73 65 74  /..    Tcl_Reset
5200: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a  Result(interp);.
5210: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f      return TCL_O
5220: 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d  K;.}.../*. *----
5230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5270: 2d 2d 0a 20 2a 0a 20 2a 20 54 6b 5f 57 69 6e 66  --. *. * Tk_Winf
5280: 6f 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a 09 54 68  oCmd --. *. *.Th
5290: 69 73 20 70 72 6f 63 65 64 75 72 65 20 69 73 20  is procedure is 
52a0: 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72 6f 63 65  invoked to proce
52b0: 73 73 20 74 68 65 20 22 77 69 6e 66 6f 22 20 54  ss the "winfo" T
52c0: 63 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 20 2a 09 53  cl command.. *.S
52d0: 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75  ee the user docu
52e0: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64 65  mentation for de
52f0: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
5300: 20 64 6f 65 73 2e 0a 20 2a 0a 20 2a 20 52 65 73   does.. *. * Res
5310: 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61 6e 64  ults:. *.A stand
5320: 61 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e 0a  ard Tcl result..
5330: 20 2a 0a 20 2a 20 53 69 64 65 20 65 66 66 65 63   *. * Side effec
5340: 74 73 3a 0a 20 2a 09 53 65 65 20 74 68 65 20 75  ts:. *.See the u
5350: 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ser documentatio
5360: 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d  n.. *. *--------
5370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
53a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  --------------. 
53b0: 2a 2f 0a 0a 69 6e 74 0a 54 6b 5f 57 69 6e 66 6f  */..int.Tk_Winfo
53c0: 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20  Cmd(clientData, 
53d0: 69 6e 74 65 72 70 2c 20 61 72 67 63 2c 20 61 72  interp, argc, ar
53e0: 67 76 29 0a 20 20 20 20 43 6c 69 65 6e 74 44 61  gv).    ClientDa
53f0: 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b 09 2f  ta clientData;./
5400: 2a 20 4d 61 69 6e 20 77 69 6e 64 6f 77 20 61 73  * Main window as
5410: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 09 09  sociated with...
5420: 09 09 20 2a 20 69 6e 74 65 72 70 72 65 74 65 72  .. * interpreter
5430: 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74  . */.    Tcl_Int
5440: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a  erp *interp;../*
5450: 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72   Current interpr
5460: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74  eter. */.    int
5470: 20 61 72 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62   argc;.../* Numb
5480: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e  er of arguments.
5490: 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 2a 61   */.    char **a
54a0: 72 67 76 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e  rgv;../* Argumen
54b0: 74 20 73 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a  t strings. */.{.
54c0: 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b      Tk_Window tk
54d0: 77 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64 6f 77  win = (Tk_Window
54e0: 29 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20  ) clientData;.  
54f0: 20 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 68 3b    size_t length;
5500: 0a 20 20 20 20 63 68 61 72 20 63 2c 20 2a 61 72  .    char c, *ar
5510: 67 4e 61 6d 65 3b 0a 20 20 20 20 54 6b 5f 57 69  gName;.    Tk_Wi
5520: 6e 64 6f 77 20 77 69 6e 64 6f 77 3b 0a 20 20 20  ndow window;.   
5530: 20 72 65 67 69 73 74 65 72 20 54 6b 57 69 6e 64   register TkWind
5540: 6f 77 20 2a 77 69 6e 50 74 72 3b 0a 20 20 20 20  ow *winPtr;.    
5550: 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 54 43 4c  int result = TCL
5560: 5f 4f 4b 3b 0a 0a 23 64 65 66 69 6e 65 20 53 45  _OK;..#define SE
5570: 54 55 50 28 6e 61 6d 65 29 20 5c 0a 20 20 20 20  TUP(name) \.    
5580: 69 66 20 28 61 72 67 63 20 21 3d 20 33 29 20 7b  if (argc != 3) {
5590: 5c 0a 09 61 72 67 4e 61 6d 65 20 3d 20 6e 61 6d  \..argName = nam
55a0: 65 3b 20 5c 0a 09 67 6f 74 6f 20 77 72 6f 6e 67  e; \..goto wrong
55b0: 41 72 67 73 3b 20 5c 0a 20 20 20 20 7d 20 5c 0a  Args; \.    } \.
55c0: 20 20 20 20 77 69 6e 64 6f 77 20 3d 20 54 6b 5f      window = Tk_
55d0: 4e 61 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74  NameToWindow(int
55e0: 65 72 70 2c 20 61 72 67 76 5b 32 5d 2c 20 74 6b  erp, argv[2], tk
55f0: 77 69 6e 29 3b 20 5c 0a 20 20 20 20 69 66 20 28  win); \.    if (
5600: 77 69 6e 64 6f 77 20 3d 3d 20 4e 55 4c 4c 29 20  window == NULL) 
5610: 7b 20 5c 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f  { \..return TCL_
5620: 45 52 52 4f 52 3b 20 5c 0a 20 20 20 20 7d 0a 0a  ERROR; \.    }..
5630: 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20 32      if (argc < 2
5640: 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52  ) {..Tcl_AppendR
5650: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
5660: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
5670: 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61 72  uld be \"",...ar
5680: 67 76 5b 30 5d 2c 20 22 20 6f 70 74 69 6f 6e 20  gv[0], " option 
5690: 3f 61 72 67 3f 5c 22 22 2c 20 28 63 68 61 72 20  ?arg?\"", (char 
56a0: 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72  *) NULL);..retur
56b0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
56c0: 20 7d 0a 20 20 20 20 63 20 3d 20 61 72 67 76 5b   }.    c = argv[
56d0: 31 5d 5b 30 5d 3b 0a 20 20 20 20 6c 65 6e 67 74  1][0];.    lengt
56e0: 68 20 3d 20 73 74 72 6c 65 6e 28 61 72 67 76 5b  h = strlen(argv[
56f0: 31 5d 29 3b 0a 20 20 20 20 69 66 20 28 28 63 20  1]);.    if ((c 
5700: 3d 3d 20 27 61 27 29 20 26 26 20 28 73 74 72 63  == 'a') && (strc
5710: 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 61 74 6f  mp(argv[1], "ato
5720: 6d 22 29 20 3d 3d 20 30 29 29 20 7b 0a 20 20 20  m") == 0)) {.   
5730: 20 09 72 65 73 75 6c 74 20 3d 20 43 74 6b 5f 55   .result = Ctk_U
5740: 6e 73 75 70 70 6f 72 74 65 64 28 69 6e 74 65 72  nsupported(inter
5750: 70 2c 20 22 77 69 6e 66 6f 20 61 74 6f 6d 22 29  p, "winfo atom")
5760: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  ;.    } else if 
5770: 28 28 63 20 3d 3d 20 27 61 27 29 20 26 26 20 28  ((c == 'a') && (
5780: 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c  strncmp(argv[1],
5790: 20 22 61 74 6f 6d 6e 61 6d 65 22 2c 20 6c 65 6e   "atomname", len
57a0: 67 74 68 29 20 3d 3d 20 30 29 0a 09 20 20 20 20  gth) == 0)..    
57b0: 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20 35 29  && (length >= 5)
57c0: 29 20 7b 0a 20 20 20 20 09 72 65 73 75 6c 74 20  ) {.    .result 
57d0: 3d 20 43 74 6b 5f 55 6e 73 75 70 70 6f 72 74 65  = Ctk_Unsupporte
57e0: 64 28 69 6e 74 65 72 70 2c 20 22 77 69 6e 66 6f  d(interp, "winfo
57f0: 20 61 74 6f 6d 6e 61 6d 65 22 29 3b 0a 20 20 20   atomname");.   
5800: 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d   } else if ((c =
5810: 3d 20 27 63 27 29 20 26 26 20 28 73 74 72 6e 63  = 'c') && (strnc
5820: 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 63 65 6c  mp(argv[1], "cel
5830: 6c 73 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20  ls", length) == 
5840: 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e 67  0)..    && (leng
5850: 74 68 20 3e 3d 20 32 29 29 20 7b 0a 09 54 63 6c  th >= 2)) {..Tcl
5860: 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72  _SetResult(inter
5870: 70 2c 22 32 22 2c 20 54 43 4c 5f 53 54 41 54 49  p,"2", TCL_STATI
5880: 43 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  C);.    } else i
5890: 66 20 28 28 63 20 3d 3d 20 27 63 27 29 20 26 26  f ((c == 'c') &&
58a0: 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31   (strncmp(argv[1
58b0: 5d 2c 20 22 63 68 69 6c 64 72 65 6e 22 2c 20 6c  ], "children", l
58c0: 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20 20  ength) == 0)..  
58d0: 20 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20    && (length >= 
58e0: 32 29 29 20 7b 0a 09 53 45 54 55 50 28 22 63 68  2)) {..SETUP("ch
58f0: 69 6c 64 72 65 6e 22 29 3b 0a 09 66 6f 72 20 28  ildren");..for (
5900: 77 69 6e 50 74 72 20 3d 20 43 74 6b 5f 42 6f 74  winPtr = Ctk_Bot
5910: 74 6f 6d 43 68 69 6c 64 28 77 69 6e 64 6f 77 29  tomChild(window)
5920: 3b 20 77 69 6e 50 74 72 20 21 3d 20 4e 55 4c 4c  ; winPtr != NULL
5930: 3b 0a 09 09 77 69 6e 50 74 72 20 3d 20 43 74 6b  ;...winPtr = Ctk
5940: 5f 4e 65 78 74 53 69 62 6c 69 6e 67 28 77 69 6e  _NextSibling(win
5950: 50 74 72 29 29 20 7b 0a 09 20 20 20 20 54 63 6c  Ptr)) {..    Tcl
5960: 5f 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74 28 69  _AppendElement(i
5970: 6e 74 65 72 70 2c 20 77 69 6e 50 74 72 2d 3e 70  nterp, winPtr->p
5980: 61 74 68 4e 61 6d 65 29 3b 0a 09 7d 0a 09 69 66  athName);..}..if
5990: 20 28 77 69 6e 64 6f 77 2d 3e 66 6c 61 67 73 20   (window->flags 
59a0: 26 20 43 54 4b 5f 48 41 53 5f 54 4f 50 4c 45 56  & CTK_HAS_TOPLEV
59b0: 45 4c 5f 43 48 49 4c 44 29 20 7b 0a 09 20 20 20  EL_CHILD) {..   
59c0: 20 2f 2a 0a 09 20 20 20 20 20 2a 20 54 68 69 73   /*..     * This
59d0: 20 77 69 6e 64 6f 77 20 68 61 73 20 74 6f 70 6c   window has topl
59e0: 65 76 65 6c 20 63 68 69 6c 64 72 65 6e 2c 20 77  evel children, w
59f0: 68 69 63 68 20 61 72 65 20 6e 6f 74 20 73 74 6f  hich are not sto
5a00: 72 65 64 0a 09 20 20 20 20 20 2a 20 69 6e 20 74  red..     * in t
5a10: 68 65 20 63 68 69 6c 64 20 6c 69 73 74 2e 20 20  he child list.  
5a20: 43 68 65 63 6b 20 61 6c 6c 20 74 68 65 20 63 68  Check all the ch
5a30: 69 6c 64 72 65 6e 20 6f 66 20 61 6c 6c 20 72 6f  ildren of all ro
5a40: 6f 74 0a 09 20 20 20 20 20 2a 20 77 69 6e 64 6f  ot..     * windo
5a50: 77 73 20 74 6f 20 73 65 65 20 69 66 20 74 68 65  ws to see if the
5a60: 69 72 20 6e 61 6d 65 20 69 73 20 61 6e 20 65 78  ir name is an ex
5a70: 74 65 6e 73 69 6f 6e 20 6f 66 20 74 68 69 73 0a  tension of this.
5a80: 09 20 20 20 20 20 2a 20 77 69 6e 64 6f 77 73 20  .     * windows 
5a90: 6e 61 6d 65 20 2d 20 69 66 20 73 6f 20 61 70 70  name - if so app
5aa0: 65 6e 64 20 70 61 74 68 20 6e 61 6d 65 20 74 6f  end path name to
5ab0: 20 72 65 73 75 6c 74 2e 0a 09 20 20 20 20 20 2a   result...     *
5ac0: 2f 0a 09 20 20 20 20 63 68 61 72 20 2a 70 61 74  /..    char *pat
5ad0: 68 20 3d 20 54 6b 5f 50 61 74 68 4e 61 6d 65 28  h = Tk_PathName(
5ae0: 77 69 6e 64 6f 77 29 3b 0a 09 20 20 20 20 69 6e  window);..    in
5af0: 74 20 6c 65 6e 67 74 68 20 3d 20 73 74 72 6c 65  t length = strle
5b00: 6e 28 70 61 74 68 29 3b 0a 09 20 20 20 20 54 6b  n(path);..    Tk
5b10: 44 69 73 70 6c 61 79 20 2a 64 69 73 70 50 74 72  Display *dispPtr
5b20: 3b 0a 09 20 20 20 20 63 68 61 72 20 2a 63 68 69  ;..    char *chi
5b30: 6c 64 50 61 74 68 3b 0a 09 20 20 20 20 69 6e 74  ldPath;..    int
5b40: 20 6c 65 6e 32 3b 0a 0a 09 20 20 20 20 66 6f 72   len2;...    for
5b50: 20 28 64 69 73 70 50 74 72 20 3d 20 74 6b 44 69   (dispPtr = tkDi
5b60: 73 70 6c 61 79 4c 69 73 74 3b 20 64 69 73 70 50  splayList; dispP
5b70: 74 72 20 21 3d 20 4e 55 4c 4c 3b 0a 09 09 20 20  tr != NULL;...  
5b80: 20 20 64 69 73 70 50 74 72 20 3d 20 64 69 73 70    dispPtr = disp
5b90: 50 74 72 2d 3e 6e 65 78 74 50 74 72 29 20 7b 0a  Ptr->nextPtr) {.
5ba0: 09 09 66 6f 72 20 28 77 69 6e 50 74 72 20 3d 20  ..for (winPtr = 
5bb0: 43 74 6b 5f 42 6f 74 74 6f 6d 43 68 69 6c 64 28  Ctk_BottomChild(
5bc0: 64 69 73 70 50 74 72 2d 3e 72 6f 6f 74 50 74 72  dispPtr->rootPtr
5bd0: 29 3b 20 77 69 6e 50 74 72 20 21 3d 20 4e 55 4c  ); winPtr != NUL
5be0: 4c 3b 0a 09 09 09 77 69 6e 50 74 72 20 3d 20 43  L;....winPtr = C
5bf0: 74 6b 5f 4e 65 78 74 53 69 62 6c 69 6e 67 28 77  tk_NextSibling(w
5c00: 69 6e 50 74 72 29 29 20 7b 0a 09 09 20 20 20 20  inPtr)) {...    
5c10: 63 68 69 6c 64 50 61 74 68 20 3d 20 54 6b 5f 50  childPath = Tk_P
5c20: 61 74 68 4e 61 6d 65 28 77 69 6e 50 74 72 29 3b  athName(winPtr);
5c30: 0a 09 09 20 20 20 20 69 66 20 28 73 74 72 6e 63  ...    if (strnc
5c40: 6d 70 28 63 68 69 6c 64 50 61 74 68 2c 20 70 61  mp(childPath, pa
5c50: 74 68 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  th, length) == 0
5c60: 29 20 7b 0a 09 09 09 6c 65 6e 32 20 3d 20 73 74  ) {....len2 = st
5c70: 72 72 63 68 72 28 63 68 69 6c 64 50 61 74 68 2c  rrchr(childPath,
5c80: 20 27 2e 27 29 20 2d 20 63 68 69 6c 64 50 61 74   '.') - childPat
5c90: 68 3b 0a 09 09 09 69 66 20 28 28 6c 65 6e 67 74  h;....if ((lengt
5ca0: 68 20 3d 3d 20 31 20 26 26 20 6c 65 6e 32 20 3d  h == 1 && len2 =
5cb0: 3d 20 30 20 26 26 20 77 69 6e 50 74 72 20 21 3d  = 0 && winPtr !=
5cc0: 20 77 69 6e 64 6f 77 29 0a 09 09 09 09 7c 7c 20   window).....|| 
5cd0: 6c 65 6e 67 74 68 20 3d 3d 20 6c 65 6e 32 29 20  length == len2) 
5ce0: 7b 0a 09 09 09 20 20 20 20 54 63 6c 5f 41 70 70  {....    Tcl_App
5cf0: 65 6e 64 45 6c 65 6d 65 6e 74 28 69 6e 74 65 72  endElement(inter
5d00: 70 2c 20 63 68 69 6c 64 50 61 74 68 29 3b 0a 09  p, childPath);..
5d10: 09 09 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a  ..}...    }...}.
5d20: 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20  .    }..}.    } 
5d30: 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27  else if ((c == '
5d40: 63 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28  c') && (strncmp(
5d50: 61 72 67 76 5b 31 5d 2c 20 22 63 6c 61 73 73 22  argv[1], "class"
5d60: 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a  , length) == 0).
5d70: 09 20 20 20 20 26 26 20 28 6c 65 6e 67 74 68 20  .    && (length 
5d80: 3e 3d 20 32 29 29 20 7b 0a 09 53 45 54 55 50 28  >= 2)) {..SETUP(
5d90: 22 63 6c 61 73 73 22 29 3b 0a 09 54 63 6c 5f 53  "class");..Tcl_S
5da0: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  etResult(interp,
5db0: 54 6b 5f 43 6c 61 73 73 28 77 69 6e 64 6f 77 29  Tk_Class(window)
5dc0: 2c 20 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b  , TCL_VOLATILE);
5dd0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28  .    } else if (
5de0: 28 63 20 3d 3d 20 27 63 27 29 20 26 26 20 28 73  (c == 'c') && (s
5df0: 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20  trncmp(argv[1], 
5e00: 22 63 6f 6c 6f 72 6d 61 70 66 75 6c 6c 22 2c 20  "colormapfull", 
5e10: 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20  length) == 0).. 
5e20: 20 20 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d     && (length >=
5e30: 20 33 29 29 20 7b 0a 09 54 63 6c 5f 53 65 74 52   3)) {..Tcl_SetR
5e40: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 22 30 22  esult(interp,"0"
5e50: 2c 20 54 43 4c 5f 53 54 41 54 49 43 29 3b 0a 20  , TCL_STATIC);. 
5e60: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63     } else if ((c
5e70: 20 3d 3d 20 27 63 27 29 20 26 26 20 28 73 74 72   == 'c') && (str
5e80: 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 63  ncmp(argv[1], "c
5e90: 6f 6e 74 61 69 6e 69 6e 67 22 2c 20 6c 65 6e 67  ontaining", leng
5ea0: 74 68 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26  th) == 0)..    &
5eb0: 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20 32 29 29  & (length >= 2))
5ec0: 20 7b 0a 09 2f 2a 0a 09 20 2a 20 54 68 69 73 20   {../*.. * This 
5ed0: 6f 6e 65 20 63 6f 75 6c 64 20 62 65 20 69 6d 70  one could be imp
5ee0: 6c 65 6d 65 6e 74 65 64 2e 2e 2e 0a 09 20 2a 2f  lemented..... */
5ef0: 0a 20 20 20 20 09 72 65 73 75 6c 74 20 3d 20 43  .    .result = C
5f00: 74 6b 5f 55 6e 73 75 70 70 6f 72 74 65 64 28 69  tk_Unsupported(i
5f10: 6e 74 65 72 70 2c 20 22 77 69 6e 66 6f 20 63 6f  nterp, "winfo co
5f20: 6e 74 61 69 6e 69 6e 67 22 29 3b 0a 20 20 20 20  ntaining");.    
5f30: 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d  } else if ((c ==
5f40: 20 27 64 27 29 20 26 26 20 28 73 74 72 6e 63 6d   'd') && (strncm
5f50: 70 28 61 72 67 76 5b 31 5d 2c 20 22 64 65 70 74  p(argv[1], "dept
5f60: 68 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  h", length) == 0
5f70: 29 29 20 7b 0a 09 54 63 6c 5f 53 65 74 52 65 73  )) {..Tcl_SetRes
5f80: 75 6c 74 28 69 6e 74 65 72 70 2c 22 31 22 2c 20  ult(interp,"1", 
5f90: 54 43 4c 5f 53 54 41 54 49 43 29 3b 0a 20 20 20  TCL_STATIC);.   
5fa0: 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d   } else if ((c =
5fb0: 3d 20 27 65 27 29 20 26 26 20 28 73 74 72 6e 63  = 'e') && (strnc
5fc0: 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 65 78 69  mp(argv[1], "exi
5fd0: 73 74 73 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  sts", length) ==
5fe0: 20 30 29 29 20 7b 0a 09 69 66 20 28 61 72 67 63   0)) {..if (argc
5ff0: 20 21 3d 20 33 29 20 7b 0a 09 20 20 20 20 61 72   != 3) {..    ar
6000: 67 4e 61 6d 65 20 3d 20 22 65 78 69 73 74 73 22  gName = "exists"
6010: 3b 0a 09 20 20 20 20 67 6f 74 6f 20 77 72 6f 6e  ;..    goto wron
6020: 67 41 72 67 73 3b 0a 09 7d 0a 09 77 69 6e 50 74  gArgs;..}..winPt
6030: 72 20 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57 69 6e  r = Tk_NameToWin
6040: 64 6f 77 28 69 6e 74 65 72 70 2c 20 61 72 67 76  dow(interp, argv
6050: 5b 32 5d 2c 20 74 6b 77 69 6e 29 3b 0a 09 69 66  [2], tkwin);..if
6060: 20 28 28 77 69 6e 50 74 72 20 3d 3d 20 28 54 6b   ((winPtr == (Tk
6070: 57 69 6e 64 6f 77 20 2a 29 4e 55 4c 4c 29 20 7c  Window *)NULL) |
6080: 7c 20 28 77 69 6e 50 74 72 2d 3e 66 6c 61 67 73  | (winPtr->flags
6090: 20 26 20 54 4b 5f 41 4c 52 45 41 44 59 5f 44 45   & TK_ALREADY_DE
60a0: 41 44 29 29 20 7b 0a 09 20 20 20 20 54 63 6c 5f  AD)) {..    Tcl_
60b0: 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  SetResult(interp
60c0: 2c 22 30 22 2c 54 43 4c 5f 53 54 41 54 49 43 29  ,"0",TCL_STATIC)
60d0: 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20  ;..} else {..   
60e0: 20 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69   Tcl_SetResult(i
60f0: 6e 74 65 72 70 2c 22 31 22 2c 54 43 4c 5f 53 54  nterp,"1",TCL_ST
6100: 41 54 49 43 29 3b 0a 09 7d 0a 20 20 20 20 7d 20  ATIC);..}.    } 
6110: 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27  else if ((c == '
6120: 66 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28  f') && (strncmp(
6130: 61 72 67 76 5b 31 5d 2c 20 22 66 70 69 78 65 6c  argv[1], "fpixel
6140: 73 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  s", length) == 0
6150: 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e 67 74  )..    && (lengt
6160: 68 20 3e 3d 20 32 29 29 20 7b 0a 09 2f 2a 0a 09  h >= 2)) {../*..
6170: 20 2a 20 54 68 69 73 20 6f 6e 65 20 63 6f 75 6c   * This one coul
6180: 64 20 62 65 20 69 6d 70 6c 65 6d 65 6e 74 65 64  d be implemented
6190: 2e 2e 2e 0a 09 20 2a 2f 0a 20 20 20 20 09 72 65  ..... */.    .re
61a0: 73 75 6c 74 20 3d 20 43 74 6b 5f 55 6e 73 75 70  sult = Ctk_Unsup
61b0: 70 6f 72 74 65 64 28 69 6e 74 65 72 70 2c 20 22  ported(interp, "
61c0: 77 69 6e 66 6f 20 66 70 69 78 65 6c 73 22 29 3b  winfo fpixels");
61d0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28  .    } else if (
61e0: 28 63 20 3d 3d 20 27 67 27 29 20 26 26 20 28 73  (c == 'g') && (s
61f0: 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20  trncmp(argv[1], 
6200: 22 67 65 6f 6d 65 74 72 79 22 2c 20 6c 65 6e 67  "geometry", leng
6210: 74 68 29 20 3d 3d 20 30 29 29 20 7b 0a 09 53 45  th) == 0)) {..SE
6220: 54 55 50 28 22 67 65 6f 6d 65 74 72 79 22 29 3b  TUP("geometry");
6230: 0a 09 73 70 72 69 6e 74 66 28 65 72 72 6f 72 5f  ..sprintf(error_
6240: 62 75 66 66 65 72 2c 20 22 25 64 78 25 64 2b 25  buffer, "%dx%d+%
6250: 64 2b 25 64 22 2c 0a 09 09 54 6b 5f 57 69 64 74  d+%d",...Tk_Widt
6260: 68 28 77 69 6e 64 6f 77 29 2c 20 54 6b 5f 48 65  h(window), Tk_He
6270: 69 67 68 74 28 77 69 6e 64 6f 77 29 2c 0a 09 09  ight(window),...
6280: 54 6b 5f 58 28 77 69 6e 64 6f 77 29 2c 20 54 6b  Tk_X(window), Tk
6290: 5f 59 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54 63  _Y(window));..Tc
62a0: 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65  l_SetResult(inte
62b0: 72 70 2c 20 65 72 72 6f 72 5f 62 75 66 66 65 72  rp, error_buffer
62c0: 2c 20 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b  , TCL_VOLATILE);
62d0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28  .    } else if (
62e0: 28 63 20 3d 3d 20 27 68 27 29 20 26 26 20 28 73  (c == 'h') && (s
62f0: 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20  trncmp(argv[1], 
6300: 22 68 65 69 67 68 74 22 2c 20 6c 65 6e 67 74 68  "height", length
6310: 29 20 3d 3d 20 30 29 29 20 7b 0a 09 53 45 54 55  ) == 0)) {..SETU
6320: 50 28 22 68 65 69 67 68 74 22 29 3b 0a 09 73 70  P("height");..sp
6330: 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66 66  rintf(error_buff
6340: 65 72 2c 20 22 25 64 22 2c 20 54 6b 5f 48 65 69  er, "%d", Tk_Hei
6350: 67 68 74 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54  ght(window));..T
6360: 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74  cl_SetResult(int
6370: 65 72 70 2c 20 65 72 72 6f 72 5f 62 75 66 66 65  erp, error_buffe
6380: 72 2c 20 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29  r, TCL_VOLATILE)
6390: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  ;.    } else if 
63a0: 28 28 63 20 3d 3d 20 27 69 27 29 20 26 26 20 28  ((c == 'i') && (
63b0: 73 74 72 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20  strcmp(argv[1], 
63c0: 22 69 64 22 29 20 3d 3d 20 30 29 29 20 7b 0a 20  "id") == 0)) {. 
63d0: 20 20 20 09 72 65 73 75 6c 74 20 3d 20 43 74 6b     .result = Ctk
63e0: 5f 55 6e 73 75 70 70 6f 72 74 65 64 28 69 6e 74  _Unsupported(int
63f0: 65 72 70 2c 20 22 77 69 6e 66 6f 20 69 64 22 29  erp, "winfo id")
6400: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  ;.    } else if 
6410: 28 28 63 20 3d 3d 20 27 69 27 29 20 26 26 20 28  ((c == 'i') && (
6420: 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c  strncmp(argv[1],
6430: 20 22 69 6e 74 65 72 70 73 22 2c 20 6c 65 6e 67   "interps", leng
6440: 74 68 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26  th) == 0)..    &
6450: 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20 32 29 29  & (length >= 2))
6460: 20 7b 0a 20 20 20 20 09 72 65 73 75 6c 74 20 3d   {.    .result =
6470: 20 43 74 6b 5f 55 6e 73 75 70 70 6f 72 74 65 64   Ctk_Unsupported
6480: 28 69 6e 74 65 72 70 2c 20 22 77 69 6e 66 6f 20  (interp, "winfo 
6490: 69 6e 74 65 72 70 73 22 29 3b 0a 20 20 20 20 7d  interps");.    }
64a0: 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20   else if ((c == 
64b0: 27 69 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70  'i') && (strncmp
64c0: 28 61 72 67 76 5b 31 5d 2c 20 22 69 73 6d 61 70  (argv[1], "ismap
64d0: 70 65 64 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  ped", length) ==
64e0: 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e   0)..    && (len
64f0: 67 74 68 20 3e 3d 20 32 29 29 20 7b 0a 09 53 45  gth >= 2)) {..SE
6500: 54 55 50 28 22 69 73 6d 61 70 70 65 64 22 29 3b  TUP("ismapped");
6510: 0a 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28  ..Tcl_SetResult(
6520: 69 6e 74 65 72 70 2c 20 54 6b 5f 49 73 4d 61 70  interp, Tk_IsMap
6530: 70 65 64 28 77 69 6e 64 6f 77 29 20 3f 20 22 31  ped(window) ? "1
6540: 22 20 3a 20 22 30 22 2c 20 54 43 4c 5f 53 54 41  " : "0", TCL_STA
6550: 54 49 43 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65  TIC);.    } else
6560: 20 69 66 20 28 28 63 20 3d 3d 20 27 6d 27 29 20   if ((c == 'm') 
6570: 26 26 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76  && (strncmp(argv
6580: 5b 31 5d 2c 20 22 6d 61 6e 61 67 65 72 22 2c 20  [1], "manager", 
6590: 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 29 20 7b  length) == 0)) {
65a0: 0a 09 53 45 54 55 50 28 22 6d 61 6e 61 67 65 72  ..SETUP("manager
65b0: 22 29 3b 0a 09 77 69 6e 50 74 72 20 3d 20 28 54  ");..winPtr = (T
65c0: 6b 57 69 6e 64 6f 77 20 2a 29 20 77 69 6e 64 6f  kWindow *) windo
65d0: 77 3b 0a 09 69 66 20 28 77 69 6e 50 74 72 2d 3e  w;..if (winPtr->
65e0: 67 65 6f 6d 4d 67 72 50 74 72 20 21 3d 20 4e 55  geomMgrPtr != NU
65f0: 4c 4c 29 20 7b 0a 09 20 20 20 20 54 63 6c 5f 53  LL) {..    Tcl_S
6600: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  etResult(interp,
6610: 77 69 6e 50 74 72 2d 3e 67 65 6f 6d 4d 67 72 50  winPtr->geomMgrP
6620: 74 72 2d 3e 6e 61 6d 65 2c 20 54 43 4c 5f 56 4f  tr->name, TCL_VO
6630: 4c 41 54 49 4c 45 29 3b 0a 09 7d 0a 20 20 20 20  LATILE);..}.    
6640: 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d  } else if ((c ==
6650: 20 27 6e 27 29 20 26 26 20 28 73 74 72 6e 63 6d   'n') && (strncm
6660: 70 28 61 72 67 76 5b 31 5d 2c 20 22 6e 61 6d 65  p(argv[1], "name
6670: 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29  ", length) == 0)
6680: 29 20 7b 0a 09 53 45 54 55 50 28 22 6e 61 6d 65  ) {..SETUP("name
6690: 22 29 3b 0a 09 54 63 6c 5f 53 65 74 52 65 73 75  ");..Tcl_SetResu
66a0: 6c 74 28 69 6e 74 65 72 70 2c 20 54 6b 5f 4e 61  lt(interp, Tk_Na
66b0: 6d 65 28 77 69 6e 64 6f 77 29 2c 20 54 43 4c 5f  me(window), TCL_
66c0: 56 4f 4c 41 54 49 4c 45 29 3b 0a 20 20 20 20 7d  VOLATILE);.    }
66d0: 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20   else if ((c == 
66e0: 27 70 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70  'p') && (strncmp
66f0: 28 61 72 67 76 5b 31 5d 2c 20 22 70 61 72 65 6e  (argv[1], "paren
6700: 74 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  t", length) == 0
6710: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 70 61 72  )) {..SETUP("par
6720: 65 6e 74 22 29 3b 0a 09 77 69 6e 50 74 72 20 3d  ent");..winPtr =
6730: 20 43 74 6b 5f 50 61 72 65 6e 74 42 79 4e 61 6d   Ctk_ParentByNam
6740: 65 28 69 6e 74 65 72 70 2c 20 54 6b 5f 50 61 74  e(interp, Tk_Pat
6750: 68 4e 61 6d 65 28 77 69 6e 64 6f 77 29 2c 20 77  hName(window), w
6760: 69 6e 64 6f 77 29 3b 0a 09 69 66 20 28 77 69 6e  indow);..if (win
6770: 50 74 72 29 20 7b 0a 09 20 20 20 20 54 63 6c 5f  Ptr) {..    Tcl_
6780: 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  SetResult(interp
6790: 2c 77 69 6e 50 74 72 2d 3e 70 61 74 68 4e 61 6d  ,winPtr->pathNam
67a0: 65 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b  e,TCL_VOLATILE);
67b0: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
67c0: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
67d0: 3b 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20  ;..}.    } else 
67e0: 69 66 20 28 28 63 20 3d 3d 20 27 70 27 29 20 26  if ((c == 'p') &
67f0: 26 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b  & (strncmp(argv[
6800: 31 5d 2c 20 22 70 61 74 68 6e 61 6d 65 22 2c 20  1], "pathname", 
6810: 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20  length) == 0).. 
6820: 20 20 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d     && (length >=
6830: 20 32 29 29 20 7b 0a 20 20 20 20 09 72 65 73 75   2)) {.    .resu
6840: 6c 74 20 3d 20 43 74 6b 5f 55 6e 73 75 70 70 6f  lt = Ctk_Unsuppo
6850: 72 74 65 64 28 69 6e 74 65 72 70 2c 20 22 77 69  rted(interp, "wi
6860: 6e 66 6f 20 70 61 74 68 6e 61 6d 65 22 29 3b 0a  nfo pathname");.
6870: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28      } else if ((
6880: 63 20 3d 3d 20 27 70 27 29 20 26 26 20 28 73 74  c == 'p') && (st
6890: 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22  rncmp(argv[1], "
68a0: 70 69 78 65 6c 73 22 2c 20 6c 65 6e 67 74 68 29  pixels", length)
68b0: 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26 20 28   == 0)..    && (
68c0: 6c 65 6e 67 74 68 20 3e 3d 20 32 29 29 20 7b 0a  length >= 2)) {.
68d0: 09 69 6e 74 20 70 69 78 65 6c 73 3b 0a 0a 09 69  .int pixels;...i
68e0: 66 20 28 61 72 67 63 20 21 3d 20 34 29 20 7b 0a  f (argc != 4) {.
68f0: 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52  .    Tcl_AppendR
6900: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
6910: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
6920: 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 20 20  uld be \"",...  
6930: 20 20 61 72 67 76 5b 30 5d 2c 20 22 20 70 69 78    argv[0], " pix
6940: 65 6c 73 20 77 69 6e 64 6f 77 20 6e 75 6d 62 65  els window numbe
6950: 72 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e  r\"", (char *) N
6960: 55 4c 4c 29 3b 0a 09 20 20 20 20 72 65 74 75 72  ULL);..    retur
6970: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a  n TCL_ERROR;..}.
6980: 09 77 69 6e 64 6f 77 20 3d 20 54 6b 5f 4e 61 6d  .window = Tk_Nam
6990: 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65 72 70  eToWindow(interp
69a0: 2c 20 61 72 67 76 5b 32 5d 2c 20 74 6b 77 69 6e  , argv[2], tkwin
69b0: 29 3b 0a 09 69 66 20 28 77 69 6e 64 6f 77 20 3d  );..if (window =
69c0: 3d 20 4e 55 4c 4c 29 20 7b 0a 09 20 20 20 20 72  = NULL) {..    r
69d0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
69e0: 0a 09 7d 0a 09 69 66 20 28 54 6b 5f 47 65 74 50  ..}..if (Tk_GetP
69f0: 69 78 65 6c 73 28 69 6e 74 65 72 70 2c 20 77 69  ixels(interp, wi
6a00: 6e 64 6f 77 2c 20 61 72 67 76 5b 33 5d 2c 20 26  ndow, argv[3], &
6a10: 70 69 78 65 6c 73 29 20 21 3d 20 54 43 4c 5f 4f  pixels) != TCL_O
6a20: 4b 29 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e  K) {..    return
6a30: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 09 7d 0a 09   TCL_ERROR;..}..
6a40: 73 70 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75  sprintf(error_bu
6a50: 66 66 65 72 2c 20 22 25 64 22 2c 20 70 69 78 65  ffer, "%d", pixe
6a60: 6c 73 29 3b 0a 09 54 63 6c 5f 53 65 74 52 65 73  ls);..Tcl_SetRes
6a70: 75 6c 74 28 69 6e 74 65 72 70 2c 20 65 72 72 6f  ult(interp, erro
6a80: 72 5f 62 75 66 66 65 72 2c 20 54 43 4c 5f 56 4f  r_buffer, TCL_VO
6a90: 4c 41 54 49 4c 45 29 3b 0a 20 20 20 20 7d 20 65  LATILE);.    } e
6aa0: 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 70  lse if ((c == 'p
6ab0: 27 29 20 26 26 20 28 73 74 72 63 6d 70 28 61 72  ') && (strcmp(ar
6ac0: 67 76 5b 31 5d 2c 20 22 70 6f 69 6e 74 65 72 78  gv[1], "pointerx
6ad0: 22 29 20 3d 3d 20 30 29 29 20 7b 0a 20 20 20 20  ") == 0)) {.    
6ae0: 09 72 65 73 75 6c 74 20 3d 20 43 74 6b 5f 55 6e  .result = Ctk_Un
6af0: 73 75 70 70 6f 72 74 65 64 28 69 6e 74 65 72 70  supported(interp
6b00: 2c 20 22 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72  , "winfo pointer
6b10: 78 22 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20  x");.    } else 
6b20: 69 66 20 28 28 63 20 3d 3d 20 27 70 27 29 20 26  if ((c == 'p') &
6b30: 26 20 28 73 74 72 63 6d 70 28 61 72 67 76 5b 31  & (strcmp(argv[1
6b40: 5d 2c 20 22 70 6f 69 6e 74 65 72 78 79 22 29 20  ], "pointerxy") 
6b50: 3d 3d 20 30 29 29 20 7b 0a 20 20 20 20 09 72 65  == 0)) {.    .re
6b60: 73 75 6c 74 20 3d 20 43 74 6b 5f 55 6e 73 75 70  sult = Ctk_Unsup
6b70: 70 6f 72 74 65 64 28 69 6e 74 65 72 70 2c 20 22  ported(interp, "
6b80: 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72 78 79 22  winfo pointerxy"
6b90: 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66  );.    } else if
6ba0: 20 28 28 63 20 3d 3d 20 27 70 27 29 20 26 26 20   ((c == 'p') && 
6bb0: 28 73 74 72 63 6d 70 28 61 72 67 76 5b 31 5d 2c  (strcmp(argv[1],
6bc0: 20 22 70 6f 69 6e 74 65 72 79 22 29 20 3d 3d 20   "pointery") == 
6bd0: 30 29 29 20 7b 0a 20 20 20 20 09 72 65 73 75 6c  0)) {.    .resul
6be0: 74 20 3d 20 43 74 6b 5f 55 6e 73 75 70 70 6f 72  t = Ctk_Unsuppor
6bf0: 74 65 64 28 69 6e 74 65 72 70 2c 20 22 77 69 6e  ted(interp, "win
6c00: 66 6f 20 70 6f 69 6e 74 65 72 79 22 29 3b 0a 20  fo pointery");. 
6c10: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63     } else if ((c
6c20: 20 3d 3d 20 27 72 27 29 20 26 26 20 28 73 74 72   == 'r') && (str
6c30: 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 72  ncmp(argv[1], "r
6c40: 65 71 68 65 69 67 68 74 22 2c 20 6c 65 6e 67 74  eqheight", lengt
6c50: 68 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26  h) == 0)..    &&
6c60: 20 28 6c 65 6e 67 74 68 20 3e 3d 20 34 29 29 20   (length >= 4)) 
6c70: 7b 0a 09 53 45 54 55 50 28 22 72 65 71 68 65 69  {..SETUP("reqhei
6c80: 67 68 74 22 29 3b 0a 09 73 70 72 69 6e 74 66 28  ght");..sprintf(
6c90: 65 72 72 6f 72 5f 62 75 66 66 65 72 2c 20 22 25  error_buffer, "%
6ca0: 64 22 2c 20 54 6b 5f 52 65 71 48 65 69 67 68 74  d", Tk_ReqHeight
6cb0: 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54 63 6c 5f  (window));..Tcl_
6cc0: 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  SetResult(interp
6cd0: 2c 20 65 72 72 6f 72 5f 62 75 66 66 65 72 2c 20  , error_buffer, 
6ce0: 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a 20  TCL_VOLATILE);. 
6cf0: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63     } else if ((c
6d00: 20 3d 3d 20 27 72 27 29 20 26 26 20 28 73 74 72   == 'r') && (str
6d10: 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 72  ncmp(argv[1], "r
6d20: 65 71 77 69 64 74 68 22 2c 20 6c 65 6e 67 74 68  eqwidth", length
6d30: 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26 20  ) == 0)..    && 
6d40: 28 6c 65 6e 67 74 68 20 3e 3d 20 34 29 29 20 7b  (length >= 4)) {
6d50: 0a 09 53 45 54 55 50 28 22 72 65 71 77 69 64 74  ..SETUP("reqwidt
6d60: 68 22 29 3b 0a 09 73 70 72 69 6e 74 66 28 65 72  h");..sprintf(er
6d70: 72 6f 72 5f 62 75 66 66 65 72 2c 20 22 25 64 22  ror_buffer, "%d"
6d80: 2c 20 54 6b 5f 52 65 71 57 69 64 74 68 28 77 69  , Tk_ReqWidth(wi
6d90: 6e 64 6f 77 29 29 3b 0a 09 54 63 6c 5f 53 65 74  ndow));..Tcl_Set
6da0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 65  Result(interp, e
6db0: 72 72 6f 72 5f 62 75 66 66 65 72 2c 20 54 43 4c  rror_buffer, TCL
6dc0: 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a 20 20 20 20  _VOLATILE);.    
6dd0: 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d  } else if ((c ==
6de0: 20 27 72 27 29 20 26 26 20 28 73 74 72 6e 63 6d   'r') && (strncm
6df0: 70 28 61 72 67 76 5b 31 5d 2c 20 22 72 67 62 22  p(argv[1], "rgb"
6e00: 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a  , length) == 0).
6e10: 09 20 20 20 20 26 26 20 28 6c 65 6e 67 74 68 20  .    && (length 
6e20: 3e 3d 20 32 29 29 20 7b 0a 20 20 20 20 09 72 65  >= 2)) {.    .re
6e30: 73 75 6c 74 20 3d 20 43 74 6b 5f 55 6e 73 75 70  sult = Ctk_Unsup
6e40: 70 6f 72 74 65 64 28 69 6e 74 65 72 70 2c 20 22  ported(interp, "
6e50: 77 69 6e 66 6f 20 72 67 62 22 29 3b 0a 20 20 20  winfo rgb");.   
6e60: 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d   } else if ((c =
6e70: 3d 20 27 72 27 29 20 26 26 20 28 73 74 72 63 6d  = 'r') && (strcm
6e80: 70 28 61 72 67 76 5b 31 5d 2c 20 22 72 6f 6f 74  p(argv[1], "root
6e90: 78 22 29 20 3d 3d 20 30 29 29 20 7b 0a 09 53 45  x") == 0)) {..SE
6ea0: 54 55 50 28 22 72 6f 6f 74 78 22 29 3b 0a 09 73  TUP("rootx");..s
6eb0: 70 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66  printf(error_buf
6ec0: 66 65 72 2c 20 22 25 64 22 2c 20 43 74 6b 5f 41  fer, "%d", Ctk_A
6ed0: 62 73 4c 65 66 74 28 77 69 6e 64 6f 77 29 29 3b  bsLeft(window));
6ee0: 0a 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28  ..Tcl_SetResult(
6ef0: 69 6e 74 65 72 70 2c 20 65 72 72 6f 72 5f 62 75  interp, error_bu
6f00: 66 66 65 72 2c 20 54 43 4c 5f 56 4f 4c 41 54 49  ffer, TCL_VOLATI
6f10: 4c 45 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20  LE);.    } else 
6f20: 69 66 20 28 28 63 20 3d 3d 20 27 72 27 29 20 26  if ((c == 'r') &
6f30: 26 20 28 73 74 72 63 6d 70 28 61 72 67 76 5b 31  & (strcmp(argv[1
6f40: 5d 2c 20 22 72 6f 6f 74 79 22 29 20 3d 3d 20 30  ], "rooty") == 0
6f50: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 72 6f 6f  )) {..SETUP("roo
6f60: 74 79 22 29 3b 0a 09 73 70 72 69 6e 74 66 28 65  ty");..sprintf(e
6f70: 72 72 6f 72 5f 62 75 66 66 65 72 2c 20 22 25 64  rror_buffer, "%d
6f80: 22 2c 20 43 74 6b 5f 41 62 73 54 6f 70 28 77 69  ", Ctk_AbsTop(wi
6f90: 6e 64 6f 77 29 29 3b 0a 09 54 63 6c 5f 53 65 74  ndow));..Tcl_Set
6fa0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 65  Result(interp, e
6fb0: 72 72 6f 72 5f 62 75 66 66 65 72 2c 20 54 43 4c  rror_buffer, TCL
6fc0: 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a 20 20 20 20  _VOLATILE);.    
6fd0: 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d  } else if ((c ==
6fe0: 20 27 73 27 29 20 26 26 20 28 73 74 72 63 6d 70   's') && (strcmp
6ff0: 28 61 72 67 76 5b 31 5d 2c 20 22 73 63 72 65 65  (argv[1], "scree
7000: 6e 22 29 20 3d 3d 20 30 29 29 20 7b 0a 09 53 45  n") == 0)) {..SE
7010: 54 55 50 28 22 73 63 72 65 65 6e 22 29 3b 0a 09  TUP("screen");..
7020: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74  Tcl_AppendResult
7030: 28 69 6e 74 65 72 70 2c 20 54 6b 5f 44 69 73 70  (interp, Tk_Disp
7040: 6c 61 79 28 77 69 6e 64 6f 77 29 2d 3e 6e 61 6d  lay(window)->nam
7050: 65 2c 20 22 2e 22 2c 20 28 63 68 61 72 20 2a 29  e, ".", (char *)
7060: 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 7d 20 65 6c   NULL);.    } el
7070: 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 73 27  se if ((c == 's'
7080: 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28 61 72  ) && (strncmp(ar
7090: 67 76 5b 31 5d 2c 20 22 73 63 72 65 65 6e 63 65  gv[1], "screence
70a0: 6c 6c 73 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  lls", length) ==
70b0: 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e   0)..    && (len
70c0: 67 74 68 20 3e 3d 20 37 29 29 20 7b 0a 20 20 20  gth >= 7)) {.   
70d0: 20 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28   .Tcl_SetResult(
70e0: 69 6e 74 65 72 70 2c 22 32 22 2c 54 43 4c 5f 53  interp,"2",TCL_S
70f0: 54 41 54 49 43 29 3b 0a 20 20 20 20 7d 20 65 6c  TATIC);.    } el
7100: 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 73 27  se if ((c == 's'
7110: 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28 61 72  ) && (strncmp(ar
7120: 67 76 5b 31 5d 2c 20 22 73 63 72 65 65 6e 64 65  gv[1], "screende
7130: 70 74 68 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d  pth", length) ==
7140: 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e   0)..    && (len
7150: 67 74 68 20 3e 3d 20 37 29 29 20 7b 0a 20 20 20  gth >= 7)) {.   
7160: 20 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28   .Tcl_SetResult(
7170: 69 6e 74 65 72 70 2c 22 31 22 2c 54 43 4c 5f 53  interp,"1",TCL_S
7180: 54 41 54 49 43 29 3b 0a 20 20 20 20 7d 20 65 6c  TATIC);.    } el
7190: 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 73 27  se if ((c == 's'
71a0: 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28 61 72  ) && (strncmp(ar
71b0: 67 76 5b 31 5d 2c 20 22 73 63 72 65 65 6e 68 65  gv[1], "screenhe
71c0: 69 67 68 74 22 2c 20 6c 65 6e 67 74 68 29 20 3d  ight", length) =
71d0: 3d 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c 65  = 0)..    && (le
71e0: 6e 67 74 68 20 3e 3d 20 37 29 29 20 7b 0a 09 53  ngth >= 7)) {..S
71f0: 45 54 55 50 28 22 73 63 72 65 65 6e 68 65 69 67  ETUP("screenheig
7200: 68 74 22 29 3b 0a 09 73 70 72 69 6e 74 66 28 65  ht");..sprintf(e
7210: 72 72 6f 72 5f 62 75 66 66 65 72 2c 20 22 25 64  rror_buffer, "%d
7220: 22 2c 20 43 74 6b 5f 44 69 73 70 6c 61 79 48 65  ", Ctk_DisplayHe
7230: 69 67 68 74 28 54 6b 5f 44 69 73 70 6c 61 79 28  ight(Tk_Display(
7240: 77 69 6e 64 6f 77 29 29 29 3b 0a 09 54 63 6c 5f  window)));..Tcl_
7250: 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  SetResult(interp
7260: 2c 65 72 72 6f 72 5f 62 75 66 66 65 72 2c 54 43  ,error_buffer,TC
7270: 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a 20 20 20  L_VOLATILE);.   
7280: 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d   } else if ((c =
7290: 3d 20 27 73 27 29 20 26 26 20 28 73 74 72 6e 63  = 's') && (strnc
72a0: 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 73 63 72  mp(argv[1], "scr
72b0: 65 65 6e 6d 6d 68 65 69 67 68 74 22 2c 20 6c 65  eenmmheight", le
72c0: 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20 20 20  ngth) == 0)..   
72d0: 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20 39   && (length >= 9
72e0: 29 29 20 7b 0a 20 20 20 20 09 72 65 73 75 6c 74  )) {.    .result
72f0: 20 3d 20 43 74 6b 5f 55 6e 73 75 70 70 6f 72 74   = Ctk_Unsupport
7300: 65 64 28 69 6e 74 65 72 70 2c 20 22 77 69 6e 66  ed(interp, "winf
7310: 6f 20 73 63 72 65 65 6e 6d 6d 68 65 69 67 68 74  o screenmmheight
7320: 22 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  ");.    } else i
7330: 66 20 28 28 63 20 3d 3d 20 27 73 27 29 20 26 26  f ((c == 's') &&
7340: 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31   (strncmp(argv[1
7350: 5d 2c 20 22 73 63 72 65 65 6e 6d 6d 77 69 64 74  ], "screenmmwidt
7360: 68 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  h", length) == 0
7370: 29 0a 09 20 20 20 20 26 26 20 28 6c 65 6e 67 74  )..    && (lengt
7380: 68 20 3e 3d 20 39 29 29 20 7b 0a 20 20 20 20 09  h >= 9)) {.    .
7390: 72 65 73 75 6c 74 20 3d 20 43 74 6b 5f 55 6e 73  result = Ctk_Uns
73a0: 75 70 70 6f 72 74 65 64 28 69 6e 74 65 72 70 2c  upported(interp,
73b0: 20 22 77 69 6e 66 6f 20 73 63 72 65 65 6e 6d 6d   "winfo screenmm
73c0: 68 65 69 67 68 74 22 29 3b 0a 20 20 20 20 7d 20  height");.    } 
73d0: 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27  else if ((c == '
73e0: 73 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28  s') && (strncmp(
73f0: 61 72 67 76 5b 31 5d 2c 20 22 73 63 72 65 65 6e  argv[1], "screen
7400: 76 69 73 75 61 6c 22 2c 20 6c 65 6e 67 74 68 29  visual", length)
7410: 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26 20 28   == 0)..    && (
7420: 6c 65 6e 67 74 68 20 3e 3d 20 37 29 29 20 7b 0a  length >= 7)) {.
7430: 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69  .Tcl_SetResult(i
7440: 6e 74 65 72 70 2c 22 73 74 61 74 69 63 67 72 61  nterp,"staticgra
7450: 79 22 2c 54 43 4c 5f 53 54 41 54 49 43 29 3b 0a  y",TCL_STATIC);.
7460: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28      } else if ((
7470: 63 20 3d 3d 20 27 73 27 29 20 26 26 20 28 73 74  c == 's') && (st
7480: 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22  rncmp(argv[1], "
7490: 73 63 72 65 65 6e 77 69 64 74 68 22 2c 20 6c 65  screenwidth", le
74a0: 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20 20 20  ngth) == 0)..   
74b0: 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20 37   && (length >= 7
74c0: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 73 63 72  )) {..SETUP("scr
74d0: 65 65 6e 77 69 64 74 68 22 29 3b 0a 09 73 70 72  eenwidth");..spr
74e0: 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66 66 65  intf(error_buffe
74f0: 72 2c 20 22 25 64 22 2c 20 43 74 6b 5f 44 69 73  r, "%d", Ctk_Dis
7500: 70 6c 61 79 57 69 64 74 68 28 54 6b 5f 44 69 73  playWidth(Tk_Dis
7510: 70 6c 61 79 28 77 69 6e 64 6f 77 29 29 29 3b 0a  play(window)));.
7520: 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69  .Tcl_SetResult(i
7530: 6e 74 65 72 70 2c 65 72 72 6f 72 5f 62 75 66 66  nterp,error_buff
7540: 65 72 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29  er,TCL_VOLATILE)
7550: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  ;.    } else if 
7560: 28 28 63 20 3d 3d 20 27 73 27 29 20 26 26 20 28  ((c == 's') && (
7570: 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c  strncmp(argv[1],
7580: 20 22 73 65 72 76 65 72 22 2c 20 6c 65 6e 67 74   "server", lengt
7590: 68 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26  h) == 0)..    &&
75a0: 20 28 6c 65 6e 67 74 68 20 3e 3d 20 32 29 29 20   (length >= 2)) 
75b0: 7b 0a 20 20 20 20 09 72 65 73 75 6c 74 20 3d 20  {.    .result = 
75c0: 43 74 6b 5f 55 6e 73 75 70 70 6f 72 74 65 64 28  Ctk_Unsupported(
75d0: 69 6e 74 65 72 70 2c 20 22 77 69 6e 66 6f 20 73  interp, "winfo s
75e0: 65 72 76 65 72 22 29 3b 0a 20 20 20 20 7d 20 65  erver");.    } e
75f0: 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20 27 74  lse if ((c == 't
7600: 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70 28 61  ') && (strncmp(a
7610: 72 67 76 5b 31 5d 2c 20 22 74 6f 70 6c 65 76 65  rgv[1], "topleve
7620: 6c 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  l", length) == 0
7630: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 74 6f 70  )) {..SETUP("top
7640: 6c 65 76 65 6c 22 29 3b 0a 09 54 63 6c 5f 53 65  level");..Tcl_Se
7650: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 54  tResult(interp,T
7660: 6b 5f 50 61 74 68 4e 61 6d 65 28 43 74 6b 5f 54  k_PathName(Ctk_T
7670: 6f 70 4c 65 76 65 6c 28 77 69 6e 64 6f 77 29 29  opLevel(window))
7680: 2c 20 54 43 4c 5f 53 54 41 54 49 43 29 3b 0a 20  , TCL_STATIC);. 
7690: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 63     } else if ((c
76a0: 20 3d 3d 20 27 76 27 29 20 26 26 20 28 73 74 72   == 'v') && (str
76b0: 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 76  ncmp(argv[1], "v
76c0: 69 65 77 61 62 6c 65 22 2c 20 6c 65 6e 67 74 68  iewable", length
76d0: 29 20 3d 3d 20 30 29 0a 09 20 20 20 20 26 26 20  ) == 0)..    && 
76e0: 28 6c 65 6e 67 74 68 20 3e 3d 20 33 29 29 20 7b  (length >= 3)) {
76f0: 0a 09 53 45 54 55 50 28 22 76 69 65 77 61 62 6c  ..SETUP("viewabl
7700: 65 22 29 3b 0a 09 54 63 6c 5f 53 65 74 52 65 73  e");..Tcl_SetRes
7710: 75 6c 74 28 69 6e 74 65 72 70 2c 28 77 69 6e 64  ult(interp,(wind
7720: 6f 77 2d 3e 66 6c 61 67 73 20 26 20 43 54 4b 5f  ow->flags & CTK_
7730: 44 49 53 50 4c 41 59 45 44 29 20 3f 20 22 31 22  DISPLAYED) ? "1"
7740: 20 3a 20 22 30 22 2c 0a 20 20 20 20 20 20 20 20   : "0",.        
7750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 43                TC
7760: 4c 5f 53 54 41 54 49 43 29 3b 0a 20 20 20 20 7d  L_STATIC);.    }
7770: 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d 20   else if ((c == 
7780: 27 76 27 29 20 26 26 20 28 73 74 72 6e 63 6d 70  'v') && (strncmp
7790: 28 61 72 67 76 5b 31 5d 2c 20 22 76 69 73 75 61  (argv[1], "visua
77a0: 6c 22 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  l", length) == 0
77b0: 29 29 20 7b 0a 09 54 63 6c 5f 53 65 74 52 65 73  )) {..Tcl_SetRes
77c0: 75 6c 74 28 69 6e 74 65 72 70 2c 22 73 74 61 74  ult(interp,"stat
77d0: 69 63 67 72 61 79 22 2c 54 43 4c 5f 53 54 41 54  icgray",TCL_STAT
77e0: 49 43 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20  IC);.    } else 
77f0: 69 66 20 28 28 63 20 3d 3d 20 27 76 27 29 20 26  if ((c == 'v') &
7800: 26 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b  & (strncmp(argv[
7810: 31 5d 2c 20 22 76 69 73 75 61 6c 73 61 76 61 69  1], "visualsavai
7820: 6c 61 62 6c 65 22 2c 20 6c 65 6e 67 74 68 29 20  lable", length) 
7830: 3d 3d 20 30 29 0a 09 20 20 20 20 26 26 20 28 6c  == 0)..    && (l
7840: 65 6e 67 74 68 20 3e 3d 20 37 29 29 20 7b 0a 09  ength >= 7)) {..
7850: 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e  Tcl_SetResult(in
7860: 74 65 72 70 2c 22 73 74 61 74 69 63 67 72 61 79  terp,"staticgray
7870: 20 31 22 2c 54 43 4c 5f 53 54 41 54 49 43 29 3b   1",TCL_STATIC);
7880: 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28  .    } else if (
7890: 28 63 20 3d 3d 20 27 76 27 29 20 26 26 20 28 73  (c == 'v') && (s
78a0: 74 72 6e 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20  trncmp(argv[1], 
78b0: 22 76 72 6f 6f 74 68 65 69 67 68 74 22 2c 20 6c  "vrootheight", l
78c0: 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09 20 20  ength) == 0)..  
78d0: 20 20 26 26 20 28 6c 65 6e 67 74 68 20 3e 3d 20    && (length >= 
78e0: 36 29 29 20 7b 0a 09 53 45 54 55 50 28 22 76 72  6)) {..SETUP("vr
78f0: 6f 6f 74 68 65 69 67 68 74 22 29 3b 0a 09 73 70  ootheight");..sp
7900: 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66 66  rintf(error_buff
7910: 65 72 2c 20 22 25 64 22 2c 20 43 74 6b 5f 44 69  er, "%d", Ctk_Di
7920: 73 70 6c 61 79 48 65 69 67 68 74 28 54 6b 5f 44  splayHeight(Tk_D
7930: 69 73 70 6c 61 79 28 77 69 6e 64 6f 77 29 29 29  isplay(window)))
7940: 3b 0a 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74  ;..Tcl_SetResult
7950: 28 69 6e 74 65 72 70 2c 65 72 72 6f 72 5f 62 75  (interp,error_bu
7960: 66 66 65 72 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c  ffer,TCL_VOLATIL
7970: 45 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  E);.    } else i
7980: 66 20 28 28 63 20 3d 3d 20 27 76 27 29 20 26 26  f ((c == 'v') &&
7990: 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31   (strncmp(argv[1
79a0: 5d 2c 20 22 76 72 6f 6f 74 77 69 64 74 68 22 2c  ], "vrootwidth",
79b0: 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0a 09   length) == 0)..
79c0: 20 20 20 20 26 26 20 28 6c 65 6e 67 74 68 20 3e      && (length >
79d0: 3d 20 36 29 29 20 7b 0a 09 53 45 54 55 50 28 22  = 6)) {..SETUP("
79e0: 76 72 6f 6f 74 77 69 64 74 68 22 29 3b 0a 09 73  vrootwidth");..s
79f0: 70 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66  printf(error_buf
7a00: 66 65 72 2c 20 22 25 64 22 2c 20 43 74 6b 5f 44  fer, "%d", Ctk_D
7a10: 69 73 70 6c 61 79 57 69 64 74 68 28 54 6b 5f 44  isplayWidth(Tk_D
7a20: 69 73 70 6c 61 79 28 77 69 6e 64 6f 77 29 29 29  isplay(window)))
7a30: 3b 0a 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74  ;..Tcl_SetResult
7a40: 28 69 6e 74 65 72 70 2c 65 72 72 6f 72 5f 62 75  (interp,error_bu
7a50: 66 66 65 72 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c  ffer,TCL_VOLATIL
7a60: 45 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  E);.    } else i
7a70: 66 20 28 28 63 20 3d 3d 20 27 76 27 29 20 26 26  f ((c == 'v') &&
7a80: 20 28 73 74 72 63 6d 70 28 61 72 67 76 5b 31 5d   (strcmp(argv[1]
7a90: 2c 20 22 76 72 6f 6f 74 78 22 29 20 3d 3d 20 30  , "vrootx") == 0
7aa0: 29 29 20 7b 0a 09 54 63 6c 5f 53 65 74 52 65 73  )) {..Tcl_SetRes
7ab0: 75 6c 74 28 69 6e 74 65 72 70 2c 22 30 22 2c 54  ult(interp,"0",T
7ac0: 43 4c 5f 53 54 41 54 49 43 29 3b 0a 20 20 20 20  CL_STATIC);.    
7ad0: 7d 20 65 6c 73 65 20 69 66 20 28 28 63 20 3d 3d  } else if ((c ==
7ae0: 20 27 76 27 29 20 26 26 20 28 73 74 72 63 6d 70   'v') && (strcmp
7af0: 28 61 72 67 76 5b 31 5d 2c 20 22 76 72 6f 6f 74  (argv[1], "vroot
7b00: 79 22 29 20 3d 3d 20 30 29 29 20 7b 0a 09 54 63  y") == 0)) {..Tc
7b10: 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65  l_SetResult(inte
7b20: 72 70 2c 22 30 22 2c 54 43 4c 5f 53 54 41 54 49  rp,"0",TCL_STATI
7b30: 43 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  C);.    } else i
7b40: 66 20 28 28 63 20 3d 3d 20 27 77 27 29 20 26 26  f ((c == 'w') &&
7b50: 20 28 73 74 72 6e 63 6d 70 28 61 72 67 76 5b 31   (strncmp(argv[1
7b60: 5d 2c 20 22 77 69 64 74 68 22 2c 20 6c 65 6e 67  ], "width", leng
7b70: 74 68 29 20 3d 3d 20 30 29 29 20 7b 0a 09 53 45  th) == 0)) {..SE
7b80: 54 55 50 28 22 77 69 64 74 68 22 29 3b 0a 09 73  TUP("width");..s
7b90: 70 72 69 6e 74 66 28 65 72 72 6f 72 5f 62 75 66  printf(error_buf
7ba0: 66 65 72 2c 20 22 25 64 22 2c 20 54 6b 5f 57 69  fer, "%d", Tk_Wi
7bb0: 64 74 68 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54  dth(window));..T
7bc0: 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74  cl_SetResult(int
7bd0: 65 72 70 2c 65 72 72 6f 72 5f 62 75 66 66 65 72  erp,error_buffer
7be0: 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a  ,TCL_VOLATILE);.
7bf0: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28      } else if ((
7c00: 63 20 3d 3d 20 27 78 27 29 20 26 26 20 28 61 72  c == 'x') && (ar
7c10: 67 76 5b 31 5d 5b 31 5d 20 3d 3d 20 27 5c 30 27  gv[1][1] == '\0'
7c20: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 78 22 29  )) {..SETUP("x")
7c30: 3b 0a 09 73 70 72 69 6e 74 66 28 65 72 72 6f 72  ;..sprintf(error
7c40: 5f 62 75 66 66 65 72 2c 20 22 25 64 22 2c 20 54  _buffer, "%d", T
7c50: 6b 5f 58 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54  k_X(window));..T
7c60: 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74  cl_SetResult(int
7c70: 65 72 70 2c 65 72 72 6f 72 5f 62 75 66 66 65 72  erp,error_buffer
7c80: 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a  ,TCL_VOLATILE);.
7c90: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28      } else if ((
7ca0: 63 20 3d 3d 20 27 79 27 29 20 26 26 20 28 61 72  c == 'y') && (ar
7cb0: 67 76 5b 31 5d 5b 31 5d 20 3d 3d 20 27 5c 30 27  gv[1][1] == '\0'
7cc0: 29 29 20 7b 0a 09 53 45 54 55 50 28 22 79 22 29  )) {..SETUP("y")
7cd0: 3b 0a 09 73 70 72 69 6e 74 66 28 65 72 72 6f 72  ;..sprintf(error
7ce0: 5f 62 75 66 66 65 72 2c 20 22 25 64 22 2c 20 54  _buffer, "%d", T
7cf0: 6b 5f 59 28 77 69 6e 64 6f 77 29 29 3b 0a 09 54  k_Y(window));..T
7d00: 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74  cl_SetResult(int
7d10: 65 72 70 2c 65 72 72 6f 72 5f 62 75 66 66 65 72  erp,error_buffer
7d20: 2c 54 43 4c 5f 56 4f 4c 41 54 49 4c 45 29 3b 0a  ,TCL_VOLATILE);.
7d30: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 54 63      } else {..Tc
7d40: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69  l_AppendResult(i
7d50: 6e 74 65 72 70 2c 20 22 62 61 64 20 6f 70 74 69  nterp, "bad opti
7d60: 6f 6e 20 5c 22 22 2c 20 61 72 67 76 5b 31 5d 2c  on \"", argv[1],
7d70: 0a 09 09 22 5c 22 3a 20 6d 75 73 74 20 62 65 20  ..."\": must be 
7d80: 61 74 6f 6d 2c 20 61 74 6f 6d 6e 61 6d 65 2c 20  atom, atomname, 
7d90: 63 65 6c 6c 73 2c 20 63 68 69 6c 64 72 65 6e 2c  cells, children,
7da0: 20 22 2c 0a 09 09 22 63 6c 61 73 73 2c 20 63 6f   ",..."class, co
7db0: 6c 6f 72 6d 61 70 66 75 6c 6c 2c 20 63 6f 6e 74  lormapfull, cont
7dc0: 61 69 6e 69 6e 67 2c 20 64 65 70 74 68 2c 20 65  aining, depth, e
7dd0: 78 69 73 74 73 2c 20 66 70 69 78 65 6c 73 2c 20  xists, fpixels, 
7de0: 22 2c 0a 09 09 22 67 65 6f 6d 65 74 72 79 2c 20  ",..."geometry, 
7df0: 68 65 69 67 68 74 2c 20 22 2c 0a 09 09 22 69 64  height, ",..."id
7e00: 2c 20 69 6e 74 65 72 70 73 2c 20 69 73 6d 61 70  , interps, ismap
7e10: 70 65 64 2c 20 6d 61 6e 61 67 65 72 2c 20 6e 61  ped, manager, na
7e20: 6d 65 2c 20 70 61 72 65 6e 74 2c 20 70 61 74 68  me, parent, path
7e30: 6e 61 6d 65 2c 20 22 2c 0a 09 09 22 70 69 78 65  name, ",..."pixe
7e40: 6c 73 2c 20 70 6f 69 6e 74 65 72 78 2c 20 70 6f  ls, pointerx, po
7e50: 69 6e 74 65 72 78 79 2c 20 70 6f 69 6e 74 65 72  interxy, pointer
7e60: 79 2c 20 72 65 71 68 65 69 67 68 74 2c 20 22 2c  y, reqheight, ",
7e70: 0a 09 09 22 72 65 71 77 69 64 74 68 2c 20 72 67  ..."reqwidth, rg
7e80: 62 2c 20 22 2c 0a 09 09 22 72 6f 6f 74 78 2c 20  b, ",..."rootx, 
7e90: 72 6f 6f 74 79 2c 20 22 2c 0a 09 09 22 73 63 72  rooty, ",..."scr
7ea0: 65 65 6e 2c 20 73 63 72 65 65 6e 63 65 6c 6c 73  een, screencells
7eb0: 2c 20 73 63 72 65 65 6e 64 65 70 74 68 2c 20 73  , screendepth, s
7ec0: 63 72 65 65 6e 68 65 69 67 68 74 2c 20 22 2c 0a  creenheight, ",.
7ed0: 09 09 22 73 63 72 65 65 6e 6d 6d 68 65 69 67 68  .."screenmmheigh
7ee0: 74 2c 20 73 63 72 65 65 6e 6d 6d 77 69 64 74 68  t, screenmmwidth
7ef0: 2c 20 73 63 72 65 65 6e 76 69 73 75 61 6c 2c 20  , screenvisual, 
7f00: 22 2c 0a 09 09 22 73 63 72 65 65 6e 77 69 64 74  ",..."screenwidt
7f10: 68 2c 20 73 65 72 76 65 72 2c 20 22 2c 0a 09 09  h, server, ",...
7f20: 22 74 6f 70 6c 65 76 65 6c 2c 20 76 69 65 77 61  "toplevel, viewa
7f30: 62 6c 65 2c 20 76 69 73 75 61 6c 2c 20 76 69 73  ble, visual, vis
7f40: 75 61 6c 73 61 76 61 69 6c 61 62 6c 65 2c 20 22  ualsavailable, "
7f50: 2c 0a 09 09 22 76 72 6f 6f 74 68 65 69 67 68 74  ,..."vrootheight
7f60: 2c 20 76 72 6f 6f 74 77 69 64 74 68 2c 20 76 72  , vrootwidth, vr
7f70: 6f 6f 74 78 2c 20 76 72 6f 6f 74 79 2c 20 22 2c  ootx, vrooty, ",
7f80: 0a 09 09 22 77 69 64 74 68 2c 20 78 2c 20 6f 72  ..."width, x, or
7f90: 20 79 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55   y", (char *) NU
7fa0: 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 4c  LL);..return TCL
7fb0: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20  _ERROR;.    }.  
7fc0: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
7fd0: 0a 0a 20 20 20 20 77 72 6f 6e 67 41 72 67 73 3a  ..    wrongArgs:
7fe0: 0a 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52  .    Tcl_AppendR
7ff0: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
8000: 72 6f 6e 67 20 23 20 61 72 67 75 6d 65 6e 74 73  rong # arguments
8010: 3a 20 6d 75 73 74 20 62 65 20 5c 22 22 2c 0a 09  : must be \"",..
8020: 20 20 20 20 61 72 67 76 5b 30 5d 2c 20 22 20 22      argv[0], " "
8030: 2c 20 61 72 67 4e 61 6d 65 2c 20 22 20 77 69 6e  , argName, " win
8040: 64 6f 77 5c 22 22 2c 20 28 63 68 61 72 20 2a 29  dow\"", (char *)
8050: 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 72 65 74 75   NULL);.    retu
8060: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 7d 0a  rn TCL_ERROR;.}.
8070: 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d  ../*. *---------
8080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
80a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
80b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a  -------------. *
80c0: 0a 20 2a 20 54 6b 44 65 61 64 41 70 70 43 6d 64  . * TkDeadAppCmd
80d0: 20 2d 2d 0a 20 2a 0a 20 2a 09 49 66 20 61 6e 20   --. *. *.If an 
80e0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 68 61 73 20  application has 
80f0: 62 65 65 6e 20 64 65 6c 65 74 65 64 20 74 68 65  been deleted the
8100: 6e 20 61 6c 6c 20 54 6b 20 63 6f 6d 6d 61 6e 64  n all Tk command
8110: 73 20 77 69 6c 6c 20 62 65 0a 20 2a 09 72 65 2d  s will be. *.re-
8120: 62 6f 75 6e 64 20 74 6f 20 74 68 69 73 20 70 72  bound to this pr
8130: 6f 63 65 64 75 72 65 2e 0a 20 2a 0a 20 2a 20 52  ocedure.. *. * R
8140: 65 73 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61  esults:. *.A sta
8150: 6e 64 61 72 64 20 54 63 6c 20 65 72 72 6f 72 20  ndard Tcl error 
8160: 69 73 20 72 65 70 6f 72 74 65 64 20 74 6f 20 6c  is reported to l
8170: 65 74 20 74 68 65 20 75 73 65 72 20 6b 6e 6f 77  et the user know
8180: 20 74 68 61 74 0a 20 2a 09 74 68 65 20 61 70 70   that. *.the app
8190: 6c 69 63 61 74 69 6f 6e 20 69 73 20 64 65 61 64  lication is dead
81a0: 2e 0a 20 2a 0a 20 2a 20 53 69 64 65 20 65 66 66  .. *. * Side eff
81b0: 65 63 74 73 3a 0a 20 2a 09 53 65 65 20 74 68 65  ects:. *.See the
81c0: 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74   user documentat
81d0: 69 6f 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d 2d  ion.. *. *------
81e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
81f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8220: 0a 20 2a 2f 0a 0a 09 2f 2a 20 41 52 47 53 55 53  . */.../* ARGSUS
8230: 45 44 20 2a 2f 0a 69 6e 74 0a 54 6b 44 65 61 64  ED */.int.TkDead
8240: 41 70 70 43 6d 64 28 63 6c 69 65 6e 74 44 61 74  AppCmd(clientDat
8250: 61 2c 20 69 6e 74 65 72 70 2c 20 61 72 67 63 2c  a, interp, argc,
8260: 20 61 72 67 76 29 0a 20 20 20 20 43 6c 69 65 6e   argv).    Clien
8270: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61  tData clientData
8280: 3b 09 2f 2a 20 44 75 6d 6d 79 2e 20 2a 2f 0a 20  ;./* Dummy. */. 
8290: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69     Tcl_Interp *i
82a0: 6e 74 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65  nterp;../* Curre
82b0: 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20  nt interpreter. 
82c0: 2a 2f 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b  */.    int argc;
82d0: 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20  .../* Number of 
82e0: 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20  arguments. */.  
82f0: 20 20 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09    char **argv;..
8300: 2f 2a 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69  /* Argument stri
8310: 6e 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 54 63  ngs. */.{.    Tc
8320: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69  l_AppendResult(i
8330: 6e 74 65 72 70 2c 20 22 63 61 6e 27 74 20 69 6e  nterp, "can't in
8340: 76 6f 6b 65 20 5c 22 22 2c 20 61 72 67 76 5b 30  voke \"", argv[0
8350: 5d 2c 0a 09 20 20 20 20 22 5c 22 20 63 6f 6d 6d  ],..    "\" comm
8360: 61 6e 64 3a 20 20 61 70 70 6c 69 63 61 74 69 6f  and:  applicatio
8370: 6e 20 68 61 73 20 62 65 65 6e 20 64 65 73 74 72  n has been destr
8380: 6f 79 65 64 22 2c 20 28 63 68 61 72 20 2a 29 20  oyed", (char *) 
8390: 4e 55 4c 4c 29 3b 0a 20 20 20 20 72 65 74 75 72  NULL);.    retur
83a0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 7d 0a 0c  n TCL_ERROR;.}..
83b0: 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ./*. *----------
83c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
83d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
83e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
83f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a  ------------. *.
8400: 20 2a 20 43 74 6b 5f 54 6b 46 6f 63 75 73 4e 65   * Ctk_TkFocusNe
8410: 78 74 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a 09 47  xtCmd --. *. *.G
8420: 65 74 20 74 68 65 20 6e 65 78 74 20 77 69 6e 64  et the next wind
8430: 6f 77 20 69 6e 20 22 66 6f 63 75 73 20 6f 72 64  ow in "focus ord
8440: 65 72 22 20 61 66 74 65 72 20 73 70 65 63 69 66  er" after specif
8450: 69 65 64 20 77 69 6e 64 6f 77 0a 20 2a 09 28 74  ied window. *.(t
8460: 68 65 20 77 69 6e 64 6f 77 20 74 68 61 74 20 73  he window that s
8470: 68 6f 75 6c 64 20 72 65 63 65 69 76 65 20 74 68  hould receive th
8480: 65 20 66 6f 63 75 73 20 6e 65 78 74 20 69 66 20  e focus next if 
8490: 54 61 62 20 69 73 20 74 79 70 65 64 29 2e 0a 20  Tab is typed).. 
84a0: 2a 09 22 4e 65 78 74 22 20 69 73 20 64 65 66 69  *."Next" is defi
84b0: 6e 65 64 20 62 79 20 61 20 70 72 65 2d 6f 72 64  ned by a pre-ord
84c0: 65 72 20 73 65 61 72 63 68 20 6f 66 20 61 20 74  er search of a t
84d0: 6f 70 2d 6c 65 76 65 6c 20 61 6e 64 20 69 74 73  op-level and its
84e0: 0a 20 2a 09 6e 6f 6e 2d 74 6f 70 2d 6c 65 76 65  . *.non-top-leve
84f0: 6c 20 64 65 73 63 65 6e 64 61 6e 74 73 2c 20 77  l descendants, w
8500: 69 74 68 20 74 68 65 20 73 74 61 63 6b 69 6e 67  ith the stacking
8510: 20 6f 72 64 65 72 20 64 65 74 65 72 6d 69 6e 69   order determini
8520: 6e 67 0a 20 2a 09 74 68 65 20 6f 72 64 65 72 20  ng. *.the order 
8530: 6f 66 20 73 69 62 6c 69 6e 67 73 2e 20 20 54 68  of siblings.  Th
8540: 65 20 22 2d 74 61 6b 65 66 6f 63 75 73 22 20 6f  e "-takefocus" o
8550: 70 74 69 6f 6e 73 20 6f 6e 20 77 69 6e 64 6f 77  ptions on window
8560: 73 0a 20 2a 09 64 65 74 65 72 6d 69 6e 65 20 77  s. *.determine w
8570: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
8580: 65 79 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69  ey should be ski
8590: 70 70 65 64 2e 0a 20 2a 0a 20 2a 20 52 65 73 75  pped.. *. * Resu
85a0: 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61 6e 64 61  lts:. *.A standa
85b0: 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e 0a 20  rd Tcl result.. 
85c0: 2a 0a 20 2a 20 53 69 64 65 20 65 66 66 65 63 74  *. * Side effect
85d0: 73 3a 0a 20 2a 09 4d 61 79 20 65 78 65 63 75 74  s:. *.May execut
85e0: 65 20 61 72 62 69 74 72 61 72 79 20 63 6f 6d 6d  e arbitrary comm
85f0: 61 6e 64 73 20 73 70 65 63 69 66 69 65 64 20 62  ands specified b
8600: 79 20 74 68 65 20 22 2d 74 61 6b 65 66 6f 63 75  y the "-takefocu
8610: 73 22 0a 20 2a 09 6f 70 74 69 6f 6e 73 20 6f 66  s". *.options of
8620: 20 74 68 65 20 77 69 64 67 65 74 73 2e 0a 20 2a   the widgets.. *
8630: 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  . *-------------
8640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 69  ---------. */..i
8680: 6e 74 0a 43 74 6b 5f 54 6b 46 6f 63 75 73 4e 65  nt.Ctk_TkFocusNe
8690: 78 74 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61  xtCmd(clientData
86a0: 2c 20 69 6e 74 65 72 70 2c 20 61 72 67 63 2c 20  , interp, argc, 
86b0: 61 72 67 76 29 0a 20 20 20 20 43 6c 69 65 6e 74  argv).    Client
86c0: 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b  Data clientData;
86d0: 09 2f 2a 20 4d 61 69 6e 20 77 69 6e 64 6f 77 20  ./* Main window 
86e0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a  associated with.
86f0: 09 09 09 09 20 2a 20 69 6e 74 65 72 70 72 65 74  .... * interpret
8700: 65 72 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49  er. */.    Tcl_I
8710: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09  nterp *interp;..
8720: 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72  /* Current inter
8730: 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 69  preter. */.    i
8740: 6e 74 20 61 72 67 63 3b 09 09 09 2f 2a 20 4e 75  nt argc;.../* Nu
8750: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
8760: 73 2e 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a  s. */.    char *
8770: 2a 61 72 67 76 3b 09 09 2f 2a 20 41 72 67 75 6d  *argv;../* Argum
8780: 65 6e 74 20 73 74 72 69 6e 67 73 2e 20 2a 2f 0a  ent strings. */.
8790: 7b 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20  {.    Tk_Window 
87a0: 6d 61 69 6e 57 69 6e 20 3d 20 28 54 6b 5f 57 69  mainWin = (Tk_Wi
87b0: 6e 64 6f 77 29 20 63 6c 69 65 6e 74 44 61 74 61  ndow) clientData
87c0: 3b 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20  ;.    Tk_Window 
87d0: 77 69 6e 2c 20 73 74 61 72 74 57 69 6e 2c 20 6e  win, startWin, n
87e0: 65 78 74 57 69 6e 3b 0a 20 20 20 20 69 6e 74 20  extWin;.    int 
87f0: 66 6c 61 67 3b 0a 0a 20 20 20 20 69 66 20 28 61  flag;..    if (a
8800: 72 67 63 20 21 3d 20 32 29 20 7b 0a 09 54 63 6c  rgc != 2) {..Tcl
8810: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e  _AppendResult(in
8820: 74 65 72 70 2c 20 22 77 72 6f 6e 67 20 23 20 61  terp, "wrong # a
8830: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 5c  rgs: should be \
8840: 22 22 2c 0a 09 09 61 72 67 76 5b 30 5d 2c 20 22  "",...argv[0], "
8850: 20 77 69 6e 64 6f 77 5c 22 22 2c 20 28 63 68 61   window\"", (cha
8860: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74  r *) NULL);..ret
8870: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20  urn TCL_ERROR;. 
8880: 20 20 20 7d 0a 20 20 20 20 73 74 61 72 74 57 69     }.    startWi
8890: 6e 20 3d 20 54 6b 5f 4e 61 6d 65 54 6f 57 69 6e  n = Tk_NameToWin
88a0: 64 6f 77 28 69 6e 74 65 72 70 2c 20 61 72 67 76  dow(interp, argv
88b0: 5b 31 5d 2c 20 6d 61 69 6e 57 69 6e 29 3b 0a 20  [1], mainWin);. 
88c0: 20 20 20 69 66 20 28 21 73 74 61 72 74 57 69 6e     if (!startWin
88d0: 29 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52  )  return TCL_ER
88e0: 52 4f 52 3b 0a 0a 20 20 20 20 77 69 6e 20 3d 20  ROR;..    win = 
88f0: 73 74 61 72 74 57 69 6e 3b 0a 20 20 20 20 64 6f  startWin;.    do
8900: 20 7b 0a 09 2f 2a 0a 09 20 2a 20 46 69 72 73 74   {../*.. * First
8910: 20 74 72 79 20 74 6f 20 74 72 61 76 65 72 73 65   try to traverse
8920: 20 74 6f 20 66 69 72 73 74 20 63 68 69 6c 64 2e   to first child.
8930: 20 20 49 66 20 74 68 61 74 20 66 61 69 6c 73 2c    If that fails,
8940: 0a 09 20 2a 20 66 69 6e 64 20 74 68 65 20 66 69  .. * find the fi
8950: 72 73 74 20 61 6e 63 65 73 74 6f 72 20 74 68 61  rst ancestor tha
8960: 74 20 68 61 73 20 61 20 6e 65 78 74 20 73 69 62  t has a next sib
8970: 6c 69 6e 67 20 61 6e 64 0a 09 20 2a 20 74 72 61  ling and.. * tra
8980: 76 65 72 73 65 20 74 6f 20 74 68 61 74 20 73 69  verse to that si
8990: 62 6c 69 6e 67 2e 20 20 49 66 20 74 68 65 20 74  bling.  If the t
89a0: 6f 70 2d 6c 65 76 65 6c 20 69 73 20 72 65 61 63  op-level is reac
89b0: 68 65 64 2c 0a 09 20 2a 20 73 74 6f 70 20 74 68  hed,.. * stop th
89c0: 65 72 65 2e 0a 09 20 2a 2f 0a 0a 09 6e 65 78 74  ere... */...next
89d0: 57 69 6e 20 3d 20 43 74 6b 5f 42 6f 74 74 6f 6d  Win = Ctk_Bottom
89e0: 43 68 69 6c 64 28 77 69 6e 29 3b 0a 09 77 68 69  Child(win);..whi
89f0: 6c 65 20 28 21 6e 65 78 74 57 69 6e 29 20 7b 0a  le (!nextWin) {.
8a00: 09 20 20 20 20 69 66 20 28 54 6b 5f 49 73 54 6f  .    if (Tk_IsTo
8a10: 70 4c 65 76 65 6c 28 77 69 6e 29 29 20 20 67 6f  pLevel(win))  go
8a20: 74 6f 20 67 6f 74 69 74 3b 0a 09 20 20 20 20 6e  to gotit;..    n
8a30: 65 78 74 57 69 6e 20 3d 20 43 74 6b 5f 4e 65 78  extWin = Ctk_Nex
8a40: 74 53 69 62 6c 69 6e 67 28 77 69 6e 29 3b 0a 09  tSibling(win);..
8a50: 20 20 20 20 77 69 6e 20 3d 20 54 6b 5f 50 61 72      win = Tk_Par
8a60: 65 6e 74 28 77 69 6e 29 3b 0a 09 7d 0a 09 77 69  ent(win);..}..wi
8a70: 6e 20 3d 20 6e 65 78 74 57 69 6e 3b 0a 0a 67 6f  n = nextWin;..go
8a80: 74 69 74 3a 0a 09 2f 2a 0a 09 20 2a 20 53 74 6f  tit:../*.. * Sto
8a90: 70 20 74 72 61 76 65 72 73 69 6e 67 20 69 66 20  p traversing if 
8aa0: 77 65 20 68 61 76 65 20 67 6f 6e 65 20 66 75 6c  we have gone ful
8ab0: 6c 20 63 69 72 63 6c 65 20 6f 72 0a 09 20 2a 20  l circle or.. * 
8ac0: 74 68 69 73 20 77 69 6e 64 6f 77 20 63 61 6e 20  this window can 
8ad0: 67 65 74 20 74 68 65 20 66 6f 63 75 73 2e 0a 09  get the focus...
8ae0: 20 2a 2f 0a 0a 09 69 66 20 28 77 69 6e 20 3d 3d   */...if (win ==
8af0: 20 73 74 61 72 74 57 69 6e 29 20 62 72 65 61 6b   startWin) break
8b00: 3b 0a 09 69 66 20 28 47 65 74 46 6f 63 75 73 4f  ;..if (GetFocusO
8b10: 6b 28 69 6e 74 65 72 70 2c 20 77 69 6e 2c 20 26  k(interp, win, &
8b20: 66 6c 61 67 29 20 21 3d 20 54 43 4c 5f 4f 4b 29  flag) != TCL_OK)
8b30: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
8b40: 4f 52 3b 0a 20 20 20 20 7d 20 77 68 69 6c 65 20  OR;.    } while 
8b50: 28 21 66 6c 61 67 29 3b 0a 20 20 20 20 54 63 6c  (!flag);.    Tcl
8b60: 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72  _SetResult(inter
8b70: 70 2c 20 54 6b 5f 50 61 74 68 4e 61 6d 65 28 77  p, Tk_PathName(w
8b80: 69 6e 29 2c 20 54 43 4c 5f 53 54 41 54 49 43 29  in), TCL_STATIC)
8b90: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c  ;.    return TCL
8ba0: 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d  _OK;.}.../*. *--
8bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8bf0: 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 43 74 6b 5f 54  ----. *. * Ctk_T
8c00: 6b 46 6f 63 75 73 50 72 65 76 43 6d 64 20 2d 2d  kFocusPrevCmd --
8c10: 0a 20 2a 0a 20 2a 09 47 65 74 20 74 68 65 20 70  . *. *.Get the p
8c20: 72 65 76 69 6f 75 73 20 77 69 6e 64 6f 77 20 69  revious window i
8c30: 6e 20 22 66 6f 63 75 73 20 6f 72 64 65 72 22 20  n "focus order" 
8c40: 62 65 66 6f 72 65 20 73 70 65 63 69 66 69 65 64  before specified
8c50: 20 77 69 6e 64 6f 77 0a 20 2a 09 28 74 68 65 20   window. *.(the 
8c60: 77 69 6e 64 6f 77 20 74 68 61 74 20 73 68 6f 75  window that shou
8c70: 6c 64 20 72 65 63 65 69 76 65 20 74 68 65 20 66  ld receive the f
8c80: 6f 63 75 73 20 6e 65 78 74 20 69 66 20 53 68 69  ocus next if Shi
8c90: 66 74 2d 54 61 62 20 69 73 0a 20 2a 09 74 79 70  ft-Tab is. *.typ
8ca0: 65 64 29 2e 20 20 22 50 72 65 76 69 6f 75 73 22  ed).  "Previous"
8cb0: 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20 61   is defined by a
8cc0: 20 70 72 65 2d 6f 72 64 65 72 20 73 65 61 72 63   pre-order searc
8cd0: 68 20 6f 66 20 61 20 74 6f 70 2d 6c 65 76 65 6c  h of a top-level
8ce0: 0a 20 2a 09 61 6e 64 20 69 74 73 20 6e 6f 6e 2d  . *.and its non-
8cf0: 74 6f 70 2d 6c 65 76 65 6c 20 64 65 73 63 65 6e  top-level descen
8d00: 64 61 6e 74 73 2c 20 77 69 74 68 20 74 68 65 20  dants, with the 
8d10: 73 74 61 63 6b 69 6e 67 20 6f 72 64 65 72 0a 20  stacking order. 
8d20: 2a 09 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 68  *.determining th
8d30: 65 20 6f 72 64 65 72 20 6f 66 20 73 69 62 6c 69  e order of sibli
8d40: 6e 67 73 2e 20 20 54 68 65 20 22 2d 74 61 6b 65  ngs.  The "-take
8d50: 66 6f 63 75 73 22 20 6f 70 74 69 6f 6e 73 0a 20  focus" options. 
8d60: 2a 09 6f 6e 20 77 69 6e 64 6f 77 73 20 64 65 74  *.on windows det
8d70: 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20 6f  ermine whether o
8d80: 72 20 6e 6f 74 20 74 68 65 79 20 73 68 6f 75 6c  r not they shoul
8d90: 64 20 62 65 20 73 6b 69 70 70 65 64 2e 0a 20 2a  d be skipped.. *
8da0: 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a 09  . * Results:. *.
8db0: 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72  A standard Tcl r
8dc0: 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 64  esult.. *. * Sid
8dd0: 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 4d 61  e effects:. *.Ma
8de0: 79 20 65 78 65 63 75 74 65 20 61 72 62 69 74 72  y execute arbitr
8df0: 61 72 79 20 63 6f 6d 6d 61 6e 64 73 20 73 70 65  ary commands spe
8e00: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 22 2d  cified by the "-
8e10: 74 61 6b 65 66 6f 63 75 73 22 0a 20 2a 09 6f 70  takefocus". *.op
8e20: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 77 69 64  tions of the wid
8e30: 67 65 74 73 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d  gets.. *. *-----
8e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e80: 2d 0a 20 2a 2f 0a 0a 69 6e 74 0a 43 74 6b 5f 54  -. */..int.Ctk_T
8e90: 6b 46 6f 63 75 73 50 72 65 76 43 6d 64 28 63 6c  kFocusPrevCmd(cl
8ea0: 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70  ientData, interp
8eb0: 2c 20 61 72 67 63 2c 20 61 72 67 76 29 0a 20 20  , argc, argv).  
8ec0: 20 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69    ClientData cli
8ed0: 65 6e 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69 6e  entData;./* Main
8ee0: 20 77 69 6e 64 6f 77 20 61 73 73 6f 63 69 61 74   window associat
8ef0: 65 64 20 77 69 74 68 0a 09 09 09 09 20 2a 20 69  ed with..... * i
8f00: 6e 74 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20  nterpreter. */. 
8f10: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69     Tcl_Interp *i
8f20: 6e 74 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65  nterp;../* Curre
8f30: 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20  nt interpreter. 
8f40: 2a 2f 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b  */.    int argc;
8f50: 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20  .../* Number of 
8f60: 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20  arguments. */.  
8f70: 20 20 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09    char **argv;..
8f80: 2f 2a 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69  /* Argument stri
8f90: 6e 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 54 6b  ngs. */.{.    Tk
8fa0: 5f 57 69 6e 64 6f 77 20 6d 61 69 6e 57 69 6e 20  _Window mainWin 
8fb0: 3d 20 28 54 6b 5f 57 69 6e 64 6f 77 29 20 63 6c  = (Tk_Window) cl
8fc0: 69 65 6e 74 44 61 74 61 3b 0a 20 20 20 20 54 6b  ientData;.    Tk
8fd0: 5f 57 69 6e 64 6f 77 20 77 69 6e 2c 20 73 74 61  _Window win, sta
8fe0: 72 74 57 69 6e 2c 20 6e 65 78 74 57 69 6e 3b 0a  rtWin, nextWin;.
8ff0: 20 20 20 20 69 6e 74 20 66 6c 61 67 3b 0a 0a 20      int flag;.. 
9000: 20 20 20 69 66 20 28 61 72 67 63 20 21 3d 20 32     if (argc != 2
9010: 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52  ) {..Tcl_AppendR
9020: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
9030: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
9040: 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61 72  uld be \"",...ar
9050: 67 76 5b 30 5d 2c 20 22 20 77 69 6e 64 6f 77 5c  gv[0], " window\
9060: 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c  "", (char *) NUL
9070: 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f  L);..return TCL_
9080: 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20  ERROR;.    }.   
9090: 20 73 74 61 72 74 57 69 6e 20 3d 20 54 6b 5f 4e   startWin = Tk_N
90a0: 61 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65  ameToWindow(inte
90b0: 72 70 2c 20 61 72 67 76 5b 31 5d 2c 20 6d 61 69  rp, argv[1], mai
90c0: 6e 57 69 6e 29 3b 0a 20 20 20 20 69 66 20 28 21  nWin);.    if (!
90d0: 73 74 61 72 74 57 69 6e 29 20 20 72 65 74 75 72  startWin)  retur
90e0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 0a 20 20  n TCL_ERROR;..  
90f0: 20 20 77 69 6e 20 3d 20 73 74 61 72 74 57 69 6e    win = startWin
9100: 3b 0a 20 20 20 20 64 6f 20 7b 0a 09 2f 2a 0a 09  ;.    do {../*..
9110: 20 2a 20 49 66 20 77 69 6e 64 6f 77 20 69 73 20   * If window is 
9120: 61 20 74 6f 70 2d 6c 65 76 65 6c 2c 20 72 65 70  a top-level, rep
9130: 65 61 74 65 64 6c 79 20 74 72 61 76 65 72 73 65  eatedly traverse
9140: 20 74 6f 20 74 6f 70 6d 6f 73 74 0a 09 20 2a 20   to topmost.. * 
9150: 28 6c 61 73 74 29 20 63 68 69 6c 64 72 65 6e 20  (last) children 
9160: 74 69 6c 6c 20 61 20 6c 65 61 66 20 69 73 20 72  till a leaf is r
9170: 65 61 63 68 65 64 2e 20 20 4f 74 68 65 72 77 69  eached.  Otherwi
9180: 73 65 2c 20 74 6f 0a 09 20 2a 20 70 72 69 6f 72  se, to.. * prior
9190: 20 73 69 62 6c 69 6e 67 20 61 6e 64 20 74 68 65   sibling and the
91a0: 6e 20 74 72 61 76 65 72 73 65 20 74 6f 20 74 6f  n traverse to to
91b0: 70 6d 6f 73 74 20 64 65 73 63 65 6e 64 61 6e 74  pmost descendant
91c0: 2e 0a 09 20 2a 20 49 66 20 74 68 65 72 65 20 69  ... * If there i
91d0: 73 20 6e 6f 20 70 72 69 6f 72 20 73 69 62 6c 69  s no prior sibli
91e0: 6e 67 20 28 61 6e 64 20 74 68 69 73 20 69 73 20  ng (and this is 
91f0: 6e 6f 74 20 61 20 74 6f 70 2d 6c 65 76 65 6c 29  not a top-level)
9200: 2e 0a 09 20 2a 20 54 72 61 76 65 72 73 65 20 74  ... * Traverse t
9210: 6f 20 70 61 72 65 6e 74 2e 0a 09 20 2a 2f 0a 0a  o parent... */..
9220: 09 69 66 20 28 54 6b 5f 49 73 54 6f 70 4c 65 76  .if (Tk_IsTopLev
9230: 65 6c 28 77 69 6e 29 29 20 7b 0a 09 20 20 20 20  el(win)) {..    
9240: 6e 65 78 74 57 69 6e 20 3d 20 77 69 6e 3b 0a 09  nextWin = win;..
9250: 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 6e 65  } else {..    ne
9260: 78 74 57 69 6e 20 3d 20 43 74 6b 5f 50 72 69 6f  xtWin = Ctk_Prio
9270: 72 53 69 62 6c 69 6e 67 28 77 69 6e 29 3b 0a 09  rSibling(win);..
9280: 20 20 20 20 69 66 20 28 21 6e 65 78 74 57 69 6e      if (!nextWin
9290: 29 20 20 77 69 6e 20 3d 20 54 6b 5f 50 61 72 65  )  win = Tk_Pare
92a0: 6e 74 28 77 69 6e 29 3b 0a 09 7d 0a 0a 09 2f 2a  nt(win);..}.../*
92b0: 0a 09 20 2a 20 53 74 6f 70 20 74 72 61 76 65 72  .. * Stop traver
92c0: 73 69 6e 67 20 69 66 20 77 65 20 68 61 76 65 20  sing if we have 
92d0: 67 6f 6e 65 20 66 75 6c 6c 20 63 69 72 63 6c 65  gone full circle
92e0: 20 6f 72 0a 09 20 2a 20 74 68 69 73 20 77 69 6e   or.. * this win
92f0: 64 6f 77 20 63 61 6e 20 67 65 74 20 74 68 65 20  dow can get the 
9300: 66 6f 63 75 73 2e 0a 09 20 2a 2f 0a 0a 09 77 68  focus... */...wh
9310: 69 6c 65 20 28 6e 65 78 74 57 69 6e 29 20 7b 0a  ile (nextWin) {.
9320: 09 20 20 20 20 77 69 6e 20 3d 20 6e 65 78 74 57  .    win = nextW
9330: 69 6e 3b 0a 09 20 20 20 20 6e 65 78 74 57 69 6e  in;..    nextWin
9340: 20 3d 20 43 74 6b 5f 54 6f 70 43 68 69 6c 64 28   = Ctk_TopChild(
9350: 77 69 6e 29 3b 0a 09 7d 0a 09 69 66 20 28 77 69  win);..}..if (wi
9360: 6e 20 3d 3d 20 73 74 61 72 74 57 69 6e 29 20 62  n == startWin) b
9370: 72 65 61 6b 3b 0a 09 69 66 20 28 47 65 74 46 6f  reak;..if (GetFo
9380: 63 75 73 4f 6b 28 69 6e 74 65 72 70 2c 20 77 69  cusOk(interp, wi
9390: 6e 2c 20 26 66 6c 61 67 29 20 21 3d 20 54 43 4c  n, &flag) != TCL
93a0: 5f 4f 4b 29 20 20 72 65 74 75 72 6e 20 54 43 4c  _OK)  return TCL
93b0: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 20 77 68  _ERROR;.    } wh
93c0: 69 6c 65 20 28 21 66 6c 61 67 29 3b 0a 20 20 20  ile (!flag);.   
93d0: 20 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69   Tcl_SetResult(i
93e0: 6e 74 65 72 70 2c 20 54 6b 5f 50 61 74 68 4e 61  nterp, Tk_PathNa
93f0: 6d 65 28 77 69 6e 29 2c 20 54 43 4c 5f 53 54 41  me(win), TCL_STA
9400: 54 49 43 29 3b 0a 20 20 20 20 72 65 74 75 72 6e  TIC);.    return
9410: 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a   TCL_OK;.}.../*.
9420: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
9430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9460: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 47  --------. *. * G
9470: 65 74 46 6f 63 75 73 4f 6b 20 2d 2d 0a 20 2a 0a  etFocusOk --. *.
9480: 20 2a 09 47 65 74 20 74 68 65 20 70 72 65 76 69   *.Get the previ
9490: 6f 75 73 20 77 69 6e 64 6f 77 20 69 6e 20 22 66  ous window in "f
94a0: 6f 63 75 73 20 6f 72 64 65 72 22 20 62 65 66 6f  ocus order" befo
94b0: 72 65 20 73 70 65 63 69 66 69 65 64 20 77 69 6e  re specified win
94c0: 64 6f 77 0a 20 2a 09 28 74 68 65 20 77 69 6e 64  dow. *.(the wind
94d0: 6f 77 20 74 68 61 74 20 73 68 6f 75 6c 64 20 72  ow that should r
94e0: 65 63 65 69 76 65 20 74 68 65 20 66 6f 63 75 73  eceive the focus
94f0: 20 6e 65 78 74 20 69 66 20 53 68 69 66 74 2d 54   next if Shift-T
9500: 61 62 20 69 73 0a 20 2a 09 74 79 70 65 64 29 2e  ab is. *.typed).
9510: 20 20 22 50 72 65 76 69 6f 75 73 22 20 69 73 20    "Previous" is 
9520: 64 65 66 69 6e 65 64 20 62 79 20 61 20 70 72 65  defined by a pre
9530: 2d 6f 72 64 65 72 20 73 65 61 72 63 68 20 6f 66  -order search of
9540: 20 61 20 74 6f 70 2d 6c 65 76 65 6c 0a 20 2a 09   a top-level. *.
9550: 61 6e 64 20 69 74 73 20 6e 6f 6e 2d 74 6f 70 2d  and its non-top-
9560: 6c 65 76 65 6c 20 64 65 73 63 65 6e 64 61 6e 74  level descendant
9570: 73 2c 20 77 69 74 68 20 74 68 65 20 73 74 61 63  s, with the stac
9580: 6b 69 6e 67 20 6f 72 64 65 72 0a 20 2a 09 64 65  king order. *.de
9590: 74 65 72 6d 69 6e 69 6e 67 20 74 68 65 20 6f 72  termining the or
95a0: 64 65 72 20 6f 66 20 73 69 62 6c 69 6e 67 73 2e  der of siblings.
95b0: 20 20 54 68 65 20 22 2d 74 61 6b 65 66 6f 63 75    The "-takefocu
95c0: 73 22 20 6f 70 74 69 6f 6e 73 0a 20 2a 09 6f 6e  s" options. *.on
95d0: 20 77 69 6e 64 6f 77 73 20 64 65 74 65 72 6d 69   windows determi
95e0: 6e 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  ne whether or no
95f0: 74 20 74 68 65 79 20 73 68 6f 75 6c 64 20 62 65  t they should be
9600: 20 73 6b 69 70 70 65 64 2e 0a 20 2a 0a 20 2a 20   skipped.. *. * 
9610: 52 65 73 75 6c 74 73 3a 0a 20 2a 09 49 66 20 73  Results:. *.If s
9620: 75 63 63 65 73 66 75 6c 2c 20 72 65 74 75 72 6e  uccesful, return
9630: 73 20 54 43 4c 5f 4f 4b 20 61 6e 64 20 73 74 6f  s TCL_OK and sto
9640: 72 65 73 20 31 20 69 6e 20 2a 66 6c 61 67 50 74  res 1 in *flagPt
9650: 72 20 69 66 0a 20 2a 09 74 68 65 20 77 69 6e 64  r if. *.the wind
9660: 6f 77 20 73 68 6f 75 6c 64 20 67 65 74 20 74 68  ow should get th
9670: 65 20 66 6f 63 75 73 20 61 6e 64 20 30 20 69 66  e focus and 0 if
9680: 20 69 74 20 73 68 6f 75 6c 64 6e 27 74 2e 20 20   it shouldn't.  
9690: 49 66 0a 20 2a 09 61 6e 20 65 72 72 6f 72 20 6f  If. *.an error o
96a0: 63 63 75 72 73 20 77 68 69 6c 65 20 74 72 79 69  ccurs while tryi
96b0: 6e 67 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ng to determine 
96c0: 66 6f 63 75 73 61 62 69 6c 69 74 79 2c 0a 20 2a  focusability,. *
96d0: 09 72 65 74 75 72 6e 73 20 54 43 4c 5f 45 52 52  .returns TCL_ERR
96e0: 4f 52 20 61 6e 64 20 73 74 6f 72 65 73 20 61 6e  OR and stores an
96f0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69   error message i
9700: 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65  n the interprete
9710: 72 0a 20 2a 09 72 65 73 75 6c 74 2e 0a 20 2a 0a  r. *.result.. *.
9720: 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a   * Side effects:
9730: 0a 20 2a 09 4d 61 79 20 65 78 65 63 75 74 65 20  . *.May execute 
9740: 61 6e 20 61 72 62 69 74 72 61 72 79 20 63 6f 6d  an arbitrary com
9750: 6d 61 6e 64 20 73 70 65 63 69 66 69 65 64 20 62  mand specified b
9760: 79 20 74 68 65 20 22 2d 74 61 6b 65 66 6f 63 75  y the "-takefocu
9770: 73 22 0a 20 2a 09 6f 70 74 69 6f 6e 73 20 6f 66  s". *.options of
9780: 20 74 68 65 20 77 69 64 67 65 74 2e 0a 20 2a 0a   the widget.. *.
9790: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
97a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
97b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
97c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
97d0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 73 74  --------. */..st
97e0: 61 74 69 63 20 69 6e 74 0a 47 65 74 46 6f 63 75  atic int.GetFocu
97f0: 73 4f 6b 28 69 6e 74 65 72 70 2c 20 77 69 6e 50  sOk(interp, winP
9800: 74 72 2c 20 66 6c 61 67 50 74 72 29 0a 20 20 20  tr, flagPtr).   
9810: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74   Tcl_Interp *int
9820: 65 72 70 3b 0a 20 20 20 20 54 6b 57 69 6e 64 6f  erp;.    TkWindo
9830: 77 20 2a 77 69 6e 50 74 72 3b 0a 20 20 20 20 69  w *winPtr;.    i
9840: 6e 74 20 2a 66 6c 61 67 50 74 72 3b 0a 7b 0a 20  nt *flagPtr;.{. 
9850: 20 20 20 2f 2a 0a 20 20 20 20 20 2a 20 49 66 20     /*.     * If 
9860: 77 69 6e 64 6f 77 20 69 73 20 6e 6f 74 20 76 69  window is not vi
9870: 65 77 61 62 6c 65 2c 20 64 6f 6e 27 74 20 66 6f  ewable, don't fo
9880: 63 75 73 2e 0a 20 20 20 20 20 2a 2f 0a 0a 20 20  cus..     */..  
9890: 20 20 69 66 20 28 21 20 28 77 69 6e 50 74 72 2d    if (! (winPtr-
98a0: 3e 66 6c 61 67 73 20 26 20 43 54 4b 5f 44 49 53  >flags & CTK_DIS
98b0: 50 4c 41 59 45 44 29 29 20 20 67 6f 74 6f 20 6e  PLAYED))  goto n
98c0: 6f 66 6f 63 75 73 3b 0a 0a 20 20 20 20 2f 2a 0a  ofocus;..    /*.
98d0: 20 20 20 20 20 2a 20 43 68 65 63 6b 20 77 69 64       * Check wid
98e0: 67 65 74 27 73 20 2d 74 61 6b 65 66 6f 63 75 73  get's -takefocus
98f0: 20 6f 70 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 2f   option..     */
9900: 0a 0a 20 20 20 20 69 66 20 28 54 63 6c 5f 56 61  ..    if (Tcl_Va
9910: 72 45 76 61 6c 28 69 6e 74 65 72 70 2c 20 54 6b  rEval(interp, Tk
9920: 5f 50 61 74 68 4e 61 6d 65 28 77 69 6e 50 74 72  _PathName(winPtr
9930: 29 2c 20 22 20 63 67 65 74 20 2d 74 61 6b 65 66  ), " cget -takef
9940: 6f 63 75 73 22 2c 0a 09 20 20 20 20 28 63 68 61  ocus",..    (cha
9950: 72 20 2a 29 20 4e 55 4c 4c 29 20 3d 3d 20 54 43  r *) NULL) == TC
9960: 4c 5f 4f 4b 20 20 26 26 20 54 63 6c 5f 47 65 74  L_OK  && Tcl_Get
9970: 53 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74  StringResult(int
9980: 65 72 70 29 5b 30 5d 20 21 3d 20 27 5c 30 27 29  erp)[0] != '\0')
9990: 20 7b 0a 09 0a 09 2f 2a 0a 09 20 2a 20 54 72 79   {..../*.. * Try
99a0: 20 74 6f 20 69 6e 74 65 72 70 72 65 74 20 6f 70   to interpret op
99b0: 74 69 6f 6e 20 76 61 6c 75 65 20 61 73 20 73 69  tion value as si
99c0: 6d 70 6c 65 20 31 20 6f 72 20 30 2e 0a 09 20 2a  mple 1 or 0... *
99d0: 2f 0a 0a 09 69 66 20 28 54 63 6c 5f 47 65 74 53  /...if (Tcl_GetS
99e0: 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65  tringResult(inte
99f0: 72 70 29 5b 31 5d 20 3d 3d 20 27 5c 30 27 29 20  rp)[1] == '\0') 
9a00: 7b 0a 09 20 20 20 20 69 66 20 28 54 63 6c 5f 47  {..    if (Tcl_G
9a10: 65 74 53 74 72 69 6e 67 52 65 73 75 6c 74 28 69  etStringResult(i
9a20: 6e 74 65 72 70 29 5b 30 5d 20 3d 3d 20 27 31 27  nterp)[0] == '1'
9a30: 29 20 7b 0a 09 09 67 6f 74 6f 20 66 6f 63 75 73  ) {...goto focus
9a40: 3b 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 69 66  ;..    } else if
9a50: 20 28 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 52   (Tcl_GetStringR
9a60: 65 73 75 6c 74 28 69 6e 74 65 72 70 29 5b 30 5d  esult(interp)[0]
9a70: 20 3d 3d 20 27 30 27 29 20 7b 0a 09 09 67 6f 74   == '0') {...got
9a80: 6f 20 6e 6f 66 6f 63 75 73 3b 0a 09 20 20 20 20  o nofocus;..    
9a90: 7d 0a 09 7d 0a 09 7b 0a 09 0a 09 20 20 20 20 2f  }..}..{....    /
9aa0: 2a 0a 09 20 20 20 20 20 2a 20 54 68 65 20 2d 74  *..     * The -t
9ab0: 61 6b 65 66 6f 63 75 73 20 6f 70 74 69 6f 6e 20  akefocus option 
9ac0: 69 73 20 6e 6f 74 20 31 20 6f 72 20 30 2c 20 61  is not 1 or 0, a
9ad0: 70 70 65 6e 64 20 77 69 6e 64 6f 77 0a 09 20 20  ppend window..  
9ae0: 20 20 20 2a 20 70 61 74 68 6e 61 6d 65 20 74 6f     * pathname to
9af0: 20 74 68 65 20 6f 70 74 69 6f 6e 20 76 61 6c 75   the option valu
9b00: 65 20 61 6e 64 20 65 76 61 6c 75 61 74 65 20 61  e and evaluate a
9b10: 73 20 73 63 72 69 70 74 2e 0a 09 20 20 20 20 20  s script...     
9b20: 2a 20 49 6e 74 65 72 70 72 65 74 20 72 65 73 75  * Interpret resu
9b30: 6c 74 20 61 73 20 62 6f 6f 6c 65 61 6e 2e 0a 09  lt as boolean...
9b40: 20 20 20 20 20 2a 2f 0a 0a 09 20 20 20 20 54 63       */...    Tc
9b50: 6c 5f 44 53 74 72 69 6e 67 20 64 53 74 72 3b 0a  l_DString dStr;.
9b60: 09 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 3b  .    int result;
9b70: 0a 0a 09 20 20 20 20 54 63 6c 5f 44 53 74 72 69  ...    Tcl_DStri
9b80: 6e 67 49 6e 69 74 28 26 64 53 74 72 29 3b 0a 09  ngInit(&dStr);..
9b90: 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 47      Tcl_DStringG
9ba0: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  etResult(interp,
9bb0: 20 26 64 53 74 72 29 3b 0a 09 20 20 20 20 54 63   &dStr);..    Tc
9bc0: 6c 5f 44 53 74 72 69 6e 67 41 70 70 65 6e 64 28  l_DStringAppend(
9bd0: 26 64 53 74 72 2c 20 22 20 22 2c 20 31 29 3b 0a  &dStr, " ", 1);.
9be0: 09 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67  .    Tcl_DString
9bf0: 41 70 70 65 6e 64 28 26 64 53 74 72 2c 20 54 6b  Append(&dStr, Tk
9c00: 5f 50 61 74 68 4e 61 6d 65 28 77 69 6e 50 74 72  _PathName(winPtr
9c10: 29 2c 20 2d 31 29 3b 0a 09 20 20 20 20 54 63 6c  ), -1);..    Tcl
9c20: 5f 47 6c 6f 62 61 6c 45 76 61 6c 28 69 6e 74 65  _GlobalEval(inte
9c30: 72 70 2c 20 54 63 6c 5f 44 53 74 72 69 6e 67 56  rp, Tcl_DStringV
9c40: 61 6c 75 65 28 26 64 53 74 72 29 29 3b 0a 0a 09  alue(&dStr));...
9c50: 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 47      Tcl_DStringG
9c60: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  etResult(interp,
9c70: 20 26 64 53 74 72 29 3b 0a 09 20 20 20 20 72 65   &dStr);..    re
9c80: 73 75 6c 74 20 3d 20 54 63 6c 5f 47 65 74 42 6f  sult = Tcl_GetBo
9c90: 6f 6c 65 61 6e 28 69 6e 74 65 72 70 2c 20 54 63  olean(interp, Tc
9ca0: 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 28 26  l_DStringValue(&
9cb0: 64 53 74 72 29 2c 20 66 6c 61 67 50 74 72 29 3b  dStr), flagPtr);
9cc0: 0a 09 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e  ..    Tcl_DStrin
9cd0: 67 46 72 65 65 28 26 64 53 74 72 29 3b 0a 09 20  gFree(&dStr);.. 
9ce0: 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d     if (result ==
9cf0: 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 09 09   TCL_ERROR) {...
9d00: 54 63 6c 5f 41 64 64 45 72 72 6f 72 49 6e 66 6f  Tcl_AddErrorInfo
9d10: 28 69 6e 74 65 72 70 2c 20 22 5c 6e 20 20 20 20  (interp, "\n    
9d20: 28 2d 74 61 6b 65 66 6f 63 75 73 20 73 63 72 69  (-takefocus scri
9d30: 70 74 29 22 29 3b 0a 09 20 20 20 20 7d 0a 09 20  pt)");..    }.. 
9d40: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
9d50: 3b 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ;..}.    }..    
9d60: 2f 2a 0a 20 20 20 20 20 2a 20 43 68 65 63 6b 20  /*.     * Check 
9d70: 77 69 64 67 65 74 27 73 20 2d 73 74 61 74 65 20  widget's -state 
9d80: 6f 70 74 69 6f 6e 2e 20 20 49 66 20 76 61 6c 75  option.  If valu
9d90: 65 20 69 73 20 22 64 69 73 61 61 62 6c 65 64 22  e is "disaabled"
9da0: 2c 0a 20 20 20 20 20 2a 20 64 6f 6e 27 74 20 66  ,.     * don't f
9db0: 6f 63 75 73 2e 0a 20 20 20 20 20 2a 2f 0a 0a 20  ocus..     */.. 
9dc0: 20 20 20 69 66 20 28 54 63 6c 5f 56 61 72 45 76     if (Tcl_VarEv
9dd0: 61 6c 28 69 6e 74 65 72 70 2c 20 54 6b 5f 50 61  al(interp, Tk_Pa
9de0: 74 68 4e 61 6d 65 28 77 69 6e 50 74 72 29 2c 20  thName(winPtr), 
9df0: 22 20 63 67 65 74 20 2d 73 74 61 74 65 22 2c 0a  " cget -state",.
9e00: 09 20 20 20 20 28 63 68 61 72 20 2a 29 20 4e 55  .    (char *) NU
9e10: 4c 4c 29 20 3d 3d 20 54 43 4c 5f 4f 4b 29 20 7b  LL) == TCL_OK) {
9e20: 0a 09 69 66 20 28 54 63 6c 5f 47 65 74 53 74 72  ..if (Tcl_GetStr
9e30: 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65 72 70  ingResult(interp
9e40: 29 5b 30 5d 20 3d 3d 20 27 64 27 0a 09 09 26 26  )[0] == 'd'...&&
9e50: 20 73 74 72 63 6d 70 28 54 63 6c 5f 47 65 74 53   strcmp(Tcl_GetS
9e60: 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65  tringResult(inte
9e70: 72 70 29 2c 20 22 64 69 73 61 62 6c 65 64 22 29  rp), "disabled")
9e80: 20 3d 3d 20 30 29 20 67 6f 74 6f 20 6e 6f 66 6f   == 0) goto nofo
9e90: 63 75 73 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  cus;.    }..    
9ea0: 2f 2a 0a 20 20 20 20 20 2a 20 43 68 65 63 6b 20  /*.     * Check 
9eb0: 69 66 20 77 69 64 67 65 74 20 68 61 73 20 61 6e  if widget has an
9ec0: 79 20 4b 65 79 62 6f 61 72 64 20 72 65 6c 61 74  y Keyboard relat
9ed0: 65 64 20 62 69 6e 64 69 6e 67 73 20 28 63 68 65  ed bindings (che
9ee0: 63 6b 0a 20 20 20 20 20 2a 20 69 6e 64 69 76 69  ck.     * indivi
9ef0: 64 75 61 6c 20 77 69 64 67 65 74 20 74 61 67 20  dual widget tag 
9f00: 61 6e 64 20 69 74 73 20 63 6c 61 73 73 20 74 61  and its class ta
9f10: 67 29 2e 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20  g)..     */..   
9f20: 20 69 66 20 28 54 63 6c 5f 56 61 72 45 76 61 6c   if (Tcl_VarEval
9f30: 28 69 6e 74 65 72 70 2c 20 22 62 69 6e 64 20 22  (interp, "bind "
9f40: 2c 20 54 6b 5f 50 61 74 68 4e 61 6d 65 28 77 69  , Tk_PathName(wi
9f50: 6e 50 74 72 29 2c 20 28 63 68 61 72 20 2a 29 20  nPtr), (char *) 
9f60: 4e 55 4c 4c 29 0a 09 20 20 20 20 21 3d 20 54 43  NULL)..    != TC
9f70: 4c 5f 4f 4b 29 20 20 72 65 74 75 72 6e 20 54 43  L_OK)  return TC
9f80: 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 69 66 20  L_ERROR;.    if 
9f90: 28 73 74 72 73 74 72 28 54 63 6c 5f 47 65 74 53  (strstr(Tcl_GetS
9fa0: 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65  tringResult(inte
9fb0: 72 70 29 2c 20 22 4b 65 79 22 29 29 20 20 67 6f  rp), "Key"))  go
9fc0: 74 6f 20 66 6f 63 75 73 3b 0a 20 20 20 20 69 66  to focus;.    if
9fd0: 20 28 73 74 72 73 74 72 28 54 63 6c 5f 47 65 74   (strstr(Tcl_Get
9fe0: 53 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74  StringResult(int
9ff0: 65 72 70 29 2c 20 22 46 6f 63 75 73 22 29 29 20  erp), "Focus")) 
a000: 20 67 6f 74 6f 20 66 6f 63 75 73 3b 0a 0a 20 20   goto focus;..  
a010: 20 20 69 66 20 28 54 63 6c 5f 56 61 72 45 76 61    if (Tcl_VarEva
a020: 6c 28 69 6e 74 65 72 70 2c 20 22 62 69 6e 64 20  l(interp, "bind 
a030: 22 2c 20 54 6b 5f 43 6c 61 73 73 28 77 69 6e 50  ", Tk_Class(winP
a040: 74 72 29 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  tr), (char *) NU
a050: 4c 4c 29 0a 09 20 20 20 20 21 3d 20 54 43 4c 5f  LL)..    != TCL_
a060: 4f 4b 29 20 20 72 65 74 75 72 6e 20 54 43 4c 5f  OK)  return TCL_
a070: 45 52 52 4f 52 3b 0a 20 20 20 20 69 66 20 28 73  ERROR;.    if (s
a080: 74 72 73 74 72 28 54 63 6c 5f 47 65 74 53 74 72  trstr(Tcl_GetStr
a090: 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65 72 70  ingResult(interp
a0a0: 29 2c 20 22 4b 65 79 22 29 29 20 20 67 6f 74 6f  ), "Key"))  goto
a0b0: 20 66 6f 63 75 73 3b 0a 20 20 20 20 69 66 20 28   focus;.    if (
a0c0: 73 74 72 73 74 72 28 54 63 6c 5f 47 65 74 53 74  strstr(Tcl_GetSt
a0d0: 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65 72  ringResult(inter
a0e0: 70 29 2c 20 22 46 6f 63 75 73 22 29 29 20 20 67  p), "Focus"))  g
a0f0: 6f 74 6f 20 66 6f 63 75 73 3b 0a 0a 6e 6f 66 6f  oto focus;..nofo
a100: 63 75 73 3a 0a 20 20 20 20 2a 66 6c 61 67 50 74  cus:.    *flagPt
a110: 72 20 3d 20 30 3b 0a 20 20 20 20 72 65 74 75 72  r = 0;.    retur
a120: 6e 20 54 43 4c 5f 4f 4b 3b 0a 0a 66 6f 63 75 73  n TCL_OK;..focus
a130: 3a 0a 20 20 20 20 2a 66 6c 61 67 50 74 72 20 3d  :.    *flagPtr =
a140: 20 31 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 54   1;.    return T
a150: 43 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a 2f 2a 0a 20 2a  CL_OK;.}.../*. *
a160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a1a0: 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 43 74 6b  ------. *. * Ctk
a1b0: 5f 43 74 6b 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a  _CtkCmd --. *. *
a1c0: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
a1d0: 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72  is invoked to pr
a1e0: 6f 63 65 73 73 20 74 68 65 20 22 63 74 6b 22 20  ocess the "ctk" 
a1f0: 54 63 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 20 2a 09  Tcl command.. *.
a200: 53 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63  See the user doc
a210: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64  umentation for d
a220: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
a230: 74 20 64 6f 65 73 2e 0a 20 2a 0a 20 2a 20 52 65  t does.. *. * Re
a240: 73 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61 6e  sults:. *.A stan
a250: 64 61 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e  dard Tcl result.
a260: 0a 20 2a 0a 20 2a 20 53 69 64 65 20 65 66 66 65  . *. * Side effe
a270: 63 74 73 3a 0a 20 2a 09 53 65 65 20 74 68 65 20  cts:. *.See the 
a280: 75 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69  user documentati
a290: 6f 6e 2e 0a 20 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d  on.. *. *-------
a2a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a2b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a2c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a2d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
a2e0: 20 2a 2f 0a 0a 09 2f 2a 20 41 52 47 53 55 53 45   */.../* ARGSUSE
a2f0: 44 20 2a 2f 0a 69 6e 74 0a 43 74 6b 5f 43 74 6b  D */.int.Ctk_Ctk
a300: 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20  Cmd(clientData, 
a310: 69 6e 74 65 72 70 2c 20 61 72 67 63 2c 20 61 72  interp, argc, ar
a320: 67 76 29 0a 20 20 20 20 43 6c 69 65 6e 74 44 61  gv).    ClientDa
a330: 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b 09 2f  ta clientData;./
a340: 2a 20 4d 61 69 6e 20 77 69 6e 64 6f 77 20 61 73  * Main window as
a350: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 09 09  sociated with...
a360: 09 09 20 2a 20 69 6e 74 65 72 70 72 65 74 65 72  .. * interpreter
a370: 2e 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74  . */.    Tcl_Int
a380: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a  erp *interp;../*
a390: 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72   Current interpr
a3a0: 65 74 65 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74  eter. */.    int
a3b0: 20 61 72 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62   argc;.../* Numb
a3c0: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e  er of arguments.
a3d0: 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 2a 61   */.    char **a
a3e0: 72 67 76 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e  rgv;../* Argumen
a3f0: 74 20 73 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a  t strings. */.{.
a400: 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 20 6d 61      Tk_Window ma
a410: 69 6e 57 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64  inWin = (Tk_Wind
a420: 6f 77 29 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a  ow) clientData;.
a430: 20 20 20 20 63 68 61 72 20 63 3b 0a 20 20 20 20      char c;.    
a440: 73 69 7a 65 5f 74 20 6c 65 6e 67 74 68 3b 0a 0a  size_t length;..
a450: 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20 32      if (argc < 2
a460: 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52  ) {..Tcl_AppendR
a470: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77  esult(interp, "w
a480: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
a490: 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61 72  uld be \"",...ar
a4a0: 67 76 5b 30 5d 2c 20 22 20 6f 70 74 69 6f 6e 20  gv[0], " option 
a4b0: 3f 61 72 67 3f 5c 22 22 2c 20 28 63 68 61 72 20  ?arg?\"", (char 
a4c0: 2a 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72  *) NULL);..retur
a4d0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
a4e0: 20 7d 0a 20 20 20 20 63 20 3d 20 61 72 67 76 5b   }.    c = argv[
a4f0: 31 5d 5b 30 5d 3b 0a 20 20 20 20 6c 65 6e 67 74  1][0];.    lengt
a500: 68 20 3d 20 73 74 72 6c 65 6e 28 61 72 67 76 5b  h = strlen(argv[
a510: 31 5d 29 3b 0a 20 20 20 20 69 66 20 28 28 63 20  1]);.    if ((c 
a520: 3d 3d 20 27 72 27 29 20 26 26 20 28 73 74 72 6e  == 'r') && (strn
a530: 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 72 65  cmp(argv[1], "re
a540: 64 72 61 77 22 2c 20 6c 65 6e 67 74 68 29 20 3d  draw", length) =
a550: 3d 20 30 29 29 20 7b 0a 09 54 6b 5f 57 69 6e 64  = 0)) {..Tk_Wind
a560: 6f 77 20 74 6b 77 69 6e 3b 0a 09 69 66 20 28 61  ow tkwin;..if (a
a570: 72 67 63 20 21 3d 20 33 29 20 7b 0a 09 20 20 20  rgc != 3) {..   
a580: 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c   Tcl_AppendResul
a590: 74 28 69 6e 74 65 72 70 2c 20 22 77 72 6f 6e 67  t(interp, "wrong
a5a0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
a5b0: 62 65 20 5c 22 22 2c 0a 09 09 20 20 20 20 61 72  be \"",...    ar
a5c0: 67 76 5b 30 5d 2c 20 22 20 72 65 64 72 61 77 20  gv[0], " redraw 
a5d0: 77 69 6e 64 6f 77 5c 22 22 2c 20 28 63 68 61 72  window\"", (char
a5e0: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 09 20 20 20 20   *) NULL);..    
a5f0: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
a600: 3b 0a 09 7d 0a 09 74 6b 77 69 6e 20 3d 20 54 6b  ;..}..tkwin = Tk
a610: 5f 4e 61 6d 65 54 6f 57 69 6e 64 6f 77 28 69 6e  _NameToWindow(in
a620: 74 65 72 70 2c 20 61 72 67 76 5b 32 5d 2c 20 6d  terp, argv[2], m
a630: 61 69 6e 57 69 6e 29 3b 0a 09 69 66 20 28 74 6b  ainWin);..if (tk
a640: 77 69 6e 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09  win == NULL) {..
a650: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45      return TCL_E
a660: 52 52 4f 52 3b 0a 09 7d 0a 20 20 20 20 20 20 20  RROR;..}.       
a670: 20 43 74 6b 5f 44 69 73 70 6c 61 79 52 65 64 72   Ctk_DisplayRedr
a680: 61 77 28 54 6b 5f 44 69 73 70 6c 61 79 28 74 6b  aw(Tk_Display(tk
a690: 77 69 6e 29 29 3b 0a 20 20 20 20 7d 20 65 6c 73  win));.    } els
a6a0: 65 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52  e {..Tcl_AppendR
a6b0: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 62  esult(interp, "b
a6c0: 61 64 20 6f 70 74 69 6f 6e 20 5c 22 22 2c 20 61  ad option \"", a
a6d0: 72 67 76 5b 31 5d 2c 0a 09 09 22 5c 22 3a 20 6d  rgv[1],..."\": m
a6e0: 75 73 74 20 62 65 20 72 65 64 72 61 77 22 2c 20  ust be redraw", 
a6f0: 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a  (char *) NULL);.
a700: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f  .return TCL_ERRO
a710: 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74  R;.    }.    ret
a720: 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0c 0a  urn TCL_OK;.}...
a730: 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*. *-----------
a740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a770: 2d 2d 2d 0a 20 2a 0a 20 2a 20 43 74 6b 5f 54 6b  ---. *. * Ctk_Tk
a780: 45 6e 74 72 79 49 6e 73 65 72 74 43 6d 64 20 2d  EntryInsertCmd -
a790: 2d 0a 20 2a 0a 20 2a 09 54 68 69 73 20 70 72 6f  -. *. *.This pro
a7a0: 63 65 64 75 72 65 20 69 73 20 69 6e 76 6f 6b 65  cedure is invoke
a7b0: 64 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65  d to process the
a7c0: 20 22 74 6b 45 6e 74 72 79 49 6e 73 65 72 74 22   "tkEntryInsert"
a7d0: 0a 20 2a 09 54 63 6c 20 63 6f 6d 6d 61 6e 64 2e  . *.Tcl command.
a7e0: 20 20 49 6e 73 65 72 74 20 61 20 73 74 72 69 6e    Insert a strin
a7f0: 67 20 69 6e 74 6f 20 61 6e 20 65 6e 74 72 79 20  g into an entry 
a800: 61 74 20 74 68 65 20 70 6f 69 6e 74 0a 20 2a 09  at the point. *.
a810: 6f 66 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e  of the insertion
a820: 20 63 75 72 73 6f 72 2e 20 20 49 66 20 74 68 65   cursor.  If the
a830: 72 65 20 69 73 20 61 20 73 65 6c 65 63 74 69 6f  re is a selectio
a840: 6e 20 69 6e 20 74 68 65 0a 20 2a 09 65 6e 74 72  n in the. *.entr
a850: 79 2c 20 61 6e 64 20 69 74 20 63 6f 76 65 72 73  y, and it covers
a860: 20 74 68 65 20 70 6f 69 6e 74 20 6f 66 20 74 68   the point of th
a870: 65 20 69 6e 73 65 72 74 69 6f 6e 20 63 75 72 73  e insertion curs
a880: 6f 72 2c 0a 20 2a 09 74 68 65 6e 20 64 65 6c 65  or,. *.then dele
a890: 74 65 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e  te the selection
a8a0: 20 62 65 66 6f 72 65 20 69 6e 73 65 72 74 69 6e   before insertin
a8b0: 67 2e 0a 20 2a 0a 20 2a 09 46 69 72 73 74 20 74  g.. *. *.First t
a8c0: 68 6f 75 67 68 74 20 61 62 6f 75 74 20 6c 65 74  hought about let
a8d0: 74 69 6e 67 20 74 68 69 73 20 66 75 6e 63 74 69  ting this functi
a8e0: 6f 6e 20 75 73 65 20 74 68 65 20 65 6e 74 72 79  on use the entry
a8f0: 0a 20 2a 09 77 69 64 67 65 74 20 69 6e 74 65 72  . *.widget inter
a900: 6e 61 6c 73 20 2d 20 62 75 74 20 74 68 61 74 20  nals - but that 
a910: 77 6f 75 6c 64 20 6e 6f 74 20 77 6f 72 6b 20 77  would not work w
a920: 69 74 68 20 74 68 65 0a 20 2a 09 6f 62 6a 65 63  ith the. *.objec
a930: 74 20 77 69 64 67 65 74 20 73 79 73 74 65 6d 73  t widget systems
a940: 20 28 6c 69 6b 65 20 6d 69 6e 65 2c 20 61 6e 64   (like mine, and
a950: 20 5b 69 6e 63 72 20 54 6b 5d 29 2e 0a 20 2a 0a   [incr Tk]).. *.
a960: 20 2a 09 54 68 65 20 70 61 79 6f 66 66 20 66 6f   *.The payoff fo
a970: 72 20 74 68 65 73 65 20 65 6e 74 72 79 20 63 6f  r these entry co
a980: 6d 6d 61 6e 64 73 20 69 73 20 6e 6f 74 20 6e 65  mmands is not ne
a990: 61 72 6c 79 0a 20 2a 09 61 73 20 68 69 67 68 20  arly. *.as high 
a9a0: 61 73 20 74 68 65 20 66 6f 63 75 73 20 70 72 6f  as the focus pro
a9b0: 63 65 73 73 69 6e 67 20 6f 6e 65 73 20 61 62 6f  cessing ones abo
a9c0: 76 65 2e 20 20 49 73 20 69 74 0a 20 2a 20 09 77  ve.  Is it. * .w
a9d0: 6f 72 74 68 20 69 74 3f 0a 20 2a 0a 20 2a 20 52  orth it?. *. * R
a9e0: 65 73 75 6c 74 73 3a 0a 20 2a 09 41 20 73 74 61  esults:. *.A sta
a9f0: 6e 64 61 72 64 20 54 63 6c 20 72 65 73 75 6c 74  ndard Tcl result
aa00: 2e 20 20 53 65 74 73 20 72 65 73 75 6c 74 20 74  .  Sets result t
aa10: 6f 20 22 31 22 20 69 66 20 63 68 61 72 61 63 74  o "1" if charact
aa20: 65 72 73 0a 20 2a 09 61 72 65 20 69 6e 73 65 72  ers. *.are inser
aa30: 74 65 64 2c 20 61 6e 64 20 22 30 22 20 6f 74 68  ted, and "0" oth
aa40: 65 72 77 69 73 65 2e 0a 20 2a 0a 20 2a 20 53 69  erwise.. *. * Si
aa50: 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 53  de effects:. *.S
aa60: 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63 75  ee the user docu
aa70: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a  mentation.. *. *
aa80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
aa90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
aaa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
aab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  --------------. 
aac0: 2a 2f 0a 0a 69 6e 74 0a 43 74 6b 5f 54 6b 45 6e  */..int.Ctk_TkEn
aad0: 74 72 79 49 6e 73 65 72 74 43 6d 64 28 63 6c 69  tryInsertCmd(cli
aae0: 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c  entData, interp,
aaf0: 20 61 72 67 63 2c 20 61 72 67 76 29 0a 20 20 20   argc, argv).   
ab00: 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65   ClientData clie
ab10: 6e 74 44 61 74 61 3b 09 2f 2a 20 4d 61 69 6e 20  ntData;./* Main 
ab20: 77 69 6e 64 6f 77 20 61 73 73 6f 63 69 61 74 65  window associate
ab30: 64 20 77 69 74 68 0a 09 09 09 09 20 2a 20 69 6e  d with..... * in
ab40: 74 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 20 20  terpreter. */.  
ab50: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e    Tcl_Interp *in
ab60: 74 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e  terp;../* Curren
ab70: 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a  t interpreter. *
ab80: 2f 0a 20 20 20 20 69 6e 74 20 61 72 67 63 3b 09  /.    int argc;.
ab90: 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61  ../* Number of a
aba0: 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 20  rguments. */.   
abb0: 20 63 68 61 72 20 2a 2a 61 72 67 76 3b 09 09 2f   char **argv;../
abc0: 2a 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69 6e  * Argument strin
abd0: 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20 20 54 63 6c  gs. */.{.    Tcl
abe0: 5f 44 53 74 72 69 6e 67 20 64 53 74 72 3b 0a 20  _DString dStr;. 
abf0: 20 20 20 54 63 6c 5f 43 6d 64 49 6e 66 6f 20 63     Tcl_CmdInfo c
ac00: 6d 64 49 6e 66 6f 3b 0a 20 20 20 20 63 68 61 72  mdInfo;.    char
ac10: 20 2a 77 69 64 67 65 74 41 72 67 76 5b 35 5d 3b   *widgetArgv[5];
ac20: 0a 20 20 20 20 69 6e 74 20 69 6e 73 65 72 74 2c  .    int insert,
ac30: 20 66 69 72 73 74 2c 20 6c 61 73 74 3b 0a 20 20   first, last;.  
ac40: 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 54    int result = T
ac50: 43 4c 5f 45 52 52 4f 52 3b 0a 0a 20 20 20 20 69  CL_ERROR;..    i
ac60: 66 20 28 61 72 67 63 20 21 3d 20 33 29 20 7b 0a  f (argc != 3) {.
ac70: 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c  .Tcl_AppendResul
ac80: 74 28 69 6e 74 65 72 70 2c 20 22 77 72 6f 6e 67  t(interp, "wrong
ac90: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
aca0: 62 65 20 5c 22 22 2c 0a 09 09 61 72 67 76 5b 30  be \"",...argv[0
acb0: 5d 2c 20 22 20 77 69 6e 64 6f 77 20 73 74 72 69  ], " window stri
acc0: 6e 67 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20  ng\"", (char *) 
acd0: 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54  NULL);..return T
ace0: 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a  CL_ERROR;.    }.
acf0: 20 20 20 20 69 66 20 28 21 54 63 6c 5f 47 65 74      if (!Tcl_Get
ad00: 43 6f 6d 6d 61 6e 64 49 6e 66 6f 28 69 6e 74 65  CommandInfo(inte
ad10: 72 70 2c 20 61 72 67 76 5b 31 5d 2c 20 26 63 6d  rp, argv[1], &cm
ad20: 64 49 6e 66 6f 29 29 20 7b 0a 09 54 63 6c 5f 41  dInfo)) {..Tcl_A
ad30: 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65  ppendResult(inte
ad40: 72 70 2c 20 22 77 69 64 67 65 74 20 63 6f 6d 6d  rp, "widget comm
ad50: 61 6e 64 20 5c 22 22 2c 20 61 72 67 76 5b 31 5d  and \"", argv[1]
ad60: 2c 0a 09 09 22 5c 22 20 69 73 20 6e 6f 74 20 64  ,..."\" is not d
ad70: 65 66 69 6e 65 64 22 2c 20 28 63 68 61 72 20 2a  efined", (char *
ad80: 29 20 4e 55 4c 4c 29 3b 0a 09 72 65 74 75 72 6e  ) NULL);..return
ad90: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20   TCL_ERROR;.    
ada0: 7d 0a 20 20 20 20 69 66 20 28 61 72 67 76 5b 32  }.    if (argv[2
adb0: 5d 5b 30 5d 20 3d 3d 20 27 5c 30 27 29 20 7b 0a  ][0] == '\0') {.
adc0: 09 54 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69  .Tcl_SetResult(i
add0: 6e 74 65 72 70 2c 20 22 30 22 2c 20 54 43 4c 5f  nterp, "0", TCL_
ade0: 53 54 41 54 49 43 29 3b 0a 09 72 65 74 75 72 6e  STATIC);..return
adf0: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 7d 0a 20   TCL_OK;.    }. 
ae00: 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 49 6e     Tcl_DStringIn
ae10: 69 74 28 26 64 53 74 72 29 3b 0a 20 20 20 20 77  it(&dStr);.    w
ae20: 69 64 67 65 74 41 72 67 76 5b 30 5d 20 3d 20 61  idgetArgv[0] = a
ae30: 72 67 76 5b 31 5d 3b 0a 0a 20 20 20 20 2f 2a 0a  rgv[1];..    /*.
ae40: 20 20 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20       * Check if 
ae50: 69 6e 73 65 72 74 69 6f 6e 20 70 6f 69 6e 74 20  insertion point 
ae60: 69 73 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74  is in the select
ae70: 69 6f 6e 20 72 65 67 69 6f 6e 2e 0a 20 20 20 20  ion region..    
ae80: 20 2a 2f 0a 0a 20 20 20 20 77 69 64 67 65 74 41   */..    widgetA
ae90: 72 67 76 5b 31 5d 20 3d 20 22 69 6e 64 65 78 22  rgv[1] = "index"
aea0: 3b 0a 20 20 20 20 77 69 64 67 65 74 41 72 67 76  ;.    widgetArgv
aeb0: 5b 32 5d 20 3d 20 22 69 6e 73 65 72 74 22 3b 0a  [2] = "insert";.
aec0: 20 20 20 20 77 69 64 67 65 74 41 72 67 76 5b 33      widgetArgv[3
aed0: 5d 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 69 66  ] = NULL;.    if
aee0: 20 28 20 28 63 6d 64 49 6e 66 6f 2e 70 72 6f 63   ( (cmdInfo.proc
aef0: 29 28 63 6d 64 49 6e 66 6f 2e 63 6c 69 65 6e 74  )(cmdInfo.client
af00: 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 33 2c  Data, interp, 3,
af10: 20 77 69 64 67 65 74 41 72 67 76 29 20 29 20 67   widgetArgv) ) g
af20: 6f 74 6f 20 64 6f 69 74 3b 0a 20 20 20 20 54 63  oto doit;.    Tc
af30: 6c 5f 44 53 74 72 69 6e 67 47 65 74 52 65 73 75  l_DStringGetResu
af40: 6c 74 28 69 6e 74 65 72 70 2c 20 26 64 53 74 72  lt(interp, &dStr
af50: 29 3b 0a 20 20 20 20 69 66 20 28 54 63 6c 5f 47  );.    if (Tcl_G
af60: 65 74 49 6e 74 28 69 6e 74 65 72 70 2c 20 54 63  etInt(interp, Tc
af70: 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 28 26  l_DStringValue(&
af80: 64 53 74 72 29 2c 20 26 69 6e 73 65 72 74 29 29  dStr), &insert))
af90: 20 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 0a 20 20    goto done;..  
afa0: 20 20 77 69 64 67 65 74 41 72 67 76 5b 31 5d 20    widgetArgv[1] 
afb0: 3d 20 22 69 6e 64 65 78 22 3b 0a 20 20 20 20 77  = "index";.    w
afc0: 69 64 67 65 74 41 72 67 76 5b 32 5d 20 3d 20 22  idgetArgv[2] = "
afd0: 73 65 6c 2e 66 69 72 73 74 22 3b 0a 20 20 20 20  sel.first";.    
afe0: 77 69 64 67 65 74 41 72 67 76 5b 33 5d 20 3d 20  widgetArgv[3] = 
aff0: 4e 55 4c 4c 3b 0a 20 20 20 20 69 66 20 28 20 28  NULL;.    if ( (
b000: 63 6d 64 49 6e 66 6f 2e 70 72 6f 63 29 28 63 6d  cmdInfo.proc)(cm
b010: 64 49 6e 66 6f 2e 63 6c 69 65 6e 74 44 61 74 61  dInfo.clientData
b020: 2c 20 69 6e 74 65 72 70 2c 20 33 2c 20 77 69 64  , interp, 3, wid
b030: 67 65 74 41 72 67 76 29 20 29 20 67 6f 74 6f 20  getArgv) ) goto 
b040: 64 6f 69 74 3b 0a 20 20 20 20 54 63 6c 5f 44 53  doit;.    Tcl_DS
b050: 74 72 69 6e 67 47 65 74 52 65 73 75 6c 74 28 69  tringGetResult(i
b060: 6e 74 65 72 70 2c 20 26 64 53 74 72 29 3b 0a 20  nterp, &dStr);. 
b070: 20 20 20 69 66 20 28 54 63 6c 5f 47 65 74 49 6e     if (Tcl_GetIn
b080: 74 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 44 53  t(interp, Tcl_DS
b090: 74 72 69 6e 67 56 61 6c 75 65 28 26 64 53 74 72  tringValue(&dStr
b0a0: 29 2c 20 26 66 69 72 73 74 29 29 20 20 67 6f 74  ), &first))  got
b0b0: 6f 20 64 6f 6e 65 3b 0a 0a 20 20 20 20 69 66 20  o done;..    if 
b0c0: 28 66 69 72 73 74 20 3c 3d 20 69 6e 73 65 72 74  (first <= insert
b0d0: 29 20 7b 0a 09 77 69 64 67 65 74 41 72 67 76 5b  ) {..widgetArgv[
b0e0: 31 5d 20 3d 20 22 69 6e 64 65 78 22 3b 0a 09 77  1] = "index";..w
b0f0: 69 64 67 65 74 41 72 67 76 5b 32 5d 20 3d 20 22  idgetArgv[2] = "
b100: 73 65 6c 2e 6c 61 73 74 22 3b 0a 09 77 69 64 67  sel.last";..widg
b110: 65 74 41 72 67 76 5b 33 5d 20 3d 20 4e 55 4c 4c  etArgv[3] = NULL
b120: 3b 0a 09 69 66 20 28 20 28 63 6d 64 49 6e 66 6f  ;..if ( (cmdInfo
b130: 2e 70 72 6f 63 29 28 63 6d 64 49 6e 66 6f 2e 63  .proc)(cmdInfo.c
b140: 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72  lientData, inter
b150: 70 2c 20 33 2c 20 77 69 64 67 65 74 41 72 67 76  p, 3, widgetArgv
b160: 29 20 29 0a 09 09 67 6f 74 6f 20 64 6f 69 74 3b  ) )...goto doit;
b170: 0a 09 54 63 6c 5f 44 53 74 72 69 6e 67 47 65 74  ..Tcl_DStringGet
b180: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 26  Result(interp, &
b190: 64 53 74 72 29 3b 0a 09 69 66 20 28 54 63 6c 5f  dStr);..if (Tcl_
b1a0: 47 65 74 49 6e 74 28 69 6e 74 65 72 70 2c 20 54  GetInt(interp, T
b1b0: 63 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 28  cl_DStringValue(
b1c0: 26 64 53 74 72 29 2c 20 26 6c 61 73 74 29 29 20  &dStr), &last)) 
b1d0: 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 0a 09 69 66   goto done;...if
b1e0: 20 28 6c 61 73 74 20 3e 3d 20 69 6e 73 65 72 74   (last >= insert
b1f0: 29 20 7b 0a 09 20 20 20 20 77 69 64 67 65 74 41  ) {..    widgetA
b200: 72 67 76 5b 31 5d 20 3d 20 22 64 65 6c 65 74 65  rgv[1] = "delete
b210: 22 3b 0a 09 20 20 20 20 77 69 64 67 65 74 41 72  ";..    widgetAr
b220: 67 76 5b 32 5d 20 3d 20 22 73 65 6c 2e 66 69 72  gv[2] = "sel.fir
b230: 73 74 22 3b 0a 09 20 20 20 20 77 69 64 67 65 74  st";..    widget
b240: 41 72 67 76 5b 33 5d 20 3d 20 22 73 65 6c 2e 6c  Argv[3] = "sel.l
b250: 61 73 74 22 3b 0a 09 20 20 20 20 77 69 64 67 65  ast";..    widge
b260: 74 41 72 67 76 5b 34 5d 20 3d 20 4e 55 4c 4c 3b  tArgv[4] = NULL;
b270: 0a 09 20 20 20 20 69 66 20 28 20 28 63 6d 64 49  ..    if ( (cmdI
b280: 6e 66 6f 2e 70 72 6f 63 29 28 63 6d 64 49 6e 66  nfo.proc)(cmdInf
b290: 6f 2e 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e  o.clientData, in
b2a0: 74 65 72 70 2c 20 34 2c 20 77 69 64 67 65 74 41  terp, 4, widgetA
b2b0: 72 67 76 29 20 29 0a 09 09 20 20 20 20 67 6f 74  rgv) )...    got
b2c0: 6f 20 64 6f 69 74 3b 0a 09 7d 0a 20 20 20 20 7d  o doit;..}.    }
b2d0: 0a 0a 20 20 20 20 2f 2a 0a 20 20 20 20 20 2a 20  ..    /*.     * 
b2e0: 50 65 72 66 6f 72 6d 20 74 68 65 20 69 6e 73 65  Perform the inse
b2f0: 72 74 69 6f 6e 2c 20 74 68 65 6e 20 75 70 64 61  rtion, then upda
b300: 74 65 20 76 69 65 77 20 74 6f 20 63 6f 6e 74 61  te view to conta
b310: 69 6e 20 74 68 65 20 6e 65 77 0a 20 20 20 20 20  in the new.     
b320: 2a 20 69 6e 73 65 72 74 69 6f 6e 20 70 6f 69 6e  * insertion poin
b330: 74 2e 0a 20 20 20 20 20 2a 2f 0a 0a 64 6f 69 74  t..     */..doit
b340: 3a 0a 20 20 20 20 77 69 64 67 65 74 41 72 67 76  :.    widgetArgv
b350: 5b 31 5d 20 3d 20 22 69 6e 73 65 72 74 22 3b 0a  [1] = "insert";.
b360: 20 20 20 20 77 69 64 67 65 74 41 72 67 76 5b 32      widgetArgv[2
b370: 5d 20 3d 20 22 69 6e 73 65 72 74 22 3b 0a 20 20  ] = "insert";.  
b380: 20 20 77 69 64 67 65 74 41 72 67 76 5b 33 5d 20    widgetArgv[3] 
b390: 3d 20 61 72 67 76 5b 32 5d 3b 0a 20 20 20 20 77  = argv[2];.    w
b3a0: 69 64 67 65 74 41 72 67 76 5b 34 5d 20 3d 20 4e  idgetArgv[4] = N
b3b0: 55 4c 4c 3b 0a 20 20 20 20 54 63 6c 5f 52 65 73  ULL;.    Tcl_Res
b3c0: 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29  etResult(interp)
b3d0: 3b 0a 20 20 20 20 69 66 20 28 20 28 63 6d 64 49  ;.    if ( (cmdI
b3e0: 6e 66 6f 2e 70 72 6f 63 29 28 63 6d 64 49 6e 66  nfo.proc)(cmdInf
b3f0: 6f 2e 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e  o.clientData, in
b400: 74 65 72 70 2c 20 34 2c 20 77 69 64 67 65 74 41  terp, 4, widgetA
b410: 72 67 76 29 20 29 20 67 6f 74 6f 20 64 6f 6e 65  rgv) ) goto done
b420: 3b 0a 0a 20 20 20 20 77 69 64 67 65 74 41 72 67  ;..    widgetArg
b430: 76 5b 31 5d 20 3d 20 61 72 67 76 5b 31 5d 3b 0a  v[1] = argv[1];.
b440: 20 20 20 20 77 69 64 67 65 74 41 72 67 76 5b 32      widgetArgv[2
b450: 5d 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 54 63  ] = NULL;.    Tc
b460: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
b470: 74 65 72 70 29 3b 0a 20 20 20 20 72 65 73 75 6c  terp);.    resul
b480: 74 20 3d 20 43 74 6b 5f 54 6b 45 6e 74 72 79 53  t = Ctk_TkEntryS
b490: 65 65 49 6e 73 65 72 74 43 6d 64 28 63 6c 69 65  eeInsertCmd(clie
b4a0: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20  ntData, interp, 
b4b0: 32 2c 20 77 69 64 67 65 74 41 72 67 76 29 3b 0a  2, widgetArgv);.
b4c0: 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d      if (result =
b4d0: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 09 54 63 6c  = TCL_OK) {..Tcl
b4e0: 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72  _SetResult(inter
b4f0: 70 2c 20 22 31 22 2c 20 54 43 4c 5f 53 54 41 54  p, "1", TCL_STAT
b500: 49 43 29 3b 0a 20 20 20 20 7d 0a 0a 64 6f 6e 65  IC);.    }..done
b510: 3a 0a 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e  :.    Tcl_DStrin
b520: 67 46 72 65 65 28 26 64 53 74 72 29 3b 0a 20 20  gFree(&dStr);.  
b530: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
b540: 0a 7d 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d  .}.../*. *------
b550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b580: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 0a 20 2a 20 43  --------. *. * C
b590: 74 6b 5f 54 6b 45 6e 74 72 79 53 65 65 49 6e 73  tk_TkEntrySeeIns
b5a0: 65 72 74 43 6d 64 20 2d 2d 0a 20 2a 0a 20 2a 09  ertCmd --. *. *.
b5b0: 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 69  This procedure i
b5c0: 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 70 72 6f  s invoked to pro
b5d0: 63 65 73 73 20 74 68 65 20 22 74 6b 45 6e 74 72  cess the "tkEntr
b5e0: 79 53 65 65 49 6e 73 65 72 74 22 0a 20 2a 09 54  ySeeInsert". *.T
b5f0: 63 6c 20 63 6f 6d 6d 61 6e 64 2e 20 20 4d 61 6b  cl command.  Mak
b600: 65 73 20 73 75 72 65 20 74 68 61 74 20 74 68 65  es sure that the
b610: 20 69 6e 73 65 72 74 69 6f 6e 20 63 75 72 73 6f   insertion curso
b620: 72 20 69 73 0a 20 2a 09 76 69 73 69 62 6c 65 20  r is. *.visible 
b630: 69 6e 20 74 68 65 20 65 6e 74 72 79 20 77 69 6e  in the entry win
b640: 64 6f 77 2e 20 20 49 66 20 6e 6f 74 2c 20 61 64  dow.  If not, ad
b650: 6a 75 73 74 20 74 68 65 20 76 69 65 77 20 73 6f  just the view so
b660: 0a 20 2a 09 74 68 61 74 20 69 74 20 69 73 2e 0a  . *.that it is..
b670: 20 2a 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20   *. * Results:. 
b680: 2a 09 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c  *.A standard Tcl
b690: 20 72 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53   result.. *. * S
b6a0: 69 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09  ide effects:. *.
b6b0: 53 65 65 20 74 68 65 20 75 73 65 72 20 64 6f 63  See the user doc
b6c0: 75 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 0a 20  umentation.. *. 
b6d0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
b6e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b6f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
b710: 20 2a 2f 0a 0a 69 6e 74 0a 43 74 6b 5f 54 6b 45   */..int.Ctk_TkE
b720: 6e 74 72 79 53 65 65 49 6e 73 65 72 74 43 6d 64  ntrySeeInsertCmd
b730: 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74  (clientData, int
b740: 65 72 70 2c 20 61 72 67 63 2c 20 61 72 67 76 29  erp, argc, argv)
b750: 0a 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20  .    ClientData 
b760: 63 6c 69 65 6e 74 44 61 74 61 3b 09 2f 2a 20 4d  clientData;./* M
b770: 61 69 6e 20 77 69 6e 64 6f 77 20 61 73 73 6f 63  ain window assoc
b780: 69 61 74 65 64 20 77 69 74 68 0a 09 09 09 09 20  iated with..... 
b790: 2a 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a  * interpreter. *
b7a0: 2f 0a 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70  /.    Tcl_Interp
b7b0: 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 43 75   *interp;../* Cu
b7c0: 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65  rrent interprete
b7d0: 72 2e 20 2a 2f 0a 20 20 20 20 69 6e 74 20 61 72  r. */.    int ar
b7e0: 67 63 3b 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20  gc;.../* Number 
b7f0: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f  of arguments. */
b800: 0a 20 20 20 20 63 68 61 72 20 2a 2a 61 72 67 76  .    char **argv
b810: 3b 09 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 73  ;../* Argument s
b820: 74 72 69 6e 67 73 2e 20 2a 2f 0a 7b 0a 20 20 20  trings. */.{.   
b830: 20 54 6b 5f 57 69 6e 64 6f 77 20 6d 61 69 6e 57   Tk_Window mainW
b840: 69 6e 20 3d 20 28 54 6b 5f 57 69 6e 64 6f 77 29  in = (Tk_Window)
b850: 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20   clientData;.   
b860: 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77 69 6e   Tk_Window tkwin
b870: 3b 0a 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e  ;.    Tcl_DStrin
b880: 67 20 64 53 74 72 3b 0a 20 20 20 20 69 6e 74 20  g dStr;.    int 
b890: 72 65 73 75 6c 74 20 3d 20 54 43 4c 5f 45 52 52  result = TCL_ERR
b8a0: 4f 52 3b 0a 20 20 20 20 54 63 6c 5f 43 6d 64 49  OR;.    Tcl_CmdI
b8b0: 6e 66 6f 20 63 6d 64 49 6e 66 6f 3b 0a 20 20 20  nfo cmdInfo;.   
b8c0: 20 63 68 61 72 20 2a 77 69 64 67 65 74 41 72 67   char *widgetArg
b8d0: 76 5b 34 5d 3b 0a 20 20 20 20 69 6e 74 20 63 2c  v[4];.    int c,
b8e0: 20 6c 65 66 74 2c 20 78 2c 20 69 3b 0a 20 20 20   left, x, i;.   
b8f0: 20 63 68 61 72 20 62 75 66 5b 35 30 5d 3b 0a 0a   char buf[50];..
b900: 20 20 20 20 69 66 20 28 61 72 67 63 20 21 3d 20      if (argc != 
b910: 32 29 20 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64  2) {..Tcl_Append
b920: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22  Result(interp, "
b930: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
b940: 6f 75 6c 64 20 62 65 20 5c 22 22 2c 0a 09 09 61  ould be \"",...a
b950: 72 67 76 5b 30 5d 2c 20 22 20 77 69 6e 64 6f 77  rgv[0], " window
b960: 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  \"", (char *) NU
b970: 4c 4c 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 4c  LL);..return TCL
b980: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20  _ERROR;.    }.  
b990: 20 20 74 6b 77 69 6e 20 3d 20 54 6b 5f 4e 61 6d    tkwin = Tk_Nam
b9a0: 65 54 6f 57 69 6e 64 6f 77 28 69 6e 74 65 72 70  eToWindow(interp
b9b0: 2c 20 61 72 67 76 5b 31 5d 2c 20 6d 61 69 6e 57  , argv[1], mainW
b9c0: 69 6e 29 3b 0a 20 20 20 20 69 66 20 28 21 74 6b  in);.    if (!tk
b9d0: 77 69 6e 29 20 20 72 65 74 75 72 6e 20 54 43 4c  win)  return TCL
b9e0: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 69 66 20 28  _ERROR;.    if (
b9f0: 21 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 49  !Tcl_GetCommandI
ba00: 6e 66 6f 28 69 6e 74 65 72 70 2c 20 61 72 67 76  nfo(interp, argv
ba10: 5b 31 5d 2c 20 26 63 6d 64 49 6e 66 6f 29 29 20  [1], &cmdInfo)) 
ba20: 7b 0a 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73  {..Tcl_AppendRes
ba30: 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 69 64  ult(interp, "wid
ba40: 67 65 74 20 63 6f 6d 6d 61 6e 64 20 5c 22 22 2c  get command \"",
ba50: 20 61 72 67 76 5b 31 5d 2c 0a 09 09 22 5c 22 20   argv[1],..."\" 
ba60: 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 22 2c  is not defined",
ba70: 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b   (char *) NULL);
ba80: 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52  ..return TCL_ERR
ba90: 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 54 63  OR;.    }.    Tc
baa0: 6c 5f 44 53 74 72 69 6e 67 49 6e 69 74 28 26 64  l_DStringInit(&d
bab0: 53 74 72 29 3b 0a 20 20 20 20 77 69 64 67 65 74  Str);.    widget
bac0: 41 72 67 76 5b 30 5d 20 3d 20 61 72 67 76 5b 31  Argv[0] = argv[1
bad0: 5d 3b 0a 20 20 20 20 77 69 64 67 65 74 41 72 67  ];.    widgetArg
bae0: 76 5b 33 5d 20 3d 20 4e 55 4c 4c 3b 0a 0a 20 20  v[3] = NULL;..  
baf0: 20 20 77 69 64 67 65 74 41 72 67 76 5b 31 5d 20    widgetArgv[1] 
bb00: 3d 20 22 69 6e 64 65 78 22 3b 0a 20 20 20 20 77  = "index";.    w
bb10: 69 64 67 65 74 41 72 67 76 5b 32 5d 20 3d 20 22  idgetArgv[2] = "
bb20: 69 6e 73 65 72 74 22 3b 0a 20 20 20 20 69 66 20  insert";.    if 
bb30: 28 20 28 63 6d 64 49 6e 66 6f 2e 70 72 6f 63 29  ( (cmdInfo.proc)
bb40: 28 63 6d 64 49 6e 66 6f 2e 63 6c 69 65 6e 74 44  (cmdInfo.clientD
bb50: 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 33 2c 20  ata, interp, 3, 
bb60: 77 69 64 67 65 74 41 72 67 76 29 20 29 20 67 6f  widgetArgv) ) go
bb70: 74 6f 20 64 6f 6e 65 3b 0a 20 20 20 20 54 63 6c  to done;.    Tcl
bb80: 5f 44 53 74 72 69 6e 67 47 65 74 52 65 73 75 6c  _DStringGetResul
bb90: 74 28 69 6e 74 65 72 70 2c 20 26 64 53 74 72 29  t(interp, &dStr)
bba0: 3b 0a 20 20 20 20 69 66 20 28 54 63 6c 5f 47 65  ;.    if (Tcl_Ge
bbb0: 74 49 6e 74 28 69 6e 74 65 72 70 2c 20 54 63 6c  tInt(interp, Tcl
bbc0: 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 28 26 64  _DStringValue(&d
bbd0: 53 74 72 29 2c 20 26 63 29 29 20 20 67 6f 74 6f  Str), &c))  goto
bbe0: 20 64 6f 6e 65 3b 0a 0a 20 20 20 20 77 69 64 67   done;..    widg
bbf0: 65 74 41 72 67 76 5b 31 5d 20 3d 20 22 69 6e 64  etArgv[1] = "ind
bc00: 65 78 22 3b 0a 20 20 20 20 77 69 64 67 65 74 41  ex";.    widgetA
bc10: 72 67 76 5b 32 5d 20 3d 20 22 40 30 22 3b 0a 20  rgv[2] = "@0";. 
bc20: 20 20 20 69 66 20 28 20 28 63 6d 64 49 6e 66 6f     if ( (cmdInfo
bc30: 2e 70 72 6f 63 29 28 63 6d 64 49 6e 66 6f 2e 63  .proc)(cmdInfo.c
bc40: 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72  lientData, inter
bc50: 70 2c 20 33 2c 20 77 69 64 67 65 74 41 72 67 76  p, 3, widgetArgv
bc60: 29 20 29 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 20  ) ) goto done;. 
bc70: 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 47 65     Tcl_DStringGe
bc80: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  tResult(interp, 
bc90: 26 64 53 74 72 29 3b 0a 20 20 20 20 69 66 20 28  &dStr);.    if (
bca0: 54 63 6c 5f 47 65 74 49 6e 74 28 69 6e 74 65 72  Tcl_GetInt(inter
bcb0: 70 2c 20 54 63 6c 5f 44 53 74 72 69 6e 67 56 61  p, Tcl_DStringVa
bcc0: 6c 75 65 28 26 64 53 74 72 29 2c 20 26 6c 65 66  lue(&dStr), &lef
bcd0: 74 29 29 20 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a  t))  goto done;.
bce0: 0a 20 20 20 20 69 66 20 28 6c 65 66 74 20 3e 20  .    if (left > 
bcf0: 63 29 20 7b 0a 09 73 70 72 69 6e 74 66 28 62 75  c) {..sprintf(bu
bd00: 66 2c 20 22 25 64 22 2c 20 63 29 3b 0a 09 77 69  f, "%d", c);..wi
bd10: 64 67 65 74 41 72 67 76 5b 31 5d 20 3d 20 22 78  dgetArgv[1] = "x
bd20: 76 69 65 77 22 3b 0a 09 77 69 64 67 65 74 41 72  view";..widgetAr
bd30: 67 76 5b 32 5d 20 3d 20 62 75 66 3b 0a 09 72 65  gv[2] = buf;..re
bd40: 73 75 6c 74 20 3d 20 28 63 6d 64 49 6e 66 6f 2e  sult = (cmdInfo.
bd50: 70 72 6f 63 29 28 63 6d 64 49 6e 66 6f 2e 63 6c  proc)(cmdInfo.cl
bd60: 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70  ientData, interp
bd70: 2c 20 33 2c 20 77 69 64 67 65 74 41 72 67 76 29  , 3, widgetArgv)
bd80: 3b 0a 09 67 6f 74 6f 20 64 6f 6e 65 3b 0a 20 20  ;..goto done;.  
bd90: 20 20 7d 0a 0a 20 20 20 20 78 20 3d 20 54 6b 5f    }..    x = Tk_
bda0: 57 69 64 74 68 28 74 6b 77 69 6e 29 3b 0a 20 20  Width(tkwin);.  
bdb0: 20 20 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 73    while (1) {..s
bdc0: 70 72 69 6e 74 66 28 62 75 66 2c 20 22 40 25 64  printf(buf, "@%d
bdd0: 22 2c 20 78 29 3b 0a 09 77 69 64 67 65 74 41 72  ", x);..widgetAr
bde0: 67 76 5b 31 5d 20 3d 20 22 69 6e 64 65 78 22 3b  gv[1] = "index";
bdf0: 0a 09 77 69 64 67 65 74 41 72 67 76 5b 32 5d 20  ..widgetArgv[2] 
be00: 3d 20 62 75 66 3b 0a 09 69 66 20 28 20 28 63 6d  = buf;..if ( (cm
be10: 64 49 6e 66 6f 2e 70 72 6f 63 29 28 63 6d 64 49  dInfo.proc)(cmdI
be20: 6e 66 6f 2e 63 6c 69 65 6e 74 44 61 74 61 2c 20  nfo.clientData, 
be30: 69 6e 74 65 72 70 2c 20 33 2c 20 77 69 64 67 65  interp, 3, widge
be40: 74 41 72 67 76 29 20 29 0a 09 09 67 6f 74 6f 20  tArgv) )...goto 
be50: 64 6f 6e 65 3b 0a 09 54 63 6c 5f 44 53 74 72 69  done;..Tcl_DStri
be60: 6e 67 47 65 74 52 65 73 75 6c 74 28 69 6e 74 65  ngGetResult(inte
be70: 72 70 2c 20 26 64 53 74 72 29 3b 0a 09 69 66 20  rp, &dStr);..if 
be80: 28 54 63 6c 5f 47 65 74 49 6e 74 28 69 6e 74 65  (Tcl_GetInt(inte
be90: 72 70 2c 20 54 63 6c 5f 44 53 74 72 69 6e 67 56  rp, Tcl_DStringV
bea0: 61 6c 75 65 28 26 64 53 74 72 29 2c 20 26 69 29  alue(&dStr), &i)
beb0: 29 20 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 09 69  )  goto done;..i
bec0: 66 20 28 69 20 3e 20 63 20 7c 7c 20 6c 65 66 74  f (i > c || left
bed0: 20 3e 3d 20 63 29 20 20 62 72 65 61 6b 3b 0a 0a   >= c)  break;..
bee0: 09 6c 65 66 74 2b 2b 3b 0a 09 73 70 72 69 6e 74  .left++;..sprint
bef0: 66 28 62 75 66 2c 20 22 25 64 22 2c 20 6c 65 66  f(buf, "%d", lef
bf00: 74 29 3b 0a 09 77 69 64 67 65 74 41 72 67 76 5b  t);..widgetArgv[
bf10: 31 5d 20 3d 20 22 78 76 69 65 77 22 3b 0a 09 77  1] = "xview";..w
bf20: 69 64 67 65 74 41 72 67 76 5b 32 5d 20 3d 20 62  idgetArgv[2] = b
bf30: 75 66 3b 0a 09 69 66 20 28 20 28 63 6d 64 49 6e  uf;..if ( (cmdIn
bf40: 66 6f 2e 70 72 6f 63 29 28 63 6d 64 49 6e 66 6f  fo.proc)(cmdInfo
bf50: 2e 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74  .clientData, int
bf60: 65 72 70 2c 20 33 2c 20 77 69 64 67 65 74 41 72  erp, 3, widgetAr
bf70: 67 76 29 20 29 0a 09 09 67 6f 74 6f 20 64 6f 6e  gv) )...goto don
bf80: 65 3b 0a 09 54 63 6c 5f 52 65 73 65 74 52 65 73  e;..Tcl_ResetRes
bf90: 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 20 20  ult(interp);.   
bfa0: 20 7d 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20   }.    result = 
bfb0: 54 43 4c 5f 4f 4b 3b 0a 64 6f 6e 65 3a 0a 20 20  TCL_OK;.done:.  
bfc0: 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 46 72 65    Tcl_DStringFre
bfd0: 65 28 26 64 53 74 72 29 3b 0a 20 20 20 20 72 65  e(&dStr);.    re
bfe0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a     turn result;.}.