Skip to content

Commit

Permalink
Merge 9.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jan.nijtmans committed Oct 7, 2024
2 parents 8e7e195 + 2e6f1df commit 40aeb02
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 120 deletions.
7 changes: 2 additions & 5 deletions changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@ changes to the Tk source code at
Release Tk 9.0.1 arises from the check-in with tag `core-9-0-1`.

The changes since Tk 9.0.0 include...



## Changes since Tk 9.0.0
- [Canvas widget handles pixel objects incorrectly in Tk 9.0](https://core.tcl-lang.org/tk/tktview/610a73)

Release Tk 9.0.0 arises from the check-in with tag `core-9-0-0`.

Expand Down Expand Up @@ -45,7 +43,6 @@ writing Tcl scripts containing Tk commands.
- [Use of Tcl_Obj vs char * in Widget storage](https://core.tcl-lang.org/tk/tktview/f91aa2)
- [Tilde file syntax not available on 9.0 but used by "~/.Xdefaults"](https://core.tcl-lang.org/tk/tktview/fcfddc)
- [many PIXEL options don't keep their configured value](https://core.tcl-lang.org/tk/tktview/29ba53)
- [Canvas widget handles pixel objects incorrectly in Tk 9.0](https://core.tcl-lang.org/tk/tktview/610a73)
- [Inconsistent reporting of child geometry changes to grid container](https://core.tcl-lang.org/tk/tktview/beaa8e)
- [Inconsistency in whether widgets allow negative borderwidths](https://core.tcl-lang.org/tk/tktview/5f739d)
- [Enter key works differently in Windows and Linux](https://core.tcl-lang.org/tk/tktview/b3a1b9)
Expand Down
67 changes: 25 additions & 42 deletions generic/tkButton.c
Original file line number Diff line number Diff line change
Expand Up @@ -1092,35 +1092,35 @@ ConfigureButton(
} else {
Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->normalBorder);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->wrapLengthObj, &wrapLength);
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);
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->borderWidthObj, &borderWidth);
if (borderWidth < 0) {
borderWidth = 0;
Tcl_DecrRefCount(butPtr->borderWidthObj);
butPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->borderWidthObj);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &highlightWidth);
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->highlightWidthObj, &highlightWidth);
if (highlightWidth < 0) {
highlightWidth = 0;
Tcl_DecrRefCount(butPtr->highlightWidthObj);
butPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->highlightWidthObj);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padXObj, &padX);
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padXObj, &padX);
if (padX < 0) {
padX = 0;
Tcl_DecrRefCount(butPtr->padXObj);
butPtr->padXObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(butPtr->padXObj);
}
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padYObj, &padY);
Tk_GetPixelsFromObj(NULL, butPtr->tkwin, butPtr->padYObj, &padY);
if (padY < 0) {
padY = 0;
Tcl_DecrRefCount(butPtr->padYObj);
Expand Down Expand Up @@ -1727,14 +1727,12 @@ static char *
ButtonTextVarProc(
void *clientData, /* Information about button. */
Tcl_Interp *interp, /* Interpreter containing variable. */
const char *name1, /* Not used. */
const char *name2, /* Not used. */
TCL_UNUSED(const char *), /* name1 */
TCL_UNUSED(const char *), /* name2 */
int flags) /* Information about what happened. */
{
TkButton *butPtr = (TkButton *)clientData;
Tcl_Obj *valuePtr;
(void)name1;
(void)name2;

if (butPtr->flags & BUTTON_DELETED) {
return NULL;
Expand Down Expand Up @@ -1822,19 +1820,14 @@ ButtonTextVarProc(
static void
ButtonImageProc(
void *clientData, /* Pointer to widget record. */
int x, int y, /* Upper left pixel (within image) that must
* be redisplayed. */
int width, int height, /* Dimensions of area to redisplay (might be
* <= 0). */
int imgWidth, int imgHeight)/* New dimensions of image. */
TCL_UNUSED(int), /* x, Upper left pixel (within image) that must */
TCL_UNUSED(int), /* y, be redisplayed. */
TCL_UNUSED(int), /* width, Dimensions of area to redisplay (might be */
TCL_UNUSED(int), /* height, <= 0). */
TCL_UNUSED(int), /* imgWidth, New dimensions of image. */
TCL_UNUSED(int)) /* imgHeight */
{
TkButton *butPtr = (TkButton *)clientData;
(void)x;
(void)y;
(void)width;
(void)height;
(void)imgWidth;
(void)imgHeight;

if (butPtr->tkwin != NULL) {
TkpComputeButtonGeometry(butPtr);
Expand Down Expand Up @@ -1866,19 +1859,14 @@ ButtonImageProc(
static void
ButtonSelectImageProc(
void *clientData, /* Pointer to widget record. */
int x, int y, /* Upper left pixel (within image) that must
* be redisplayed. */
int width, int height, /* Dimensions of area to redisplay (might be
* <= 0). */
int imgWidth, int imgHeight)/* New dimensions of image. */
TCL_UNUSED(int), /* x, Upper left pixel (within image) that must */
TCL_UNUSED(int), /* y, be redisplayed. */
TCL_UNUSED(int), /* width, Dimensions of area to redisplay (might be */
TCL_UNUSED(int), /* height, <= 0). */
TCL_UNUSED(int), /* imgWidth, New dimensions of image. */
TCL_UNUSED(int)) /* imgHeight */
{
TkButton *butPtr = (TkButton *)clientData;
(void)x;
(void)y;
(void)width;
(void)height;
(void)imgWidth;
(void)imgHeight;

#ifdef MAC_OSX_TK
if (butPtr->tkwin != NULL) {
Expand Down Expand Up @@ -1919,19 +1907,14 @@ ButtonSelectImageProc(
static void
ButtonTristateImageProc(
void *clientData, /* Pointer to widget record. */
int x, int y, /* Upper left pixel (within image) that must
* be redisplayed. */
int width, int height, /* Dimensions of area to redisplay (might be
* <= 0). */
int imgWidth, int imgHeight)/* New dimensions of image. */
TCL_UNUSED(int), /* x, Upper left pixel (within image) that must */
TCL_UNUSED(int), /* y, be redisplayed. */
TCL_UNUSED(int), /* width, Dimensions of area to redisplay (might be */
TCL_UNUSED(int), /* height, <= 0). */
TCL_UNUSED(int), /* imgWidth, New dimensions of image. */
TCL_UNUSED(int)) /* imgHeight */
{
TkButton *butPtr = (TkButton *)clientData;
(void)x;
(void)y;
(void)width;
(void)height;
(void)imgWidth;
(void)imgHeight;

#ifdef MAC_OSX_TK
if (butPtr->tkwin != NULL) {
Expand Down
3 changes: 1 addition & 2 deletions generic/tkCanvImg.c
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ static void
DisplayImage(
Tk_Canvas canvas, /* Canvas that contains item. */
Tk_Item *itemPtr, /* Item to be displayed. */
Display *display, /* Display on which to draw item. */
TCL_UNUSED(Display *), /* Display on which to draw item. */
Drawable drawable, /* Pixmap or window in which to draw item. */
int x, int y, int width, int height)
/* Describes region of canvas that must be
Expand All @@ -536,7 +536,6 @@ DisplayImage(
short drawableX, drawableY;
Tk_Image image;
Tk_State state = itemPtr->state;
(void)display;

if (state == TK_STATE_NULL) {
state = Canvas(canvas)->canvas_state;
Expand Down
27 changes: 9 additions & 18 deletions generic/tkCanvas.c
Original file line number Diff line number Diff line change
Expand Up @@ -2311,24 +2311,6 @@ ConfigureCanvas(
canvasPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(canvasPtr->highlightWidthObj);
}
if (canvasPtr->textInfo.insertBorderWidth < 0) {
canvasPtr->textInfo.insertBorderWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved1);
canvasPtr->textInfo.reserved1 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved1);
}
if (canvasPtr->textInfo.insertWidth < 0) {
canvasPtr->textInfo.insertWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved2);
canvasPtr->textInfo.reserved2 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved2);
}
if (canvasPtr->textInfo.selBorderWidth < 0) {
canvasPtr->textInfo.selBorderWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved3);
canvasPtr->textInfo.reserved3 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved3);
}
if (width < 0) {
width = 0;
Tcl_DecrRefCount(canvasPtr->widthObj);
Expand All @@ -2350,12 +2332,21 @@ ConfigureCanvas(
canvasPtr->inset = borderWidth + highlightWidth;
if (canvasPtr->textInfo.insertBorderWidth < 0) {
canvasPtr->textInfo.insertBorderWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved1);
canvasPtr->textInfo.reserved1 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved1);
}
if (canvasPtr->textInfo.insertWidth < 0) {
canvasPtr->textInfo.insertWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved2);
canvasPtr->textInfo.reserved2 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved2);
}
if (canvasPtr->textInfo.selBorderWidth < 0) {
canvasPtr->textInfo.selBorderWidth = 0;
Tcl_DecrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved3);
canvasPtr->textInfo.reserved3 = Tcl_NewIntObj(0);
Tcl_IncrRefCount((Tcl_Obj *)canvasPtr->textInfo.reserved3);
}

gcValues.function = GXcopy;
Expand Down
53 changes: 19 additions & 34 deletions generic/tkMenubutton.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,15 +190,14 @@ static void DestroyMenuButton(void *memPtr);

int
Tk_MenubuttonObjCmd(
void *dummy, /* NULL. */
TCL_UNUSED(void *),
Tcl_Interp *interp, /* Current interpreter. */
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
TkMenuButton *mbPtr;
Tk_OptionTable optionTable;
Tk_Window tkwin;
(void)dummy;

if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "pathName ?-option value ...?");
Expand Down Expand Up @@ -544,36 +543,27 @@ ConfigureMenuButton(
Tk_GetPixelsFromObj(NULL, mbPtr->tkwin, mbPtr->padYObj, &padY);
if (borderWidth < 0) {
borderWidth = 0;
Tcl_DecrRefCount(mbPtr->borderWidthObj);
mbPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->borderWidthObj);
Tcl_DecrRefCount(mbPtr->borderWidthObj);
mbPtr->borderWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->borderWidthObj);
}
if (highlightWidth < 0) {
highlightWidth = 0;
Tcl_DecrRefCount(mbPtr->highlightWidthObj);
mbPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->highlightWidthObj);
Tcl_DecrRefCount(mbPtr->highlightWidthObj);
mbPtr->highlightWidthObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->highlightWidthObj);
}
if (padX < 0) {
padX = 0;
if (mbPtr->padXObj) {
Tcl_DecrRefCount(mbPtr->padXObj);
}
mbPtr->padXObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->padXObj);
Tcl_DecrRefCount(mbPtr->padXObj);
mbPtr->padXObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->padXObj);
}
if (padY < 0) {
padY = 0;
if (mbPtr->padYObj) {
Tcl_DecrRefCount(mbPtr->padYObj);
}
mbPtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->padYObj);
if (mbPtr->padYObj) {
Tcl_DecrRefCount(mbPtr->padYObj);
}
mbPtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->padYObj);
Tcl_DecrRefCount(mbPtr->padYObj);
mbPtr->padYObj = Tcl_NewIntObj(0);
Tcl_IncrRefCount(mbPtr->padYObj);
}

/*
Expand Down Expand Up @@ -971,19 +961,14 @@ MenuButtonTextVarProc(
static void
MenuButtonImageProc(
void *clientData, /* Pointer to widget record. */
int x, int y, /* Upper left pixel (within image) that must
* be redisplayed. */
int width, int height, /* Dimensions of area to redisplay (may be <=
* 0). */
int imgWidth, int imgHeight)/* New dimensions of image. */
TCL_UNUSED(int), /* x, Upper left pixel (within image) that must */
TCL_UNUSED(int), /* y, be redisplayed. */
TCL_UNUSED(int), /* width, Dimensions of area to redisplay (may be <= */
TCL_UNUSED(int), /* height, 0). */
TCL_UNUSED(int), /* imgWidth, New dimensions of image. */
TCL_UNUSED(int)) /* imgHeight */
{
TkMenuButton *mbPtr = (TkMenuButton *)clientData;
(void)x;
(void)y;
(void)width;
(void)height;
(void)imgWidth;
(void)imgHeight;

if (mbPtr->tkwin != NULL) {
TkpComputeMenuButtonGeometry(mbPtr);
Expand Down
27 changes: 9 additions & 18 deletions generic/tkPointer.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,23 +416,16 @@ int
XGrabPointer(
Display *display,
Window grab_window,
Bool owner_events,
unsigned int event_mask,
int pointer_mode,
int keyboard_mode,
Window confine_to,
Cursor cursor,
Time time)
TCL_UNUSED(Bool), /* owner_events */
TCL_UNUSED(unsigned int), /* event_mask */
TCL_UNUSED(int), /* pointer_mode */
TCL_UNUSED(int), /* keyboard_mode */
TCL_UNUSED(Window), /* confine_to */
TCL_UNUSED(Cursor), /* cursor */
TCL_UNUSED(Time)) /* time */
{
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
(void)owner_events;
(void)event_mask;
(void)pointer_mode;
(void)keyboard_mode;
(void)confine_to;
(void)cursor;
(void)time;

LastKnownRequestProcessed(display)++;
tsdPtr->grabWinPtr = (TkWindow *) Tk_IdToWindow(display, grab_window);
Expand Down Expand Up @@ -464,11 +457,10 @@ XGrabPointer(
int
XUngrabPointer(
Display *display,
Time time)
TCL_UNUSED(Time)) /* time */
{
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
(void)time;

LastKnownRequestProcessed(display)++;
tsdPtr->grabWinPtr = NULL;
Expand Down Expand Up @@ -588,12 +580,11 @@ int
XDefineCursor(
Display *display,
Window w,
Cursor cursor)
TCL_UNUSED(Cursor)) /* cursor */
{
TkWindow *winPtr = (TkWindow *) Tk_IdToWindow(display, w);
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
(void)cursor;

if (tsdPtr->cursorWinPtr == winPtr) {
UpdateCursor(winPtr);
Expand Down
2 changes: 1 addition & 1 deletion generic/tkStubInit.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ doNothing(void)
# define TkpRedrawWidget ((void (*)(Tk_Window))(void *)doNothing)
# define TkpDefineNativeBitmaps ((void (*)(void))(void *)doNothing)
# define TkpCreateNativeBitmap ((Pixmap (*)(Display *, const void *))(void *)doNothing)
# define TkpGetNativeAppBitmap ((Pixmap (*)(Display *, const char*, int *, int *))(void *)doNothing)
# define TkpGetNativeAppBitmap ((Pixmap (*)(Display *, const char *, int *, int *))(void *)doNothing)
#endif

#ifdef _WIN32
Expand Down

0 comments on commit 40aeb02

Please sign in to comment.