diff options
Diffstat (limited to 'macosx/ttkMacOSXTheme.c')
-rw-r--r-- | macosx/ttkMacOSXTheme.c | 303 |
1 files changed, 158 insertions, 145 deletions
diff --git a/macosx/ttkMacOSXTheme.c b/macosx/ttkMacOSXTheme.c index e2bd709..31e3668 100644 --- a/macosx/ttkMacOSXTheme.c +++ b/macosx/ttkMacOSXTheme.c @@ -1,10 +1,11 @@ /* - * $Id: ttkMacOSXTheme.c,v 1.5 2006/12/30 23:23:26 cc_benny Exp $ + * ttkMacOSXTheme.c -- * - * Tk theme engine for Mac OSX, using the Appearance Manager API. + * Tk theme engine for Mac OSX, using the Appearance Manager API. * * Copyright (c) 2004 Joe English * Copyright (c) 2005 Neil Madden + * Copyright (c) 2006-2007 Daniel A. Steffen <das@users.sourceforge.net> * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. @@ -12,30 +13,27 @@ * See also: * * <URL: http://developer.apple.com/documentation/Carbon/Reference/ - * Appearance_Manager/appearance_manager/APIIndex.html > + * Appearance_Manager/appearance_manager/APIIndex.html > * * Notes: - * "Active" means different things in Mac and Tk terminology -- + * "Active" means different things in Mac and Tk terminology -- * On Aqua, widgets are "Active" if they belong to the foreground window, * "Inactive" if they are in a background window. * Tk/ttk uses the term "active" to mean that the mouse cursor * is over a widget; aka "hover", "prelight", or "hot-tracked". * (Aqua doesn't use this kind of feedback). * - * The QuickDraw/Carbon coordinate system is relative to the - * top-level window, *not* to the Tk_Window. However, + * The QuickDraw/Carbon coordinate system is relative to the + * top-level window, *not* to the Tk_Window. However, * since we're drawing into an off-screen port (Tk "Pixmap), * we don't need to account for this. + * + * RCS: @(#) $Id: ttkMacOSXTheme.c,v 1.6 2007/04/23 21:24:34 das Exp $ */ #include "tkMacOSXInt.h" #include "ttk/ttkTheme.h" -/* Define a constant that was renamed for Mac OS X 10.4 */ -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 -#define kThemeDisclosureTriangle kThemeDisclosureButton -#endif - /*---------------------------------------------------------------------- * +++ Utilities. */ @@ -44,6 +42,7 @@ static Rect BoxToRect(Ttk_Box b) { Rect rect; + rect.top = b.y; rect.left = b.x; rect.bottom = b.y + b.height; @@ -52,18 +51,24 @@ Rect BoxToRect(Ttk_Box b) } /* DontErase -- - * No-op ThemeEraseProc, can be passed to DrawThemeButton &c. + * No-op ThemeEraseProc, can be passed to DrawThemeButton &c. */ static void DontErase( const Rect *bounds, UInt32 eraseData, SInt16 depth, Boolean isColorDev) { } -#define BEGIN_DRAWING(d) { \ - CGrafPtr saveWorld; GDHandle saveDevice; \ - GetGWorld(&saveWorld, &saveDevice); \ - SetGWorld(TkMacOSXGetDrawablePort(d), 0) ; -#define END_DRAWING \ - SetGWorld(saveWorld,saveDevice); } +#define BEGIN_DRAWING(d) do { \ + TkMacOSXDrawingContext dc; \ + TkMacOSXSetupDrawingContext((d), NULL, 0, &dc) +#define END_DRAWING() \ + TkMacOSXRestoreDrawingContext(&dc); \ + } while (0) +#define OFFSET_RECT(d, r) do { \ + OffsetRect(&(r), ((MacDrawable*)(d))->xOff, ((MacDrawable*)(d))->yOff);\ + } while (0) +#define OFFSET_POINT(d, p) do { \ + (p).h += ((MacDrawable*)(d))->xOff; (p).v += ((MacDrawable*)(d))->yOff;\ + } while (0) /* Table mapping Tk states to Appearance manager ThemeStates */ @@ -86,7 +91,7 @@ static Ttk_StateTable ThemeStateTable[] = { }; /*---------------------------------------------------------------------- - * +++ Button element: Used for elements drawn with DrawThemeButton. + * +++ Button element: Used for elements drawn with DrawThemeButton. */ /* Extra margins to account for drop shadow. @@ -96,8 +101,8 @@ static Ttk_Padding ButtonMargins = {2,2,2,2}; #define NoThemeMetric 0xFFFFFFFF typedef struct { - ThemeButtonKind kind; - ThemeMetric heightMetric; + ThemeButtonKind kind; + ThemeMetric heightMetric; } ThemeButtonParms; static ThemeButtonParms @@ -130,6 +135,7 @@ static ThemeButtonDrawInfo computeButtonDrawInfo( ThemeButtonParms *parms, Ttk_State state) { ThemeButtonDrawInfo info; + info.state = Ttk_StateTableLookup(ThemeStateTable, state); info.value = Ttk_StateTableLookup(ButtonValueTable, state); info.adornment = Ttk_StateTableLookup(ButtonAdornmentTable, state); @@ -144,6 +150,7 @@ static void ButtonElementGeometryNoPadding( if (parms->heightMetric != NoThemeMetric) { SInt32 gratuitouslyOverspecifiedType; + GetThemeMetric(parms->heightMetric, &gratuitouslyOverspecifiedType); *heightPtr = gratuitouslyOverspecifiedType; } @@ -158,9 +165,8 @@ static void ButtonElementGeometry( Rect scratchRect, contentsRect; const int scratchSize = 100; - ButtonElementGeometryNoPadding( - clientData, elementRecord, tkwin, - widthPtr, heightPtr, paddingPtr); + ButtonElementGeometryNoPadding(clientData, elementRecord, tkwin, widthPtr, + heightPtr, paddingPtr); /* To compute internal padding, query the appearance manager * for the content bounds of a dummy rectangle, then use @@ -192,14 +198,14 @@ static void ButtonElementDraw( ThemeButtonParms *parms = clientData; ThemeButtonDrawInfo info = computeButtonDrawInfo(parms, state); - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeButton(&bounds, parms->kind, &info, NULL/*prevInfo*/,NULL/*eraseProc*/,NULL/*labelProc*/,0/*userData*/); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec ButtonElementSpec = -{ +static Ttk_ElementSpec ButtonElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -214,7 +220,7 @@ static Ttk_ElementSpec ButtonElementSpec = static Ttk_StateTable TabStyleTable[] = { { kThemeTabFrontInactive, TTK_STATE_SELECTED|TTK_STATE_BACKGROUND, 0 }, { kThemeTabNonFrontInactive, TTK_STATE_BACKGROUND, 0 }, - { kThemeTabFrontUnavailable, TTK_STATE_DISABLED|TTK_STATE_SELECTED, 0 }, + { kThemeTabFrontUnavailable, TTK_STATE_DISABLED|TTK_STATE_SELECTED, 0 }, { kThemeTabNonFrontUnavailable, TTK_STATE_DISABLED, 0 }, { kThemeTabFront, TTK_STATE_SELECTED, 0 }, { kThemeTabNonFrontPressed, TTK_STATE_PRESSED, 0 }, @@ -243,16 +249,17 @@ static void TabElementDraw( Drawable d, Ttk_Box b, Ttk_State state) { Rect bounds = BoxToRect(b); + bounds.bottom += TAB_OVERLAP; - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeTab( - &bounds, Ttk_StateTableLookup(TabStyleTable, state), kThemeTabNorth, + &bounds, Ttk_StateTableLookup(TabStyleTable, state), kThemeTabNorth, 0/*labelProc*/,0/*userData*/); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec TabElementSpec = -{ +static Ttk_ElementSpec TabElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -275,14 +282,15 @@ static void PaneElementDraw( Drawable d, Ttk_Box b, Ttk_State state) { Rect bounds = BoxToRect(b); - BEGIN_DRAWING(d) + + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeTabPane( - &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); - END_DRAWING + &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); + END_DRAWING(); } -static Ttk_ElementSpec PaneElementSpec = -{ +static Ttk_ElementSpec PaneElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -311,14 +319,14 @@ static void GroupElementDraw( Drawable d, Ttk_Box b, Ttk_State state) { Rect bounds = BoxToRect(b); - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemePrimaryGroup( - &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); - END_DRAWING + &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); + END_DRAWING(); } -static Ttk_ElementSpec GroupElementSpec = -{ +static Ttk_ElementSpec GroupElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -327,9 +335,9 @@ static Ttk_ElementSpec GroupElementSpec = }; /*---------------------------------------------------------------------- - * +++ Entry element -- - * 3 pixels padding for focus rectangle - * 2 pixels padding for EditTextFrame + * +++ Entry element -- + * 3 pixels padding for focus rectangle + * 2 pixels padding for EditTextFrame */ typedef struct { @@ -358,29 +366,27 @@ static void EntryElementDraw( Ttk_Box inner = Ttk_PadBox(b, Ttk_UniformPadding(3)); Rect bounds = BoxToRect(inner); - BEGIN_DRAWING(d) - /* Erase w/background color: */ XFillRectangle(Tk_Display(tkwin), d, Tk_3DBorderGC(tkwin, backgroundPtr, TK_3D_FLAT_GC), inner.x,inner.y, inner.width, inner.height); + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); /* Draw border: */ DrawThemeEditTextFrame( - &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); + &bounds, Ttk_StateTableLookup(ThemeStateTable, state)); /* Draw focus highlight: */ if (state & TTK_STATE_FOCUS) DrawThemeFocusRect(&bounds, 1); - - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec EntryElementSpec = -{ +static Ttk_ElementSpec EntryElementSpec = { TK_STYLE_VERSION_2, sizeof(EntryElement), EntryElementOptions, @@ -395,7 +401,7 @@ static Ttk_ElementSpec EntryElementSpec = */ static void PopupArrowElementGeometry( - void *clientData, void *elementRecord, Tk_Window tkwin, + void *clientData, void *elementRecord, Tk_Window tkwin, int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { *widthPtr = 12; /* wild-assed guess */ @@ -403,11 +409,10 @@ static void PopupArrowElementGeometry( } static void PopupArrowElementDraw( - void *clientData, void *elementRecord, Tk_Window tkwin, + void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, Ttk_State state) { Rect bounds = BoxToRect(b); - ThemeButtonParms *parms = clientData; ThemeButtonDrawInfo info = computeButtonDrawInfo(parms, state); @@ -416,7 +421,8 @@ static void PopupArrowElementDraw( bounds.right -= 6; bounds.bottom -= 2; - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeButton(&bounds, kThemeArrowButton, &info, NULL/*prevInfo*/,NULL/*eraseProc*/,NULL/*labelProc*/,0/*userData*/); @@ -426,16 +432,16 @@ static void PopupArrowElementDraw( bounds.left -= 2; bounds.right -= 2; + OFFSET_RECT(d, bounds); DrawThemePopupArrow(&bounds, - kThemeArrowDown, + kThemeArrowDown, kThemeArrow9pt, /* ??? */ Ttk_StateTableLookup(ThemeStateTable, state), NULL /*eraseProc*/,0/*eraseData*/); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec PopupArrowElementSpec = -{ +static Ttk_ElementSpec PopupArrowElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -445,7 +451,7 @@ static Ttk_ElementSpec PopupArrowElementSpec = /*---------------------------------------------------------------------- * +++ DrawThemeTrack-based elements -- - * Progress bars and scales. (See also: <<NOTE-TRACKS>>) + * Progress bars and scales. (See also: <<NOTE-TRACKS>>) */ static Ttk_StateTable ThemeTrackEnableTable[] = { @@ -460,14 +466,15 @@ typedef struct { /* TrackElement client data */ SInt32 thicknessMetric; } TrackElementData; -static TrackElementData ScaleData = - { kThemeSlider, kThemeMetricHSliderHeight }; +static TrackElementData ScaleData = { + kThemeSlider, kThemeMetricHSliderHeight +}; typedef struct { Tcl_Obj *fromObj; /* minimum value */ Tcl_Obj *toObj; /* maximum value */ Tcl_Obj *valueObj; /* current value */ - Tcl_Obj *orientObj; /* horizontal / vertical */ + Tcl_Obj *orientObj; /* horizontal / vertical */ } TrackElement; static Ttk_ElementOptionSpec TrackElementOptions[] = { @@ -484,6 +491,7 @@ static void TrackElementGeometry( { TrackElementData *data = clientData; SInt32 size = 24; /* reasonable default ... */ + GetThemeMetric(data->thicknessMetric, &size); *widthPtr = *heightPtr = size; } @@ -518,20 +526,21 @@ static void TrackElementDraw( drawInfo.enableState = Ttk_StateTableLookup(ThemeTrackEnableTable, state); switch (data->kind) { - case kThemeProgressBar: - drawInfo.trackInfo.progress.phase = 0; /* 1-4: animation phase */ - break; - case kThemeSlider: - drawInfo.trackInfo.slider.pressState = 0; /* @@@ fill this in */ - drawInfo.trackInfo.slider.thumbDir = kThemeThumbPlain; - /* kThemeThumbUpward, kThemeThumbDownward, kThemeThumbPlain */ - break; + case kThemeProgressBar: + drawInfo.trackInfo.progress.phase = 0; /* 1-4: animation phase */ + break; + case kThemeSlider: + drawInfo.trackInfo.slider.pressState = 0; /* @@@ fill this in */ + drawInfo.trackInfo.slider.thumbDir = kThemeThumbPlain; + /* kThemeThumbUpward, kThemeThumbDownward, kThemeThumbPlain */ + break; } - BEGIN_DRAWING(d) + OFFSET_RECT(d, drawInfo.bounds); + BEGIN_DRAWING(d); DrawThemeTrack(&drawInfo, - NULL/*rgnGhost*/,NULL/*eraseProc*/,0/*eraseData*/); - END_DRAWING + NULL/*rgnGhost*/,NULL/*eraseProc*/,0/*eraseData*/); + END_DRAWING(); } static Ttk_ElementSpec TrackElementSpec = { @@ -544,8 +553,8 @@ static Ttk_ElementSpec TrackElementSpec = { /* Slider element -- <<NOTE-TRACKS>> - * Has geometry only. The Scale widget adjusts the position of this element, - * and uses it for hit detection. In the Aqua theme, the slider is actually + * Has geometry only. The Scale widget adjusts the position of this element, + * and uses it for hit detection. In the Aqua theme, the slider is actually * drawn as part of the trough element. * * Also buggy: The geometry here is a Wild-Assed-Guess; I can't @@ -569,14 +578,14 @@ static Ttk_ElementSpec SliderElementSpec = { /*---------------------------------------------------------------------- * +++ Progress bar element (new): - * + * * @@@ NOTE: According to an older revision of the Aqua reference docs, - * @@@ the 'phase' field is between 0 and 4. Newer revisions say + * @@@ the 'phase' field is between 0 and 4. Newer revisions say * @@@ that it can be any UInt8 value. */ typedef struct { - Tcl_Obj *orientObj; /* horizontal / vertical */ + Tcl_Obj *orientObj; /* horizontal / vertical */ Tcl_Obj *valueObj; /* current value */ Tcl_Obj *maximumObj; /* maximum value */ Tcl_Obj *phaseObj; /* animation phase */ @@ -584,16 +593,16 @@ typedef struct { } PbarElement; static Ttk_ElementOptionSpec PbarElementOptions[] = { - { "-orient", TK_OPTION_STRING, + { "-orient", TK_OPTION_STRING, Tk_Offset(PbarElement,orientObj), "horizontal" }, { "-value", TK_OPTION_DOUBLE, - Tk_Offset(PbarElement,valueObj), "0" }, + Tk_Offset(PbarElement,valueObj), "0" }, { "-maximum", TK_OPTION_DOUBLE, - Tk_Offset(PbarElement,maximumObj), "100" }, + Tk_Offset(PbarElement,maximumObj), "100" }, { "-phase", TK_OPTION_INT, - Tk_Offset(PbarElement,phaseObj), "0" }, - { "-mode", TK_OPTION_STRING, - Tk_Offset(PbarElement,modeObj), "determinate" }, + Tk_Offset(PbarElement,phaseObj), "0" }, + { "-mode", TK_OPTION_STRING, + Tk_Offset(PbarElement,modeObj), "determinate" }, {0,0,0,0} }; @@ -602,6 +611,7 @@ static void PbarElementGeometry( int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { SInt32 size = 24; /* @@@ Check HIG for correct default */ + GetThemeMetric(kThemeMetricLargeProgressBarThickness, &size); *widthPtr = *heightPtr = size; } @@ -636,10 +646,11 @@ static void PbarElementDraw( drawInfo.enableState = Ttk_StateTableLookup(ThemeTrackEnableTable, state); drawInfo.trackInfo.progress.phase = phase; - BEGIN_DRAWING(d) + OFFSET_RECT(d, drawInfo.bounds); + BEGIN_DRAWING(d); DrawThemeTrack(&drawInfo, - NULL/*rgnGhost*/,NULL/*eraseProc*/,0/*eraseData*/); - END_DRAWING + NULL/*rgnGhost*/,NULL/*eraseProc*/,0/*eraseData*/); + END_DRAWING(); } static Ttk_ElementSpec PbarElementSpec = { @@ -674,13 +685,13 @@ static void SeparatorElementDraw( /* DrawThemeSeparator only supports kThemeStateActive / kThemeStateInactive */ state &= TTK_STATE_BACKGROUND; - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeSeparator(&bounds, Ttk_StateTableLookup(ThemeStateTable, state)); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec SeparatorElementSpec = -{ +static Ttk_ElementSpec SeparatorElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -691,19 +702,18 @@ static Ttk_ElementSpec SeparatorElementSpec = /*---------------------------------------------------------------------- * +++ Size grip element. */ -static const ThemeGrowDirection sizegripGrowDirection +static const ThemeGrowDirection sizegripGrowDirection = kThemeGrowRight|kThemeGrowDown; static void SizegripElementSize( void *clientData, void *elementRecord, Tk_Window tkwin, int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { - Point origin; + Point origin = {0, 0}; Rect bounds; - origin.h = origin.v = 0; GetThemeStandaloneGrowBoxBounds( - origin, sizegripGrowDirection, false, &bounds); + origin, sizegripGrowDirection, false, &bounds); *widthPtr = bounds.right - bounds.left; *heightPtr = bounds.bottom - bounds.top; } @@ -713,20 +723,21 @@ static void SizegripElementDraw( Drawable d, Ttk_Box b, unsigned int state) { Point origin; + origin.h = b.x; origin.v = b.y; /* Grow box only supports kThemeStateActive, kThemeStateInactive */ state &= TTK_STATE_BACKGROUND; - BEGIN_DRAWING(d) + OFFSET_POINT(d, origin); + BEGIN_DRAWING(d); DrawThemeStandaloneGrowBox( - origin, sizegripGrowDirection, false, + origin, sizegripGrowDirection, false, Ttk_StateTableLookup(ThemeStateTable, state)); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec SizegripElementSpec = -{ +static Ttk_ElementSpec SizegripElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -743,18 +754,18 @@ static Ttk_ElementSpec SizegripElementSpec = * and the type of the top-level window. * * Also: patterned backgrounds should be aligned with the coordinate - * system of the top-level window. Since we're drawing into an - * off-screen graphics port with its own coordinate system, + * system of the top-level window. Since we're drawing into an + * off-screen graphics port with its own coordinate system, * this leads to alignment glitches. * * Available kTheme constants: - * kThemeBackgroundTabPane, - * kThemeBackgroundPlacard, - * kThemeBackgroundWindowHeader, - * kThemeBackgroundListViewWindowHeader, - * kThemeBackgroundSecondaryGroupBox, + * kThemeBackgroundTabPane, + * kThemeBackgroundPlacard, + * kThemeBackgroundWindowHeader, + * kThemeBackgroundListViewWindowHeader, + * kThemeBackgroundSecondaryGroupBox, * - * GetThemeBrush() and SetThemeBackground() offer more choices. + * GetThemeBrush() and SetThemeBackground() offer more choices. * */ @@ -781,17 +792,18 @@ static void BackgroundElementDraw( bounds.right = Tk_Width(tkwin); bounds.bottom = Tk_Height(tkwin); - BEGIN_DRAWING(d) + OFFSET_POINT(d, origin); + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); ApplyThemeBackground(kind, &bounds, - Ttk_StateTableLookup(ThemeStateTable, state), + Ttk_StateTableLookup(ThemeStateTable, state), depth, inColor); QDSetPatternOrigin(origin); EraseRect(&bounds); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec BackgroundElementSpec = -{ +static Ttk_ElementSpec BackgroundElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -802,14 +814,14 @@ static Ttk_ElementSpec BackgroundElementSpec = /*---------------------------------------------------------------------- * +++ ToolbarBackground element -- toolbar style for frames. * - * This is very similar to the normal background element, but uses a - * different ThemeBrush in order to get the lighter pinstripe effect - * used in toolbars. We use SetThemeBackground() rather than - * ApplyThemeBackground() in order to get the right style. + * This is very similar to the normal background element, but uses a + * different ThemeBrush in order to get the lighter pinstripe effect + * used in toolbars. We use SetThemeBackground() rather than + * ApplyThemeBackground() in order to get the right style. * * <URL: http://developer.apple.com/documentation/Carbon/Reference/ - * Appearance_Manager/appearance_manager/constant_7.html#/ - * /apple_ref/doc/uid/TP30000243/C005321> + * Appearance_Manager/appearance_manager/constant_7.html#/ + * /apple_ref/doc/uid/TP30000243/C005321> * */ static void ToolbarBackgroundElementDraw( @@ -825,15 +837,15 @@ static void ToolbarBackgroundElementDraw( bounds.right = Tk_Width(tkwin); bounds.bottom = Tk_Height(tkwin); - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); SetThemeBackground(brush, depth, inColor); EraseRect(&bounds); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec ToolbarBackgroundElementSpec = -{ +static Ttk_ElementSpec ToolbarBackgroundElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -864,14 +876,14 @@ static void TreeHeaderElementDraw( info.value = Ttk_StateTableLookup(ButtonValueTable, state); info.adornment = Ttk_StateTableLookup(TreeHeaderAdornmentTable, state); - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeButton(&bounds, parms->kind, &info, NULL/*prevInfo*/,NULL/*eraseProc*/,NULL/*labelProc*/,0/*userData*/); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec TreeHeaderElementSpec = -{ +static Ttk_ElementSpec TreeHeaderElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -904,21 +916,22 @@ static void DisclosureElementDraw( Rect bounds = BoxToRect(b); ThemeButtonDrawInfo info; - if (state & TTK_TREEVIEW_STATE_LEAF) + if (state & TTK_TREEVIEW_STATE_LEAF) { return; + } info.state = Ttk_StateTableLookup(ThemeStateTable, state); info.value = Ttk_StateTableLookup(DisclosureValueTable, state); info.adornment = kThemeAdornmentDrawIndicatorOnly; - BEGIN_DRAWING(d) + OFFSET_RECT(d, bounds); + BEGIN_DRAWING(d); DrawThemeButton(&bounds, kThemeDisclosureTriangle, &info, NULL/*prevInfo*/,DontErase,NULL/*labelProc*/,0/*userData*/); - END_DRAWING + END_DRAWING(); } -static Ttk_ElementSpec DisclosureElementSpec = -{ +static Ttk_ElementSpec DisclosureElementSpec = { TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, @@ -995,19 +1008,19 @@ static int AquaTheme_Init(Tcl_Interp *interp) &ToolbarBackgroundElementSpec, 0); Ttk_RegisterElementSpec(themePtr, "Button.button", - &ButtonElementSpec, &PushButtonParms); + &ButtonElementSpec, &PushButtonParms); Ttk_RegisterElementSpec(themePtr, "Checkbutton.button", - &ButtonElementSpec, &CheckBoxParms); + &ButtonElementSpec, &CheckBoxParms); Ttk_RegisterElementSpec(themePtr, "Radiobutton.button", - &ButtonElementSpec, &RadioButtonParms); + &ButtonElementSpec, &RadioButtonParms); Ttk_RegisterElementSpec(themePtr, "Toolbutton.border", - &ButtonElementSpec, &BevelButtonParms); + &ButtonElementSpec, &BevelButtonParms); Ttk_RegisterElementSpec(themePtr, "Menubutton.button", - &ButtonElementSpec, &PopupButtonParms); + &ButtonElementSpec, &PopupButtonParms); Ttk_RegisterElementSpec(themePtr, "Treeitem.indicator", - &DisclosureElementSpec, &DisclosureParms); + &DisclosureElementSpec, &DisclosureParms); Ttk_RegisterElementSpec(themePtr, "Treeheading.cell", - &TreeHeaderElementSpec, &ListHeaderParms); + &TreeHeaderElementSpec, &ListHeaderParms); Ttk_RegisterElementSpec(themePtr, "Notebook.tab", &TabElementSpec, 0); Ttk_RegisterElementSpec(themePtr, "Notebook.client", &PaneElementSpec, 0); @@ -1017,7 +1030,7 @@ static int AquaTheme_Init(Tcl_Interp *interp) Ttk_RegisterElementSpec(themePtr, "Combobox.field",&EntryElementSpec,0); Ttk_RegisterElementSpec(themePtr, "Combobox.downarrow", - &PopupArrowElementSpec, 0); + &PopupArrowElementSpec, 0); Ttk_RegisterElementSpec(themePtr, "separator",&SeparatorElementSpec,0); Ttk_RegisterElementSpec(themePtr, "hseparator",&SeparatorElementSpec,0); @@ -1031,7 +1044,7 @@ static int AquaTheme_Init(Tcl_Interp *interp) * we do all the drawing in the ".track" element and leave the .pbar out. */ Ttk_RegisterElementSpec(themePtr,"Scale.trough", - &TrackElementSpec, &ScaleData); + &TrackElementSpec, &ScaleData); Ttk_RegisterElementSpec(themePtr,"Scale.slider",&SliderElementSpec,0); Ttk_RegisterElementSpec(themePtr,"Progressbar.track", &PbarElementSpec, 0); |