diff options
Diffstat (limited to 'win/ttkWinTheme.c')
-rw-r--r-- | win/ttkWinTheme.c | 444 |
1 files changed, 167 insertions, 277 deletions
diff --git a/win/ttkWinTheme.c b/win/ttkWinTheme.c index a05c0de..41754ee 100644 --- a/win/ttkWinTheme.c +++ b/win/ttkWinTheme.c @@ -1,6 +1,6 @@ /* winTheme.c - Copyright (C) 2004 Pat Thoyts <patthoyts@users.sf.net> * - * $Id: ttkWinTheme.c,v 1.7 2007/09/08 16:13:45 dkf Exp $ + * $Id: ttkWinTheme.c,v 1.8 2007/10/25 07:08:26 jenglish Exp $ */ #ifdef _MSC_VER @@ -16,18 +16,14 @@ #endif #include "ttk/ttkTheme.h" - + /* * BoxToRect -- * Helper routine. Converts a Ttk_Box to a Win32 RECT. */ - -static RECT -BoxToRect( - Ttk_Box b) +static RECT BoxToRect(Ttk_Box b) { RECT rc; - rc.top = b.y; rc.left = b.x; rc.bottom = b.y + b.height; @@ -37,39 +33,31 @@ BoxToRect( /* * ReliefToEdge -- - * Convert a Tk "relief" value into an Windows "edge" value. NB: Caller - * must check for RELIEF_FLAT and RELIEF_SOLID, which must be handled - * specially. + * Convert a Tk "relief" value into an Windows "edge" value. + * NB: Caller must check for RELIEF_FLAT and RELIEF_SOLID, + * which must be handled specially. * - * Passing the BF_FLAT flag to DrawEdge() yields something similar to - * TK_RELIEF_SOLID. TK_RELIEF_FLAT can be implemented by not drawing - * anything. + * Passing the BF_FLAT flag to DrawEdge() yields something similar + * to TK_RELIEF_SOLID. TK_RELIEF_FLAT can be implemented by not + * drawing anything. */ - -static unsigned int -ReliefToEdge( - int relief) +static unsigned int ReliefToEdge(int relief) { switch (relief) { - case TK_RELIEF_RAISED: - return EDGE_RAISED; - case TK_RELIEF_SUNKEN: - return EDGE_SUNKEN; - case TK_RELIEF_RIDGE: - return EDGE_BUMP; - case TK_RELIEF_GROOVE: - return EDGE_ETCHED; - case TK_RELIEF_SOLID: - return BDR_RAISEDOUTER; - default: - case TK_RELIEF_FLAT: - return BDR_RAISEDOUTER; + case TK_RELIEF_RAISED: return EDGE_RAISED; + case TK_RELIEF_SUNKEN: return EDGE_SUNKEN; + case TK_RELIEF_RIDGE: return EDGE_BUMP; + case TK_RELIEF_GROOVE: return EDGE_ETCHED; + case TK_RELIEF_SOLID: return BDR_RAISEDOUTER; + default: + case TK_RELIEF_FLAT: return BDR_RAISEDOUTER; } } /* ---------------------------------------------------------------------- */ -static Ttk_StateTable checkbutton_statemap[] = { +static Ttk_StateTable checkbutton_statemap[] = +{ { DFCS_CHECKED|DFCS_INACTIVE, TTK_STATE_SELECTED|TTK_STATE_DISABLED, 0 }, { DFCS_CHECKED|DFCS_PUSHED, TTK_STATE_SELECTED|TTK_STATE_PRESSED, 0 }, { DFCS_CHECKED, TTK_STATE_SELECTED, 0 }, @@ -78,24 +66,27 @@ static Ttk_StateTable checkbutton_statemap[] = { { 0, 0, 0 } }; -static Ttk_StateTable pushbutton_statemap[] = { +static Ttk_StateTable pushbutton_statemap[] = +{ { DFCS_INACTIVE, TTK_STATE_DISABLED, 0 }, { DFCS_PUSHED, TTK_STATE_PRESSED, 0 }, { DFCS_HOT, TTK_STATE_ACTIVE, 0 }, { 0, 0, 0 } }; -static Ttk_StateTable arrow_statemap[] = { +static Ttk_StateTable arrow_statemap[] = +{ { DFCS_INACTIVE, TTK_STATE_DISABLED, 0 }, { DFCS_PUSHED | DFCS_FLAT, TTK_STATE_PRESSED, 0 }, { 0, 0, 0 } }; - + /*------------------------------------------------------------------------ * +++ FrameControlElement -- * General-purpose element for things drawn with DrawFrameControl */ -typedef struct { +typedef struct +{ const char *name; /* element name */ int classId; /* class id for DrawFrameControl */ int partId; /* part id for DrawFrameControl */ @@ -105,7 +96,8 @@ typedef struct { Ttk_Padding padding; /* additional placement padding */ } FrameControlElementData; -static FrameControlElementData FrameControlElements[] = { +static FrameControlElementData FrameControlElements[] = +{ { "Checkbutton.indicator", DFC_BUTTON, DFCS_BUTTONCHECK, SM_CYMENUCHECK, SM_CYMENUCHECK, checkbutton_statemap, {0,0,4,0} }, @@ -133,55 +125,46 @@ static FrameControlElementData FrameControlElements[] = { /* ---------------------------------------------------------------------- */ -static void -FrameControlElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void FrameControlElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { FrameControlElementData *elementData = clientData; - *widthPtr = GetSystemMetrics(elementData->cxId); *heightPtr = GetSystemMetrics(elementData->cyId); *paddingPtr = elementData->padding; } -static void -FrameControlElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void FrameControlElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { FrameControlElementData *elementData = clientData; RECT rc = BoxToRect(b); TkWinDCState dcState; HDC hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); - DrawFrameControl(hdc, &rc, elementData->classId, - elementData->partId|Ttk_StateTableLookup(elementData->stateMap,state)); + DrawFrameControl(hdc, &rc, + elementData->classId, + elementData->partId|Ttk_StateTableLookup(elementData->stateMap, state)); TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec FrameControlElementSpec = { +static Ttk_ElementSpec FrameControlElementSpec = +{ TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, - FrameControlElementGeometry, + FrameControlElementSize, FrameControlElementDraw }; - + /*---------------------------------------------------------------------- * +++ Border element implementation. */ typedef struct { - Tcl_Obj *reliefObj; + Tcl_Obj *reliefObj; } BorderElement; static Ttk_ElementOptionSpec BorderElementOptions[] = { @@ -189,27 +172,17 @@ static Ttk_ElementOptionSpec BorderElementOptions[] = { {NULL} }; -static void -BorderElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void BorderElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { paddingPtr->left = paddingPtr->right = GetSystemMetrics(SM_CXEDGE); paddingPtr->top = paddingPtr->bottom = GetSystemMetrics(SM_CYEDGE); } -static void -BorderElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void BorderElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { BorderElement *border = elementRecord; RECT rc = BoxToRect(b); @@ -221,57 +194,49 @@ BorderElementDraw( if (relief != TK_RELIEF_FLAT) { UINT xFlags = (relief == TK_RELIEF_SOLID) ? BF_FLAT : 0; - hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); DrawEdge(hdc, &rc, ReliefToEdge(relief), BF_RECT | xFlags); TkWinReleaseDrawableDC(d, hdc, &dcState); } } -static Ttk_ElementSpec BorderElementSpec = { +static Ttk_ElementSpec BorderElementSpec = +{ TK_STYLE_VERSION_2, sizeof(BorderElement), BorderElementOptions, - BorderElementGeometry, + BorderElementSize, BorderElementDraw }; - + /* * Entry field borders: * Sunken border; also fill with window color. */ -typedef struct { - Tcl_Obj *backgroundObj; +typedef struct +{ + Tcl_Obj *backgroundObj; } FieldElement; -static Ttk_ElementOptionSpec FieldElementOptions[] = { +static Ttk_ElementOptionSpec FieldElementOptions[] = +{ { "-fieldbackground", TK_OPTION_BORDER, Tk_Offset(FieldElement,backgroundObj), "white" }, {NULL} }; -static void -FieldElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void FieldElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { paddingPtr->left = paddingPtr->right = GetSystemMetrics(SM_CXEDGE); paddingPtr->top = paddingPtr->bottom = GetSystemMetrics(SM_CYEDGE); } -static void -FieldElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void FieldElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { FieldElement *field = elementRecord; Tk_3DBorder bg = Tk_Get3DBorderFromObj(tkwin, field->backgroundObj); @@ -279,32 +244,32 @@ FieldElementDraw( TkWinDCState dcState; HDC hdc; - Tk_Fill3DRectangle(tkwin, d, bg, b.x, b.y, b.width, b.height, 0, - TK_RELIEF_FLAT); + Tk_Fill3DRectangle( + tkwin, d, bg, b.x, b.y, b.width, b.height, 0, TK_RELIEF_FLAT); hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); DrawEdge(hdc, &rc, EDGE_SUNKEN, BF_RECT); TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec FieldElementSpec = { +static Ttk_ElementSpec FieldElementSpec = +{ TK_STYLE_VERSION_2, sizeof(FieldElement), FieldElementOptions, - FieldElementGeometry, + FieldElementSize, FieldElementDraw }; - + /*------------------------------------------------------------------------ * +++ Button borders. * Drawn with DrawFrameControl instead of DrawEdge; * Also draw default indicator and focus ring. */ - typedef struct { - Tcl_Obj *reliefObj; - Tcl_Obj *highlightColorObj; - Tcl_Obj *defaultStateObj; + Tcl_Obj *reliefObj; + Tcl_Obj *highlightColorObj; + Tcl_Obj *defaultStateObj; } ButtonBorderElement; static Ttk_ElementOptionSpec ButtonBorderElementOptions[] = { @@ -317,14 +282,9 @@ static Ttk_ElementOptionSpec ButtonBorderElementOptions[] = { {NULL} }; -static void -ButtonBorderElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void ButtonBorderElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { ButtonBorderElement *bd = elementRecord; int relief = TK_RELIEF_RAISED; @@ -339,8 +299,7 @@ ButtonBorderElementGeometry( /* Space for default indicator: */ if (defaultState != TTK_BUTTON_DEFAULT_DISABLED) { - ++cx; - ++cy; + ++cx; ++cy; } /* Space for focus ring: @@ -351,14 +310,9 @@ ButtonBorderElementGeometry( *paddingPtr = Ttk_MakePadding(cx,cy,cx,cy); } -static void -ButtonBorderElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void ButtonBorderElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { ButtonBorderElement *bd = elementRecord; int relief = TK_RELIEF_FLAT; @@ -372,7 +326,7 @@ ButtonBorderElementDraw( if (defaultState == TTK_BUTTON_DEFAULT_ACTIVE) { XColor *highlightColor = - Tk_GetColorFromObj(tkwin, bd->highlightColorObj); + Tk_GetColorFromObj(tkwin, bd->highlightColorObj); GC gc = Tk_GCForColor(highlightColor, d); XDrawRectangle(Tk_Display(tkwin), d, gc, b.x,b.y,b.width-1,b.height-1); } @@ -383,69 +337,60 @@ ButtonBorderElementDraw( hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); rc = BoxToRect(b); - DrawFrameControl(hdc, &rc, DFC_BUTTON, /* classId */ - DFCS_BUTTONPUSH|Ttk_StateTableLookup(pushbutton_statemap, state)); + DrawFrameControl(hdc, &rc, + DFC_BUTTON, /* classId */ + DFCS_BUTTONPUSH | Ttk_StateTableLookup(pushbutton_statemap, state)); /* Draw focus ring: */ if (state & TTK_STATE_FOCUS) { short int borderWidth = 3; /* @@@ Use GetSystemMetrics?*/ - rc = BoxToRect(Ttk_PadBox(b, Ttk_UniformPadding(borderWidth))); DrawFocusRect(hdc, &rc); } TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec ButtonBorderElementSpec = { +static Ttk_ElementSpec ButtonBorderElementSpec = +{ TK_STYLE_VERSION_2, sizeof(ButtonBorderElement), ButtonBorderElementOptions, - ButtonBorderElementGeometry, + ButtonBorderElementSize, ButtonBorderElementDraw }; - + /*------------------------------------------------------------------------ * +++ Focus element. * Draw dashed focus rectangle. */ -static void -FocusElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void FocusElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { *paddingPtr = Ttk_UniformPadding(1); } -static void -FocusElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void FocusElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { if (state & TTK_STATE_FOCUS) { RECT rc = BoxToRect(b); TkWinDCState dcState; HDC hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); - DrawFocusRect(hdc, &rc); TkWinReleaseDrawableDC(d, hdc, &dcState); } } -static Ttk_ElementSpec FocusElementSpec = { +static Ttk_ElementSpec FocusElementSpec = +{ TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, - FocusElementGeometry, + FocusElementSize, FocusElementDraw }; @@ -464,17 +409,11 @@ static Ttk_ElementOptionSpec FillFocusElementOptions[] = { }; /* @@@ FIX THIS */ -static void -FillFocusElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void FillFocusElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { FillFocusElement *focus = elementRecord; - if (state & TTK_STATE_FOCUS) { RECT rc = BoxToRect(b); TkWinDCState dcState; @@ -493,77 +432,61 @@ FillFocusElementDraw( * ComboboxFocusElement -- * Read-only comboboxes have a filled focus ring, editable ones do not. */ - -static void -ComboboxFocusElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void ComboboxFocusElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { if (state & TTK_STATE_READONLY) { FillFocusElementDraw(clientData, elementRecord, tkwin, d, b, state); } } -static Ttk_ElementSpec ComboboxFocusElementSpec = { +static Ttk_ElementSpec ComboboxFocusElementSpec = +{ TK_STYLE_VERSION_2, sizeof(FillFocusElement), FillFocusElementOptions, - FocusElementGeometry, + FocusElementSize, ComboboxFocusElementDraw }; - + /*---------------------------------------------------------------------- * +++ Scrollbar trough element. * * The native windows scrollbar is drawn using a pattern brush giving a - * stippled appearance when the trough might otherwise be invisible. We can - * deal with this here. + * stippled appearance when the trough might otherwise be invisible. + * We can deal with this here. */ -typedef struct { /* clientData for Trough element */ - HBRUSH PatternBrush; - HBITMAP PatternBitmap; +typedef struct { /* clientData for Trough element */ + HBRUSH PatternBrush; + HBITMAP PatternBitmap; } TroughClientData; static const WORD Pattern[] = { 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa }; -static void -TroughClientDataDeleteProc( - void *clientData) +static void TroughClientDataDeleteProc(void *clientData) { TroughClientData *cd = clientData; - DeleteObject(cd->PatternBrush); DeleteObject(cd->PatternBitmap); ckfree(clientData); } -static TroughClientData * -TroughClientDataInit( - Tcl_Interp *interp) +static TroughClientData *TroughClientDataInit(Tcl_Interp *interp) { - TroughClientData *cd = (TroughClientData *) ckalloc(sizeof(*cd)); - + TroughClientData *cd = (TroughClientData*)ckalloc(sizeof(*cd)); cd->PatternBitmap = CreateBitmap(8, 8, 1, 1, Pattern); - cd->PatternBrush = CreatePatternBrush(cd->PatternBitmap); + cd->PatternBrush = CreatePatternBrush(cd->PatternBitmap); Ttk_RegisterCleanup(interp, cd, TroughClientDataDeleteProc); return cd; } -static void -TroughElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void TroughElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { TroughClientData *cd = clientData; TkWinDCState dcState; @@ -589,34 +512,33 @@ TroughElementDraw( TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec TroughElementSpec = { +static Ttk_ElementSpec TroughElementSpec = +{ TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, - TtkNullElementGeometry, + TtkNullElementSize, TroughElementDraw }; - + /*------------------------------------------------------------------------ * +++ Thumb element. */ -typedef struct { +typedef struct +{ Tcl_Obj *orientObj; } ThumbElement; -static Ttk_ElementOptionSpec ThumbElementOptions[] = { +static Ttk_ElementOptionSpec ThumbElementOptions[] = +{ { "-orient", TK_OPTION_ANY,Tk_Offset(ThumbElement,orientObj),"horizontal"}, { NULL } }; -static void ThumbElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void ThumbElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { ThumbElement *thumbPtr = elementRecord; int orient; @@ -631,60 +553,52 @@ static void ThumbElementGeometry( } } -static void -ThumbElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void ThumbElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { RECT rc = BoxToRect(b); TkWinDCState dcState; HDC hdc; /* Windows doesn't show a thumb when the scrollbar is disabled */ - if (state & TTK_STATE_DISABLED) { + if (state & TTK_STATE_DISABLED) return; - } hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); DrawEdge(hdc, &rc, EDGE_RAISED, BF_RECT | BF_MIDDLE); TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec ThumbElementSpec = { +static Ttk_ElementSpec ThumbElementSpec = +{ TK_STYLE_VERSION_2, sizeof(ThumbElement), ThumbElementOptions, - ThumbElementGeometry, + ThumbElementSize, ThumbElementDraw }; - + /* ---------------------------------------------------------------------- * The slider element is the shaped thumb used in the slider widget. * Windows likes to call this a trackbar. */ -typedef struct { +typedef struct +{ Tcl_Obj *orientObj; /* orientation of the slider widget */ } SliderElement; -static Ttk_ElementOptionSpec SliderElementOptions[] = { +static Ttk_ElementOptionSpec SliderElementOptions[] = +{ { "-orient", TK_OPTION_ANY, Tk_Offset(SliderElement,orientObj), "horizontal" }, { NULL } }; -static void -SliderElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void SliderElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { SliderElement *slider = elementRecord; int orient; @@ -699,14 +613,9 @@ SliderElementGeometry( } } -static void -SliderElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void SliderElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { RECT rc = BoxToRect(b); TkWinDCState dcState; @@ -717,56 +626,47 @@ SliderElementDraw( TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec SliderElementSpec = { +static Ttk_ElementSpec SliderElementSpec = +{ TK_STYLE_VERSION_2, sizeof(SliderElement), SliderElementOptions, - SliderElementGeometry, + SliderElementSize, SliderElementDraw }; - + /*------------------------------------------------------------------------ * +++ Notebook elements. */ -static void -ClientElementGeometry( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - int *widthPtr, - int *heightPtr, - Ttk_Padding *paddingPtr) +static void ClientElementSize( + void *clientData, void *elementRecord, Tk_Window tkwin, + int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { paddingPtr->left = paddingPtr->right = GetSystemMetrics(SM_CXEDGE); paddingPtr->top = paddingPtr->bottom = GetSystemMetrics(SM_CYEDGE); } -static void -ClientElementDraw( - void *clientData, - void *elementRecord, - Tk_Window tkwin, - Drawable d, - Ttk_Box b, - unsigned int state) +static void ClientElementDraw( + void *clientData, void *elementRecord, Tk_Window tkwin, + Drawable d, Ttk_Box b, unsigned int state) { RECT rc = BoxToRect(b); TkWinDCState dcState; HDC hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); - DrawEdge(hdc, &rc, EDGE_RAISED, BF_RECT | BF_SOFT); TkWinReleaseDrawableDC(d, hdc, &dcState); } -static Ttk_ElementSpec ClientElementSpec = { +static Ttk_ElementSpec ClientElementSpec = +{ TK_STYLE_VERSION_2, sizeof(NullElement), TtkNullElementOptions, - ClientElementGeometry, + ClientElementSize, ClientElementDraw }; - + /*------------------------------------------------------------------------ * +++ Layouts. */ @@ -784,13 +684,11 @@ TTK_BEGIN_LAYOUT(ComboboxLayout) TTK_GROUP("Combobox.focus", TTK_PACK_LEFT|TTK_EXPAND|TTK_FILL_BOTH, TTK_NODE("Combobox.textarea", TTK_FILL_BOTH)))) TTK_END_LAYOUT - + + /* ---------------------------------------------------------------------- */ -MODULE_SCOPE int -TtkWinTheme_Init( - Tcl_Interp *interp, - HWND hwnd) +MODULE_SCOPE int TtkWinTheme_Init(Tcl_Interp *interp, HWND hwnd) { Ttk_Theme themePtr, parentPtr; FrameControlElementData *fce = FrameControlElements; @@ -803,15 +701,15 @@ TtkWinTheme_Init( Ttk_RegisterElementSpec(themePtr, "border", &BorderElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "Button.border", - &ButtonBorderElementSpec, NULL); + &ButtonBorderElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "field", &FieldElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "focus", &FocusElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "Combobox.focus", - &ComboboxFocusElementSpec, NULL); + &ComboboxFocusElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "thumb", &ThumbElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "slider", &SliderElementSpec, NULL); Ttk_RegisterElementSpec(themePtr, "Scrollbar.trough", &TroughElementSpec, - TroughClientDataInit(interp)); + TroughClientDataInit(interp)); Ttk_RegisterElementSpec(themePtr, "client", &ClientElementSpec, NULL); @@ -826,11 +724,3 @@ TtkWinTheme_Init( Tcl_PkgProvide(interp, "ttk::theme::winnative", TTK_VERSION); return TCL_OK; } - -/* - * Local Variables: - * mode: c - * c-basic-offset: 4 - * fill-column: 78 - * End: - */ |