Posted to tcl by patthoyts at Thu Mar 05 22:47:36 GMT 2009view raw
- diff --git a/generic/ttk/ttkButton.c b/generic/ttk/ttkButton.c
- index d901cc6..15548ea 100644
- --- a/generic/ttk/ttkButton.c
- +++ b/generic/ttk/ttkButton.c
- @@ -11,8 +11,7 @@
- /* Bit fields for OptionSpec mask field:
- */
- -#define STATE_CHANGED (0x100) /* -state option changed */
- -#define DEFAULTSTATE_CHANGED (0x200) /* -default option changed */
- +#define DEFAULTSTATE_CHANGED (0x100) /* -default option changed */
- /*------------------------------------------------------------------------
- * +++ Base resources for labels, buttons, checkbuttons, etc:
- diff --git a/generic/ttk/ttkEntry.c b/generic/ttk/ttkEntry.c
- index d86e3f4..b775419 100644
- --- a/generic/ttk/ttkEntry.c
- +++ b/generic/ttk/ttkEntry.c
- @@ -141,9 +141,8 @@ typedef struct {
- /*
- * Extra mask bits for Tk_SetOptions()
- */
- -#define STATE_CHANGED (0x100) /* -state option changed */
- -#define TEXTVAR_CHANGED (0x200) /* -textvariable option changed */
- -#define SCROLLCMD_CHANGED (0x400) /* -xscrollcommand option changed */
- +#define TEXTVAR_CHANGED (0x100) /* -textvariable option changed */
- +#define SCROLLCMD_CHANGED (0x200) /* -xscrollcommand option changed */
- /*
- * Default option values:
- diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c
- index a38ff68..06742c9 100644
- --- a/generic/ttk/ttkTreeview.c
- +++ b/generic/ttk/ttkTreeview.c
- @@ -20,8 +20,6 @@ static const int HALO = 4; /* separator */
- #define TTK_STATE_OPEN TTK_STATE_USER1
- #define TTK_STATE_LEAF TTK_STATE_USER2
- -#define STATE_CHANGED (0x100) /* item state option changed */
- -
- /*------------------------------------------------------------------------
- * +++ Tree items.
- *
- diff --git a/generic/ttk/ttkWidget.c b/generic/ttk/ttkWidget.c
- index 57b0d38..c1b7f06 100644
- --- a/generic/ttk/ttkWidget.c
- +++ b/generic/ttk/ttkWidget.c
- @@ -454,6 +454,7 @@ int TtkWidgetConstructorObjCmd(
- Tcl_Release(corePtr);
- + UpdateLayout(interp, corePtr);
- SizeChanged(corePtr);
- Tk_MakeWindowExist(tkwin);
- @@ -483,16 +484,27 @@ Ttk_Layout TtkWidgetGetLayout(
- Tcl_Interp *interp, Ttk_Theme themePtr, void *recordPtr)
- {
- WidgetCore *corePtr = recordPtr;
- + Ttk_Layout layout;
- + Tcl_DString ds;
- const char *styleName = 0;
- + Tcl_DStringInit(&ds);
- if (corePtr->styleObj)
- styleName = Tcl_GetString(corePtr->styleObj);
- - if (!styleName || *styleName == '\0')
- + if (!styleName || *styleName == '\0') {
- styleName = corePtr->widgetSpec->className;
- + if (corePtr->state & TTK_STATE_READONLY) {
- + Tcl_DStringAppend(&ds, "Readonly.", -1);
- + Tcl_DStringAppend(&ds, styleName, -1);
- + styleName = Tcl_DStringValue(&ds);
- + }
- + }
- - return Ttk_CreateLayout(interp, themePtr, styleName,
- + layout = Ttk_CreateLayout(interp, themePtr, styleName,
- recordPtr, corePtr->optionTable, corePtr->tkwin);
- + Tcl_DStringFree(&ds);
- + return layout;
- }
- /*
- @@ -682,6 +694,10 @@ Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], void *recordPtr)
- SizeChanged(corePtr);
- }
- + if (mask & STATE_CHANGED) {
- + UpdateLayout(interp, corePtr);
- + }
- +
- TtkRedisplayWidget(corePtr);
- result = Tcl_NewObj();
- }
- @@ -727,6 +743,10 @@ int TtkWidgetStateCommand(
- corePtr->state = Ttk_ModifyState(corePtr->state, &spec);
- changed = corePtr->state ^ oldState;
- + if (changed) {
- + UpdateLayout(interp, corePtr);
- + }
- +
- TtkRedisplayWidget(corePtr);
- Tcl_SetObjResult(interp,
- diff --git a/generic/ttk/ttkWidget.h b/generic/ttk/ttkWidget.h
- index b7b4c5d..9a0a394 100644
- --- a/generic/ttk/ttkWidget.h
- +++ b/generic/ttk/ttkWidget.h
- @@ -20,6 +20,7 @@
- #define READONLY_OPTION 0x1
- #define STYLE_CHANGED 0x2
- #define GEOMETRY_CHANGED 0x4
- +#define STATE_CHANGED 0x8 /* -state option changed */
- /*
- * Core widget elements
- diff --git a/library/ttk/vistaTheme.tcl b/library/ttk/vistaTheme.tcl
- index 76f3e3e..4ac15e4 100644
- --- a/library/ttk/vistaTheme.tcl
- +++ b/library/ttk/vistaTheme.tcl
- @@ -51,6 +51,12 @@ namespace eval ttk::theme::vista {
- # Combobox
- ttk::style configure TCombobox -padding 2
- + ttk::style map TCombobox \
- + -selectbackground [list !focus SystemWindow] \
- + -selectforeground [list !focus SystemWindowText] \
- + -foreground [list {readonly focus} SystemHighlightText] \
- + -focusfill [list {readonly focus} SystemHighlight] \
- + ;
- ttk::style element create Combobox.field vsapi \
- COMBOBOX 2 {{} 1}
- ttk::style element create Combobox.border vsapi \
- @@ -67,20 +73,30 @@ namespace eval ttk::theme::vista {
- }
- }
- }
- + ttk::style map Readonly.TCombobox -foreground {} -focusfill {} \
- + -selectbackground {} -selectforeground {}
- + ttk::style element create Combobox.readonlyborder vsapi \
- + COMBOBOX 5 {disabled 4 pressed 3 active 2 hover 2 {} 1}
- + ttk::style element create Combobox.readonlyarrow vsapi \
- + COMBOBOX 6 {disabled 4 {} 1}
- + ttk::style layout Readonly.TCombobox {
- + Combobox.readonlyborder -sticky nswe -border 0 -children {
- + Combobox.readonlyarrow -side right -sticky ns
- + Combobox.padding -expand 1 -sticky nswe -children {
- + focus -expand 1 -sticky nswe -children {
- + Combobox.textarea -sticky nswe
- + }
- + }
- + }
- + }
- # Vista.Combobox droplist frame
- ttk::style element create ComboboxPopdownFrame.background vsapi\
- - LISTBOX 3 {disabled 4 active 3 focus 2 {} 1}
- + LISTBOX 3 {disabled 4 active 3 focus 2 {} 1} -padding 2
- ttk::style layout ComboboxPopdownFrame {
- ComboboxPopdownFrame.background -sticky news -border 1 -children {
- ComboboxPopdownFrame.padding -sticky news
- }
- }
- - ttk::style map TCombobox \
- - -selectbackground [list !focus SystemWindow] \
- - -selectforeground [list !focus SystemWindowText] \
- - -foreground [list {readonly focus} SystemHighlightText] \
- - -focusfill [list {readonly focus} SystemHighlight] \
- - ;
- # Entry
- ttk::style configure TEntry -padding {1 1 1 1} ;# Needs lookup