Skip to content

Commit

Permalink
merge core-8-6-branch
Browse files Browse the repository at this point in the history
  • Loading branch information
fvogelnew1 committed Oct 18, 2024
2 parents eb94a98 + ff870b2 commit 33f0ff3
Show file tree
Hide file tree
Showing 29 changed files with 435 additions and 260 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/mac-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env:
ERROR_ON_FAILURES: 1
jobs:
xcode:
runs-on: macos-12
runs-on: macos-13
defaults:
run:
shell: bash
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:
fi
timeout-minutes: 30
clang:
runs-on: macos-12
runs-on: macos-13
strategy:
matrix:
symbols:
Expand Down
22 changes: 9 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
# README: Tk

This is the **Tk 8.6.14** source distribution.
This is the **Tk 8.6.16** source distribution.

You can get any source release of Tk from [our distribution
site](https://sourceforge.net/projects/tcl/files/Tcl/).

8.6 (production release, daily build)
[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Acore-8-6-branch)
9.0 (production release, daily build)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=main)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Amain)
<br>
8.7 (in development, daily build))
[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Acore-8-branch)
[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Acore-8-branch)
[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Acore-8-branch)
9.0 (in development, daily build))
[![Build Status](https://github.com/tcltk/tk/workflows/Linux/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Linux%22+branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/workflows/Windows/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22Windows%22+branch%3Amain)
[![Build Status](https://github.com/tcltk/tk/workflows/macOS/badge.svg?branch=main)](https://github.com/tcltk/tk/actions?query=workflow%3A%22macOS%22+branch%3Amain)
8.6 (this release, daily build)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/linux-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/linux-build.yml?query=branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/win-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/win-build.yml?query=branch%3Acore-8-6-branch)
[![Build Status](https://github.com/tcltk/tk/actions/workflows/mac-build.yml/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tk/actions/workflows/mac-build.yml?query=branch%3Acore-8-6-branch)

## <a id="intro">1.</a> Introduction

Expand Down
42 changes: 42 additions & 0 deletions changes
Original file line number Diff line number Diff line change
Expand Up @@ -8185,4 +8185,46 @@ Tk Cocoa 2.0: More drawing internals refinements (culler,walzer)

- Released 8.6.14, Feb 28, 2024 - https://core.tcl-lang.org/tk/ for details

2024-03-15 (bug)[47d4f2] Invoke binding scripts for events with detail field
NotifyInferior (leunissen, vogel)
*** POTENTIAL INCOMPATIBILITY ***

2024-03-19 (bug) [fdc0ed] Fix segfault on [focus -force] with xvfb (vogel)

2024-04-21 (bug) [ab839e] Fix [text undo] clearingdata

2024-05-01 (change) [e30699] Fix appearence of arrows in ttk widgets
(nemethi)

2024-05-03 (change) Add keycodes ISO_Group_Shift and dead_hamza (nijtmans)

2024-05-10 (change) Improve look of the classic theme (gavilan)

2024-05-11 (change) Improved focus ring for ttk (nemethi)

2024-05-13 (bug) [treeview identify] now point aware (vogel)

2024-05-29 (bug) Fix default font detection for high DPI (vogel,nemethi)

2024-06-02 (bug) Fix [ttk::combobox] covering down arrow (vogel,gavilan)

2024-06-09 (bug) [a0241c] Fix performance of image copy (vogel)

2024-06-11 (bug) [157652] Fix image read with -from option for gif/png
(vogel)

2024-06-18 (bug) [865af0] Throw error message on corrupt gif file
(obermeier)

2024-07-06 (bug) [51ece3] Fix crash on [canvas dchars] (vogel)

2024-07-22 (bug)[2d3a81] fix segfault on menubutton destroy (MS-Win only)
(oehlmann)

2024-07-31 (bug) [0d4879,089da4,f569b9] Improve focus ring for ttk widgets
(nemethi)

2024-08-28 (bug) [d82fa2] [ttk::treview] painting/clipping/scrolling of last
item (bron,nemethi,werner)

- Released 8.6.15, Sep 13, 2024 - https://core.tcl-lang.org/tk/ for details
4 changes: 2 additions & 2 deletions generic/tk.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,10 @@ extern "C" {
#define TK_MAJOR_VERSION 8
#define TK_MINOR_VERSION 6
#define TK_RELEASE_LEVEL TCL_FINAL_RELEASE
#define TK_RELEASE_SERIAL 14
#define TK_RELEASE_SERIAL 16

#define TK_VERSION "8.6"
#define TK_PATCH_LEVEL "8.6.14"
#define TK_PATCH_LEVEL "8.6.16"

/*
* A special definition used to allow this header file to be included from
Expand Down
16 changes: 10 additions & 6 deletions generic/tkError.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Tk_CreateErrorHandler(
Tk_ErrorProc *errorProc, /* Procedure to invoke when a matching error
* occurs. NULL means just ignore matching
* errors. */
ClientData clientData) /* Arbitrary value to pass to errorProc. */
void *clientData) /* Arbitrary value to pass to errorProc. */
{
TkErrorHandler *errorPtr;
TkDisplay *dispPtr;
Expand Down Expand Up @@ -152,6 +152,11 @@ Tk_DeleteErrorHandler(

errorPtr->lastRequest = NextRequest(dispPtr->display) - 1;

/*
* Ensure that no user callback for this handler is invoked any further.
*/
errorPtr->errorProc = NULL;

/*
* Every once-in-a-while, cleanup handlers that are no longer active. We
* probably won't be able to free the handler that was just deleted (need
Expand All @@ -164,27 +169,26 @@ Tk_DeleteErrorHandler(
* there are many handlers that stay around forever).
*/

dispPtr->deleteCount += 1;
if (dispPtr->deleteCount >= 10) {
if (dispPtr->deleteCount++ >= 9) {
TkErrorHandler *prevPtr;
TkErrorHandler *nextPtr;
int lastSerial = LastKnownRequestProcessed(dispPtr->display);
unsigned long lastSerial = LastKnownRequestProcessed(dispPtr->display);

/*
* Last chance to catch errors for this handler: if no event/error
* processing took place to follow up the end of this error handler
* we need a round trip with the X server now.
*/

if (errorPtr->lastRequest > (unsigned long) lastSerial) {
if (errorPtr->lastRequest > lastSerial) {
XSync(dispPtr->display, False);
}
dispPtr->deleteCount = 0;
errorPtr = dispPtr->errorPtr;
for (prevPtr = NULL; errorPtr != NULL; errorPtr = nextPtr) {
nextPtr = errorPtr->nextPtr;
if ((errorPtr->lastRequest != (unsigned long) -1)
&& (errorPtr->lastRequest <= (unsigned long) lastSerial)) {
&& (errorPtr->lastRequest <= lastSerial)) {
if (prevPtr == NULL) {
dispPtr->errorPtr = nextPtr;
} else {
Expand Down
82 changes: 61 additions & 21 deletions generic/tkGrid.c
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,9 @@ GridAnchorCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}

if (objc == 3) {
gridPtr = containerPtr->containerDataPtr;
Expand Down Expand Up @@ -518,7 +520,9 @@ GridBboxCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}

if (objc >= 5) {
if (Tcl_GetIntFromObj(interp, objv[3], &column) != TCL_OK) {
Expand Down Expand Up @@ -642,7 +646,9 @@ GridForgetRemoveCommand(
return TCL_ERROR;
}

contentPtr = GetGrid(content);
if (!(contentPtr = GetGrid(content))) {
continue;
}
if (contentPtr->containerPtr != NULL) {
/*
* For "forget", reset all the settings to their defaults
Expand Down Expand Up @@ -732,7 +738,9 @@ GridInfoCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &content) != TCL_OK) {
return TCL_ERROR;
}
contentPtr = GetGrid(content);
if (!(contentPtr = GetGrid(content))) {
return TCL_OK;
}
if (contentPtr->containerPtr == NULL) {
Tcl_ResetResult(interp);
return TCL_OK;
Expand Down Expand Up @@ -807,7 +815,9 @@ GridLocationCommand(
return TCL_ERROR;
}

containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}
if (containerPtr->containerDataPtr == NULL) {
Tcl_SetObjResult(interp, NewPairObj(-1, -1));
return TCL_OK;
Expand Down Expand Up @@ -888,7 +898,9 @@ GridPropagateCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}
if (objc == 3) {
Tcl_SetObjResult(interp,
Tcl_NewBooleanObj(!(containerPtr->flags & DONT_PROPAGATE)));
Expand Down Expand Up @@ -1010,7 +1022,9 @@ GridRowColumnConfigureCommand(
return TCL_ERROR;
}

containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}
first = 0;
last = 0;

Expand Down Expand Up @@ -1126,7 +1140,9 @@ GridRowColumnConfigureCommand(
* Is it gridded in this container?
*/

contentPtr = GetGrid(content);
if (!(contentPtr = GetGrid(content))) {
continue;
}
if (contentPtr->containerPtr != containerPtr) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"the window \"%s\" is not managed by \"%s\"",
Expand Down Expand Up @@ -1309,7 +1325,9 @@ GridSizeCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}

if (containerPtr->containerDataPtr != NULL) {
SetGridSize(containerPtr);
Expand Down Expand Up @@ -1388,7 +1406,9 @@ GridContentCommand(
if (TkGetWindowFromObj(interp, tkwin, objv[2], &container) != TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(container);
if (!(containerPtr = GetGrid(container))) {
return TCL_OK;
}

res = Tcl_NewListObj(0, NULL);
for (contentPtr = containerPtr->contentPtr; contentPtr != NULL;
Expand Down Expand Up @@ -2404,11 +2424,12 @@ ResolveConstraints(
* GetGrid --
*
* This internal procedure is used to locate a Grid structure for a given
* window, creating one if one doesn't exist already.
* window, creating one if one doesn't exist already, except if the window
* is already dead.
*
* Results:
* The return value is a pointer to the Grid structure corresponding to
* tkwin.
* tkwin, or NULL when tkwin is already dead.
*
* Side effects:
* A new grid structure may be created. If so, then a callback is set up
Expand All @@ -2427,6 +2448,10 @@ GetGrid(
int isNew;
TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;

if (((TkWindow *) tkwin)->flags & TK_ALREADY_DEAD) {
return NULL;
}

if (!dispPtr->gridInit) {
Tcl_InitHashTable(&dispPtr->gridHashTable, TCL_ONE_WORD_KEYS);
dispPtr->gridInit = 1;
Expand Down Expand Up @@ -2466,7 +2491,6 @@ GetGrid(
gridPtr->sticky = 0;
gridPtr->size = 0;
gridPtr->in = NULL;
gridPtr->containerDataPtr = NULL;
Tcl_SetHashValue(hPtr, gridPtr);
Tk_CreateEventHandler(tkwin, StructureNotifyMask,
GridStructureProc, gridPtr);
Expand Down Expand Up @@ -2991,19 +3015,25 @@ ConfigureContent(
* If the stored container does not exist, just ignore it.
*/

contentPtr = GetGrid(content);
if (!(contentPtr = GetGrid(content))) {
continue;
}
if (contentPtr->in != NULL) {
if (TkGetWindowFromObj(interp, content, contentPtr->in, &parent)
== TCL_OK) {
containerPtr = GetGrid(parent);
if (!(containerPtr = GetGrid(parent))) {
continue;
}
InitContainerData(containerPtr);
}
}
}
if (containerPtr == NULL) {
parent = Tk_Parent(content);
if (parent != NULL) {
containerPtr = GetGrid(parent);
if (!(containerPtr = GetGrid(parent))) {
continue;
}
InitContainerData(containerPtr);
}
}
Expand Down Expand Up @@ -3072,7 +3102,9 @@ ConfigureContent(
TCL_OK) {
return TCL_ERROR;
}
containerPtr = GetGrid(other);
if (!(containerPtr = GetGrid(other))) {
continue;
}
InitContainerData(containerPtr);
} else if (index == CONF_ROW) {
if (Tcl_GetIntFromObj(interp, objv[i+1], &tmp) != TCL_OK
Expand Down Expand Up @@ -3149,7 +3181,9 @@ ConfigureContent(
Tcl_SetErrorCode(interp, "TK", "GEOMETRY", "TOPLEVEL", NULL);
return TCL_ERROR;
}
contentPtr = GetGrid(content);
if (!(contentPtr = GetGrid(content))) {
continue;
}

/*
* The following statement is taken from tkPack.c:
Expand Down Expand Up @@ -3208,7 +3242,9 @@ ConfigureContent(
return TCL_ERROR;
}
positionGiven = 1;
containerPtr = GetGrid(other);
if (!(containerPtr = GetGrid(other))) {
continue;
}
InitContainerData(containerPtr);
break;
case CONF_STICKY: {
Expand Down Expand Up @@ -3315,7 +3351,9 @@ ConfigureContent(

parent = Tk_Parent(content);
if (containerPtr == NULL) {
containerPtr = GetGrid(parent);
if (!(containerPtr = GetGrid(parent))) {
continue;
}
InitContainerData(containerPtr);
}

Expand Down Expand Up @@ -3474,7 +3512,9 @@ ConfigureContent(
lastColumn = 0;
} else {
other = Tk_NameToWindow(interp, lastWindow, tkwin);
otherPtr = GetGrid(other);
if (!(otherPtr = GetGrid(other))) {
continue;
}
lastRow = otherPtr->row + otherPtr->numRows - 2;
lastColumn = otherPtr->column + otherPtr->numCols;
}
Expand Down
Loading

0 comments on commit 33f0ff3

Please sign in to comment.