diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkButton.c | 22 | ||||
-rw-r--r-- | generic/tkMessage.c | 28 |
2 files changed, 49 insertions, 1 deletions
diff --git a/generic/tkButton.c b/generic/tkButton.c index cbbe880..2ec939e 100644 --- a/generic/tkButton.c +++ b/generic/tkButton.c @@ -1099,15 +1099,35 @@ ConfigureButton( } if (butPtr->borderWidth < 0) { butPtr->borderWidth = 0; + if (butPtr->borderWidthPtr) { + Tcl_DecrRefCount(butPtr->borderWidthPtr); + } + butPtr->borderWidthPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->borderWidthPtr); } if (butPtr->highlightWidth < 0) { butPtr->highlightWidth = 0; + if (butPtr->highlightWidthPtr) { + Tcl_DecrRefCount(butPtr->highlightWidthPtr); + } + butPtr->highlightWidthPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->highlightWidthPtr); } if (butPtr->padX < 0) { butPtr->padX = 0; + if (butPtr->padXPtr) { + Tcl_DecrRefCount(butPtr->padXPtr); + } + butPtr->padXPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->padXPtr); } if (butPtr->padY < 0) { butPtr->padY = 0; + if (butPtr->padYPtr) { + Tcl_DecrRefCount(butPtr->padYPtr); + } + butPtr->padYPtr = Tcl_NewIntObj(0); + Tcl_IncrRefCount(butPtr->padYPtr); } if (butPtr->type >= TYPE_CHECK_BUTTON) { @@ -1463,6 +1483,7 @@ ButtonEventProc( } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { butPtr->flags |= GOT_FOCUS; + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (butPtr->highlightWidth > 0) { goto redraw; } @@ -1470,6 +1491,7 @@ ButtonEventProc( } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { butPtr->flags &= ~GOT_FOCUS; + Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthPtr, &butPtr->highlightWidth); if (butPtr->highlightWidth > 0) { goto redraw; } diff --git a/generic/tkMessage.c b/generic/tkMessage.c index 07dad51..05c0c66 100644 --- a/generic/tkMessage.c +++ b/generic/tkMessage.c @@ -505,6 +505,11 @@ ConfigureMessage( if (msgPtr->highlightWidth < 0) { msgPtr->highlightWidth = 0; + if (msgPtr->highlightWidth) { + Tcl_DecrRefCount(msgPtr->highlightWidthObj); + } + msgPtr->highlightWidthObj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(msgPtr->highlightWidthObj); } Tk_FreeSavedOptions(&savedOptions); @@ -552,10 +557,22 @@ MessageWorldChanged( msgPtr->textGC = gc; Tk_GetFontMetrics(msgPtr->tkfont, &fm); + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padXPtr, &msgPtr->padX); if (msgPtr->padX < 0) { + if (strcmp(Tcl_GetString(msgPtr->padXPtr), "-1")) { + Tcl_DecrRefCount(msgPtr->padXPtr); + msgPtr->padXPtr = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padXPtr); + } msgPtr->padX = fm.ascent / 2; } + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->padYPtr, &msgPtr->padY); if (msgPtr->padY < 0) { + if (strcmp(Tcl_GetString(msgPtr->padYPtr), "-1")) { + Tcl_DecrRefCount(msgPtr->padYPtr); + msgPtr->padYPtr = Tcl_NewIntObj(-1); + Tcl_IncrRefCount(msgPtr->padYPtr); + } msgPtr->padY = fm.ascent / 4; } @@ -600,6 +617,9 @@ ComputeMessageGeometry( Tk_FreeTextLayout(msgPtr->textLayout); + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &msgPtr->borderWidth); + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &msgPtr->highlightWidth); + inset = msgPtr->borderWidth + msgPtr->highlightWidth; /* @@ -679,8 +699,12 @@ DisplayMessage( Message *msgPtr = (Message *)clientData; Tk_Window tkwin = msgPtr->tkwin; int x, y; - int borderWidth = msgPtr->highlightWidth; + int borderWidth; + + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->borderWidthObj, &msgPtr->borderWidth); + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &msgPtr->highlightWidth); + borderWidth = msgPtr->highlightWidth; msgPtr->flags &= ~REDRAW_PENDING; if ((msgPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; @@ -762,6 +786,7 @@ MessageEventProc( } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { msgPtr->flags |= GOT_FOCUS; + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &msgPtr->highlightWidth); if (msgPtr->highlightWidth > 0) { goto redraw; } @@ -769,6 +794,7 @@ MessageEventProc( } else if (eventPtr->type == FocusOut) { if (eventPtr->xfocus.detail != NotifyInferior) { msgPtr->flags &= ~GOT_FOCUS; + Tk_GetPixelsFromObj(NULL, msgPtr->tkwin, msgPtr->highlightWidthObj, &msgPtr->highlightWidth); if (msgPtr->highlightWidth > 0) { goto redraw; } |