Skip to content

Commit

Permalink
Merge trunk
Browse files Browse the repository at this point in the history
  • Loading branch information
1minus1is0 committed Jan 26, 2025
2 parents a45a693 + 0cc57ca commit 8ef0774
Show file tree
Hide file tree
Showing 15 changed files with 258 additions and 75 deletions.
34 changes: 22 additions & 12 deletions generic/tkButton.c
Original file line number Diff line number Diff line change
Expand Up @@ -1028,7 +1028,7 @@ ConfigureButton(
int error, haveImage;
Tk_Image image;
int wrapLength, borderWidth, highlightWidth, padX, padY;
int butPtrWidth, butPtrHeight;
int width, height;

/*
* Eliminate any existing trace on variables monitored by the button.
Expand Down Expand Up @@ -1092,13 +1092,6 @@ ConfigureButton(
} else {
Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->normalBorder);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->wrapLengthObj, &wrapLength);
if (wrapLength < 0) {
wrapLength = 0;
Tcl_DecrRefCount(butPtr->wrapLengthObj);
butPtr->wrapLengthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->wrapLengthObj);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
borderWidth = 0;
Expand Down Expand Up @@ -1127,6 +1120,13 @@ ConfigureButton(
butPtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->padYObj);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->wrapLengthObj, &wrapLength);
if (wrapLength < 0) {
wrapLength = 0;
Tcl_DecrRefCount(butPtr->wrapLengthObj);
butPtr->wrapLengthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->wrapLengthObj);
}

if (butPtr->type >= TYPE_CHECK_BUTTON) {
Tcl_Obj *valuePtr, *namePtr;
Expand Down Expand Up @@ -1274,13 +1274,13 @@ ConfigureButton(
*/

if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->widthObj,
&butPtrWidth) != TCL_OK) {
&width) != TCL_OK) {
widthError:
Tcl_AddErrorInfo(interp, "\n (processing \"-width\" option)");
continue;
}
if (Tk_GetPixelsFromObj(interp, butPtr->tkwin, butPtr->heightObj,
&butPtrHeight) != TCL_OK) {
&height) != TCL_OK) {
heightError:
Tcl_AddErrorInfo(interp, "\n (processing \"-height\" option)");
continue;
Expand All @@ -1290,15 +1290,25 @@ ConfigureButton(
* The button displays an ordinary text string.
*/

if (Tcl_GetIntFromObj(interp, butPtr->widthObj, &butPtrWidth)
if (Tcl_GetIntFromObj(interp, butPtr->widthObj, &width)
!= TCL_OK) {
goto widthError;
}
if (Tcl_GetIntFromObj(interp, butPtr->heightObj, &butPtrHeight)
if (Tcl_GetIntFromObj(interp, butPtr->heightObj, &height)
!= TCL_OK) {
goto heightError;
}
}
if (width < 0) {
Tcl_DecrRefCount(butPtr->widthObj);
butPtr->widthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->widthObj);
}
if (height < 0) {
Tcl_DecrRefCount(butPtr->heightObj);
butPtr->heightObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->heightObj);
}
break;
}
if (!error) {
Expand Down
22 changes: 11 additions & 11 deletions generic/tkFrame.c
Original file line number Diff line number Diff line change
Expand Up @@ -986,24 +986,18 @@ ConfigureFrame(
Tk_SetWindowBackgroundPixmap(framePtr->tkwin, None);
}

Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->widthObj, &width);
if (width < 0) {
Tcl_DecrRefCount(framePtr->widthObj);
framePtr->widthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->widthObj);
Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
Tcl_DecrRefCount(framePtr->borderWidthObj);
framePtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->borderWidthObj);
}
Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->heightObj, &height);
if (height < 0) {
Tcl_DecrRefCount(framePtr->heightObj);
framePtr->heightObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->heightObj);
}
Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
Tcl_DecrRefCount(framePtr->borderWidthObj);
framePtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->borderWidthObj);
}
Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->highlightWidthObj, &highlightWidth);
if (highlightWidth < 0) {
Tcl_DecrRefCount(framePtr->highlightWidthObj);
Expand All @@ -1022,6 +1016,12 @@ ConfigureFrame(
framePtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->padYObj);
}
Tk_GetPixelsFromObj(NULL, framePtr->tkwin, framePtr->widthObj, &width);
if (width < 0) {
Tcl_DecrRefCount(framePtr->widthObj);
framePtr->widthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(framePtr->widthObj);
}

