Tk Source Code

Hex Artifact Content
Login

Artifact 36ebc313a3ca5b8ae7d1a6e00ccbac7d979178e0ea37de20eef3259b0d2745f6:


0000: 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20  /*. * Copyright 
0010: c2 a9 20 32 30 30 34 2c 20 4a 6f 65 20 45 6e 67  © 2004, Joe Eng
0020: 6c 69 73 68 0a 20 2a 0a 20 2a 20 22 63 6c 61 73  lish. *. * "clas
0030: 73 69 63 22 20 74 68 65 6d 65 3b 20 69 6d 70 6c  sic" theme; impl
0040: 65 6d 65 6e 74 73 20 74 68 65 20 63 6c 61 73 73  ements the class
0050: 69 63 20 4d 6f 74 69 66 2d 6c 69 6b 65 20 54 6b  ic Motif-like Tk
0060: 20 6c 6f 6f 6b 2e 0a 20 2a 0a 20 2a 2f 0a 0a 23   look.. *. */..#
0070: 69 6e 63 6c 75 64 65 20 22 74 6b 49 6e 74 2e 68  include "tkInt.h
0080: 22 0a 23 69 6e 63 6c 75 64 65 20 22 74 74 6b 54  ".#include "ttkT
0090: 68 65 6d 65 2e 68 22 0a 0a 23 64 65 66 69 6e 65  heme.h"..#define
00a0: 20 44 45 46 41 55 4c 54 5f 42 4f 52 44 45 52 57   DEFAULT_BORDERW
00b0: 49 44 54 48 20 22 32 22 0a 23 64 65 66 69 6e 65  IDTH "2".#define
00c0: 20 44 45 46 41 55 4c 54 5f 41 52 52 4f 57 5f 53   DEFAULT_ARROW_S
00d0: 49 5a 45 20 22 31 35 22 0a 0a 2f 2a 2d 2d 2d 2d  IZE "15"../*----
00e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0120: 2d 2d 0a 20 2a 20 2b 2b 2b 20 48 69 67 68 6c 69  --. * +++ Highli
0130: 67 68 74 20 65 6c 65 6d 65 6e 74 20 69 6d 70 6c  ght element impl
0140: 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a 20 2a 20 09  ementation.. * .
0150: 44 72 61 77 20 61 20 73 6f 6c 69 64 20 68 69 67  Draw a solid hig
0160: 68 6c 69 67 68 74 20 62 6f 72 64 65 72 20 74 6f  hlight border to
0170: 20 69 6e 64 69 63 61 74 65 20 66 6f 63 75 73 2e   indicate focus.
0180: 0a 20 2a 2f 0a 0a 74 79 70 65 64 65 66 20 73 74  . */..typedef st
0190: 72 75 63 74 20 7b 0a 20 20 20 20 54 63 6c 5f 4f  ruct {.    Tcl_O
01a0: 62 6a 09 2a 68 69 67 68 6c 69 67 68 74 43 6f 6c  bj.*highlightCol
01b0: 6f 72 4f 62 6a 3b 0a 20 20 20 20 54 63 6c 5f 4f  orObj;.    Tcl_O
01c0: 62 6a 09 2a 68 69 67 68 6c 69 67 68 74 54 68 69  bj.*highlightThi
01d0: 63 6b 6e 65 73 73 4f 62 6a 3b 0a 7d 20 48 69 67  cknessObj;.} Hig
01e0: 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74 3b 0a 0a  hlightElement;..
01f0: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 54 74 6b  static const Ttk
0200: 5f 45 6c 65 6d 65 6e 74 4f 70 74 69 6f 6e 53 70  _ElementOptionSp
0210: 65 63 20 48 69 67 68 6c 69 67 68 74 45 6c 65 6d  ec HighlightElem
0220: 65 6e 74 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b  entOptions[] = {
0230: 0a 20 20 20 20 7b 20 22 2d 68 69 67 68 6c 69 67  .    { "-highlig
0240: 68 74 63 6f 6c 6f 72 22 2c 54 4b 5f 4f 50 54 49  htcolor",TK_OPTI
0250: 4f 4e 5f 43 4f 4c 4f 52 2c 0a 09 6f 66 66 73 65  ON_COLOR,..offse
0260: 74 6f 66 28 48 69 67 68 6c 69 67 68 74 45 6c 65  tof(HighlightEle
0270: 6d 65 6e 74 2c 68 69 67 68 6c 69 67 68 74 43 6f  ment,highlightCo
0280: 6c 6f 72 4f 62 6a 29 2c 20 44 45 46 41 55 4c 54  lorObj), DEFAULT
0290: 5f 42 41 43 4b 47 52 4f 55 4e 44 20 7d 2c 0a 20  _BACKGROUND },. 
02a0: 20 20 20 7b 20 22 2d 68 69 67 68 6c 69 67 68 74     { "-highlight
02b0: 74 68 69 63 6b 6e 65 73 73 22 2c 54 4b 5f 4f 50  thickness",TK_OP
02c0: 54 49 4f 4e 5f 50 49 58 45 4c 53 2c 0a 09 6f 66  TION_PIXELS,..of
02d0: 66 73 65 74 6f 66 28 48 69 67 68 6c 69 67 68 74  fsetof(Highlight
02e0: 45 6c 65 6d 65 6e 74 2c 68 69 67 68 6c 69 67 68  Element,highligh
02f0: 74 54 68 69 63 6b 6e 65 73 73 4f 62 6a 29 2c 20  tThicknessObj), 
0300: 22 30 22 20 7d 2c 0a 20 20 20 20 7b 20 4e 55 4c  "0" },.    { NUL
0310: 4c 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 42 4f 4f  L, TK_OPTION_BOO
0320: 4c 45 41 4e 2c 20 30 2c 20 4e 55 4c 4c 20 7d 0a  LEAN, 0, NULL }.
0330: 7d 3b 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20  };..static void 
0340: 48 69 67 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74  HighlightElement
0350: 53 69 7a 65 28 0a 20 20 20 20 76 6f 69 64 20 2a  Size(.    void *
0360: 64 75 6d 6d 79 2c 20 76 6f 69 64 20 2a 65 6c 65  dummy, void *ele
0370: 6d 65 6e 74 52 65 63 6f 72 64 2c 20 54 6b 5f 57  mentRecord, Tk_W
0380: 69 6e 64 6f 77 20 74 6b 77 69 6e 2c 0a 20 20 20  indow tkwin,.   
0390: 20 69 6e 74 20 2a 77 69 64 74 68 50 74 72 2c 20   int *widthPtr, 
03a0: 69 6e 74 20 2a 68 65 69 67 68 74 50 74 72 2c 20  int *heightPtr, 
03b0: 54 74 6b 5f 50 61 64 64 69 6e 67 20 2a 70 61 64  Ttk_Padding *pad
03c0: 64 69 6e 67 50 74 72 29 0a 7b 0a 20 20 20 20 48  dingPtr).{.    H
03d0: 69 67 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74 20  ighlightElement 
03e0: 2a 68 6c 20 3d 20 28 48 69 67 68 6c 69 67 68 74  *hl = (Highlight
03f0: 45 6c 65 6d 65 6e 74 20 2a 29 65 6c 65 6d 65 6e  Element *)elemen
0400: 74 52 65 63 6f 72 64 3b 0a 20 20 20 20 69 6e 74  tRecord;.    int
0410: 20 68 69 67 68 6c 69 67 68 74 54 68 69 63 6b 6e   highlightThickn
0420: 65 73 73 20 3d 20 30 3b 0a 20 20 20 20 28 76 6f  ess = 0;.    (vo
0430: 69 64 29 64 75 6d 6d 79 3b 0a 20 20 20 20 28 76  id)dummy;.    (v
0440: 6f 69 64 29 74 6b 77 69 6e 3b 0a 20 20 20 20 28  oid)tkwin;.    (
0450: 76 6f 69 64 29 77 69 64 74 68 50 74 72 3b 0a 20  void)widthPtr;. 
0460: 20 20 20 28 76 6f 69 64 29 68 65 69 67 68 74 50     (void)heightP
0470: 74 72 3b 0a 0a 20 20 20 20 54 63 6c 5f 47 65 74  tr;..    Tcl_Get
0480: 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c  IntFromObj(NULL,
0490: 68 6c 2d 3e 68 69 67 68 6c 69 67 68 74 54 68 69  hl->highlightThi
04a0: 63 6b 6e 65 73 73 4f 62 6a 2c 26 68 69 67 68 6c  cknessObj,&highl
04b0: 69 67 68 74 54 68 69 63 6b 6e 65 73 73 29 3b 0a  ightThickness);.
04c0: 20 20 20 20 2a 70 61 64 64 69 6e 67 50 74 72 20      *paddingPtr 
04d0: 3d 20 54 74 6b 5f 55 6e 69 66 6f 72 6d 50 61 64  = Ttk_UniformPad
04e0: 64 69 6e 67 28 28 73 68 6f 72 74 29 68 69 67 68  ding((short)high
04f0: 6c 69 67 68 74 54 68 69 63 6b 6e 65 73 73 29 3b  lightThickness);
0500: 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20  .}..static void 
0510: 48 69 67 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74  HighlightElement
0520: 44 72 61 77 28 0a 20 20 20 20 76 6f 69 64 20 2a  Draw(.    void *
0530: 64 75 6d 6d 79 2c 20 76 6f 69 64 20 2a 65 6c 65  dummy, void *ele
0540: 6d 65 6e 74 52 65 63 6f 72 64 2c 20 54 6b 5f 57  mentRecord, Tk_W
0550: 69 6e 64 6f 77 20 74 6b 77 69 6e 2c 0a 20 20 20  indow tkwin,.   
0560: 20 44 72 61 77 61 62 6c 65 20 64 2c 20 54 74 6b   Drawable d, Ttk
0570: 5f 42 6f 78 20 62 2c 20 75 6e 73 69 67 6e 65 64  _Box b, unsigned
0580: 20 69 6e 74 20 73 74 61 74 65 29 0a 7b 0a 20 20   int state).{.  
0590: 20 20 48 69 67 68 6c 69 67 68 74 45 6c 65 6d 65    HighlightEleme
05a0: 6e 74 20 2a 68 6c 20 3d 20 28 48 69 67 68 6c 69  nt *hl = (Highli
05b0: 67 68 74 45 6c 65 6d 65 6e 74 20 2a 29 65 6c 65  ghtElement *)ele
05c0: 6d 65 6e 74 52 65 63 6f 72 64 3b 0a 20 20 20 20  mentRecord;.    
05d0: 69 6e 74 20 68 69 67 68 6c 69 67 68 74 54 68 69  int highlightThi
05e0: 63 6b 6e 65 73 73 20 3d 20 30 3b 0a 20 20 20 20  ckness = 0;.    
05f0: 58 43 6f 6c 6f 72 20 2a 68 69 67 68 6c 69 67 68  XColor *highligh
0600: 74 43 6f 6c 6f 72 20 3d 20 54 6b 5f 47 65 74 43  tColor = Tk_GetC
0610: 6f 6c 6f 72 46 72 6f 6d 4f 62 6a 28 74 6b 77 69  olorFromObj(tkwi
0620: 6e 2c 20 68 6c 2d 3e 68 69 67 68 6c 69 67 68 74  n, hl->highlight
0630: 43 6f 6c 6f 72 4f 62 6a 29 3b 0a 20 20 20 20 28  ColorObj);.    (
0640: 76 6f 69 64 29 64 75 6d 6d 79 3b 0a 20 20 20 20  void)dummy;.    
0650: 28 76 6f 69 64 29 62 3b 0a 20 20 20 20 28 76 6f  (void)b;.    (vo
0660: 69 64 29 73 74 61 74 65 3b 0a 0a 20 20 20 20 54  id)state;..    T
0670: 63 6c 5f 47 65 74 49 6e 74 46 72 6f 6d 4f 62 6a  cl_GetIntFromObj
0680: 28 4e 55 4c 4c 2c 68 6c 2d 3e 68 69 67 68 6c 69  (NULL,hl->highli
0690: 67 68 74 54 68 69 63 6b 6e 65 73 73 4f 62 6a 2c  ghtThicknessObj,
06a0: 26 68 69 67 68 6c 69 67 68 74 54 68 69 63 6b 6e  &highlightThickn
06b0: 65 73 73 29 3b 0a 20 20 20 20 69 66 20 28 68 69  ess);.    if (hi
06c0: 67 68 6c 69 67 68 74 43 6f 6c 6f 72 20 26 26 20  ghlightColor && 
06d0: 68 69 67 68 6c 69 67 68 74 54 68 69 63 6b 6e 65  highlightThickne
06e0: 73 73 20 3e 20 30 29 20 7b 0a 09 47 43 20 67 63  ss > 0) {..GC gc
06f0: 20 3d 20 54 6b 5f 47 43 46 6f 72 43 6f 6c 6f 72   = Tk_GCForColor
0700: 28 68 69 67 68 6c 69 67 68 74 43 6f 6c 6f 72 2c  (highlightColor,
0710: 20 64 29 3b 0a 09 54 6b 5f 44 72 61 77 46 6f 63   d);..Tk_DrawFoc
0720: 75 73 48 69 67 68 6c 69 67 68 74 28 74 6b 77 69  usHighlight(tkwi
0730: 6e 2c 20 67 63 2c 20 68 69 67 68 6c 69 67 68 74  n, gc, highlight
0740: 54 68 69 63 6b 6e 65 73 73 2c 20 64 29 3b 0a 20  Thickness, d);. 
0750: 20 20 20 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 63     }.}..static c
0760: 6f 6e 73 74 20 54 74 6b 5f 45 6c 65 6d 65 6e 74  onst Ttk_Element
0770: 53 70 65 63 20 48 69 67 68 6c 69 67 68 74 45 6c  Spec HighlightEl
0780: 65 6d 65 6e 74 53 70 65 63 20 3d 0a 7b 0a 20 20  ementSpec =.{.  
0790: 20 20 54 4b 5f 53 54 59 4c 45 5f 56 45 52 53 49    TK_STYLE_VERSI
07a0: 4f 4e 5f 32 2c 0a 20 20 20 20 73 69 7a 65 6f 66  ON_2,.    sizeof
07b0: 28 48 69 67 68 6c 69 67 68 74 45 6c 65 6d 65 6e  (HighlightElemen
07c0: 74 29 2c 0a 20 20 20 20 48 69 67 68 6c 69 67 68  t),.    Highligh
07d0: 74 45 6c 65 6d 65 6e 74 4f 70 74 69 6f 6e 73 2c  tElementOptions,
07e0: 0a 20 20 20 20 48 69 67 68 6c 69 67 68 74 45 6c  .    HighlightEl
07f0: 65 6d 65 6e 74 53 69 7a 65 2c 0a 20 20 20 20 48  ementSize,.    H
0800: 69 67 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74 44  ighlightElementD
0810: 72 61 77 0a 7d 3b 0a 0a 2f 2a 2d 2d 2d 2d 2d 2d  raw.};../*------
0820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0840: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0850: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0860: 2d 2d 0a 20 2a 20 2b 2b 2b 20 42 75 74 74 6f 6e  --. * +++ Button
0870: 20 42 6f 72 64 65 72 20 65 6c 65 6d 65 6e 74 3a   Border element:
0880: 0a 20 2a 0a 20 2a 20 54 68 65 20 4d 6f 74 69 66  . *. * The Motif
0890: 2d 73 74 79 6c 65 20 62 75 74 74 6f 6e 20 62 6f  -style button bo
08a0: 72 64 65 72 20 6f 6e 20 58 31 31 20 63 6f 6e 73  rder on X11 cons
08b0: 69 73 74 73 20 6f 66 20 28 66 72 6f 6d 20 6f 75  ists of (from ou
08c0: 74 73 69 64 65 2d 69 6e 29 3a 0a 20 2a 0a 20 2a  tside-in):. *. *
08d0: 20 2b 20 66 6f 63 75 73 20 69 6e 64 69 63 61 74   + focus indicat
08e0: 6f 72 20 28 63 6f 6e 74 72 6f 6c 6c 65 64 20 62  or (controlled b
08f0: 79 20 2d 68 69 67 68 6c 69 67 68 74 63 6f 6c 6f  y -highlightcolo
0900: 72 20 61 6e 64 20 2d 68 69 67 68 6c 69 67 68 74  r and -highlight
0910: 74 68 69 63 6b 6e 65 73 73 29 2c 0a 20 2a 20 2b  thickness),. * +
0920: 20 64 65 66 61 75 6c 74 20 72 69 6e 67 20 28 69   default ring (i
0930: 66 20 2d 64 65 66 61 75 6c 74 20 61 63 74 69 76  f -default activ
0940: 65 3b 20 62 6c 61 6e 6b 20 69 66 20 2d 64 65 66  e; blank if -def
0950: 61 75 6c 74 20 6e 6f 72 6d 61 6c 29 0a 20 2a 20  ault normal). * 
0960: 2b 20 73 68 61 64 65 64 20 62 6f 72 64 65 72 20  + shaded border 
0970: 28 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 2d  (controlled by -
0980: 62 61 63 6b 67 72 6f 75 6e 64 2c 20 2d 62 6f 72  background, -bor
0990: 64 65 72 77 69 64 74 68 2c 20 61 6e 64 20 2d 72  derwidth, and -r
09a0: 65 6c 69 65 66 29 0a 20 2a 2f 0a 0a 74 79 70 65  elief). */..type
09b0: 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20  def struct {.   
09c0: 20 54 63 6c 5f 4f 62 6a 09 2a 62 6f 72 64 65 72   Tcl_Obj.*border
09d0: 4f 62 6a 3b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a  Obj;.    Tcl_Obj
09e0: 09 2a 62 6f 72 64 65 72 57 69 64 74 68 4f 62 6a  .*borderWidthObj
09f0: 3b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 09 2a 72  ;.    Tcl_Obj.*r
0a00: 65 6c 69 65 66 4f 62 6a 3b 0a 20 20 20 20 54 63  eliefObj;.    Tc
0a10: 6c 5f 4f 62 6a 09 2a 64 65 66 61 75 6c 74 53 74  l_Obj.*defaultSt
0a20: 61 74 65 4f 62 6a 3b 0a 7d 20 42 75 74 74 6f 6e  ateObj;.} Button
0a30: 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74 3b 0a 0a  BorderElement;..
0a40: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 54 74 6b  static const Ttk
0a50: 5f 45 6c 65 6d 65 6e 74 4f 70 74 69 6f 6e 53 70  _ElementOptionSp
0a60: 65 63 20 42 75 74 74 6f 6e 42 6f 72 64 65 72 45  ec ButtonBorderE
0a70: 6c 65 6d 65 6e 74 4f 70 74 69 6f 6e 73 5b 5d 20  lementOptions[] 
0a80: 3d 0a 7b 0a 20 20 20 20 7b 20 22 2d 62 61 63 6b  =.{.    { "-back
0a90: 67 72 6f 75 6e 64 22 2c 20 54 4b 5f 4f 50 54 49  ground", TK_OPTI
0aa0: 4f 4e 5f 42 4f 52 44 45 52 2c 0a 09 6f 66 66 73  ON_BORDER,..offs
0ab0: 65 74 6f 66 28 42 75 74 74 6f 6e 42 6f 72 64 65  etof(ButtonBorde
0ac0: 72 45 6c 65 6d 65 6e 74 2c 62 6f 72 64 65 72 4f  rElement,borderO
0ad0: 62 6a 29 2c 20 44 45 46 41 55 4c 54 5f 42 41 43  bj), DEFAULT_BAC
0ae0: 4b 47 52 4f 55 4e 44 20 7d 2c 0a 20 20 20 20 7b  KGROUND },.    {
0af0: 20 22 2d 62 6f 72 64 65 72 77 69 64 74 68 22 2c   "-borderwidth",
0b00: 20 54 4b 5f 4f 50 54 49 4f 4e 5f 50 49 58 45 4c   TK_OPTION_PIXEL
0b10: 53 2c 0a 09 6f 66 66 73 65 74 6f 66 28 42 75 74  S,..offsetof(But
0b20: 74 6f 6e 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74  tonBorderElement
0b30: 2c 62 6f 72 64 65 72 57 69 64 74 68 4f 62 6a 29  ,borderWidthObj)
0b40: 2c 20 44 45 46 41 55 4c 54 5f 42 4f 52 44 45 52  , DEFAULT_BORDER
0b50: 57 49 44 54 48 20 7d 2c 0a 20 20 20 20 7b 20 22  WIDTH },.    { "
0b60: 2d 72 65 6c 69 65 66 22 2c 20 54 4b 5f 4f 50 54  -relief", TK_OPT
0b70: 49 4f 4e 5f 52 45 4c 49 45 46 2c 0a 09 6f 66 66  ION_RELIEF,..off
0b80: 73 65 74 6f 66 28 42 75 74 74 6f 6e 42 6f 72 64  setof(ButtonBord
0b90: 65 72 45 6c 65 6d 65 6e 74 2c 72 65 6c 69 65 66  erElement,relief
0ba0: 4f 62 6a 29 2c 20 22 66 6c 61 74 22 20 7d 2c 0a  Obj), "flat" },.
0bb0: 20 20 20 20 7b 20 22 2d 64 65 66 61 75 6c 74 22      { "-default"
0bc0: 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 41 4e 59 2c  , TK_OPTION_ANY,
0bd0: 0a 09 6f 66 66 73 65 74 6f 66 28 42 75 74 74 6f  ..offsetof(Butto
0be0: 6e 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74 2c 64  nBorderElement,d
0bf0: 65 66 61 75 6c 74 53 74 61 74 65 4f 62 6a 29 2c  efaultStateObj),
0c00: 20 22 64 69 73 61 62 6c 65 64 22 20 7d 2c 0a 20   "disabled" },. 
0c10: 20 20 20 7b 20 4e 55 4c 4c 2c 20 54 4b 5f 4f 50     { NULL, TK_OP
0c20: 54 49 4f 4e 5f 42 4f 4f 4c 45 41 4e 2c 20 30 2c  TION_BOOLEAN, 0,
0c30: 20 4e 55 4c 4c 20 7d 0a 7d 3b 0a 0a 73 74 61 74   NULL }.};..stat
0c40: 69 63 20 76 6f 69 64 20 42 75 74 74 6f 6e 42 6f  ic void ButtonBo
0c50: 72 64 65 72 45 6c 65 6d 65 6e 74 53 69 7a 65 28  rderElementSize(
0c60: 0a 20 20 20 20 76 6f 69 64 20 2a 64 75 6d 6d 79  .    void *dummy
0c70: 2c 20 76 6f 69 64 20 2a 65 6c 65 6d 65 6e 74 52  , void *elementR
0c80: 65 63 6f 72 64 2c 20 54 6b 5f 57 69 6e 64 6f 77  ecord, Tk_Window
0c90: 20 74 6b 77 69 6e 2c 0a 20 20 20 20 69 6e 74 20   tkwin,.    int 
0ca0: 2a 77 69 64 74 68 50 74 72 2c 20 69 6e 74 20 2a  *widthPtr, int *
0cb0: 68 65 69 67 68 74 50 74 72 2c 20 54 74 6b 5f 50  heightPtr, Ttk_P
0cc0: 61 64 64 69 6e 67 20 2a 70 61 64 64 69 6e 67 50  adding *paddingP
0cd0: 74 72 29 0a 7b 0a 20 20 20 20 42 75 74 74 6f 6e  tr).{.    Button
0ce0: 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74 20 2a 62  BorderElement *b
0cf0: 64 20 3d 20 28 42 75 74 74 6f 6e 42 6f 72 64 65  d = (ButtonBorde
0d00: 72 45 6c 65 6d 65 6e 74 20 2a 29 65 6c 65 6d 65  rElement *)eleme
0d10: 6e 74 52 65 63 6f 72 64 3b 0a 20 20 20 20 54 74  ntRecord;.    Tt
0d20: 6b 5f 42 75 74 74 6f 6e 44 65 66 61 75 6c 74 53  k_ButtonDefaultS
0d30: 74 61 74 65 20 64 65 66 61 75 6c 74 53 74 61 74  tate defaultStat
0d40: 65 20 3d 20 54 54 4b 5f 42 55 54 54 4f 4e 5f 44  e = TTK_BUTTON_D
0d50: 45 46 41 55 4c 54 5f 44 49 53 41 42 4c 45 44 3b  EFAULT_DISABLED;
0d60: 0a 20 20 20 20 69 6e 74 20 62 6f 72 64 65 72 57  .    int borderW
0d70: 69 64 74 68 20 3d 20 30 3b 0a 20 20 20 20 28 76  idth = 0;.    (v
0d80: 6f 69 64 29 64 75 6d 6d 79 3b 0a 20 20 20 20 28  oid)dummy;.    (
0d90: 76 6f 69 64 29 74 6b 77 69 6e 3b 0a 20 20 20 20  void)tkwin;.    
0da0: 28 76 6f 69 64 29 77 69 64 74 68 50 74 72 3b 0a  (void)widthPtr;.
0db0: 20 20 20 20 28 76 6f 69 64 29 68 65 69 67 68 74      (void)height
0dc0: 50 74 72 3b 0a 0a 20 20 20 20 54 63 6c 5f 47 65  Ptr;..    Tcl_Ge
0dd0: 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c  tIntFromObj(NULL
0de0: 2c 20 62 64 2d 3e 62 6f 72 64 65 72 57 69 64 74  , bd->borderWidt
0df0: 68 4f 62 6a 2c 20 26 62 6f 72 64 65 72 57 69 64  hObj, &borderWid
0e00: 74 68 29 3b 0a 20 20 20 20 54 74 6b 5f 47 65 74  th);.    Ttk_Get
0e10: 42 75 74 74 6f 6e 44 65 66 61 75 6c 74 53 74 61  ButtonDefaultSta
0e20: 74 65 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20  teFromObj(NULL, 
0e30: 62 64 2d 3e 64 65 66 61 75 6c 74 53 74 61 74 65  bd->defaultState
0e40: 4f 62 6a 2c 20 26 64 65 66 61 75 6c 74 53 74 61  Obj, &defaultSta
0e50: 74 65 29 3b 0a 0a 20 20 20 20 69 66 20 28 64 65  te);..    if (de
0e60: 66 61 75 6c 74 53 74 61 74 65 20 21 3d 20 54 54  faultState != TT
0e70: 4b 5f 42 55 54 54 4f 4e 5f 44 45 46 41 55 4c 54  K_BUTTON_DEFAULT
0e80: 5f 44 49 53 41 42 4c 45 44 29 20 7b 0a 09 62 6f  _DISABLED) {..bo
0e90: 72 64 65 72 57 69 64 74 68 20 2b 3d 20 35 3b 0a  rderWidth += 5;.
0ea0: 20 20 20 20 7d 0a 20 20 20 20 2a 70 61 64 64 69      }.    *paddi
0eb0: 6e 67 50 74 72 20 3d 20 54 74 6b 5f 55 6e 69 66  ngPtr = Ttk_Unif
0ec0: 6f 72 6d 50 61 64 64 69 6e 67 28 28 73 68 6f 72  ormPadding((shor
0ed0: 74 29 62 6f 72 64 65 72 57 69 64 74 68 29 3b 0a  t)borderWidth);.
0ee0: 7d 0a 0a 2f 2a 0a 20 2a 20 28 40 40 40 20 4e 6f  }../*. * (@@@ No
0ef0: 74 65 3a 20 42 75 74 74 6f 6e 42 6f 72 64 65 72  te: ButtonBorder
0f00: 45 6c 65 6d 65 6e 74 20 73 74 69 6c 6c 20 73 74  Element still st
0f10: 69 6c 6c 20 73 74 69 6c 6c 20 62 75 67 67 79 3a  ill still buggy:
0f20: 0a 20 2a 20 70 61 64 64 69 6e 67 20 66 6f 72 20  . * padding for 
0f30: 64 65 66 61 75 6c 74 20 72 69 6e 67 20 69 73 20  default ring is 
0f40: 64 72 61 77 6e 20 69 6e 20 74 68 65 20 77 72 6f  drawn in the wro
0f50: 6e 67 20 63 6f 6c 6f 72 0a 20 2a 20 77 68 65 6e  ng color. * when
0f60: 20 74 68 65 20 62 75 74 74 6f 6e 20 69 73 20 61   the button is a
0f70: 63 74 69 76 65 2e 29 0a 20 2a 2f 0a 73 74 61 74  ctive.). */.stat
0f80: 69 63 20 76 6f 69 64 20 42 75 74 74 6f 6e 42 6f  ic void ButtonBo
0f90: 72 64 65 72 45 6c 65 6d 65 6e 74 44 72 61 77 28  rderElementDraw(
0fa0: 0a 20 20 20 20 76 6f 69 64 20 2a 64 75 6d 6d 79  .    void *dummy
0fb0: 2c 20 76 6f 69 64 20 2a 65 6c 65 6d 65 6e 74 52  , void *elementR
0fc0: 65 63 6f 72 64 2c 20 54 6b 5f 57 69 6e 64 6f 77  ecord, Tk_Window
0fd0: 20 74 6b 77 69 6e 2c 0a 20 20 20 20 44 72 61 77   tkwin,.    Draw
0fe0: 61 62 6c 65 20 64 2c 20 54 74 6b 5f 42 6f 78 20  able d, Ttk_Box 
0ff0: 62 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20  b, unsigned int 
1000: 73 74 61 74 65 29 0a 7b 0a 20 20 20 20 42 75 74  state).{.    But
1010: 74 6f 6e 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74  tonBorderElement
1020: 20 2a 62 64 20 3d 20 28 42 75 74 74 6f 6e 42 6f   *bd = (ButtonBo
1030: 72 64 65 72 45 6c 65 6d 65 6e 74 20 2a 29 65 6c  rderElement *)el
1040: 65 6d 65 6e 74 52 65 63 6f 72 64 3b 0a 20 20 20  ementRecord;.   
1050: 20 54 6b 5f 33 44 42 6f 72 64 65 72 20 62 6f 72   Tk_3DBorder bor
1060: 64 65 72 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20  der = NULL;.    
1070: 69 6e 74 20 62 6f 72 64 65 72 57 69 64 74 68 20  int borderWidth 
1080: 3d 20 31 2c 20 72 65 6c 69 65 66 20 3d 20 54 4b  = 1, relief = TK
1090: 5f 52 45 4c 49 45 46 5f 46 4c 41 54 3b 0a 20 20  _RELIEF_FLAT;.  
10a0: 20 20 54 74 6b 5f 42 75 74 74 6f 6e 44 65 66 61    Ttk_ButtonDefa
10b0: 75 6c 74 53 74 61 74 65 20 64 65 66 61 75 6c 74  ultState default
10c0: 53 74 61 74 65 20 3d 20 54 54 4b 5f 42 55 54 54  State = TTK_BUTT
10d0: 4f 4e 5f 44 45 46 41 55 4c 54 5f 44 49 53 41 42  ON_DEFAULT_DISAB
10e0: 4c 45 44 3b 0a 20 20 20 20 69 6e 74 20 69 6e 73  LED;.    int ins
10f0: 65 74 20 3d 20 30 3b 0a 20 20 20 20 28 76 6f 69  et = 0;.    (voi
1100: 64 29 64 75 6d 6d 79 3b 0a 20 20 20 20 28 76 6f  d)dummy;.    (vo
1110: 69 64 29 73 74 61 74 65 3b 0a 0a 20 20 20 20 2f  id)state;..    /
1120: 2a 0a 20 20 20 20 20 2a 20 47 65 74 20 6f 70 74  *.     * Get opt
1130: 69 6f 6e 20 76 61 6c 75 65 73 2e 0a 20 20 20 20  ion values..    
1140: 20 2a 2f 0a 20 20 20 20 62 6f 72 64 65 72 20 3d   */.    border =
1150: 20 54 6b 5f 47 65 74 33 44 42 6f 72 64 65 72 46   Tk_Get3DBorderF
1160: 72 6f 6d 4f 62 6a 28 74 6b 77 69 6e 2c 20 62 64  romObj(tkwin, bd
1170: 2d 3e 62 6f 72 64 65 72 4f 62 6a 29 3b 0a 20 20  ->borderObj);.  
1180: 20 20 54 63 6c 5f 47 65 74 49 6e 74 46 72 6f 6d    Tcl_GetIntFrom
1190: 4f 62 6a 28 4e 55 4c 4c 2c 20 62 64 2d 3e 62 6f  Obj(NULL, bd->bo
11a0: 72 64 65 72 57 69 64 74 68 4f 62 6a 2c 20 26 62  rderWidthObj, &b
11b0: 6f 72 64 65 72 57 69 64 74 68 29 3b 0a 20 20 20  orderWidth);.   
11c0: 20 54 6b 5f 47 65 74 52 65 6c 69 65 66 46 72 6f   Tk_GetReliefFro
11d0: 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 62 64 2d 3e 72  mObj(NULL, bd->r
11e0: 65 6c 69 65 66 4f 62 6a 2c 20 26 72 65 6c 69 65  eliefObj, &relie
11f0: 66 29 3b 0a 20 20 20 20 54 74 6b 5f 47 65 74 42  f);.    Ttk_GetB
1200: 75 74 74 6f 6e 44 65 66 61 75 6c 74 53 74 61 74  uttonDefaultStat
1210: 65 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 62  eFromObj(NULL, b
1220: 64 2d 3e 64 65 66 61 75 6c 74 53 74 61 74 65 4f  d->defaultStateO
1230: 62 6a 2c 20 26 64 65 66 61 75 6c 74 53 74 61 74  bj, &defaultStat
1240: 65 29 3b 0a 0a 20 20 20 20 2f 2a 0a 20 20 20 20  e);..    /*.    
1250: 20 2a 20 44 65 66 61 75 6c 74 20 72 69 6e 67 3a   * Default ring:
1260: 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 73 77 69  .     */.    swi
1270: 74 63 68 20 28 64 65 66 61 75 6c 74 53 74 61 74  tch (defaultStat
1280: 65 29 0a 20 20 20 20 7b 0a 09 63 61 73 65 20 54  e).    {..case T
1290: 54 4b 5f 42 55 54 54 4f 4e 5f 44 45 46 41 55 4c  TK_BUTTON_DEFAUL
12a0: 54 5f 44 49 53 41 42 4c 45 44 20 3a 0a 09 20 20  T_DISABLED :..  
12b0: 20 20 62 72 65 61 6b 3b 0a 09 63 61 73 65 20 54    break;..case T
12c0: 54 4b 5f 42 55 54 54 4f 4e 5f 44 45 46 41 55 4c  TK_BUTTON_DEFAUL
12d0: 54 5f 4e 4f 52 4d 41 4c 20 3a 0a 09 20 20 20 20  T_NORMAL :..    
12e0: 69 6e 73 65 74 20 2b 3d 20 35 3b 0a 09 20 20 20  inset += 5;..   
12f0: 20 62 72 65 61 6b 3b 0a 09 63 61 73 65 20 54 54   break;..case TT
1300: 4b 5f 42 55 54 54 4f 4e 5f 44 45 46 41 55 4c 54  K_BUTTON_DEFAULT
1310: 5f 41 43 54 49 56 45 20 3a 0a 20 20 20 20 20 20  _ACTIVE :.      
1320: 20 20 20 20 20 20 54 6b 5f 44 72 61 77 33 44 52        Tk_Draw3DR
1330: 65 63 74 61 6e 67 6c 65 28 74 6b 77 69 6e 2c 20  ectangle(tkwin, 
1340: 64 2c 20 62 6f 72 64 65 72 2c 0a 09 09 62 2e 78  d, border,...b.x
1350: 2b 69 6e 73 65 74 2c 20 62 2e 79 2b 69 6e 73 65  +inset, b.y+inse
1360: 74 2c 20 62 2e 77 69 64 74 68 20 2d 20 32 2a 69  t, b.width - 2*i
1370: 6e 73 65 74 2c 20 62 2e 68 65 69 67 68 74 20 2d  nset, b.height -
1380: 20 32 2a 69 6e 73 65 74 2c 0a 09 09 32 2c 20 54   2*inset,...2, T
1390: 4b 5f 52 45 4c 49 45 46 5f 46 4c 41 54 29 3b 0a  K_RELIEF_FLAT);.
13a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 65              inse
13b0: 74 20 2b 3d 20 32 3b 0a 20 20 20 20 20 20 20 20  t += 2;.        
13c0: 20 20 20 20 54 6b 5f 44 72 61 77 33 44 52 65 63      Tk_Draw3DRec
13d0: 74 61 6e 67 6c 65 28 74 6b 77 69 6e 2c 20 64 2c  tangle(tkwin, d,
13e0: 20 62 6f 72 64 65 72 2c 0a 09 09 62 2e 78 2b 69   border,...b.x+i
13f0: 6e 73 65 74 2c 20 62 2e 79 2b 69 6e 73 65 74 2c  nset, b.y+inset,
1400: 20 62 2e 77 69 64 74 68 20 2d 20 32 2a 69 6e 73   b.width - 2*ins
1410: 65 74 2c 20 62 2e 68 65 69 67 68 74 20 2d 20 32  et, b.height - 2
1420: 2a 69 6e 73 65 74 2c 0a 09 09 31 2c 20 54 4b 5f  *inset,...1, TK_
1430: 52 45 4c 49 45 46 5f 53 55 4e 4b 45 4e 29 3b 0a  RELIEF_SUNKEN);.
1440: 09 20 20 20 20 2b 2b 69 6e 73 65 74 3b 0a 20 20  .    ++inset;.  
1450: 20 20 20 20 20 20 20 20 20 20 54 6b 5f 44 72 61            Tk_Dra
1460: 77 33 44 52 65 63 74 61 6e 67 6c 65 28 74 6b 77  w3DRectangle(tkw
1470: 69 6e 2c 20 64 2c 20 62 6f 72 64 65 72 2c 0a 09  in, d, border,..
1480: 09 62 2e 78 2b 69 6e 73 65 74 2c 20 62 2e 79 2b  .b.x+inset, b.y+
1490: 69 6e 73 65 74 2c 20 62 2e 77 69 64 74 68 20 2d  inset, b.width -
14a0: 20 32 2a 69 6e 73 65 74 2c 20 62 2e 68 65 69 67   2*inset, b.heig
14b0: 68 74 20 2d 20 32 2a 69 6e 73 65 74 2c 0a 09 09  ht - 2*inset,...
14c0: 32 2c 20 54 4b 5f 52 45 4c 49 45 46 5f 46 4c 41  2, TK_RELIEF_FLA
14d0: 54 29 3b 0a 09 20 20 20 20 69 6e 73 65 74 20 2b  T);..    inset +
14e0: 3d 20 32 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b  = 2;..    break;
14f0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 0a 20  .    }..    /*. 
1500: 20 20 20 20 2a 20 33 2d 44 20 62 6f 72 64 65 72      * 3-D border
1510: 3a 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 69 66  :.     */.    if
1520: 20 28 62 6f 72 64 65 72 20 26 26 20 62 6f 72 64   (border && bord
1530: 65 72 57 69 64 74 68 20 3e 20 30 29 20 7b 0a 09  erWidth > 0) {..
1540: 54 6b 5f 44 72 61 77 33 44 52 65 63 74 61 6e 67  Tk_Draw3DRectang
1550: 6c 65 28 74 6b 77 69 6e 2c 20 64 2c 20 62 6f 72  le(tkwin, d, bor
1560: 64 65 72 2c 0a 09 20 20 20 20 62 2e 78 2b 69 6e  der,..    b.x+in
1570: 73 65 74 2c 20 62 2e 79 2b 69 6e 73 65 74 2c 20  set, b.y+inset, 
1580: 62 2e 77 69 64 74 68 20 2d 20 32 2a 69 6e 73 65  b.width - 2*inse
1590: 74 2c 20 62 2e 68 65 69 67 68 74 20 2d 20 32 2a  t, b.height - 2*
15a0: 69 6e 73 65 74 2c 0a 09 20 20 20 20 62 6f 72 64  inset,..    bord
15b0: 65 72 57 69 64 74 68 2c 72 65 6c 69 65 66 29 3b  erWidth,relief);
15c0: 0a 20 20 20 20 7d 0a 7d 0a 0a 73 74 61 74 69 63  .    }.}..static
15d0: 20 63 6f 6e 73 74 20 54 74 6b 5f 45 6c 65 6d 65   const Ttk_Eleme
15e0: 6e 74 53 70 65 63 20 42 75 74 74 6f 6e 42 6f 72  ntSpec ButtonBor
15f0: 64 65 72 45 6c 65 6d 65 6e 74 53 70 65 63 20 3d  derElementSpec =
1600: 0a 7b 0a 20 20 20 20 54 4b 5f 53 54 59 4c 45 5f  .{.    TK_STYLE_
1610: 56 45 52 53 49 4f 4e 5f 32 2c 0a 20 20 20 20 73  VERSION_2,.    s
1620: 69 7a 65 6f 66 28 42 75 74 74 6f 6e 42 6f 72 64  izeof(ButtonBord
1630: 65 72 45 6c 65 6d 65 6e 74 29 2c 0a 20 20 20 20  erElement),.    
1640: 42 75 74 74 6f 6e 42 6f 72 64 65 72 45 6c 65 6d  ButtonBorderElem
1650: 65 6e 74 4f 70 74 69 6f 6e 73 2c 0a 20 20 20 20  entOptions,.    
1660: 42 75 74 74 6f 6e 42 6f 72 64 65 72 45 6c 65 6d  ButtonBorderElem
1670: 65 6e 74 53 69 7a 65 2c 0a 20 20 20 20 42 75 74  entSize,.    But
1680: 74 6f 6e 42 6f 72 64 65 72 45 6c 65 6d 65 6e 74  tonBorderElement
1690: 44 72 61 77 0a 7d 3b 0a 0a 2f 2a 2d 2d 2d 2d 2d  Draw.};../*-----
16a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16e0: 2d 0a 20 2a 20 2b 2b 2b 20 41 72 72 6f 77 20 65  -. * +++ Arrow e
16f0: 6c 65 6d 65 6e 74 28 73 29 2e 0a 20 2a 0a 20 2a  lement(s).. *. *
1700: 20 44 72 61 77 73 20 61 20 33 2d 44 20 73 68 61   Draws a 3-D sha
1710: 64 65 64 20 74 72 69 61 6e 67 6c 65 2e 0a 20 2a  ded triangle.. *
1720: 20 63 6c 69 65 6e 74 44 61 74 61 20 69 73 20 61   clientData is a
1730: 6e 20 65 6e 75 6d 20 41 72 72 6f 77 44 69 72 65  n enum ArrowDire
1740: 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 2e 0a 20  ction pointer.. 
1750: 2a 2f 0a 0a 74 79 70 65 64 65 66 20 73 74 72 75  */..typedef stru
1760: 63 74 0a 7b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a  ct.{.    Tcl_Obj
1770: 20 2a 73 69 7a 65 4f 62 6a 3b 0a 20 20 20 20 54   *sizeObj;.    T
1780: 63 6c 5f 4f 62 6a 20 2a 62 6f 72 64 65 72 4f 62  cl_Obj *borderOb
1790: 6a 3b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  j;.    Tcl_Obj *
17a0: 62 6f 72 64 65 72 57 69 64 74 68 4f 62 6a 3b 0a  borderWidthObj;.
17b0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 6c      Tcl_Obj *rel
17c0: 69 65 66 4f 62 6a 3b 0a 7d 20 41 72 72 6f 77 45  iefObj;.} ArrowE
17d0: 6c 65 6d 65 6e 74 3b 0a 0a 73 74 61 74 69 63 20  lement;..static 
17e0: 63 6f 6e 73 74 20 54 74 6b 5f 45 6c 65 6d 65 6e  const Ttk_Elemen
17f0: 74 4f 70 74 69 6f 6e 53 70 65 63 20 41 72 72 6f  tOptionSpec Arro
1800: 77 45 6c 65 6d 65 6e 74 4f 70 74 69 6f 6e 73 5b  wElementOptions[
1810: 5d 20 3d 0a 7b 0a 20 20 20 20 7b 20 22 2d 61 72  ] =.{.    { "-ar
1820: 72 6f 77 73 69 7a 65 22 2c 20 54 4b 5f 4f 50 54  rowsize", TK_OPT
1830: 49 4f 4e 5f 50 49 58 45 4c 53 2c 20 6f 66 66 73  ION_PIXELS, offs
1840: 65 74 6f 66 28 41 72 72 6f 77 45 6c 65 6d 65 6e  etof(ArrowElemen
1850: 74 2c 73 69 7a 65 4f 62 6a 29 2c 0a 09 44 45 46  t,sizeObj),..DEF
1860: 41 55 4c 54 5f 41 52 52 4f 57 5f 53 49 5a 45 20  AULT_ARROW_SIZE 
1870: 7d 2c 0a 20 20 20 20 7b 20 22 2d 62 61 63 6b 67  },.    { "-backg
1880: 72 6f 75 6e 64 22 2c 20 54 4b 5f 4f 50 54 49 4f  round", TK_OPTIO
1890: 4e 5f 42 4f 52 44 45 52 2c 20 6f 66 66 73 65 74  N_BORDER, offset
18a0: 6f 66 28 41 72 72 6f 77 45 6c 65 6d 65 6e 74 2c  of(ArrowElement,
18b0: 62 6f 72 64 65 72 4f 62 6a 29 2c 0a 20 20 20 20  borderObj),.    
18c0: 09 44 45 46 41 55 4c 54 5f 42 41 43 4b 47 52 4f  .DEFAULT_BACKGRO
18d0: 55 4e 44 20 7d 2c 0a 20 20 20 20 7b 20 22 2d 62  UND },.    { "-b
18e0: 6f 72 64 65 72 77 69 64 74 68 22 2c 20 54 4b 5f  orderwidth", TK_
18f0: 4f 50 54 49 4f 4e 5f 50 49 58 45 4c 53 2c 20 6f  OPTION_PIXELS, o
1900: 66 66 73 65 74 6f 66 28 41 72 72 6f 77 45 6c 65  ffsetof(ArrowEle
1910: 6d 65 6e 74 2c 62 6f 72 64 65 72 57 69 64 74 68  ment,borderWidth
1920: 4f 62 6a 29 2c 0a 20 20 20 20 09 44 45 46 41 55  Obj),.    .DEFAU
1930: 4c 54 5f 42 4f 52 44 45 52 57 49 44 54 48 20 7d  LT_BORDERWIDTH }
1940: 2c 0a 20 20 20 20 7b 20 22 2d 72 65 6c 69 65 66  ,.    { "-relief
1950: 22 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 52 45 4c  ", TK_OPTION_REL
1960: 49 45 46 2c 20 6f 66 66 73 65 74 6f 66 28 41 72  IEF, offsetof(Ar
1970: 72 6f 77 45 6c 65 6d 65 6e 74 2c 72 65 6c 69 65  rowElement,relie
1980: 66 4f 62 6a 29 2c 22 72 61 69 73 65 64 22 20 7d  fObj),"raised" }
1990: 2c 0a 20 20 20 20 7b 20 4e 55 4c 4c 2c 20 54 4b  ,.    { NULL, TK
19a0: 5f 4f 50 54 49 4f 4e 5f 42 4f 4f 4c 45 41 4e 2c  _OPTION_BOOLEAN,
19b0: 20 30 2c 20 4e 55 4c 4c 20 7d 0a 7d 3b 0a 0a 73   0, NULL }.};..s
19c0: 74 61 74 69 63 20 76 6f 69 64 20 41 72 72 6f 77  tatic void Arrow
19d0: 45 6c 65 6d 65 6e 74 53 69 7a 65 28 0a 20 20 20  ElementSize(.   
19e0: 20 76 6f 69 64 20 2a 64 75 6d 6d 79 2c 20 76 6f   void *dummy, vo
19f0: 69 64 20 2a 65 6c 65 6d 65 6e 74 52 65 63 6f 72  id *elementRecor
1a00: 64 2c 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77  d, Tk_Window tkw
1a10: 69 6e 2c 0a 20 20 20 20 69 6e 74 20 2a 77 69 64  in,.    int *wid
1a20: 74 68 50 74 72 2c 20 69 6e 74 20 2a 68 65 69 67  thPtr, int *heig
1a30: 68 74 50 74 72 2c 20 54 74 6b 5f 50 61 64 64 69  htPtr, Ttk_Paddi
1a40: 6e 67 20 2a 70 61 64 64 69 6e 67 50 74 72 29 0a  ng *paddingPtr).
1a50: 7b 0a 20 20 20 20 41 72 72 6f 77 45 6c 65 6d 65  {.    ArrowEleme
1a60: 6e 74 20 2a 61 72 72 6f 77 20 3d 20 28 41 72 72  nt *arrow = (Arr
1a70: 6f 77 45 6c 65 6d 65 6e 74 20 2a 29 65 6c 65 6d  owElement *)elem
1a80: 65 6e 74 52 65 63 6f 72 64 3b 0a 20 20 20 20 69  entRecord;.    i
1a90: 6e 74 20 73 69 7a 65 20 3d 20 31 32 3b 0a 20 20  nt size = 12;.  
1aa0: 20 20 28 76 6f 69 64 29 64 75 6d 6d 79 3b 0a 20    (void)dummy;. 
1ab0: 20 20 20 28 76 6f 69 64 29 70 61 64 64 69 6e 67     (void)padding
1ac0: 50 74 72 3b 0a 0a 20 20 20 20 54 6b 5f 47 65 74  Ptr;..    Tk_Get
1ad0: 50 69 78 65 6c 73 46 72 6f 6d 4f 62 6a 28 4e 55  PixelsFromObj(NU
1ae0: 4c 4c 2c 20 74 6b 77 69 6e 2c 20 61 72 72 6f 77  LL, tkwin, arrow
1af0: 2d 3e 73 69 7a 65 4f 62 6a 2c 20 26 73 69 7a 65  ->sizeObj, &size
1b00: 29 3b 0a 20 20 20 20 2a 77 69 64 74 68 50 74 72  );.    *widthPtr
1b10: 20 3d 20 2a 68 65 69 67 68 74 50 74 72 20 3d 20   = *heightPtr = 
1b20: 73 69 7a 65 3b 0a 7d 0a 0a 73 74 61 74 69 63 20  size;.}..static 
1b30: 76 6f 69 64 20 41 72 72 6f 77 45 6c 65 6d 65 6e  void ArrowElemen
1b40: 74 44 72 61 77 28 0a 20 20 20 20 76 6f 69 64 20  tDraw(.    void 
1b50: 2a 63 6c 69 65 6e 74 44 61 74 61 2c 20 76 6f 69  *clientData, voi
1b60: 64 20 2a 65 6c 65 6d 65 6e 74 52 65 63 6f 72 64  d *elementRecord
1b70: 2c 20 54 6b 5f 57 69 6e 64 6f 77 20 74 6b 77 69  , Tk_Window tkwi
1b80: 6e 2c 0a 20 20 20 20 44 72 61 77 61 62 6c 65 20  n,.    Drawable 
1b90: 64 2c 20 54 74 6b 5f 42 6f 78 20 62 2c 20 75 6e  d, Ttk_Box b, un
1ba0: 73 69 67 6e 65 64 20 69 6e 74 20 73 74 61 74 65  signed int state
1bb0: 29 0a 7b 0a 09 41 72 72 6f 77 44 69 72 65 63 74  ).{..ArrowDirect
1bc0: 69 6f 6e 20 64 69 72 65 63 74 69 6f 6e 20 3d 20  ion direction = 
1bd0: 28 41 72 72 6f 77 44 69 72 65 63 74 69 6f 6e 29  (ArrowDirection)
1be0: 50 54 52 32 49 4e 54 28 63 6c 69 65 6e 74 44 61  PTR2INT(clientDa
1bf0: 74 61 29 3b 0a 20 20 20 20 41 72 72 6f 77 45 6c  ta);.    ArrowEl
1c00: 65 6d 65 6e 74 20 2a 61 72 72 6f 77 20 3d 20 28  ement *arrow = (
1c10: 41 72 72 6f 77 45 6c 65 6d 65 6e 74 20 2a 29 65  ArrowElement *)e
1c20: 6c 65 6d 65 6e 74 52 65 63 6f 72 64 3b 0a 20 20  lementRecord;.  
1c30: 20 20 54 6b 5f 33 44 42 6f 72 64 65 72 20 62 6f    Tk_3DBorder bo
1c40: 72 64 65 72 20 3d 20 54 6b 5f 47 65 74 33 44 42  rder = Tk_Get3DB
1c50: 6f 72 64 65 72 46 72 6f 6d 4f 62 6a 28 74 6b 77  orderFromObj(tkw
1c60: 69 6e 2c 20 61 72 72 6f 77 2d 3e 62 6f 72 64 65  in, arrow->borde
1c70: 72 4f 62 6a 29 3b 0a 20 20 20 20 69 6e 74 20 62  rObj);.    int b
1c80: 6f 72 64 65 72 57 69 64 74 68 20 3d 20 32 3b 0a  orderWidth = 2;.
1c90: 20 20 20 20 69 6e 74 20 72 65 6c 69 65 66 20 3d      int relief =
1ca0: 20 54 4b 5f 52 45 4c 49 45 46 5f 52 41 49 53 45   TK_RELIEF_RAISE
1cb0: 44 3b 0a 20 20 20 20 69 6e 74 20 73 69 7a 65 20  D;.    int size 
1cc0: 3d 20 62 2e 77 69 64 74 68 20 3c 20 62 2e 68 65  = b.width < b.he
1cd0: 69 67 68 74 20 3f 20 62 2e 77 69 64 74 68 20 3a  ight ? b.width :
1ce0: 20 62 2e 68 65 69 67 68 74 3b 0a 20 20 20 20 58   b.height;.    X
1cf0: 50 6f 69 6e 74 20 70 6f 69 6e 74 73 5b 33 5d 3b  Point points[3];
1d00: 0a 20 20 20 20 28 76 6f 69 64 29 73 74 61 74 65  .    (void)state
1d10: 3b 0a 0a 20 20 20 20 54 6b 5f 47 65 74 50 69 78  ;..    Tk_GetPix
1d20: 65 6c 73 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c  elsFromObj(NULL,
1d30: 20 74 6b 77 69 6e 2c 20 61 72 72 6f 77 2d 3e 62   tkwin, arrow->b
1d40: 6f 72 64 65 72 57 69 64 74 68 4f 62 6a 2c 20 26  orderWidthObj, &
1d50: 62 6f 72 64 65 72 57 69 64 74 68 29 3b 0a 20 20  borderWidth);.  
1d60: 20 20 54 6b 5f 47 65 74 52 65 6c 69 65 66 46 72    Tk_GetReliefFr
1d70: 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 61 72 72 6f  omObj(NULL, arro
1d80: 77 2d 3e 72 65 6c 69 65 66 4f 62 6a 2c 20 26 72  w->reliefObj, &r
1d90: 65 6c 69 65 66 29 3b 0a 0a 0a 20 20 20 20 2f 2a  elief);...    /*
1da0: 0a 20 20 20 20 20 2a 20 40 40 40 20 54 68 65 72  .     * @@@ Ther
1db0: 65 20 61 72 65 20 6f 66 66 2d 62 79 2d 6f 6e 65  e are off-by-one
1dc0: 20 70 69 78 65 6c 20 65 72 72 6f 72 73 20 69 6e   pixel errors in
1dd0: 20 74 68 65 20 77 61 79 20 74 68 65 73 65 20 61   the way these a
1de0: 72 65 20 64 72 61 77 6e 3b 0a 20 20 20 20 20 2a  re drawn;.     *
1df0: 20 40 40 40 20 6e 65 65 64 20 74 6f 20 74 61 6b   @@@ need to tak
1e00: 65 20 61 20 6c 6f 6f 6b 20 61 74 20 54 6b 5f 46  e a look at Tk_F
1e10: 69 6c 6c 33 44 50 6f 6c 79 67 6f 6e 20 61 6e 64  ill3DPolygon and
1e20: 20 58 31 31 20 74 6f 20 66 69 6e 64 20 74 68 65   X11 to find the
1e30: 0a 20 20 20 20 20 2a 20 40 40 40 20 65 78 61 63  .     * @@@ exac
1e40: 74 20 72 75 6c 65 73 2e 0a 20 20 20 20 20 2a 2f  t rules..     */
1e50: 0a 20 20 20 20 73 77 69 74 63 68 20 28 64 69 72  .    switch (dir
1e60: 65 63 74 69 6f 6e 29 0a 20 20 20 20 7b 0a 09 63  ection).    {..c
1e70: 61 73 65 20 41 52 52 4f 57 5f 55 50 3a 0a 09 20  ase ARROW_UP:.. 
1e80: 20 20 20 70 6f 69 6e 74 73 5b 32 5d 2e 78 20 3d     points[2].x =
1e90: 20 62 2e 78 3b 20 09 09 70 6f 69 6e 74 73 5b 32   b.x; ..points[2
1ea0: 5d 2e 79 20 3d 20 62 2e 79 20 2b 20 73 69 7a 65  ].y = b.y + size
1eb0: 3b 0a 09 20 20 20 20 70 6f 69 6e 74 73 5b 31 5d  ;..    points[1]
1ec0: 2e 78 20 3d 20 62 2e 78 20 2b 20 73 69 7a 65 2f  .x = b.x + size/
1ed0: 32 3b 09 70 6f 69 6e 74 73 5b 31 5d 2e 79 20 3d  2;.points[1].y =
1ee0: 20 62 2e 79 3b 0a 09 20 20 20 20 70 6f 69 6e 74   b.y;..    point
1ef0: 73 5b 30 5d 2e 78 20 3d 20 62 2e 78 20 2b 20 73  s[0].x = b.x + s
1f00: 69 7a 65 3b 09 70 6f 69 6e 74 73 5b 30 5d 2e 79  ize;.points[0].y
1f10: 20 3d 20 62 2e 79 20 2b 20 73 69 7a 65 3b 0a 09   = b.y + size;..
1f20: 20 20 20 20 62 72 65 61 6b 3b 0a 09 63 61 73 65      break;..case
1f30: 20 41 52 52 4f 57 5f 44 4f 57 4e 3a 0a 09 20 20   ARROW_DOWN:..  
1f40: 20 20 70 6f 69 6e 74 73 5b 30 5d 2e 78 20 3d 20    points[0].x = 
1f50: 62 2e 78 3b 20 09 09 70 6f 69 6e 74 73 5b 30 5d  b.x; ..points[0]
1f60: 2e 79 20 3d 20 62 2e 79 3b 0a 09 20 20 20 20 70  .y = b.y;..    p
1f70: 6f 69 6e 74 73 5b 31 5d 2e 78 20 3d 20 62 2e 78  oints[1].x = b.x
1f80: 20 2b 20 73 69 7a 65 2f 32 3b 09 70 6f 69 6e 74   + size/2;.point
1f90: 73 5b 31 5d 2e 79 20 3d 20 62 2e 79 20 2b 20 73  s[1].y = b.y + s
1fa0: 69 7a 65 3b 0a 09 20 20 20 20 70 6f 69 6e 74 73  ize;..    points
1fb0: 5b 32 5d 2e 78 20 3d 20 62 2e 78 20 2b 20 73 69  [2].x = b.x + si
1fc0: 7a 65 3b 09 70 6f 69 6e 74 73 5b 32 5d 2e 79 20  ze;.points[2].y 
1fd0: 3d 20 62 2e 79 3b 0a 09 20 20 20 20 62 72 65 61  = b.y;..    brea
1fe0: 6b 3b 0a 09 63 61 73 65 20 41 52 52 4f 57 5f 4c  k;..case ARROW_L
1ff0: 45 46 54 3a 0a 09 20 20 20 20 70 6f 69 6e 74 73  EFT:..    points
2000: 5b 30 5d 2e 78 20 3d 20 62 2e 78 3b 20 09 09 70  [0].x = b.x; ..p
2010: 6f 69 6e 74 73 5b 30 5d 2e 79 20 3d 20 62 2e 79  oints[0].y = b.y
2020: 20 2b 20 73 69 7a 65 20 2f 20 32 3b 0a 09 20 20   + size / 2;..  
2030: 20 20 70 6f 69 6e 74 73 5b 31 5d 2e 78 20 3d 20    points[1].x = 
2040: 62 2e 78 20 2b 20 73 69 7a 65 3b 09 70 6f 69 6e  b.x + size;.poin
2050: 74 73 5b 31 5d 2e 79 20 3d 20 62 2e 79 20 2b 20  ts[1].y = b.y + 
2060: 73 69 7a 65 3b 0a 09 20 20 20 20 70 6f 69 6e 74  size;..    point
2070: 73 5b 32 5d 2e 78 20 3d 20 62 2e 78 20 2b 20 73  s[2].x = b.x + s
2080: 69 7a 65 3b 09 70 6f 69 6e 74 73 5b 32 5d 2e 79  ize;.points[2].y
2090: 20 3d 20 62 2e 79 3b 0a 09 20 20 20 20 62 72 65   = b.y;..    bre
20a0: 61 6b 3b 0a 09 63 61 73 65 20 41 52 52 4f 57 5f  ak;..case ARROW_
20b0: 52 49 47 48 54 3a 0a 09 20 20 20 20 70 6f 69 6e  RIGHT:..    poin
20c0: 74 73 5b 30 5d 2e 78 20 3d 20 62 2e 78 20 2b 20  ts[0].x = b.x + 
20d0: 73 69 7a 65 3b 09 70 6f 69 6e 74 73 5b 30 5d 2e  size;.points[0].
20e0: 79 20 3d 20 62 2e 79 20 2b 20 73 69 7a 65 20 2f  y = b.y + size /
20f0: 20 32 3b 0a 09 20 20 20 20 70 6f 69 6e 74 73 5b   2;..    points[
2100: 31 5d 2e 78 20 3d 20 62 2e 78 3b 09 09 70 6f 69  1].x = b.x;..poi
2110: 6e 74 73 5b 31 5d 2e 79 20 3d 20 62 2e 79 3b 0a  nts[1].y = b.y;.
2120: 09 20 20 20 20 70 6f 69 6e 74 73 5b 32 5d 2e 78  .    points[2].x
2130: 20 3d 20 62 2e 78 3b 09 09 70 6f 69 6e 74 73 5b   = b.x;..points[
2140: 32 5d 2e 79 20 3d 20 62 2e 79 20 2b 20 73 69 7a  2].y = b.y + siz
2150: 65 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 20  e;..    break;. 
2160: 20 20 20 7d 0a 0a 20 20 20 20 54 6b 5f 46 69 6c     }..    Tk_Fil
2170: 6c 33 44 50 6f 6c 79 67 6f 6e 28 74 6b 77 69 6e  l3DPolygon(tkwin
2180: 2c 20 64 2c 20 62 6f 72 64 65 72 2c 20 70 6f 69  , d, border, poi
2190: 6e 74 73 2c 20 33 2c 20 62 6f 72 64 65 72 57 69  nts, 3, borderWi
21a0: 64 74 68 2c 20 72 65 6c 69 65 66 29 3b 0a 7d 0a  dth, relief);.}.
21b0: 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 54 74  .static const Tt
21c0: 6b 5f 45 6c 65 6d 65 6e 74 53 70 65 63 20 41 72  k_ElementSpec Ar
21d0: 72 6f 77 45 6c 65 6d 65 6e 74 53 70 65 63 20 3d  rowElementSpec =
21e0: 0a 7b 0a 20 20 20 20 54 4b 5f 53 54 59 4c 45 5f  .{.    TK_STYLE_
21f0: 56 45 52 53 49 4f 4e 5f 32 2c 0a 20 20 20 20 73  VERSION_2,.    s
2200: 69 7a 65 6f 66 28 41 72 72 6f 77 45 6c 65 6d 65  izeof(ArrowEleme
2210: 6e 74 29 2c 0a 20 20 20 20 41 72 72 6f 77 45 6c  nt),.    ArrowEl
2220: 65 6d 65 6e 74 4f 70 74 69 6f 6e 73 2c 0a 20 20  ementOptions,.  
2230: 20 20 41 72 72 6f 77 45 6c 65 6d 65 6e 74 53 69    ArrowElementSi
2240: 7a 65 2c 0a 20 20 20 20 41 72 72 6f 77 45 6c 65  ze,.    ArrowEle
2250: 6d 65 6e 74 44 72 61 77 0a 7d 3b 0a 0a 0a 2f 2a  mentDraw.};.../*
2260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22a0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 2b 2b 2b 20  --------. * +++ 
22b0: 53 61 73 68 20 65 6c 65 6d 65 6e 74 20 28 66 6f  Sash element (fo
22c0: 72 20 74 74 6b 3a 3a 70 61 6e 65 64 77 69 6e 64  r ttk::panedwind
22d0: 6f 77 29 0a 20 2a 0a 20 2a 20 4e 4f 54 45 53 3a  ow). *. * NOTES:
22e0: 0a 20 2a 0a 20 2a 20 70 61 6e 65 64 77 69 6e 64  . *. * panedwind
22f0: 6f 77 73 20 77 69 74 68 20 2d 6f 72 69 65 6e 74  ows with -orient
2300: 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 75 73 65 20   horizontal use 
2310: 76 65 72 74 69 63 61 6c 20 73 61 73 68 65 73 2c  vertical sashes,
2320: 20 61 6e 64 20 76 69 63 65 20 76 65 72 73 61 2e   and vice versa.
2330: 0a 20 2a 0a 20 2a 20 49 6e 74 65 72 70 72 65 74  . *. * Interpret
2340: 61 74 69 6f 6e 20 6f 66 20 2d 73 61 73 68 72 65  ation of -sashre
2350: 6c 69 65 66 20 27 67 72 6f 6f 76 65 27 20 61 6e  lief 'groove' an
2360: 64 20 27 72 69 64 67 65 27 20 61 72 65 0a 20 2a  d 'ridge' are. *
2370: 20 73 77 61 70 70 65 64 20 77 72 74 2e 20 74 68   swapped wrt. th
2380: 65 20 63 6f 72 65 20 70 61 6e 65 64 77 69 6e 64  e core panedwind
2390: 6f 77 2c 20 77 68 69 63 68 20 28 49 20 74 68 69  ow, which (I thi
23a0: 6e 6b 29 20 68 61 73 20 74 68 65 6d 20 62 61 63  nk) has them bac
23b0: 6b 77 61 72 64 73 2e 0a 20 2a 0a 20 2a 20 44 65  kwards.. *. * De
23c0: 66 61 75 6c 74 20 2d 73 61 73 68 72 65 6c 69 65  fault -sashrelie
23d0: 66 20 69 73 20 73 75 6e 6b 65 6e 3b 20 74 68 65  f is sunken; the
23e0: 20 63 6f 72 65 20 70 61 6e 65 64 77 69 6e 64 6f   core panedwindo
23f0: 77 20 68 61 73 20 64 65 66 61 75 6c 74 0a 20 2a  w has default. *
2400: 20 2d 73 61 73 68 72 65 6c 69 65 66 20 72 61 69   -sashrelief rai
2410: 73 65 64 2c 20 62 75 74 20 74 68 61 74 20 6c 6f  sed, but that lo
2420: 6f 6b 73 20 77 72 6f 6e 67 20 74 6f 20 6d 65 2e  oks wrong to me.
2430: 0a 20 2a 2f 0a 0a 74 79 70 65 64 65 66 20 73 74  . */..typedef st
2440: 72 75 63 74 20 7b 0a 20 20 20 20 54 63 6c 5f 4f  ruct {.    Tcl_O
2450: 62 6a 20 2a 62 6f 72 64 65 72 4f 62 6a 3b 20 09  bj *borderObj; .
2460: 2f 2a 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f  /* background co
2470: 6c 6f 72 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 4f  lor */.    Tcl_O
2480: 62 6a 20 2a 73 61 73 68 52 65 6c 69 65 66 4f 62  bj *sashReliefOb
2490: 6a 3b 09 2f 2a 20 73 61 73 68 20 72 65 6c 69 65  j;./* sash relie
24a0: 66 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 4f 62 6a  f */.    Tcl_Obj
24b0: 20 2a 73 61 73 68 54 68 69 63 6b 6e 65 73 73 4f   *sashThicknessO
24c0: 62 6a 3b 09 2f 2a 20 6f 76 65 72 61 6c 6c 20 74  bj;./* overall t
24d0: 68 69 63 6b 6e 65 73 73 20 6f 66 20 73 61 73 68  hickness of sash
24e0: 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 20   */.    Tcl_Obj 
24f0: 2a 73 61 73 68 50 61 64 4f 62 6a 3b 09 2f 2a 20  *sashPadObj;./* 
2500: 70 61 64 64 69 6e 67 20 6f 6e 20 65 69 74 68 65  padding on eithe
2510: 72 20 73 69 64 65 20 6f 66 20 68 61 6e 64 6c 65  r side of handle
2520: 20 2a 2f 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 20   */.    Tcl_Obj 
2530: 2a 68 61 6e 64 6c 65 53 69 7a 65 4f 62 6a 3b 09  *handleSizeObj;.
2540: 2f 2a 20 68 61 6e 64 6c 65 20 77 69 64 74 68 20  /* handle width 
2550: 61 6e 64 20 68 65 69 67 68 74 20 2a 2f 0a 20 20  and height */.  
2560: 20 20 54 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c    Tcl_Obj *handl
2570: 65 50 61 64 4f 62 6a 3b 09 2f 2a 20 68 61 6e 64  ePadObj;./* hand
2580: 6c 65 27 73 20 64 69 73 74 61 6e 63 65 20 66 72  le's distance fr
2590: 6f 6d 20 65 64 67 65 20 2a 2f 0a 7d 20 53 61 73  om edge */.} Sas
25a0: 68 45 6c 65 6d 65 6e 74 3b 0a 0a 73 74 61 74 69  hElement;..stati
25b0: 63 20 63 6f 6e 73 74 20 54 74 6b 5f 45 6c 65 6d  c const Ttk_Elem
25c0: 65 6e 74 4f 70 74 69 6f 6e 53 70 65 63 20 53 61  entOptionSpec Sa
25d0: 73 68 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b 0a  shOptions[] = {.
25e0: 20 20 20 20 7b 20 22 2d 62 61 63 6b 67 72 6f 75      { "-backgrou
25f0: 6e 64 22 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 42  nd", TK_OPTION_B
2600: 4f 52 44 45 52 2c 0a 09 6f 66 66 73 65 74 6f 66  ORDER,..offsetof
2610: 28 53 61 73 68 45 6c 65 6d 65 6e 74 2c 62 6f 72  (SashElement,bor
2620: 64 65 72 4f 62 6a 29 2c 20 44 45 46 41 55 4c 54  derObj), DEFAULT
2630: 5f 42 41 43 4b 47 52 4f 55 4e 44 20 7d 2c 0a 20  _BACKGROUND },. 
2640: 20 20 20 7b 20 22 2d 73 61 73 68 72 65 6c 69 65     { "-sashrelie
2650: 66 22 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 52 45  f", TK_OPTION_RE
2660: 4c 49 45 46 2c 0a 09 6f 66 66 73 65 74 6f 66 28  LIEF,..offsetof(
2670: 53 61 73 68 45 6c 65 6d 65 6e 74 2c 73 61 73 68  SashElement,sash
2680: 52 65 6c 69 65 66 4f 62 6a 29 2c 20 22 73 75 6e  ReliefObj), "sun
2690: 6b 65 6e 22 20 7d 2c 0a 20 20 20 20 7b 20 22 2d  ken" },.    { "-
26a0: 73 61 73 68 74 68 69 63 6b 6e 65 73 73 22 2c 20  sashthickness", 
26b0: 54 4b 5f 4f 50 54 49 4f 4e 5f 50 49 58 45 4c 53  TK_OPTION_PIXELS
26c0: 2c 0a 09 6f 66 66 73 65 74 6f 66 28 53 61 73 68  ,..offsetof(Sash
26d0: 45 6c 65 6d 65 6e 74 2c 73 61 73 68 54 68 69 63  Element,sashThic
26e0: 6b 6e 65 73 73 4f 62 6a 29 2c 20 22 36 22 20 7d  knessObj), "6" }
26f0: 2c 0a 20 20 20 20 7b 20 22 2d 73 61 73 68 70 61  ,.    { "-sashpa
2700: 64 22 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 50 49  d", TK_OPTION_PI
2710: 58 45 4c 53 2c 0a 09 6f 66 66 73 65 74 6f 66 28  XELS,..offsetof(
2720: 53 61 73 68 45 6c 65 6d 65 6e 74 2c 73 61 73 68  SashElement,sash
2730: 50 61 64 4f 62 6a 29 2c 20 22 32 22 20 7d 2c 0a  PadObj), "2" },.
2740: 20 20 20 20 7b 20 22 2d 68 61 6e 64 6c 65 73 69      { "-handlesi
2750: 7a 65 22 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 50  ze", TK_OPTION_P
2760: 49 58 45 4c 53 2c 0a 09 6f 66 66 73 65 74 6f 66  IXELS,..offsetof
2770: 28 53 61 73 68 45 6c 65 6d 65 6e 74 2c 68 61 6e  (SashElement,han
2780: 64 6c 65 53 69 7a 65 4f 62 6a 29 2c 20 22 38 22  dleSizeObj), "8"
2790: 20 7d 2c 0a 20 20 20 20 7b 20 22 2d 68 61 6e 64   },.    { "-hand
27a0: 6c 65 70 61 64 22 2c 20 54 4b 5f 4f 50 54 49 4f  lepad", TK_OPTIO
27b0: 4e 5f 50 49 58 45 4c 53 2c 0a 09 6f 66 66 73 65  N_PIXELS,..offse
27c0: 74 6f 66 28 53 61 73 68 45 6c 65 6d 65 6e 74 2c  tof(SashElement,
27d0: 68 61 6e 64 6c 65 50 61 64 4f 62 6a 29 2c 20 22  handlePadObj), "
27e0: 38 22 20 7d 2c 0a 20 20 20 20 7b 20 4e 55 4c 4c  8" },.    { NULL
27f0: 2c 20 54 4b 5f 4f 50 54 49 4f 4e 5f 42 4f 4f 4c  , TK_OPTION_BOOL
2800: 45 41 4e 2c 20 30 2c 20 4e 55 4c 4c 20 7d 0a 7d  EAN, 0, NULL }.}
2810: 3b 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 53  ;..static void S
2820: 61 73 68 45 6c 65 6d 65 6e 74 53 69 7a 65 28 0a  ashElementSize(.
2830: 20 20 20 20 76 6f 69 64 20 2a 63 6c 69 65 6e 74      void *client
2840: 44 61 74 61 2c 20 76 6f 69 64 20 2a 65 6c 65 6d  Data, void *elem
2850: 65 6e 74 52 65 63 6f 72 64 2c 20 54 6b 5f 57 69  entRecord, Tk_Wi
2860: 6e 64 6f 77 20 74 6b 77 69 6e 2c 0a 20 20 20 20  ndow tkwin,.    
2870: 69 6e 74 20 2a 77 69 64 74 68 50 74 72 2c 20 69  int *widthPtr, i
2880: 6e 74 20 2a 68 65 69 67 68 74 50 74 72 2c 20 54  nt *heightPtr, T
2890: 74 6b 5f 50 61 64 64 69 6e 67 20 2a 70 61 64 64  tk_Padding *padd
28a0: 69 6e 67 50 74 72 29 0a 7b 0a 20 20 20 20 53 61  ingPtr).{.    Sa
28b0: 73 68 45 6c 65 6d 65 6e 74 20 2a 73 61 73 68 20  shElement *sash 
28c0: 3d 20 28 53 61 73 68 45 6c 65 6d 65 6e 74 20 2a  = (SashElement *
28d0: 29 65 6c 65 6d 65 6e 74 52 65 63 6f 72 64 3b 0a  )elementRecord;.
28e0: 20 20 20 20 69 6e 74 20 73 61 73 68 50 61 64 20      int sashPad 
28f0: 3d 20 32 2c 20 73 61 73 68 54 68 69 63 6b 6e 65  = 2, sashThickne
2900: 73 73 20 3d 20 36 2c 20 68 61 6e 64 6c 65 53 69  ss = 6, handleSi
2910: 7a 65 20 3d 20 38 3b 0a 20 20 20 20 54 74 6b 5f  ze = 8;.    Ttk_
2920: 4f 72 69 65 6e 74 20 6f 72 69 65 6e 74 20 3d 20  Orient orient = 
2930: 28 54 74 6b 5f 4f 72 69 65 6e 74 29 50 54 52 32  (Ttk_Orient)PTR2
2940: 49 4e 54 28 63 6c 69 65 6e 74 44 61 74 61 29 3b  INT(clientData);
2950: 0a 20 20 20 20 28 76 6f 69 64 29 70 61 64 64 69  .    (void)paddi
2960: 6e 67 50 74 72 3b 0a 20 20 20 20 28 76 6f 69 64  ngPtr;.    (void
2970: 29 70 61 64 64 69 6e 67 50 74 72 3b 0a 0a 20 20  )paddingPtr;..  
2980: 20 20 54 6b 5f 47 65 74 50 69 78 65 6c 73 46 72    Tk_GetPixelsFr
2990: 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 74 6b 77 69  omObj(NULL, tkwi
29a0: 6e 2c 20 73 61 73 68 2d 3e 73 61 73 68 54 68 69  n, sash->sashThi
29b0: 63 6b 6e 65 73 73 4f 62 6a 2c 20 26 73 61 73 68  cknessObj, &sash
29c0: 54 68 69 63 6b 6e 65 73 73 29 3b 0a 20 20 20 20  Thickness);.    
29d0: 54 6b 5f 47 65 74 50 69 78 65 6c 73 46 72 6f 6d  Tk_GetPixelsFrom
29e0: 4f 62 6a 28 4e 55 4c 4c 2c 20 74 6b 77 69 6e 2c  Obj(NULL, tkwin,
29f0: 20 73 61 73 68 2d 3e 68 61 6e 64 6c 65 53 69 7a   sash->handleSiz
2a00: 65 4f 62 6a 2c 20 26 68 61 6e 64 6c 65 53 69 7a  eObj, &handleSiz
2a10: 65 29 3b 0a 20 20 20 20 54 6b 5f 47 65 74 50 69  e);.    Tk_GetPi
2a20: 78 65 6c 73 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c  xelsFromObj(NULL
2a30: 2c 20 74 6b 77 69 6e 2c 20 73 61 73 68 2d 3e 73  , tkwin, sash->s
2a40: 61 73 68 50 61 64 4f 62 6a 2c 20 26 73 61 73 68  ashPadObj, &sash
2a50: 50 61 64 29 3b 0a 0a 20 20 20 20 69 66 20 28 73  Pad);..    if (s
2a60: 61 73 68 54 68 69 63 6b 6e 65 73 73 20 3c 20 68  ashThickness < h
2a70: 61 6e 64 6c 65 53 69 7a 65 20 2b 20 32 2a 73 61  andleSize + 2*sa
2a80: 73 68 50 61 64 29 0a 09 73 61 73 68 54 68 69 63  shPad)..sashThic
2a90: 6b 6e 65 73 73 20 3d 20 68 61 6e 64 6c 65 53 69  kness = handleSi
2aa0: 7a 65 20 2b 20 32 2a 73 61 73 68 50 61 64 3b 0a  ze + 2*sashPad;.
2ab0: 0a 20 20 20 20 69 66 20 28 6f 72 69 65 6e 74 20  .    if (orient 
2ac0: 3d 3d 20 54 54 4b 5f 4f 52 49 45 4e 54 5f 48 4f  == TTK_ORIENT_HO
2ad0: 52 49 5a 4f 4e 54 41 4c 29 0a 09 2a 68 65 69 67  RIZONTAL)..*heig
2ae0: 68 74 50 74 72 20 3d 20 73 61 73 68 54 68 69 63  htPtr = sashThic
2af0: 6b 6e 65 73 73 3b 0a 20 20 20 20 65 6c 73 65 0a  kness;.    else.
2b00: 09 2a 77 69 64 74 68 50 74 72 20 3d 20 73 61 73  .*widthPtr = sas
2b10: 68 54 68 69 63 6b 6e 65 73 73 3b 0a 7d 0a 0a 73  hThickness;.}..s
2b20: 74 61 74 69 63 20 76 6f 69 64 20 53 61 73 68 45  tatic void SashE
2b30: 6c 65 6d 65 6e 74 44 72 61 77 28 0a 20 20 20 20  lementDraw(.    
2b40: 76 6f 69 64 20 2a 63 6c 69 65 6e 74 44 61 74 61  void *clientData
2b50: 2c 20 76 6f 69 64 20 2a 65 6c 65 6d 65 6e 74 52  , void *elementR
2b60: 65 63 6f 72 64 2c 20 54 6b 5f 57 69 6e 64 6f 77  ecord, Tk_Window
2b70: 20 74 6b 77 69 6e 2c 0a 20 20 20 20 44 72 61 77   tkwin,.    Draw
2b80: 61 62 6c 65 20 64 2c 20 54 74 6b 5f 42 6f 78 20  able d, Ttk_Box 
2b90: 62 2c 20 54 74 6b 5f 53 74 61 74 65 20 73 74 61  b, Ttk_State sta
2ba0: 74 65 29 0a 7b 0a 20 20 20 20 53 61 73 68 45 6c  te).{.    SashEl
2bb0: 65 6d 65 6e 74 20 2a 73 61 73 68 20 3d 20 28 53  ement *sash = (S
2bc0: 61 73 68 45 6c 65 6d 65 6e 74 20 2a 29 65 6c 65  ashElement *)ele
2bd0: 6d 65 6e 74 52 65 63 6f 72 64 3b 0a 20 20 20 20  mentRecord;.    
2be0: 54 6b 5f 33 44 42 6f 72 64 65 72 20 62 6f 72 64  Tk_3DBorder bord
2bf0: 65 72 20 3d 20 54 6b 5f 47 65 74 33 44 42 6f 72  er = Tk_Get3DBor
2c00: 64 65 72 46 72 6f 6d 4f 62 6a 28 74 6b 77 69 6e  derFromObj(tkwin
2c10: 2c 20 73 61 73 68 2d 3e 62 6f 72 64 65 72 4f 62  , sash->borderOb
2c20: 6a 29 3b 0a 20 20 20 20 47 43 20 67 63 31 2c 67  j);.    GC gc1,g
2c30: 63 32 3b 0a 20 20 20 20 69 6e 74 20 72 65 6c 69  c2;.    int reli
2c40: 65 66 20 3d 20 54 4b 5f 52 45 4c 49 45 46 5f 52  ef = TK_RELIEF_R
2c50: 41 49 53 45 44 3b 0a 20 20 20 20 69 6e 74 20 68  AISED;.    int h
2c60: 61 6e 64 6c 65 53 69 7a 65 20 3d 20 38 2c 20 68  andleSize = 8, h
2c70: 61 6e 64 6c 65 50 61 64 20 3d 20 38 3b 0a 20 20  andlePad = 8;.  
2c80: 20 20 54 74 6b 5f 4f 72 69 65 6e 74 20 6f 72 69    Ttk_Orient ori
2c90: 65 6e 74 20 3d 20 28 54 74 6b 5f 4f 72 69 65 6e  ent = (Ttk_Orien
2ca0: 74 29 50 54 52 32 49 4e 54 28 63 6c 69 65 6e 74  t)PTR2INT(client
2cb0: 44 61 74 61 29 3b 0a 20 20 20 20 54 74 6b 5f 42  Data);.    Ttk_B
2cc0: 6f 78 20 68 62 3b 0a 20 20 20 20 28 76 6f 69 64  ox hb;.    (void
2cd0: 29 73 74 61 74 65 3b 0a 0a 20 20 20 20 54 6b 5f  )state;..    Tk_
2ce0: 47 65 74 50 69 78 65 6c 73 46 72 6f 6d 4f 62 6a  GetPixelsFromObj
2cf0: 28 4e 55 4c 4c 2c 20 74 6b 77 69 6e 2c 20 73 61  (NULL, tkwin, sa
2d00: 73 68 2d 3e 68 61 6e 64 6c 65 53 69 7a 65 4f 62  sh->handleSizeOb
2d10: 6a 2c 20 26 68 61 6e 64 6c 65 53 69 7a 65 29 3b  j, &handleSize);
2d20: 0a 20 20 20 20 54 6b 5f 47 65 74 50 69 78 65 6c  .    Tk_GetPixel
2d30: 73 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 74  sFromObj(NULL, t
2d40: 6b 77 69 6e 2c 20 73 61 73 68 2d 3e 68 61 6e 64  kwin, sash->hand
2d50: 6c 65 50 61 64 4f 62 6a 2c 20 26 68 61 6e 64 6c  lePadObj, &handl
2d60: 65 50 61 64 29 3b 0a 20 20 20 20 54 6b 5f 47 65  ePad);.    Tk_Ge
2d70: 74 52 65 6c 69 65 66 46 72 6f 6d 4f 62 6a 28 4e  tReliefFromObj(N
2d80: 55 4c 4c 2c 20 73 61 73 68 2d 3e 73 61 73 68 52  ULL, sash->sashR
2d90: 65 6c 69 65 66 4f 62 6a 2c 20 26 72 65 6c 69 65  eliefObj, &relie
2da0: 66 29 3b 0a 0a 20 20 20 20 73 77 69 74 63 68 20  f);..    switch 
2db0: 28 72 65 6c 69 65 66 29 20 7b 0a 09 63 61 73 65  (relief) {..case
2dc0: 20 54 4b 5f 52 45 4c 49 45 46 5f 52 41 49 53 45   TK_RELIEF_RAISE
2dd0: 44 3a 20 63 61 73 65 20 54 4b 5f 52 45 4c 49 45  D: case TK_RELIE
2de0: 46 5f 52 49 44 47 45 3a 0a 09 20 20 20 20 67 63  F_RIDGE:..    gc
2df0: 31 20 3d 20 54 6b 5f 33 44 42 6f 72 64 65 72 47  1 = Tk_3DBorderG
2e00: 43 28 74 6b 77 69 6e 2c 20 62 6f 72 64 65 72 2c  C(tkwin, border,
2e10: 20 54 4b 5f 33 44 5f 4c 49 47 48 54 5f 47 43 29   TK_3D_LIGHT_GC)
2e20: 3b 0a 09 20 20 20 20 67 63 32 20 3d 20 54 6b 5f  ;..    gc2 = Tk_
2e30: 33 44 42 6f 72 64 65 72 47 43 28 74 6b 77 69 6e  3DBorderGC(tkwin
2e40: 2c 20 62 6f 72 64 65 72 2c 20 54 4b 5f 33 44 5f  , border, TK_3D_
2e50: 44 41 52 4b 5f 47 43 29 3b 0a 09 20 20 20 20 62  DARK_GC);..    b
2e60: 72 65 61 6b 3b 0a 09 63 61 73 65 20 54 4b 5f 52  reak;..case TK_R
2e70: 45 4c 49 45 46 5f 53 55 4e 4b 45 4e 3a 20 63 61  ELIEF_SUNKEN: ca
2e80: 73 65 20 54 4b 5f 52 45 4c 49 45 46 5f 47 52 4f  se TK_RELIEF_GRO
2e90: 4f 56 45 3a 0a 09 20 20 20 20 67 63 31 20 3d 20  OVE:..    gc1 = 
2ea0: 54 6b 5f 33 44 42 6f 72 64 65 72 47 43 28 74 6b  Tk_3DBorderGC(tk
2eb0: 77 69 6e 2c 20 62 6f 72 64 65 72 2c 20 54 4b 5f  win, border, TK_
2ec0: 33 44 5f 44 41 52 4b 5f 47 43 29 3b 0a 09 20 20  3D_DARK_GC);..  
2ed0: 20 20 67 63 32 20 3d 20 54 6b 5f 33 44 42 6f 72    gc2 = Tk_3DBor
2ee0: 64 65 72 47 43 28 74 6b 77 69 6e 2c 20 62 6f 72  derGC(tkwin, bor
2ef0: 64 65 72 2c 20 54 4b 5f 33 44 5f 4c 49 47 48 54  der, TK_3D_LIGHT
2f00: 5f 47 43 29 3b 0a 09 20 20 20 20 62 72 65 61 6b  _GC);..    break
2f10: 3b 0a 09 63 61 73 65 20 54 4b 5f 52 45 4c 49 45  ;..case TK_RELIE
2f20: 46 5f 53 4f 4c 49 44 3a 0a 09 20 20 20 20 67 63  F_SOLID:..    gc
2f30: 31 20 3d 20 67 63 32 20 3d 20 54 6b 5f 33 44 42  1 = gc2 = Tk_3DB
2f40: 6f 72 64 65 72 47 43 28 74 6b 77 69 6e 2c 20 62  orderGC(tkwin, b
2f50: 6f 72 64 65 72 2c 20 54 4b 5f 33 44 5f 44 41 52  order, TK_3D_DAR
2f60: 4b 5f 47 43 29 3b 0a 09 20 20 20 20 62 72 65 61  K_GC);..    brea
2f70: 6b 3b 0a 09 63 61 73 65 20 54 4b 5f 52 45 4c 49  k;..case TK_RELI
2f80: 45 46 5f 46 4c 41 54 3a 0a 09 64 65 66 61 75 6c  EF_FLAT:..defaul
2f90: 74 3a 0a 09 20 20 20 20 67 63 31 20 3d 20 67 63  t:..    gc1 = gc
2fa0: 32 20 3d 20 54 6b 5f 33 44 42 6f 72 64 65 72 47  2 = Tk_3DBorderG
2fb0: 43 28 74 6b 77 69 6e 2c 20 62 6f 72 64 65 72 2c  C(tkwin, border,
2fc0: 20 54 4b 5f 33 44 5f 46 4c 41 54 5f 47 43 29 3b   TK_3D_FLAT_GC);
2fd0: 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20  ..    break;.   
2fe0: 20 7d 0a 0a 20 20 20 20 2f 2a 20 44 72 61 77 20   }..    /* Draw 
2ff0: 73 61 73 68 20 6c 69 6e 65 3a 0a 20 20 20 20 20  sash line:.     
3000: 2a 2f 0a 20 20 20 20 69 66 20 28 6f 72 69 65 6e  */.    if (orien
3010: 74 20 3d 3d 20 54 54 4b 5f 4f 52 49 45 4e 54 5f  t == TTK_ORIENT_
3020: 48 4f 52 49 5a 4f 4e 54 41 4c 29 20 7b 0a 09 69  HORIZONTAL) {..i
3030: 6e 74 20 79 20 3d 20 62 2e 79 20 2b 20 62 2e 68  nt y = b.y + b.h
3040: 65 69 67 68 74 2f 32 20 2d 20 31 3b 0a 09 58 44  eight/2 - 1;..XD
3050: 72 61 77 4c 69 6e 65 28 54 6b 5f 44 69 73 70 6c  rawLine(Tk_Displ
3060: 61 79 28 74 6b 77 69 6e 29 2c 20 64 2c 20 67 63  ay(tkwin), d, gc
3070: 31 2c 20 62 2e 78 2c 20 79 2c 20 62 2e 78 2b 62  1, b.x, y, b.x+b
3080: 2e 77 69 64 74 68 2c 20 79 29 3b 20 2b 2b 79 3b  .width, y); ++y;
3090: 0a 09 58 44 72 61 77 4c 69 6e 65 28 54 6b 5f 44  ..XDrawLine(Tk_D
30a0: 69 73 70 6c 61 79 28 74 6b 77 69 6e 29 2c 20 64  isplay(tkwin), d
30b0: 2c 20 67 63 32 2c 20 62 2e 78 2c 20 79 2c 20 62  , gc2, b.x, y, b
30c0: 2e 78 2b 62 2e 77 69 64 74 68 2c 20 79 29 3b 0a  .x+b.width, y);.
30d0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 6e      } else {..in
30e0: 74 20 78 20 3d 20 62 2e 78 20 2b 20 62 2e 77 69  t x = b.x + b.wi
30f0: 64 74 68 2f 32 20 2d 20 31 3b 0a 09 58 44 72 61  dth/2 - 1;..XDra
3100: 77 4c 69 6e 65 28 54 6b 5f 44 69 73 70 6c 61 79  wLine(Tk_Display
3110: 28 74 6b 77 69 6e 29 2c 20 64 2c 20 67 63 31 2c  (tkwin), d, gc1,
3120: 20 78 2c 20 62 2e 79 2c 20 78 2c 20 62 2e 79 2b   x, b.y, x, b.y+
3130: 62 2e 68 65 69 67 68 74 29 3b 20 2b 2b 78 3b 0a  b.height); ++x;.
3140: 09 58 44 72 61 77 4c 69 6e 65 28 54 6b 5f 44 69  .XDrawLine(Tk_Di
3150: 73 70 6c 61 79 28 74 6b 77 69 6e 29 2c 20 64 2c  splay(tkwin), d,
3160: 20 67 63 32 2c 20 78 2c 20 62 2e 79 2c 20 78 2c   gc2, x, b.y, x,
3170: 20 62 2e 79 2b 62 2e 68 65 69 67 68 74 29 3b 0a   b.y+b.height);.
3180: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 44 72      }..    /* Dr
3190: 61 77 20 68 61 6e 64 6c 65 3a 0a 20 20 20 20 20  aw handle:.     
31a0: 2a 2f 0a 20 20 20 20 69 66 20 28 68 61 6e 64 6c  */.    if (handl
31b0: 65 53 69 7a 65 20 3e 3d 20 30 29 20 7b 0a 09 69  eSize >= 0) {..i
31c0: 66 20 28 6f 72 69 65 6e 74 20 3d 3d 20 54 54 4b  f (orient == TTK
31d0: 5f 4f 52 49 45 4e 54 5f 48 4f 52 49 5a 4f 4e 54  _ORIENT_HORIZONT
31e0: 41 4c 29 20 7b 0a 09 20 20 20 20 68 62 20 3d 20  AL) {..    hb = 
31f0: 54 74 6b 5f 53 74 69 63 6b 42 6f 78 28 62 2c 20  Ttk_StickBox(b, 
3200: 68 61 6e 64 6c 65 53 69 7a 65 2c 20 68 61 6e 64  handleSize, hand
3210: 6c 65 53 69 7a 65 2c 20 54 54 4b 5f 53 54 49 43  leSize, TTK_STIC
3220: 4b 5f 57 29 3b 0a 09 20 20 20 20 68 62 2e 78 20  K_W);..    hb.x 
3230: 2b 3d 20 68 61 6e 64 6c 65 50 61 64 3b 0a 09 7d  += handlePad;..}
3240: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 68 62 20   else {..    hb 
3250: 3d 20 54 74 6b 5f 53 74 69 63 6b 42 6f 78 28 62  = Ttk_StickBox(b
3260: 2c 20 68 61 6e 64 6c 65 53 69 7a 65 2c 20 68 61  , handleSize, ha
3270: 6e 64 6c 65 53 69 7a 65 2c 20 54 54 4b 5f 53 54  ndleSize, TTK_ST
3280: 49 43 4b 5f 4e 29 3b 0a 09 20 20 20 20 68 62 2e  ICK_N);..    hb.
3290: 79 20 2b 3d 20 68 61 6e 64 6c 65 50 61 64 3b 0a  y += handlePad;.
32a0: 09 7d 0a 09 54 6b 5f 46 69 6c 6c 33 44 52 65 63  .}..Tk_Fill3DRec
32b0: 74 61 6e 67 6c 65 28 74 6b 77 69 6e 2c 20 64 2c  tangle(tkwin, d,
32c0: 20 62 6f 72 64 65 72 2c 0a 09 20 20 20 20 68 62   border,..    hb
32d0: 2e 78 2c 20 68 62 2e 79 2c 20 68 62 2e 77 69 64  .x, hb.y, hb.wid
32e0: 74 68 2c 20 68 62 2e 68 65 69 67 68 74 2c 20 31  th, hb.height, 1
32f0: 2c 20 54 4b 5f 52 45 4c 49 45 46 5f 52 41 49 53  , TK_RELIEF_RAIS
3300: 45 44 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 73 74  ED);.    }.}..st
3310: 61 74 69 63 20 63 6f 6e 73 74 20 54 74 6b 5f 45  atic const Ttk_E
3320: 6c 65 6d 65 6e 74 53 70 65 63 20 53 61 73 68 45  lementSpec SashE
3330: 6c 65 6d 65 6e 74 53 70 65 63 20 3d 20 7b 0a 20  lementSpec = {. 
3340: 20 20 20 54 4b 5f 53 54 59 4c 45 5f 56 45 52 53     TK_STYLE_VERS
3350: 49 4f 4e 5f 32 2c 0a 20 20 20 20 73 69 7a 65 6f  ION_2,.    sizeo
3360: 66 28 53 61 73 68 45 6c 65 6d 65 6e 74 29 2c 0a  f(SashElement),.
3370: 20 20 20 20 53 61 73 68 4f 70 74 69 6f 6e 73 2c      SashOptions,
3380: 0a 20 20 20 20 53 61 73 68 45 6c 65 6d 65 6e 74  .    SashElement
3390: 53 69 7a 65 2c 0a 20 20 20 20 53 61 73 68 45 6c  Size,.    SashEl
33a0: 65 6d 65 6e 74 44 72 61 77 0a 7d 3b 0a 0a 2f 2a  ementDraw.};../*
33b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33f0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 2b 2b 2b 20  --------. * +++ 
3400: 57 69 64 67 65 74 20 6c 61 79 6f 75 74 73 2e 0a  Widget layouts..
3410: 20 2a 2f 0a 0a 54 54 4b 5f 42 45 47 49 4e 5f 4c   */..TTK_BEGIN_L
3420: 41 59 4f 55 54 5f 54 41 42 4c 45 28 4c 61 79 6f  AYOUT_TABLE(Layo
3430: 75 74 54 61 62 6c 65 29 0a 0a 54 54 4b 5f 4c 41  utTable)..TTK_LA
3440: 59 4f 55 54 28 22 54 42 75 74 74 6f 6e 22 2c 0a  YOUT("TButton",.
3450: 20 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 42      TTK_GROUP("B
3460: 75 74 74 6f 6e 2e 68 69 67 68 6c 69 67 68 74 22  utton.highlight"
3470: 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 2c  , TTK_FILL_BOTH,
3480: 0a 20 20 20 20 20 20 20 20 54 54 4b 5f 47 52 4f  .        TTK_GRO
3490: 55 50 28 22 42 75 74 74 6f 6e 2e 62 6f 72 64 65  UP("Button.borde
34a0: 72 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54  r", TTK_FILL_BOT
34b0: 48 7c 54 54 4b 5f 42 4f 52 44 45 52 2c 0a 09 20  H|TTK_BORDER,.. 
34c0: 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 42 75     TTK_GROUP("Bu
34d0: 74 74 6f 6e 2e 70 61 64 64 69 6e 67 22 2c 20 54  tton.padding", T
34e0: 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 2c 0a 09 20  TK_FILL_BOTH,.. 
34f0: 20 20 20 20 20 20 20 54 54 4b 5f 4e 4f 44 45 28         TTK_NODE(
3500: 22 42 75 74 74 6f 6e 2e 6c 61 62 65 6c 22 2c 20  "Button.label", 
3510: 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 29 29 29  TTK_FILL_BOTH)))
3520: 29 29 0a 0a 54 54 4b 5f 4c 41 59 4f 55 54 28 22  ))..TTK_LAYOUT("
3530: 54 43 68 65 63 6b 62 75 74 74 6f 6e 22 2c 0a 20  TCheckbutton",. 
3540: 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 43 68     TTK_GROUP("Ch
3550: 65 63 6b 62 75 74 74 6f 6e 2e 68 69 67 68 6c 69  eckbutton.highli
3560: 67 68 74 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42  ght", TTK_FILL_B
3570: 4f 54 48 2c 0a 20 20 20 20 20 20 20 20 54 54 4b  OTH,.        TTK
3580: 5f 47 52 4f 55 50 28 22 43 68 65 63 6b 62 75 74  _GROUP("Checkbut
3590: 74 6f 6e 2e 62 6f 72 64 65 72 22 2c 20 54 54 4b  ton.border", TTK
35a0: 5f 46 49 4c 4c 5f 42 4f 54 48 2c 0a 09 20 20 20  _FILL_BOTH,..   
35b0: 20 54 54 4b 5f 47 52 4f 55 50 28 22 43 68 65 63   TTK_GROUP("Chec
35c0: 6b 62 75 74 74 6f 6e 2e 70 61 64 64 69 6e 67 22  kbutton.padding"
35d0: 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 2c  , TTK_FILL_BOTH,
35e0: 0a 09 20 20 20 20 20 20 20 20 54 54 4b 5f 4e 4f  ..        TTK_NO
35f0: 44 45 28 22 43 68 65 63 6b 62 75 74 74 6f 6e 2e  DE("Checkbutton.
3600: 69 6e 64 69 63 61 74 6f 72 22 2c 20 54 54 4b 5f  indicator", TTK_
3610: 50 41 43 4b 5f 4c 45 46 54 29 0a 09 20 20 20 20  PACK_LEFT)..    
3620: 20 20 20 20 54 54 4b 5f 4e 4f 44 45 28 22 43 68      TTK_NODE("Ch
3630: 65 63 6b 62 75 74 74 6f 6e 2e 6c 61 62 65 6c 22  eckbutton.label"
3640: 2c 20 54 54 4b 5f 50 41 43 4b 5f 4c 45 46 54 7c  , TTK_PACK_LEFT|
3650: 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 29 29 29  TTK_FILL_BOTH)))
3660: 29 29 0a 0a 54 54 4b 5f 4c 41 59 4f 55 54 28 22  ))..TTK_LAYOUT("
3670: 54 52 61 64 69 6f 62 75 74 74 6f 6e 22 2c 0a 20  TRadiobutton",. 
3680: 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 52 61     TTK_GROUP("Ra
3690: 64 69 6f 62 75 74 74 6f 6e 2e 68 69 67 68 6c 69  diobutton.highli
36a0: 67 68 74 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42  ght", TTK_FILL_B
36b0: 4f 54 48 2c 0a 20 20 20 20 20 20 20 20 54 54 4b  OTH,.        TTK
36c0: 5f 47 52 4f 55 50 28 22 52 61 64 69 6f 62 75 74  _GROUP("Radiobut
36d0: 74 6f 6e 2e 62 6f 72 64 65 72 22 2c 20 54 54 4b  ton.border", TTK
36e0: 5f 46 49 4c 4c 5f 42 4f 54 48 2c 0a 09 20 20 20  _FILL_BOTH,..   
36f0: 20 54 54 4b 5f 47 52 4f 55 50 28 22 52 61 64 69   TTK_GROUP("Radi
3700: 6f 62 75 74 74 6f 6e 2e 70 61 64 64 69 6e 67 22  obutton.padding"
3710: 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 2c  , TTK_FILL_BOTH,
3720: 0a 09 20 20 20 20 20 20 20 20 54 54 4b 5f 4e 4f  ..        TTK_NO
3730: 44 45 28 22 52 61 64 69 6f 62 75 74 74 6f 6e 2e  DE("Radiobutton.
3740: 69 6e 64 69 63 61 74 6f 72 22 2c 20 54 54 4b 5f  indicator", TTK_
3750: 50 41 43 4b 5f 4c 45 46 54 29 0a 09 20 20 20 20  PACK_LEFT)..    
3760: 20 20 20 20 54 54 4b 5f 4e 4f 44 45 28 22 52 61      TTK_NODE("Ra
3770: 64 69 6f 62 75 74 74 6f 6e 2e 6c 61 62 65 6c 22  diobutton.label"
3780: 2c 20 54 54 4b 5f 50 41 43 4b 5f 4c 45 46 54 7c  , TTK_PACK_LEFT|
3790: 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 29 29 29  TTK_FILL_BOTH)))
37a0: 29 29 0a 0a 54 54 4b 5f 4c 41 59 4f 55 54 28 22  ))..TTK_LAYOUT("
37b0: 54 4d 65 6e 75 62 75 74 74 6f 6e 22 2c 0a 20 20  TMenubutton",.  
37c0: 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 4d 65 6e    TTK_GROUP("Men
37d0: 75 62 75 74 74 6f 6e 2e 68 69 67 68 6c 69 67 68  ubutton.highligh
37e0: 74 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54  t", TTK_FILL_BOT
37f0: 48 2c 0a 20 20 20 20 20 20 20 20 54 54 4b 5f 47  H,.        TTK_G
3800: 52 4f 55 50 28 22 4d 65 6e 75 62 75 74 74 6f 6e  ROUP("Menubutton
3810: 2e 62 6f 72 64 65 72 22 2c 20 54 54 4b 5f 46 49  .border", TTK_FI
3820: 4c 4c 5f 42 4f 54 48 2c 0a 09 20 20 20 20 54 54  LL_BOTH,..    TT
3830: 4b 5f 4e 4f 44 45 28 22 4d 65 6e 75 62 75 74 74  K_NODE("Menubutt
3840: 6f 6e 2e 69 6e 64 69 63 61 74 6f 72 22 2c 20 54  on.indicator", T
3850: 54 4b 5f 50 41 43 4b 5f 52 49 47 48 54 29 0a 09  TK_PACK_RIGHT)..
3860: 20 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 4d      TTK_GROUP("M
3870: 65 6e 75 62 75 74 74 6f 6e 2e 70 61 64 64 69 6e  enubutton.paddin
3880: 67 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 58 2c 0a  g", TTK_FILL_X,.
3890: 09 20 20 20 20 20 20 20 20 54 54 4b 5f 4e 4f 44  .        TTK_NOD
38a0: 45 28 22 4d 65 6e 75 62 75 74 74 6f 6e 2e 6c 61  E("Menubutton.la
38b0: 62 65 6c 22 2c 20 30 29 29 29 29 29 0a 0a 2f 2a  bel", 0)))))../*
38c0: 20 22 63 6c 61 73 73 69 63 22 20 65 6e 74 72 79   "classic" entry
38d0: 2c 20 69 6e 63 6c 75 64 65 73 20 68 69 67 68 6c  , includes highl
38e0: 69 67 68 74 20 62 6f 72 64 65 72 20 2a 2f 0a 54  ight border */.T
38f0: 54 4b 5f 4c 41 59 4f 55 54 28 22 54 45 6e 74 72  TK_LAYOUT("TEntr
3900: 79 22 2c 0a 20 20 20 20 54 54 4b 5f 47 52 4f 55  y",.    TTK_GROU
3910: 50 28 22 45 6e 74 72 79 2e 68 69 67 68 6c 69 67  P("Entry.highlig
3920: 68 74 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f  ht", TTK_FILL_BO
3930: 54 48 2c 0a 20 20 20 20 20 20 20 20 54 54 4b 5f  TH,.        TTK_
3940: 47 52 4f 55 50 28 22 45 6e 74 72 79 2e 66 69 65  GROUP("Entry.fie
3950: 6c 64 22 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f  ld", TTK_FILL_BO
3960: 54 48 7c 54 54 4b 5f 42 4f 52 44 45 52 2c 0a 09  TH|TTK_BORDER,..
3970: 20 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 45      TTK_GROUP("E
3980: 6e 74 72 79 2e 70 61 64 64 69 6e 67 22 2c 20 54  ntry.padding", T
3990: 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 2c 0a 09 20  TK_FILL_BOTH,.. 
39a0: 20 20 20 20 20 20 20 54 54 4b 5f 4e 4f 44 45 28         TTK_NODE(
39b0: 22 45 6e 74 72 79 2e 74 65 78 74 61 72 65 61 22  "Entry.textarea"
39c0: 2c 20 54 54 4b 5f 46 49 4c 4c 5f 42 4f 54 48 29  , TTK_FILL_BOTH)
39d0: 29 29 29 29 0a 0a 2f 2a 20 4e 6f 74 65 62 6f 6f  ))))../* Noteboo
39e0: 6b 20 74 61 62 73 20 2d 2d 20 6f 6d 69 74 20 66  k tabs -- omit f
39f0: 6f 63 75 73 20 72 69 6e 67 20 2a 2f 0a 54 54 4b  ocus ring */.TTK
3a00: 5f 4c 41 59 4f 55 54 28 22 54 61 62 22 2c 0a 20  _LAYOUT("Tab",. 
3a10: 20 20 20 54 54 4b 5f 47 52 4f 55 50 28 22 4e 6f     TTK_GROUP("No
3a20: 74 65 62 6f 6f 6b 2e 74 61 62 22 2c 20 54 54 4b  tebook.tab", TTK
3a30: 5f 46 49 4c 4c 5f 42 4f 54 48 2c 0a 09 54 54 4b  _FILL_BOTH,..TTK
3a40: 5f 47 52 4f 55 50 28 22 4e 6f 74 65 62 6f 6f 6b  _GROUP("Notebook
3a50: 2e 70 61 64 64 69 6e 67 22 2c 20 54 54 4b 5f 46  .padding", TTK_F
3a60: 49 4c 4c 5f 42 4f 54 48 2c 0a 09 20 20 20 20 54  ILL_BOTH,..    T
3a70: 54 4b 5f 4e 4f 44 45 28 22 4e 6f 74 65 62 6f 6f  TK_NODE("Noteboo
3a80: 6b 2e 6c 61 62 65 6c 22 2c 20 54 54 4b 5f 46 49  k.label", TTK_FI
3a90: 4c 4c 5f 42 4f 54 48 29 29 29 29 0a 0a 54 54 4b  LL_BOTH))))..TTK
3aa0: 5f 45 4e 44 5f 4c 41 59 4f 55 54 5f 54 41 42 4c  _END_LAYOUT_TABL
3ab0: 45 0a 0a 2f 2a 20 50 4f 53 53 49 42 4c 59 3a 20  E../* POSSIBLY: 
3ac0: 69 6e 63 6c 75 64 65 20 53 63 61 6c 65 20 6c 61  include Scale la
3ad0: 79 6f 75 74 73 20 77 2f 66 6f 63 75 73 20 62 6f  youts w/focus bo
3ae0: 72 64 65 72 0a 20 2a 2f 0a 0a 2f 2a 2d 2d 2d 2d  rder. */../*----
3af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b30: 2d 2d 2d 2d 0a 20 2a 20 54 74 6b 43 6c 61 73 73  ----. * TtkClass
3b40: 69 63 54 68 65 6d 65 5f 49 6e 69 74 20 2d 2d 0a  icTheme_Init --.
3b50: 20 2a 20 09 49 6e 73 74 61 6c 6c 20 63 6c 61 73   * .Install clas
3b60: 73 69 63 20 74 68 65 6d 65 2e 0a 20 2a 2f 0a 0a  sic theme.. */..
3b70: 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20 69 6e 74  MODULE_SCOPE int
3b80: 20 54 74 6b 43 6c 61 73 73 69 63 54 68 65 6d 65   TtkClassicTheme
3b90: 5f 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65 72 70  _Init(Tcl_Interp
3ba0: 20 2a 69 6e 74 65 72 70 29 0a 7b 0a 20 20 20 20   *interp).{.    
3bb0: 54 74 6b 5f 54 68 65 6d 65 20 74 68 65 6d 65 20  Ttk_Theme theme 
3bc0: 3d 20 20 54 74 6b 5f 43 72 65 61 74 65 54 68 65  =  Ttk_CreateThe
3bd0: 6d 65 28 69 6e 74 65 72 70 2c 20 22 63 6c 61 73  me(interp, "clas
3be0: 73 69 63 22 2c 20 4e 55 4c 4c 29 3b 0a 0a 20 20  sic", NULL);..  
3bf0: 20 20 69 66 20 28 21 74 68 65 6d 65 29 20 7b 0a    if (!theme) {.
3c00: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f  .return TCL_ERRO
3c10: 52 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a  R;.    }..    /*
3c20: 0a 20 20 20 20 20 2a 20 52 65 67 69 73 74 65 72  .     * Register
3c30: 20 65 6c 65 6d 65 6e 74 73 3a 0a 20 20 20 20 20   elements:.     
3c40: 2a 2f 0a 20 20 20 20 54 74 6b 5f 52 65 67 69 73  */.    Ttk_Regis
3c50: 74 65 72 45 6c 65 6d 65 6e 74 28 69 6e 74 65 72  terElement(inter
3c60: 70 2c 20 74 68 65 6d 65 2c 20 22 68 69 67 68 6c  p, theme, "highl
3c70: 69 67 68 74 22 2c 0a 09 20 20 20 20 26 48 69 67  ight",..    &Hig
3c80: 68 6c 69 67 68 74 45 6c 65 6d 65 6e 74 53 70 65  hlightElementSpe
3c90: 63 2c 20 4e 55 4c 4c 29 3b 0a 0a 20 20 20 20 54  c, NULL);..    T
3ca0: 74 6b 5f 52 65 67 69 73 74 65 72 45 6c 65 6d 65  tk_RegisterEleme
3cb0: 6e 74 28 69 6e 74 65 72 70 2c 20 74 68 65 6d 65  nt(interp, theme
3cc0: 2c 20 22 42 75 74 74 6f 6e 2e 62 6f 72 64 65 72  , "Button.border
3cd0: 22 2c 0a 09 20 20 20 20 26 42 75 74 74 6f 6e 42  ",..    &ButtonB
3ce0: 6f 72 64 65 72 45 6c 65 6d 65 6e 74 53 70 65 63  orderElementSpec
3cf0: 2c 20 4e 55 4c 4c 29 3b 0a 0a 20 20 20 20 54 74  , NULL);..    Tt
3d00: 6b 5f 52 65 67 69 73 74 65 72 45 6c 65 6d 65 6e  k_RegisterElemen
3d10: 74 28 69 6e 74 65 72 70 2c 20 74 68 65 6d 65 2c  t(interp, theme,
3d20: 20 22 75 70 61 72 72 6f 77 22 2c 0a 09 20 20 20   "uparrow",..   
3d30: 20 26 41 72 72 6f 77 45 6c 65 6d 65 6e 74 53 70   &ArrowElementSp
3d40: 65 63 2c 20 49 4e 54 32 50 54 52 28 41 52 52 4f  ec, INT2PTR(ARRO
3d50: 57 5f 55 50 29 29 3b 0a 20 20 20 20 54 74 6b 5f  W_UP));.    Ttk_
3d60: 52 65 67 69 73 74 65 72 45 6c 65 6d 65 6e 74 28  RegisterElement(
3d70: 69 6e 74 65 72 70 2c 20 74 68 65 6d 65 2c 20 22  interp, theme, "
3d80: 64 6f 77 6e 61 72 72 6f 77 22 2c 0a 09 20 20 20  downarrow",..   
3d90: 20 26 41 72 72 6f 77 45 6c 65 6d 65 6e 74 53 70   &ArrowElementSp
3da0: 65 63 2c 20 49 4e 54 32 50 54 52 28 41 52 52 4f  ec, INT2PTR(ARRO
3db0: 57 5f 44 4f 57 4e 29 29 3b 0a 20 20 20 20 54 74  W_DOWN));.    Tt
3dc0: 6b 5f 52 65 67 69 73 74 65 72 45 6c 65 6d 65 6e  k_RegisterElemen
3dd0: 74 28 69 6e 74 65 72 70 2c 20 74 68 65 6d 65 2c  t(interp, theme,
3de0: 20 22 6c 65 66 74 61 72 72 6f 77 22 2c 0a 09 20   "leftarrow",.. 
3df0: 20 20 20 26 41 72 72 6f 77 45 6c 65 6d 65 6e 74     &ArrowElement
3e00: 53 70 65 63 2c 20 49 4e 54 32 50 54 52 28 41 52  Spec, INT2PTR(AR
3e10: 52 4f 57 5f 4c 45 46 54 29 29 3b 0a 20 20 20 20  ROW_LEFT));.    
3e20: 54 74 6b 5f 52 65 67 69 73 74 65 72 45 6c 65 6d  Ttk_RegisterElem
3e30: 65 6e 74 28 69 6e 74 65 72 70 2c 20 74 68 65 6d  ent(interp, them
3e40: 65 2c 20 22 72 69 67 68 74 61 72 72 6f 77 22 2c  e, "rightarrow",
3e50: 0a 09 20 20 20 20 26 41 72 72 6f 77 45 6c 65 6d  ..    &ArrowElem
3e60: 65 6e 74 53 70 65 63 2c 20 49 4e 54 32 50 54 52  entSpec, INT2PTR
3e70: 28 41 52 52 4f 57 5f 52 49 47 48 54 29 29 3b 0a  (ARROW_RIGHT));.
3e80: 20 20 20 20 54 74 6b 5f 52 65 67 69 73 74 65 72      Ttk_Register
3e90: 45 6c 65 6d 65 6e 74 28 69 6e 74 65 72 70 2c 20  Element(interp, 
3ea0: 74 68 65 6d 65 2c 20 22 61 72 72 6f 77 22 2c 0a  theme, "arrow",.
3eb0: 09 20 20 20 20 26 41 72 72 6f 77 45 6c 65 6d 65  .    &ArrowEleme
3ec0: 6e 74 53 70 65 63 2c 20 49 4e 54 32 50 54 52 28  ntSpec, INT2PTR(
3ed0: 41 52 52 4f 57 5f 55 50 29 29 3b 0a 0a 20 20 20  ARROW_UP));..   
3ee0: 20 54 74 6b 5f 52 65 67 69 73 74 65 72 45 6c 65   Ttk_RegisterEle
3ef0: 6d 65 6e 74 28 69 6e 74 65 72 70 2c 20 74 68 65  ment(interp, the
3f00: 6d 65 2c 20 22 68 73 61 73 68 22 2c 0a 09 20 20  me, "hsash",..  
3f10: 20 20 26 53 61 73 68 45 6c 65 6d 65 6e 74 53 70    &SashElementSp
3f20: 65 63 2c 20 49 4e 54 32 50 54 52 28 54 54 4b 5f  ec, INT2PTR(TTK_
3f30: 4f 52 49 45 4e 54 5f 48 4f 52 49 5a 4f 4e 54 41  ORIENT_HORIZONTA
3f40: 4c 29 29 3b 0a 20 20 20 20 54 74 6b 5f 52 65 67  L));.    Ttk_Reg
3f50: 69 73 74 65 72 45 6c 65 6d 65 6e 74 28 69 6e 74  isterElement(int
3f60: 65 72 70 2c 20 74 68 65 6d 65 2c 20 22 76 73 61  erp, theme, "vsa
3f70: 73 68 22 2c 0a 09 20 20 20 20 26 53 61 73 68 45  sh",..    &SashE
3f80: 6c 65 6d 65 6e 74 53 70 65 63 2c 20 49 4e 54 32  lementSpec, INT2
3f90: 50 54 52 28 54 54 4b 5f 4f 52 49 45 4e 54 5f 56  PTR(TTK_ORIENT_V
3fa0: 45 52 54 49 43 41 4c 29 29 3b 0a 0a 20 20 20 20  ERTICAL));..    
3fb0: 2f 2a 0a 20 20 20 20 20 2a 20 52 65 67 69 73 74  /*.     * Regist
3fc0: 65 72 20 6c 61 79 6f 75 74 73 3a 0a 20 20 20 20  er layouts:.    
3fd0: 20 2a 2f 0a 20 20 20 20 54 74 6b 5f 52 65 67 69   */.    Ttk_Regi
3fe0: 73 74 65 72 4c 61 79 6f 75 74 73 28 74 68 65 6d  sterLayouts(them
3ff0: 65 2c 20 4c 61 79 6f 75 74 54 61 62 6c 65 29 3b  e, LayoutTable);
4000: 0a 0a 20 20 20 20 54 63 6c 5f 50 6b 67 50 72 6f  ..    Tcl_PkgPro
4010: 76 69 64 65 28 69 6e 74 65 72 70 2c 20 22 74 74  vide(interp, "tt
4020: 6b 3a 3a 74 68 65 6d 65 3a 3a 63 6c 61 73 73 69  k::theme::classi
4030: 63 22 2c 20 54 54 4b 5f 56 45 52 53 49 4f 4e 29  c", TTK_VERSION)
4040: 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 54 43  ;..    return TC
4050: 4c 5f 4f 4b 3b 0a 7d 0a 0a 2f 2a 45 4f 46 2a 2f  L_OK;.}../*EOF*/
4060: 0a                                               .