diff options
-rw-r--r-- | generic/tkTreeColumn.c | 8 | ||||
-rw-r--r-- | generic/tkTreeElem.c | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/generic/tkTreeColumn.c b/generic/tkTreeColumn.c index 6d43e1f..c700090 100644 --- a/generic/tkTreeColumn.c +++ b/generic/tkTreeColumn.c @@ -4,6 +4,7 @@ typedef struct Column Column; struct Column { + Tcl_Obj *textObj; /* -text */ char *text; /* -text */ int width; /* -width */ Tcl_Obj *widthObj; /* -width */ @@ -140,7 +141,7 @@ static Tk_OptionSpec columnSpecs[] = { (char *) NULL, -1, Tk_Offset(Column, tag), TK_OPTION_NULL_OK, (ClientData) NULL, COLU_CONF_TAG}, {TK_OPTION_STRING, "-text", (char *) NULL, (char *) NULL, - (char *) NULL, -1, Tk_Offset(Column, text), + (char *) NULL, Tk_Offset(Column, textObj), Tk_Offset(Column, text), TK_OPTION_NULL_OK, (ClientData) NULL, COLU_CONF_TEXT | COLU_CONF_NWIDTH | COLU_CONF_NHEIGHT | COLU_CONF_DISPLAY}, {TK_OPTION_COLOR, "-textcolor", (char *) NULL, (char *) NULL, @@ -406,7 +407,10 @@ static int Column_Config(Column *column, int objc, Tcl_Obj *CONST objv[]) if (mask & COLU_CONF_TEXT) { - column->textLen = column->text ? strlen(column->text) : 0; + if (column->textObj != NULL) + (void) Tcl_GetStringFromObj(column->textObj, &column->textLen); + else + column->textLen = 0; if (column->textLen) { Tk_Font tkfont = column->tkfont ? column->tkfont : tree->tkfont; diff --git a/generic/tkTreeElem.c b/generic/tkTreeElem.c index 2596eb7..e3c94e0 100644 --- a/generic/tkTreeElem.c +++ b/generic/tkTreeElem.c @@ -2924,7 +2924,7 @@ static void TextUpdateLayout(ElementArgs *args) flags |= TK_WHOLE_WORDS; elemX->layout = TextLayout_Compute(tkfont, text, - textLen, width, justify, lines, flags); + Tcl_NumUtfChars(text, textLen), width, justify, lines, flags); /*if (tree->debug.enable && tree->debug.display) dbwin("TextUpdateLayout %s: alloc %p (%s)\n", Tk_PathName(tree->tkwin), elemX, masterX ? "instance" : "master");*/ |