/*
* If a -labelwidget is specified, check that it is valid and set up
Expand Down
5 changes: 5 additions & 0 deletions generic/tkIcu.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,11 @@ Icu_Init(
icu_fns.name = (fn_icu_ ## name) \
Tcl_FindSymbol(NULL, icu_fns.lib, symbol)
ICU_SYM(open);
if (!icu_fns.open && *icuversion) {
/* FreeBSD doesn't append the ICU version to the symbol name, see [1da19a69f8] */
*icuversion = 0;
ICU_SYM(open); /* try again without version suffix */
}
ICU_SYM(close);
ICU_SYM(preceding);
ICU_SYM(following);
Expand Down
22 changes: 8 additions & 14 deletions generic/tkMessage.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,27 +488,15 @@ ConfigureMessage(
* be specified to Tk_ConfigureWidget.
*/

Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->widthObj, &width);
if (width < 0) {
if (msgPtr->widthObj) {
Tcl_DecrRefCount(msgPtr->widthObj);
}
msgPtr->widthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(msgPtr->widthObj);
}
Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
if (msgPtr->borderWidthObj) {
Tcl_DecrRefCount(msgPtr->borderWidthObj);
}
Tcl_DecrRefCount(msgPtr->borderWidthObj);
msgPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(msgPtr->borderWidthObj);
}
Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &highlightWidth);
if (highlightWidth < 0) {
if (msgPtr->highlightWidthObj) {
Tcl_DecrRefCount(msgPtr->highlightWidthObj);
}
Tcl_DecrRefCount(msgPtr->highlightWidthObj);
msgPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(msgPtr->highlightWidthObj);
}
Expand All @@ -526,6 +514,12 @@ ConfigureMessage(
msgPtr->padYObj = NULL;
}
}
Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->widthObj, &width);
if (width < 0) {
Tcl_DecrRefCount(msgPtr->widthObj);
msgPtr->widthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(msgPtr->widthObj);
}

Tk_FreeSavedOptions(&savedOptions);
MessageWorldChanged(msgPtr);
Expand Down
76 changes: 54 additions & 22 deletions generic/tkText.c
Original file line number Diff line number Diff line change
Expand Up @@ -2062,9 +2062,9 @@ ConfigureText(
{
Tk_SavedOptions savedOptions;
int oldExport = (textPtr->exportSelection) && (!Tcl_IsSafe(textPtr->interp));
int mask = 0;
int selBorderWidth = INT_MIN, spacing1, spacing2, spacing3;
int insertBorderWidth, insertWidth;
int mask = 0, selBorderWidth = 0, height, highlightWidth;
int borderWidth, spacing1, spacing2, spacing3;
int insertBorderWidth, insertWidth, padX, padY;

if (Tk_SetOptions(interp, (char *) textPtr, textPtr->optionTable,
objc, objv, textPtr->tkwin, &savedOptions, &mask) != TCL_OK) {
Expand Down Expand Up @@ -2204,26 +2204,26 @@ ConfigureText(
* Don't allow negative spacings.
*/

Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing1Obj, &spacing1);
if (spacing1 < 0) {
spacing1 = 0;
Tcl_DecrRefCount(textPtr->spacing1Obj);
textPtr->spacing1Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing1Obj);
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
borderWidth = 0;
Tcl_DecrRefCount(textPtr->borderWidthObj);
textPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->borderWidthObj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing2Obj, &spacing2);
if (spacing2 < 0) {
spacing2 = 0;
Tcl_DecrRefCount(textPtr->spacing2Obj);
textPtr->spacing2Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing2Obj);
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->heightObj, &height);
if (height < 0) {
height = 0;
Tcl_DecrRefCount(textPtr->heightObj);
textPtr->heightObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->heightObj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing3Obj, &spacing3);
if (spacing3 < 0) {
spacing3 = 0;
Tcl_DecrRefCount(textPtr->spacing3Obj);
textPtr->spacing3Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing3Obj);
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->highlightWidthObj, &highlightWidth);
if (highlightWidth < 0) {
highlightWidth = 0;
Tcl_DecrRefCount(textPtr->highlightWidthObj);
textPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->highlightWidthObj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->insertBorderWidthObj, &insertBorderWidth);
if (insertBorderWidth < 0) {
Expand All @@ -2239,6 +2239,18 @@ ConfigureText(
textPtr->insertWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->insertWidthObj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->padXObj, &padX);
if (padX < 0) {
Tcl_DecrRefCount(textPtr->padXObj);
textPtr->padXObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->padXObj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->padYObj, &padY);
if (padY < 0) {
Tcl_DecrRefCount(textPtr->padYObj);
textPtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->padYObj);
}
if (textPtr->selBorderWidthObj) {
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->selBorderWidthObj, &selBorderWidth);
}
Expand All @@ -2250,7 +2262,27 @@ ConfigureText(
textPtr->selBorderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->selBorderWidthObj);
}

Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing1Obj, &spacing1);
if (spacing1 < 0) {
spacing1 = 0;
Tcl_DecrRefCount(textPtr->spacing1Obj);
textPtr->spacing1Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing1Obj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing2Obj, &spacing2);
if (spacing2 < 0) {
spacing2 = 0;
Tcl_DecrRefCount(textPtr->spacing2Obj);
textPtr->spacing2Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing2Obj);
}
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing3Obj, &spacing3);
if (spacing3 < 0) {
spacing3 = 0;
Tcl_DecrRefCount(textPtr->spacing3Obj);
textPtr->spacing3Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(textPtr->spacing3Obj);
}

