diff options
author | csaba <csaba> | 2023-11-13 17:26:02 (GMT) |
---|---|---|
committer | csaba <csaba> | 2023-11-13 17:26:02 (GMT) |
commit | 77f93393c12a891b1f70d1d192302b41fe82a5a8 (patch) | |
tree | 7c672348a4da7d496f528531d22f1b48118c0f72 /win/ttkWinTheme.c | |
parent | fd0dfa4ae8595298c7d5222326eccb81e7512d3c (diff) | |
download | tk-77f93393c12a891b1f70d1d192302b41fe82a5a8.zip tk-77f93393c12a891b1f70d1d192302b41fe82a5a8.tar.gz tk-77f93393c12a891b1f70d1d192302b41fe82a5a8.tar.bz2 |
Using the application's TkMainInfo struct for sharing the nbTabsStickBit in a thread-safe manner. Thanks Christian W.!
Diffstat (limited to 'win/ttkWinTheme.c')
-rw-r--r-- | win/ttkWinTheme.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/win/ttkWinTheme.c b/win/ttkWinTheme.c index 46be6f0..e797206 100644 --- a/win/ttkWinTheme.c +++ b/win/ttkWinTheme.c @@ -658,17 +658,22 @@ static const Ttk_ElementOptionSpec TabElementOptions[] = { {0,TK_OPTION_BOOLEAN,0,0} }; -extern Ttk_PositionSpec nbTabsStickBit; /* see ttkNotebook.c */ - static void TabElementSize( void *clientData, void *elementRecord, Tk_Window tkwin, int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { TabElement *tab = (TabElement *)elementRecord; int borderWidth = 1; + Ttk_PositionSpec nbTabsStickBit = TTK_STICK_S; + TkMainInfo *mainInfoPtr = ((TkWindow *) tkwin)->mainPtr; Tk_GetPixelsFromObj(0, tkwin, tab->borderWidthObj, &borderWidth); *paddingPtr = Ttk_UniformPadding((short)borderWidth); + + if (mainInfoPtr != NULL) { + nbTabsStickBit = (Ttk_PositionSpec) mainInfoPtr->ttkNbTabsStickBit; + } + switch (nbTabsStickBit) { default: case TTK_STICK_S: @@ -690,6 +695,8 @@ static void TabElementDraw( void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, unsigned int state) { + Ttk_PositionSpec nbTabsStickBit = TTK_STICK_S; + TkMainInfo *mainInfoPtr = ((TkWindow *) tkwin)->mainPtr; TabElement *tab = (TabElement *)elementRecord; Tk_3DBorder border = Tk_Get3DBorderFromObj(tkwin, tab->backgroundObj); XPoint pts[6]; @@ -697,6 +704,10 @@ static void TabElementDraw( Display *disp = Tk_Display(tkwin); int borderWidth = 1; + if (mainInfoPtr != NULL) { + nbTabsStickBit = (Ttk_PositionSpec) mainInfoPtr->ttkNbTabsStickBit; + } + if (state & TTK_STATE_SELECTED) { /* * Draw slightly outside of the allocated parcel, |