/*
* Parse tab stops.
Expand Down
10 changes: 10 additions & 0 deletions generic/tkTextImage.c
Original file line number Diff line number Diff line change
Expand Up @@ -539,9 +539,19 @@ EmbImageLayoutProc(

if (eiPtr->body.ei.padXObj) {
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, eiPtr->body.ei.padXObj, &padX);
if (padX < 0) {
Tcl_DecrRefCount(eiPtr->body.ei.padXObj);
eiPtr->body.ei.padXObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(eiPtr->body.ei.padXObj);
}
}
if (eiPtr->body.ei.padYObj) {
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, eiPtr->body.ei.padYObj, &padY);
if (padY < 0) {
Tcl_DecrRefCount(eiPtr->body.ei.padYObj);
eiPtr->body.ei.padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(eiPtr->body.ei.padYObj);
}
}
/*
* See if there's room for this image on this line.
Expand Down
39 changes: 31 additions & 8 deletions generic/tkTextTag.c
Original file line number Diff line number Diff line change
Expand Up @@ -369,8 +369,34 @@ TkTextTagCmd(
if (borderWidth < 0) {
borderWidth = 0;
Tcl_DecrRefCount(tagPtr->borderWidthObj);
tagPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(tagPtr->borderWidthObj);
tagPtr->borderWidthObj = NULL;
}
}
if (tagPtr->lMargin1Obj) {
int lMargin1;
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->lMargin1Obj, &lMargin1);
if (lMargin1 < 0) {
lMargin1 = 0;
Tcl_DecrRefCount(tagPtr->lMargin1Obj);
tagPtr->lMargin1Obj = NULL;
}
}
if (tagPtr->lMargin2Obj) {
int lMargin2;
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->lMargin2Obj, &lMargin2);
if (lMargin2 < 0) {
lMargin2 = 0;
Tcl_DecrRefCount(tagPtr->lMargin2Obj);
tagPtr->lMargin2Obj = NULL;
}
}
if (tagPtr->rMarginObj) {
int rMargin;
Tk_GetPixelsFromObj(NULL, textPtr->tkwin, tagPtr->rMarginObj, &rMargin);
if (rMargin < 0) {
rMargin = 0;
Tcl_DecrRefCount(tagPtr->rMarginObj);
tagPtr->rMarginObj = NULL;
}
}
if (tagPtr->spacing1Obj) {
Expand All @@ -379,8 +405,7 @@ TkTextTagCmd(
if (spacing1 < 0) {
spacing1 = 0;
Tcl_DecrRefCount(tagPtr->spacing1Obj);
tagPtr->spacing1Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(tagPtr->spacing1Obj);
tagPtr->spacing1Obj = NULL;
}
}
if (tagPtr->spacing2Obj) {
Expand All @@ -389,8 +414,7 @@ TkTextTagCmd(
if (spacing2 < 0) {
spacing2 = 0;
Tcl_DecrRefCount(tagPtr->spacing2Obj);
tagPtr->spacing2Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(tagPtr->spacing2Obj);
tagPtr->spacing2Obj = NULL;
}
}
if (tagPtr->spacing3Obj) {
Expand All @@ -399,8 +423,7 @@ TkTextTagCmd(
if (spacing3 < 0) {
spacing3 = 0;
Tcl_DecrRefCount(tagPtr->spacing3Obj);
tagPtr->spacing3Obj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(tagPtr->spacing3Obj);
tagPtr->spacing3Obj = NULL;
}
}
if (tagPtr->tabArrayPtr != NULL) {
Expand Down
Loading

0 comments on commit 8ef0774

Please sign in to comment.