Compare commits
10 Commits
a8a8483e6a
...
a360eebacf
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a360eebacf | ||
|
|
8483f955f7 | ||
|
|
51590e48c1 | ||
|
|
a6861e63b7 | ||
|
|
a54d620f1c | ||
|
|
d3364a8d40 | ||
|
|
90eb7e63c5 | ||
|
|
cb8287a99d | ||
|
|
b6d5d2cad4 | ||
|
|
e4b69c3497 |
@ -1,35 +0,0 @@
|
|||||||
From f3ebeb35f3773b2e5523da6af25c8021816cfc06 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Mon, 15 Oct 2018 14:26:50 +0000
|
|
||||||
Subject: [PATCH 353/693] Another proposed fix for [4b555aca34]: text search
|
|
||||||
-all hangs and eats all memory.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkText.c | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
||||||
index d43bef6b0..715e3c045 100644
|
|
||||||
--- a/generic/tkText.c
|
|
||||||
+++ b/generic/tkText.c
|
|
||||||
@@ -5749,11 +5749,16 @@ SearchCore(
|
|
||||||
/*
|
|
||||||
* We only need to set the matchLength once for exact searches, and we
|
|
||||||
* do it here. It is also used below as the actual pattern length, so
|
|
||||||
- * it has dual purpose.
|
|
||||||
+ * it has dual purpose. Warning: to properly advance between matches
|
|
||||||
+ * the matchLength can't be zero (which would happen when searching
|
|
||||||
+ * for an empty string).
|
|
||||||
*/
|
|
||||||
|
|
||||||
pattern = Tcl_GetString(patObj);
|
|
||||||
matchLength = patObj->length;
|
|
||||||
+ if (matchLength == 0) {
|
|
||||||
+ matchLength = 1;
|
|
||||||
+ }
|
|
||||||
nl = strchr(pattern, '\n');
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
From 5d9e46e46991749b766fb89d70c65f7ddb3cae54 Mon Sep 17 00:00:00 2001
|
|
||||||
From: culler <culler>
|
|
||||||
Date: Sun, 13 Jan 2019 16:43:19 +0000
|
|
||||||
Subject: [PATCH 611/693] Avoid errors when a menu is destroyed before its
|
|
||||||
postcommand is run.
|
|
||||||
|
|
||||||
---
|
|
||||||
library/menu.tcl | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/library/menu.tcl b/library/menu.tcl
|
|
||||||
index cdfcc13f1..8d06868d1 100644
|
|
||||||
--- a/library/menu.tcl
|
|
||||||
+++ b/library/menu.tcl
|
|
||||||
@@ -493,11 +493,13 @@ proc ::tk::MenuMotion {menu x y state} {
|
|
||||||
if {[string is false $mode]} {
|
|
||||||
set delay [expr {[$menu cget -type] eq "menubar" ? 0 : 50}]
|
|
||||||
if {[$menu type $index] eq "cascade"} {
|
|
||||||
+ # Catch these postcascade commands since the menu could be
|
|
||||||
+ # destroyed before they run.
|
|
||||||
set Priv(menuActivatedTimer) \
|
|
||||||
- [after $delay [list $menu postcascade active]]
|
|
||||||
+ [after $delay "catch {$menu postcascade active}"]
|
|
||||||
} else {
|
|
||||||
set Priv(menuDeactivatedTimer) \
|
|
||||||
- [after $delay [list $menu postcascade none]]
|
|
||||||
+ [after $delay "catch {$menu postcascade none}"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
From 96a262ae5869d7f9875c6477cb0b23939d84ec12 Mon Sep 17 00:00:00 2001
|
|
||||||
From: gcramer <remarcg@gmx.net>
|
|
||||||
Date: Fri, 21 Jul 2017 14:05:07 +0000
|
|
||||||
Subject: [PATCH 030/693] Bugfix [4966cad4d4]: Now function
|
|
||||||
NotebookPlaceSlaves() in ttkNotebook.c will regard the active index.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/ttk/ttkNotebook.c | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/generic/ttk/ttkNotebook.c b/generic/ttk/ttkNotebook.c
|
|
||||||
index 83d7db9c5..437ae11a0 100644
|
|
||||||
--- a/generic/ttk/ttkNotebook.c
|
|
||||||
+++ b/generic/ttk/ttkNotebook.c
|
|
||||||
@@ -595,8 +595,12 @@ static void NotebookPlaceSlaves(void *recordPtr)
|
|
||||||
Notebook *nb = recordPtr;
|
|
||||||
int currentIndex = nb->notebook.currentIndex;
|
|
||||||
if (currentIndex >= 0) {
|
|
||||||
+ int activeIndex = nb->notebook.activeIndex;
|
|
||||||
+ int index = (activeIndex >= 0) ? activeIndex : currentIndex;
|
|
||||||
NotebookDoLayout(nb);
|
|
||||||
- NotebookPlaceSlave(nb, currentIndex);
|
|
||||||
+ if (index >= 0) {
|
|
||||||
+ NotebookPlaceSlave(nb, index);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
From 87dac59f8407ba5d74e52bf223c1b9509aa679ab Mon Sep 17 00:00:00 2001
|
|
||||||
From: dgp <dgp@users.sourceforge.net>
|
|
||||||
Date: Fri, 16 Nov 2018 17:44:47 +0000
|
|
||||||
Subject: [PATCH 480/693] Crash prevention. Still buggy, now test text-11a.22
|
|
||||||
fails instead of crashing.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkText.c | 9 +++++++++
|
|
||||||
1 file changed, 9 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
||||||
index 4c536a22d..a0de1d5d2 100644
|
|
||||||
--- a/generic/tkText.c
|
|
||||||
+++ b/generic/tkText.c
|
|
||||||
@@ -5538,6 +5538,15 @@ RunAfterSyncCmd(
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (textPtr->afterSyncCmd == NULL) {
|
|
||||||
+ /*
|
|
||||||
+ * [Bug 0a9c9151b5] Probably should have idle handlers coded so that
|
|
||||||
+ * this cannot happen, but a safety check here at least prevents a
|
|
||||||
+ * crash.
|
|
||||||
+ */
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
Tcl_Preserve((ClientData) textPtr->interp);
|
|
||||||
code = Tcl_EvalObjEx(textPtr->interp, textPtr->afterSyncCmd, TCL_EVAL_GLOBAL);
|
|
||||||
if (code == TCL_ERROR) {
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
From 6b354b74b09729ef0b336a4c1504ed66824a4d5a Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Sun, 14 Jan 2018 14:54:17 +0000
|
|
||||||
Subject: [PATCH 108/693] Fix [1821174fff] and [1938774fff]: RenderBadPicture
|
|
||||||
(invalid Picture parameter) error returned on application exit when 'send'
|
|
||||||
was renamed to {}. Patch from Christian Werner.
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixRFont.c | 10 ++++++++++
|
|
||||||
1 file changed, 10 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
|
||||||
index d43ed2460..abdde7819 100644
|
|
||||||
--- a/unix/tkUnixRFont.c
|
|
||||||
+++ b/unix/tkUnixRFont.c
|
|
||||||
@@ -388,6 +388,16 @@ FinishedWithFont(
|
|
||||||
if (fontPtr->fontset) {
|
|
||||||
FcFontSetDestroy(fontPtr->fontset);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Synchronize with X server before dropping the error handler.
|
|
||||||
+ * This seems to catch sporadic RenderBadPicture errors on tear
|
|
||||||
+ * down of an application.
|
|
||||||
+ *
|
|
||||||
+ * See bugs [1821174fff] and [1938774fff].
|
|
||||||
+ */
|
|
||||||
+ XSync(fontPtr->display, False);
|
|
||||||
+
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
From f48a2f15358bfe0797996ed11b49a6c2096b6371 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Fri, 24 Aug 2018 21:43:21 +0000
|
|
||||||
Subject: [PATCH 294/693] Fix [3441086fff]: ttk::style layout with empty
|
|
||||||
-children silently disappears
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/ttk/ttkLayout.c | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/generic/ttk/ttkLayout.c b/generic/ttk/ttkLayout.c
|
|
||||||
index ba2458989..924355aa6 100644
|
|
||||||
--- a/generic/ttk/ttkLayout.c
|
|
||||||
+++ b/generic/ttk/ttkLayout.c
|
|
||||||
@@ -702,6 +702,8 @@ Ttk_LayoutTemplate Ttk_ParseLayoutTemplate(Tcl_Interp *interp, Tcl_Obj *objPtr)
|
|
||||||
if (childSpec) {
|
|
||||||
tail->child = Ttk_ParseLayoutTemplate(interp, childSpec);
|
|
||||||
if (!tail->child) {
|
|
||||||
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf("Empty -children value"));
|
|
||||||
+ Tcl_SetErrorCode(interp, "TTK", "VALUE", "LAYOUT", NULL);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
From 61066408712d7d0a8cbde84712b49fef449bb181 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Wed, 10 Jan 2018 20:45:24 +0000
|
|
||||||
Subject: [PATCH 105/693] Fix [382712ade6]: X11: 'event generate . <KeyPress>'
|
|
||||||
segfaults. Patch from Christian Werner.
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixKey.c | 28 +++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 27 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c
|
|
||||||
index 23c4aa48d..dcdc85f05 100644
|
|
||||||
--- a/unix/tkUnixKey.c
|
|
||||||
+++ b/unix/tkUnixKey.c
|
|
||||||
@@ -110,7 +110,7 @@ TkpGetString(
|
|
||||||
XEvent *eventPtr, /* X keyboard event. */
|
|
||||||
Tcl_DString *dsPtr) /* Initialized, empty string to hold result. */
|
|
||||||
{
|
|
||||||
- int len;
|
|
||||||
+ int len, mincode, maxcode;
|
|
||||||
Tcl_DString buf;
|
|
||||||
TkKeyEvent *kePtr = (TkKeyEvent *) eventPtr;
|
|
||||||
|
|
||||||
@@ -125,6 +125,32 @@ TkpGetString(
|
|
||||||
return Tcl_DStringValue(dsPtr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Only do this for KeyPress events, otherwise
|
|
||||||
+ * further Xlib function behavior might be undefined.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (eventPtr->type != KeyPress) {
|
|
||||||
+ len = 0;
|
|
||||||
+ Tcl_DStringSetLength(dsPtr, len);
|
|
||||||
+ goto done;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Filter keycodes out of range, otherwise
|
|
||||||
+ * further Xlib function behavior might be undefined.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ mincode = 0;
|
|
||||||
+ maxcode = -1;
|
|
||||||
+ XDisplayKeycodes(winPtr->dispPtr->display, &mincode, &maxcode);
|
|
||||||
+ if ((eventPtr->xkey.keycode < mincode) ||
|
|
||||||
+ (eventPtr->xkey.keycode > maxcode)) {
|
|
||||||
+ len = 0;
|
|
||||||
+ Tcl_DStringSetLength(dsPtr, len);
|
|
||||||
+ goto done;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#ifdef TK_USE_INPUT_METHODS
|
|
||||||
if ((winPtr->dispPtr->flags & TK_DISPLAY_USE_IM)
|
|
||||||
&& (winPtr->inputContext != NULL)
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
From 45f12e010e97704ab8f7b6fb932ebe14c5596779 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Thu, 11 Oct 2018 20:00:40 +0000
|
|
||||||
Subject: [PATCH 349/693] Fix [4b555aca34]: text search -all hangs and eats all
|
|
||||||
memory
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkText.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
||||||
index d43bef6b0..6c5262426 100644
|
|
||||||
--- a/generic/tkText.c
|
|
||||||
+++ b/generic/tkText.c
|
|
||||||
@@ -6070,8 +6070,8 @@ SearchCore(
|
|
||||||
matchOffset = p - startOfLine;
|
|
||||||
|
|
||||||
if (searchSpecPtr->all &&
|
|
||||||
- !searchSpecPtr->foundMatchProc(lineNum, searchSpecPtr,
|
|
||||||
- lineInfo, theLine, matchOffset, matchLength)) {
|
|
||||||
+ (!searchSpecPtr->foundMatchProc(lineNum, searchSpecPtr,
|
|
||||||
+ lineInfo, theLine, matchOffset, matchLength) || (matchLength == 0)) ) {
|
|
||||||
/*
|
|
||||||
* We reached the end of the search.
|
|
||||||
*/
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,140 +0,0 @@
|
|||||||
From f0ac004c7b9eb1d05be53e4b764e81076d314c6f Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Mon, 29 Jan 2018 21:32:53 +0000
|
|
||||||
Subject: [PATCH 131/693] Fix [502e74e9ad]: crash for untrusted X connections
|
|
||||||
(for ssh: ForwardX11Trusted no). Patch from Christian Werner.
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixSend.c | 66 ++++++++++++++++++++++++++++++-----------------
|
|
||||||
1 file changed, 42 insertions(+), 24 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c
|
|
||||||
index bbbdd774c..95e5ae27e 100644
|
|
||||||
--- a/unix/tkUnixSend.c
|
|
||||||
+++ b/unix/tkUnixSend.c
|
|
||||||
@@ -261,11 +261,14 @@ RegOpen(
|
|
||||||
unsigned long bytesAfter;
|
|
||||||
Atom actualType;
|
|
||||||
char **propertyPtr;
|
|
||||||
+ Tk_ErrorHandler handler;
|
|
||||||
|
|
||||||
if (dispPtr->commTkwin == NULL) {
|
|
||||||
SendInit(interp, dispPtr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ handler = Tk_CreateErrorHandler(dispPtr->display, -1, -1, -1, NULL, NULL);
|
|
||||||
+
|
|
||||||
regPtr = ckalloc(sizeof(NameRegistry));
|
|
||||||
regPtr->dispPtr = dispPtr;
|
|
||||||
regPtr->locked = 0;
|
|
||||||
@@ -306,8 +309,11 @@ RegOpen(
|
|
||||||
XDeleteProperty(dispPtr->display,
|
|
||||||
RootWindow(dispPtr->display, 0),
|
|
||||||
dispPtr->registryProperty);
|
|
||||||
+ XSync(dispPtr->display, False);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ Tk_DeleteErrorHandler(handler);
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Xlib placed an extra null byte after the end of the property, just to
|
|
||||||
* make sure that it is always NULL-terminated. Be sure to include this
|
|
||||||
@@ -514,6 +520,11 @@ RegClose(
|
|
||||||
NameRegistry *regPtr) /* Pointer to a registry opened with a
|
|
||||||
* previous call to RegOpen. */
|
|
||||||
{
|
|
||||||
+ Tk_ErrorHandler handler;
|
|
||||||
+
|
|
||||||
+ handler = Tk_CreateErrorHandler(regPtr->dispPtr->display, -1, -1, -1,
|
|
||||||
+ NULL, NULL);
|
|
||||||
+
|
|
||||||
if (regPtr->modified) {
|
|
||||||
if (!regPtr->locked && !localData.sendDebug) {
|
|
||||||
Tcl_Panic("The name registry was modified without being locked!");
|
|
||||||
@@ -540,6 +551,8 @@ RegClose(
|
|
||||||
|
|
||||||
XFlush(regPtr->dispPtr->display);
|
|
||||||
|
|
||||||
+ Tk_DeleteErrorHandler(handler);
|
|
||||||
+
|
|
||||||
if (regPtr->property != NULL) {
|
|
||||||
if (regPtr->allocedByX) {
|
|
||||||
XFree(regPtr->property);
|
|
||||||
@@ -1095,6 +1108,31 @@ Tk_SendObjCmd(
|
|
||||||
Tcl_DStringAppend(&request, " ", 1);
|
|
||||||
Tcl_DStringAppend(&request, Tcl_GetString(objv[i]), -1);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (!async) {
|
|
||||||
+ /*
|
|
||||||
+ * Register the fact that we're waiting for a command to complete
|
|
||||||
+ * (this is needed by SendEventProc and by AppendErrorProc to pass
|
|
||||||
+ * back the command's results). Set up a timeout handler so that
|
|
||||||
+ * we can check during long sends to make sure that the destination
|
|
||||||
+ * application is still alive.
|
|
||||||
+ *
|
|
||||||
+ * We prepare the pending struct here in order to catch potential
|
|
||||||
+ * early X errors from AppendPropCarefully() due to XSync().
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ pending.serial = localData.sendSerial;
|
|
||||||
+ pending.dispPtr = dispPtr;
|
|
||||||
+ pending.target = destName;
|
|
||||||
+ pending.commWindow = commWindow;
|
|
||||||
+ pending.interp = interp;
|
|
||||||
+ pending.result = NULL;
|
|
||||||
+ pending.errorInfo = NULL;
|
|
||||||
+ pending.errorCode = NULL;
|
|
||||||
+ pending.gotResponse = 0;
|
|
||||||
+ pending.nextPtr = tsdPtr->pendingCommands;
|
|
||||||
+ tsdPtr->pendingCommands = &pending;
|
|
||||||
+ }
|
|
||||||
(void) AppendPropCarefully(dispPtr->display, commWindow,
|
|
||||||
dispPtr->commProperty, Tcl_DStringValue(&request),
|
|
||||||
Tcl_DStringLength(&request) + 1, (async ? NULL : &pending));
|
|
||||||
@@ -1108,26 +1146,6 @@ Tk_SendObjCmd(
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * Register the fact that we're waiting for a command to complete (this is
|
|
||||||
- * needed by SendEventProc and by AppendErrorProc to pass back the
|
|
||||||
- * command's results). Set up a timeout handler so that we can check
|
|
||||||
- * during long sends to make sure that the destination application is
|
|
||||||
- * still alive.
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- pending.serial = localData.sendSerial;
|
|
||||||
- pending.dispPtr = dispPtr;
|
|
||||||
- pending.target = destName;
|
|
||||||
- pending.commWindow = commWindow;
|
|
||||||
- pending.interp = interp;
|
|
||||||
- pending.result = NULL;
|
|
||||||
- pending.errorInfo = NULL;
|
|
||||||
- pending.errorCode = NULL;
|
|
||||||
- pending.gotResponse = 0;
|
|
||||||
- pending.nextPtr = tsdPtr->pendingCommands;
|
|
||||||
- tsdPtr->pendingCommands = &pending;
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* Enter a loop processing X events until the result comes in or the
|
|
||||||
* target is declared to be dead. While waiting for a result, look only at
|
|
||||||
@@ -1959,11 +1977,11 @@ TkpTestsendCmd(
|
|
||||||
return TCL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (Tcl_GetIndexFromObjStruct(interp, objv[1], testsendOptions,
|
|
||||||
+ if (Tcl_GetIndexFromObjStruct(interp, objv[1], testsendOptions,
|
|
||||||
sizeof(char *), "option", 0, &index) != TCL_OK) {
|
|
||||||
- return TCL_ERROR;
|
|
||||||
- }
|
|
||||||
- if (index == TESTSEND_BOGUS) {
|
|
||||||
+ return TCL_ERROR;
|
|
||||||
+ }
|
|
||||||
+ if (index == TESTSEND_BOGUS) {
|
|
||||||
XChangeProperty(winPtr->dispPtr->display,
|
|
||||||
RootWindow(winPtr->dispPtr->display, 0),
|
|
||||||
winPtr->dispPtr->registryProperty, XA_INTEGER, 32,
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,272 +0,0 @@
|
|||||||
From 27d00ef04f9ecbafef219105aa9dec4b54787b33 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Sun, 28 Jan 2018 19:49:55 +0000
|
|
||||||
Subject: [PATCH 127/693] Fix [5d991b822e]: segmentation violation in
|
|
||||||
TclObjLookupVarEx. Patch from Christian Werner.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkButton.c | 30 ++++++++++++++++++++++++++++--
|
|
||||||
generic/tkEntry.c | 17 +++++++++++++++--
|
|
||||||
generic/tkListbox.c | 17 +++++++++++++++--
|
|
||||||
generic/tkMenu.c | 11 +++++++++++
|
|
||||||
generic/tkMenubutton.c | 13 +++++++++++++
|
|
||||||
generic/tkMessage.c | 13 +++++++++++++
|
|
||||||
generic/tkScale.c | 13 +++++++++++++
|
|
||||||
generic/ttk/ttkTrace.c | 15 +++++++++++++--
|
|
||||||
8 files changed, 121 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkButton.c b/generic/tkButton.c
|
|
||||||
index b7e314e74..e114a5108 100644
|
|
||||||
--- a/generic/tkButton.c
|
|
||||||
+++ b/generic/tkButton.c
|
|
||||||
@@ -1610,6 +1610,19 @@ ButtonVarProc(
|
|
||||||
const char *value;
|
|
||||||
Tcl_Obj *valuePtr;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (butPtr->selVarNamePtr == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ ButtonVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is being unset, then just re-establish the trace unless
|
|
||||||
* the whole interpreter is going away.
|
|
||||||
@@ -1692,8 +1705,8 @@ static char *
|
|
||||||
ButtonTextVarProc(
|
|
||||||
ClientData clientData, /* Information about button. */
|
|
||||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
|
||||||
- const char *name1, /* Not used. */
|
|
||||||
- const char *name2, /* Not used. */
|
|
||||||
+ const char *name1, /* Name of variable. */
|
|
||||||
+ const char *name2, /* Second part of variable name. */
|
|
||||||
int flags) /* Information about what happened. */
|
|
||||||
{
|
|
||||||
TkButton *butPtr = clientData;
|
|
||||||
@@ -1703,6 +1716,19 @@ ButtonTextVarProc(
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (butPtr->textVarNamePtr == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ ButtonTextVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is unset, then immediately recreate it unless the whole
|
|
||||||
* interpreter is going away.
|
|
||||||
diff --git a/generic/tkEntry.c b/generic/tkEntry.c
|
|
||||||
index 25774cc2f..678691fca 100644
|
|
||||||
--- a/generic/tkEntry.c
|
|
||||||
+++ b/generic/tkEntry.c
|
|
||||||
@@ -3135,8 +3135,8 @@ static char *
|
|
||||||
EntryTextVarProc(
|
|
||||||
ClientData clientData, /* Information about button. */
|
|
||||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
|
||||||
- const char *name1, /* Not used. */
|
|
||||||
- const char *name2, /* Not used. */
|
|
||||||
+ const char *name1, /* Name of variable. */
|
|
||||||
+ const char *name2, /* Second part of variable name. */
|
|
||||||
int flags) /* Information about what happened. */
|
|
||||||
{
|
|
||||||
Entry *entryPtr = clientData;
|
|
||||||
@@ -3149,6 +3149,19 @@ EntryTextVarProc(
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (entryPtr->textVarName == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ EntryTextVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is unset, then immediately recreate it unless the whole
|
|
||||||
* interpreter is going away.
|
|
||||||
diff --git a/generic/tkListbox.c b/generic/tkListbox.c
|
|
||||||
index b18a7f49f..5f650fed3 100644
|
|
||||||
--- a/generic/tkListbox.c
|
|
||||||
+++ b/generic/tkListbox.c
|
|
||||||
@@ -3431,8 +3431,8 @@ static char *
|
|
||||||
ListboxListVarProc(
|
|
||||||
ClientData clientData, /* Information about button. */
|
|
||||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
|
||||||
- const char *name1, /* Not used. */
|
|
||||||
- const char *name2, /* Not used. */
|
|
||||||
+ const char *name1, /* Name of variable. */
|
|
||||||
+ const char *name2, /* Second part of variable name. */
|
|
||||||
int flags) /* Information about what happened. */
|
|
||||||
{
|
|
||||||
Listbox *listPtr = clientData;
|
|
||||||
@@ -3440,6 +3440,19 @@ ListboxListVarProc(
|
|
||||||
int oldLength, i;
|
|
||||||
Tcl_HashEntry *entry;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (listPtr->listVarName == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ ListboxListVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Bwah hahahaha! Puny mortal, you can't unset a -listvar'd variable!
|
|
||||||
*/
|
|
||||||
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
|
|
||||||
index 42ddbd5ec..5859ac050 100644
|
|
||||||
--- a/generic/tkMenu.c
|
|
||||||
+++ b/generic/tkMenu.c
|
|
||||||
@@ -2500,6 +2500,17 @@ MenuVarProc(
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (mePtr->namePtr == NULL) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ MenuVarProc, clientData);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
name = Tcl_GetString(mePtr->namePtr);
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/generic/tkMenubutton.c b/generic/tkMenubutton.c
|
|
||||||
index 1a4d5ae6e..2c1676c60 100644
|
|
||||||
--- a/generic/tkMenubutton.c
|
|
||||||
+++ b/generic/tkMenubutton.c
|
|
||||||
@@ -881,6 +881,19 @@ MenuButtonTextVarProc(
|
|
||||||
const char *value;
|
|
||||||
unsigned len;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (mbPtr->textVarName == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ MenuButtonTextVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is unset, then immediately recreate it unless the whole
|
|
||||||
* interpreter is going away.
|
|
||||||
diff --git a/generic/tkMessage.c b/generic/tkMessage.c
|
|
||||||
index 2b7199875..f65b04687 100644
|
|
||||||
--- a/generic/tkMessage.c
|
|
||||||
+++ b/generic/tkMessage.c
|
|
||||||
@@ -838,6 +838,19 @@ MessageTextVarProc(
|
|
||||||
register Message *msgPtr = clientData;
|
|
||||||
const char *value;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (msgPtr->textVarName == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ MessageTextVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is unset, then immediately recreate it unless the whole
|
|
||||||
* interpreter is going away.
|
|
||||||
diff --git a/generic/tkScale.c b/generic/tkScale.c
|
|
||||||
index ef67630d8..af45afa73 100644
|
|
||||||
--- a/generic/tkScale.c
|
|
||||||
+++ b/generic/tkScale.c
|
|
||||||
@@ -1192,6 +1192,19 @@ ScaleVarProc(
|
|
||||||
Tcl_Obj *valuePtr;
|
|
||||||
int result;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (scalePtr->varNamePtr == NULL) {
|
|
||||||
+ if (!(flags & TCL_INTERP_DESTROYED)) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ ScaleVarProc, clientData);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* If the variable is unset, then immediately recreate it unless the whole
|
|
||||||
* interpreter is going away.
|
|
||||||
diff --git a/generic/ttk/ttkTrace.c b/generic/ttk/ttkTrace.c
|
|
||||||
index ba66db427..e6eead2bc 100644
|
|
||||||
--- a/generic/ttk/ttkTrace.c
|
|
||||||
+++ b/generic/ttk/ttkTrace.c
|
|
||||||
@@ -26,8 +26,8 @@ static char *
|
|
||||||
VarTraceProc(
|
|
||||||
ClientData clientData, /* Widget record pointer */
|
|
||||||
Tcl_Interp *interp, /* Interpreter containing variable. */
|
|
||||||
- const char *name1, /* (unused) */
|
|
||||||
- const char *name2, /* (unused) */
|
|
||||||
+ const char *name1, /* Name of variable. */
|
|
||||||
+ const char *name2, /* Second part of variable name. */
|
|
||||||
int flags) /* Information about what happened. */
|
|
||||||
{
|
|
||||||
Ttk_TraceHandle *tracePtr = clientData;
|
|
||||||
@@ -38,6 +38,17 @@ VarTraceProc(
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * See ticket [5d991b82].
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (tracePtr->varnameObj == NULL) {
|
|
||||||
+ Tcl_UntraceVar2(interp, name1, name2,
|
|
||||||
+ TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
|
|
||||||
+ VarTraceProc, clientData);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
name = Tcl_GetString(tracePtr->varnameObj);
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
From 19cb045850ffebc2785f44a362fdc7e199f293a5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Sun, 30 Sep 2018 14:45:49 +0000
|
|
||||||
Subject: [PATCH 334/693] Fix [6437e8d00d]: font-24.5 test fails on macOS and
|
|
||||||
Linux. This is the fix for Linux, with Xft enabled (the default).
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixRFont.c | 16 +++++++++++++---
|
|
||||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
|
||||||
index 8e0ce5552..70aebfa72 100644
|
|
||||||
--- a/unix/tkUnixRFont.c
|
|
||||||
+++ b/unix/tkUnixRFont.c
|
|
||||||
@@ -711,9 +711,19 @@ Tk_MeasureChars(
|
|
||||||
(flags & TK_AT_LEAST_ONE && curByte == 0)) {
|
|
||||||
curX = newX;
|
|
||||||
curByte = newByte;
|
|
||||||
- } else if (flags & TK_WHOLE_WORDS && termX != 0) {
|
|
||||||
- curX = termX;
|
|
||||||
- curByte = termByte;
|
|
||||||
+ } else if (flags & TK_WHOLE_WORDS) {
|
|
||||||
+ if ((flags & TK_AT_LEAST_ONE) && (termX == 0)) {
|
|
||||||
+ /*
|
|
||||||
+ * No space was seen before reaching the right
|
|
||||||
+ * of the allotted maxLength space, i.e. no word
|
|
||||||
+ * boundary. Return the string that fills the
|
|
||||||
+ * allotted space, without overfill.
|
|
||||||
+ * curX and curByte are already the right ones:
|
|
||||||
+ */
|
|
||||||
+ } else {
|
|
||||||
+ curX = termX;
|
|
||||||
+ curByte = termByte;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
From f884f275a1ae02b0a08fc22fd3c075d64394a352 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Sat, 13 Jan 2018 13:50:46 +0000
|
|
||||||
Subject: [PATCH 107/693] Fix [657c389120] and [b4214b4712]: Segfault when
|
|
||||||
destroying menu with checkbutton entry
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkMenu.c | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
|
|
||||||
index d24516f6a..42ddbd5ec 100644
|
|
||||||
--- a/generic/tkMenu.c
|
|
||||||
+++ b/generic/tkMenu.c
|
|
||||||
@@ -2495,6 +2495,11 @@ MenuVarProc(
|
|
||||||
}
|
|
||||||
|
|
||||||
menuPtr = mePtr->menuPtr;
|
|
||||||
+
|
|
||||||
+ if (menuPtr->menuFlags & MENU_DELETION_PENDING) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
name = Tcl_GetString(mePtr->namePtr);
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
From cf0ab9321dd689a22c6d59f52b14d479605553e9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Thu, 1 Nov 2018 21:29:32 +0000
|
|
||||||
Subject: [PATCH 436/693] Fix [6b22d436aa]: Treeview ActivateHeading Binding
|
|
||||||
Fails After Widget Deletion. Thanks to Brian O'Hagan for the report and the
|
|
||||||
patch.
|
|
||||||
|
|
||||||
---
|
|
||||||
library/ttk/treeview.tcl | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/library/ttk/treeview.tcl b/library/ttk/treeview.tcl
|
|
||||||
index 87725875e..1ed87dbcd 100644
|
|
||||||
--- a/library/ttk/treeview.tcl
|
|
||||||
+++ b/library/ttk/treeview.tcl
|
|
||||||
@@ -120,7 +120,7 @@ proc ttk::treeview::ActivateHeading {w heading} {
|
|
||||||
variable State
|
|
||||||
|
|
||||||
if {$w != $State(activeWidget) || $heading != $State(activeHeading)} {
|
|
||||||
- if {$State(activeHeading) != {}} {
|
|
||||||
+ if {[winfo exists $State(activeWidget)] && $State(activeHeading) != {}} {
|
|
||||||
$State(activeWidget) heading $State(activeHeading) state !active
|
|
||||||
}
|
|
||||||
if {$heading != {}} {
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
From 5e2dd69aeb80d6277eda5669e2b69d4caee43af2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Thu, 18 Jan 2018 14:23:04 +0000
|
|
||||||
Subject: [PATCH 120/693] Fix broken build (one line of the patch was missing)
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixKey.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c
|
|
||||||
index dcdc85f05..d8aa5abe6 100644
|
|
||||||
--- a/unix/tkUnixKey.c
|
|
||||||
+++ b/unix/tkUnixKey.c
|
|
||||||
@@ -243,6 +243,7 @@ TkpGetString(
|
|
||||||
* from having to reenter the XIM engine. [Bug 1373712]
|
|
||||||
*/
|
|
||||||
|
|
||||||
+done:
|
|
||||||
kePtr->charValuePtr = ckalloc(len + 1);
|
|
||||||
kePtr->charValueLen = len;
|
|
||||||
memcpy(kePtr->charValuePtr, Tcl_DStringValue(dsPtr), (unsigned) len + 1);
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
From 4eec31fbb436bb39ad1be0ac1d4f6b5804bca4e1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Wed, 13 Jun 2018 20:27:21 +0000
|
|
||||||
Subject: [PATCH 232/693] Fix [de01e24aa1]: Text replace command involving
|
|
||||||
selection crashes
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkText.c | 12 +++++++++---
|
|
||||||
1 file changed, 9 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
||||||
index 308855f13..78260e08c 100644
|
|
||||||
--- a/generic/tkText.c
|
|
||||||
+++ b/generic/tkText.c
|
|
||||||
@@ -1465,7 +1465,7 @@ TextWidgetObjCmd(
|
|
||||||
* unnecessarily.
|
|
||||||
*/
|
|
||||||
|
|
||||||
- int deleteInsertOffset, insertLength, j;
|
|
||||||
+ int deleteInsertOffset, insertLength, j, indexFromLine, indexFromByteOffset;
|
|
||||||
|
|
||||||
insertLength = 0;
|
|
||||||
for (j = 4; j < objc; j += 2) {
|
|
||||||
@@ -1483,6 +1483,9 @@ TextWidgetObjCmd(
|
|
||||||
deleteInsertOffset = insertLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ indexFromLine = TkBTreeLinesTo(textPtr, indexFromPtr->linePtr);
|
|
||||||
+ indexFromByteOffset = indexFromPtr->byteIndex;
|
|
||||||
+
|
|
||||||
result = TextReplaceCmd(textPtr, interp, indexFromPtr,
|
|
||||||
indexToPtr, objc, objv, 0);
|
|
||||||
|
|
||||||
@@ -1491,8 +1494,11 @@ TextWidgetObjCmd(
|
|
||||||
* Move the insertion position to the correct place.
|
|
||||||
*/
|
|
||||||
|
|
||||||
- indexFromPtr = TkTextGetIndexFromObj(interp, textPtr, objv[2]);
|
|
||||||
- TkTextIndexForwChars(NULL, indexFromPtr,
|
|
||||||
+ TkTextIndex indexTmp;
|
|
||||||
+
|
|
||||||
+ TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, indexFromLine,
|
|
||||||
+ indexFromByteOffset, &indexTmp);
|
|
||||||
+ TkTextIndexForwChars(NULL, &indexTmp,
|
|
||||||
deleteInsertOffset, &index, COUNT_INDICES);
|
|
||||||
TkBTreeUnlinkSegment(textPtr->insertMarkPtr,
|
|
||||||
textPtr->insertMarkPtr->body.mark.linePtr);
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,97 +0,0 @@
|
|||||||
From 794d69dcfe3c832df39496ecc9a9beb137e0a732 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Sat, 21 Jul 2018 13:37:42 +0000
|
|
||||||
Subject: [PATCH 256/693] Fix [fbaed1f66b]: [image create photo] errors out on
|
|
||||||
a sane animated gif
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkImgGIF.c | 46 +++++++++++++++++++++-------------------------
|
|
||||||
1 file changed, 21 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c
|
|
||||||
index be90f0684..7c4872bef 100644
|
|
||||||
--- a/generic/tkImgGIF.c
|
|
||||||
+++ b/generic/tkImgGIF.c
|
|
||||||
@@ -1141,9 +1141,9 @@ ReadImage(
|
|
||||||
* Last pass reset the decoder, so the first code we see
|
|
||||||
* must be a singleton. Seed the stack with it, and set up
|
|
||||||
* the old/first code pointers for insertion into the
|
|
||||||
- * string table. We can't just roll this into the
|
|
||||||
- * clearCode test above, because at that point we have not
|
|
||||||
- * yet read the next code.
|
|
||||||
+ * codes table. We can't just roll this into the clearCode
|
|
||||||
+ * test above, because at that point we have not yet read
|
|
||||||
+ * the next code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
*top++ = append[code];
|
|
||||||
@@ -1154,11 +1154,11 @@ ReadImage(
|
|
||||||
|
|
||||||
inCode = code;
|
|
||||||
|
|
||||||
- if (code == maxCode) {
|
|
||||||
+ if ((code == maxCode) && (maxCode < (1 << MAX_LWZ_BITS))) {
|
|
||||||
/*
|
|
||||||
* maxCode is always one bigger than our highest assigned
|
|
||||||
* code. If the code we see is equal to maxCode, then we
|
|
||||||
- * are about to add a new string to the table. ???
|
|
||||||
+ * are about to add a new entry to the codes table.
|
|
||||||
*/
|
|
||||||
|
|
||||||
*top++ = firstCode;
|
|
||||||
@@ -1167,7 +1167,7 @@ ReadImage(
|
|
||||||
|
|
||||||
while (code > clearCode) {
|
|
||||||
/*
|
|
||||||
- * Populate the stack by tracing the string in the string
|
|
||||||
+ * Populate the stack by tracing the code in the codes
|
|
||||||
* table from its tail to its head
|
|
||||||
*/
|
|
||||||
|
|
||||||
@@ -1176,28 +1176,24 @@ ReadImage(
|
|
||||||
}
|
|
||||||
firstCode = append[code];
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * If there's no more room in our string table, quit.
|
|
||||||
- * Otherwise, add a new string to the table
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- if (maxCode >= (1 << MAX_LWZ_BITS)) {
|
|
||||||
- return TCL_OK;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Push the head of the string onto the stack.
|
|
||||||
- */
|
|
||||||
+ /*
|
|
||||||
+ * Push the head of the code onto the stack.
|
|
||||||
+ */
|
|
||||||
|
|
||||||
- *top++ = firstCode;
|
|
||||||
+ *top++ = firstCode;
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * Add a new string to the string table
|
|
||||||
- */
|
|
||||||
+ if (maxCode < (1 << MAX_LWZ_BITS)) {
|
|
||||||
+ /*
|
|
||||||
+ * If there's still room in our codes table, add a new entry.
|
|
||||||
+ * Otherwise don't, and keep using the current table.
|
|
||||||
+ * See DEFERRED CLEAR CODE IN LZW COMPRESSION in the GIF89a
|
|
||||||
+ * specification.
|
|
||||||
+ */
|
|
||||||
|
|
||||||
- prefix[maxCode] = oldCode;
|
|
||||||
- append[maxCode] = firstCode;
|
|
||||||
- maxCode++;
|
|
||||||
+ prefix[maxCode] = oldCode;
|
|
||||||
+ append[maxCode] = firstCode;
|
|
||||||
+ maxCode++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* maxCode tells us the maximum code value we can accept. If
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,262 +0,0 @@
|
|||||||
From 37c12f688751bcc6c13ca455d52451c2833aa457 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Fri, 19 Jan 2018 20:54:18 +0000
|
|
||||||
Subject: [PATCH 121/693] Latest fix proposal from Christian Werner: revert the
|
|
||||||
two previous commits and add XSync() just before the garbage collector, which
|
|
||||||
minimizes the number of XSync() calls, therefore optimizing performance while
|
|
||||||
still fixing the bug.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkError.c | 28 ++++++++++++++++++----------
|
|
||||||
unix/tkUnixColor.c | 1 -
|
|
||||||
unix/tkUnixEmbed.c | 3 ---
|
|
||||||
unix/tkUnixFocus.c | 1 -
|
|
||||||
unix/tkUnixRFont.c | 4 ----
|
|
||||||
unix/tkUnixSelect.c | 3 ---
|
|
||||||
unix/tkUnixSend.c | 1 -
|
|
||||||
unix/tkUnixWm.c | 9 ++-------
|
|
||||||
8 files changed, 20 insertions(+), 30 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkError.c b/generic/tkError.c
|
|
||||||
index fc223e6b3..277d7f0e0 100644
|
|
||||||
--- a/generic/tkError.c
|
|
||||||
+++ b/generic/tkError.c
|
|
||||||
@@ -82,8 +82,8 @@ Tk_CreateErrorHandler(
|
|
||||||
* errors. */
|
|
||||||
ClientData clientData) /* Arbitrary value to pass to errorProc. */
|
|
||||||
{
|
|
||||||
- register TkErrorHandler *errorPtr;
|
|
||||||
- register TkDisplay *dispPtr;
|
|
||||||
+ TkErrorHandler *errorPtr;
|
|
||||||
+ TkDisplay *dispPtr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Find the display. If Tk doesn't know about this display then it's an
|
|
||||||
@@ -147,8 +147,8 @@ Tk_DeleteErrorHandler(
|
|
||||||
Tk_ErrorHandler handler) /* Token for handler to delete; was previous
|
|
||||||
* return value from Tk_CreateErrorHandler. */
|
|
||||||
{
|
|
||||||
- register TkErrorHandler *errorPtr = (TkErrorHandler *) handler;
|
|
||||||
- register TkDisplay *dispPtr = errorPtr->dispPtr;
|
|
||||||
+ TkErrorHandler *errorPtr = (TkErrorHandler *) handler;
|
|
||||||
+ TkDisplay *dispPtr = errorPtr->dispPtr;
|
|
||||||
|
|
||||||
errorPtr->lastRequest = NextRequest(dispPtr->display) - 1;
|
|
||||||
|
|
||||||
@@ -166,12 +166,20 @@ Tk_DeleteErrorHandler(
|
|
||||||
|
|
||||||
dispPtr->deleteCount += 1;
|
|
||||||
if (dispPtr->deleteCount >= 10) {
|
|
||||||
- register TkErrorHandler *prevPtr;
|
|
||||||
+ TkErrorHandler *prevPtr;
|
|
||||||
TkErrorHandler *nextPtr;
|
|
||||||
- int lastSerial;
|
|
||||||
+ int 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) {
|
|
||||||
+ XSync(dispPtr->display, False);
|
|
||||||
+ }
|
|
||||||
dispPtr->deleteCount = 0;
|
|
||||||
- lastSerial = LastKnownRequestProcessed(dispPtr->display);
|
|
||||||
errorPtr = dispPtr->errorPtr;
|
|
||||||
for (prevPtr = NULL; errorPtr != NULL; errorPtr = nextPtr) {
|
|
||||||
nextPtr = errorPtr->nextPtr;
|
|
||||||
@@ -213,11 +221,11 @@ Tk_DeleteErrorHandler(
|
|
||||||
static int
|
|
||||||
ErrorProc(
|
|
||||||
Display *display, /* Display for which error occurred. */
|
|
||||||
- register XErrorEvent *errEventPtr)
|
|
||||||
+ XErrorEvent *errEventPtr)
|
|
||||||
/* Information about error. */
|
|
||||||
{
|
|
||||||
- register TkDisplay *dispPtr;
|
|
||||||
- register TkErrorHandler *errorPtr;
|
|
||||||
+ TkDisplay *dispPtr;
|
|
||||||
+ TkErrorHandler *errorPtr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* See if we know anything about the display. If not, then invoke the
|
|
||||||
diff --git a/unix/tkUnixColor.c b/unix/tkUnixColor.c
|
|
||||||
index b11a1ebbc..43500ad5b 100644
|
|
||||||
--- a/unix/tkUnixColor.c
|
|
||||||
+++ b/unix/tkUnixColor.c
|
|
||||||
@@ -94,7 +94,6 @@ TkpFreeColor(
|
|
||||||
-1, -1, -1, NULL, NULL);
|
|
||||||
XFreeColors(DisplayOfScreen(screen), tkColPtr->colormap,
|
|
||||||
&tkColPtr->color.pixel, 1, 0L);
|
|
||||||
- XSync(DisplayOfScreen(screen), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
DeleteStressedCmap(DisplayOfScreen(screen), tkColPtr->colormap);
|
|
||||||
diff --git a/unix/tkUnixEmbed.c b/unix/tkUnixEmbed.c
|
|
||||||
index b285fbe73..b170ad037 100644
|
|
||||||
--- a/unix/tkUnixEmbed.c
|
|
||||||
+++ b/unix/tkUnixEmbed.c
|
|
||||||
@@ -472,7 +472,6 @@ ContainerEventProc(
|
|
||||||
|
|
||||||
Tk_DestroyWindow((Tk_Window) winPtr);
|
|
||||||
}
|
|
||||||
- XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -516,7 +515,6 @@ EmbedStructureProc(
|
|
||||||
containerPtr->wrapper, 0, 0,
|
|
||||||
(unsigned) Tk_Width((Tk_Window) containerPtr->parentPtr),
|
|
||||||
(unsigned) Tk_Height((Tk_Window) containerPtr->parentPtr));
|
|
||||||
- XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
} else if (eventPtr->type == DestroyNotify) {
|
|
||||||
@@ -566,7 +564,6 @@ EmbedFocusProc(
|
|
||||||
-1, -1, NULL, NULL);
|
|
||||||
XSetInputFocus(display, containerPtr->wrapper, RevertToParent,
|
|
||||||
CurrentTime);
|
|
||||||
- XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/unix/tkUnixFocus.c b/unix/tkUnixFocus.c
|
|
||||||
index 7f4771e9d..07676181d 100644
|
|
||||||
--- a/unix/tkUnixFocus.c
|
|
||||||
+++ b/unix/tkUnixFocus.c
|
|
||||||
@@ -112,7 +112,6 @@ TkpChangeFocus(
|
|
||||||
}
|
|
||||||
XSetInputFocus(dispPtr->display, winPtr->window, RevertToParent,
|
|
||||||
CurrentTime);
|
|
||||||
- XSync(dispPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
|
||||||
index 44e733944..d43ed2460 100644
|
|
||||||
--- a/unix/tkUnixRFont.c
|
|
||||||
+++ b/unix/tkUnixRFont.c
|
|
||||||
@@ -388,7 +388,6 @@ FinishedWithFont(
|
|
||||||
if (fontPtr->fontset) {
|
|
||||||
FcFontSetDestroy(fontPtr->fontset);
|
|
||||||
}
|
|
||||||
- XSync(fontPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -876,7 +875,6 @@ Tk_DrawChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
- XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
XGetGCValues(display, gc, GCForeground, &values);
|
|
||||||
@@ -1010,7 +1008,6 @@ TkDrawAngledChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
- XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1100,7 +1097,6 @@ TkDrawAngledChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
- XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
XGetGCValues(display, gc, GCForeground, &values);
|
|
||||||
diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c
|
|
||||||
index 9313df5c0..6d379ecc8 100644
|
|
||||||
--- a/unix/tkUnixSelect.c
|
|
||||||
+++ b/unix/tkUnixSelect.c
|
|
||||||
@@ -470,7 +470,6 @@ TkSelPropProc(
|
|
||||||
ckfree(propPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- XSync(eventPtr->xproperty.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1049,7 +1048,6 @@ ConvertSelection(
|
|
||||||
reply.xsel.property = incr.multAtoms[1];
|
|
||||||
}
|
|
||||||
XSendEvent(reply.xsel.display, reply.xsel.requestor, False, 0, &reply.ev);
|
|
||||||
- XSync(reply.xsel.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1068,7 +1066,6 @@ ConvertSelection(
|
|
||||||
errorHandler = Tk_CreateErrorHandler(winPtr->display,
|
|
||||||
-1, -1, -1, (int (*)()) NULL, NULL);
|
|
||||||
XSelectInput(reply.xsel.display, reply.xsel.requestor, 0L);
|
|
||||||
- XSync(winPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
if (tsdPtr->pendingIncrs == &incr) {
|
|
||||||
tsdPtr->pendingIncrs = incr.nextPtr;
|
|
||||||
diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c
|
|
||||||
index 0322a78d5..bbbdd774c 100644
|
|
||||||
--- a/unix/tkUnixSend.c
|
|
||||||
+++ b/unix/tkUnixSend.c
|
|
||||||
@@ -1748,7 +1748,6 @@ AppendPropCarefully(
|
|
||||||
pendingPtr);
|
|
||||||
XChangeProperty(display, window, property, XA_STRING, 8,
|
|
||||||
PropModeAppend, (unsigned char *) value, length);
|
|
||||||
- XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
|
|
||||||
index 31e14cb72..19ac86cb5 100644
|
|
||||||
--- a/unix/tkUnixWm.c
|
|
||||||
+++ b/unix/tkUnixWm.c
|
|
||||||
@@ -4084,7 +4084,6 @@ ConfigureEvent(
|
|
||||||
XMoveResizeWindow(winPtr->display, winPtr->window, 0,
|
|
||||||
wmPtr->menuHeight, (unsigned) wrapperPtr->changes.width,
|
|
||||||
(unsigned) (wrapperPtr->changes.height - wmPtr->menuHeight));
|
|
||||||
- XSync(winPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
if ((wmPtr->menubar != NULL)
|
|
||||||
&& ((Tk_Width(wmPtr->menubar) != wrapperPtr->changes.width)
|
|
||||||
@@ -4421,11 +4420,10 @@ WrapperEventProc(
|
|
||||||
* Tk_DestroyWindow will try to destroy the window, but of course
|
|
||||||
* it's already gone.
|
|
||||||
*/
|
|
||||||
- Display *display = wmPtr->winPtr->display;
|
|
||||||
|
|
||||||
- handler = Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
+ handler = Tk_CreateErrorHandler(wmPtr->winPtr->display, -1, -1, -1,
|
|
||||||
+ NULL, NULL);
|
|
||||||
Tk_DestroyWindow((Tk_Window) wmPtr->winPtr);
|
|
||||||
- XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
if (dispPtr->flags & TK_DISPLAY_WM_TRACING) {
|
|
||||||
@@ -5848,12 +5846,10 @@ Tk_CoordsToWindow(
|
|
||||||
* deleted
|
|
||||||
*/
|
|
||||||
|
|
||||||
- XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (child == None) {
|
|
||||||
- XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -5883,7 +5879,6 @@ Tk_CoordsToWindow(
|
|
||||||
* or below
|
|
||||||
*/
|
|
||||||
|
|
||||||
- XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
handler = NULL;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,203 +0,0 @@
|
|||||||
From 5e200188e783123842b45070a15096262e96f604 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Wed, 17 Jan 2018 07:18:37 +0000
|
|
||||||
Subject: [PATCH 115/693] More complete patch from Christian Werner to fix
|
|
||||||
[1821174fff] and [1938774fff]
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixColor.c | 1 +
|
|
||||||
unix/tkUnixEmbed.c | 3 +++
|
|
||||||
unix/tkUnixFocus.c | 1 +
|
|
||||||
unix/tkUnixRFont.c | 12 +++---------
|
|
||||||
unix/tkUnixSelect.c | 3 +++
|
|
||||||
unix/tkUnixSend.c | 1 +
|
|
||||||
unix/tkUnixWm.c | 9 +++++++--
|
|
||||||
7 files changed, 19 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixColor.c b/unix/tkUnixColor.c
|
|
||||||
index 43500ad5b..b11a1ebbc 100644
|
|
||||||
--- a/unix/tkUnixColor.c
|
|
||||||
+++ b/unix/tkUnixColor.c
|
|
||||||
@@ -94,6 +94,7 @@ TkpFreeColor(
|
|
||||||
-1, -1, -1, NULL, NULL);
|
|
||||||
XFreeColors(DisplayOfScreen(screen), tkColPtr->colormap,
|
|
||||||
&tkColPtr->color.pixel, 1, 0L);
|
|
||||||
+ XSync(DisplayOfScreen(screen), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
DeleteStressedCmap(DisplayOfScreen(screen), tkColPtr->colormap);
|
|
||||||
diff --git a/unix/tkUnixEmbed.c b/unix/tkUnixEmbed.c
|
|
||||||
index b170ad037..b285fbe73 100644
|
|
||||||
--- a/unix/tkUnixEmbed.c
|
|
||||||
+++ b/unix/tkUnixEmbed.c
|
|
||||||
@@ -472,6 +472,7 @@ ContainerEventProc(
|
|
||||||
|
|
||||||
Tk_DestroyWindow((Tk_Window) winPtr);
|
|
||||||
}
|
|
||||||
+ XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -515,6 +516,7 @@ EmbedStructureProc(
|
|
||||||
containerPtr->wrapper, 0, 0,
|
|
||||||
(unsigned) Tk_Width((Tk_Window) containerPtr->parentPtr),
|
|
||||||
(unsigned) Tk_Height((Tk_Window) containerPtr->parentPtr));
|
|
||||||
+ XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
} else if (eventPtr->type == DestroyNotify) {
|
|
||||||
@@ -564,6 +566,7 @@ EmbedFocusProc(
|
|
||||||
-1, -1, NULL, NULL);
|
|
||||||
XSetInputFocus(display, containerPtr->wrapper, RevertToParent,
|
|
||||||
CurrentTime);
|
|
||||||
+ XSync(eventPtr->xfocus.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/unix/tkUnixFocus.c b/unix/tkUnixFocus.c
|
|
||||||
index 07676181d..7f4771e9d 100644
|
|
||||||
--- a/unix/tkUnixFocus.c
|
|
||||||
+++ b/unix/tkUnixFocus.c
|
|
||||||
@@ -112,6 +112,7 @@ TkpChangeFocus(
|
|
||||||
}
|
|
||||||
XSetInputFocus(dispPtr->display, winPtr->window, RevertToParent,
|
|
||||||
CurrentTime);
|
|
||||||
+ XSync(dispPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(errHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/unix/tkUnixRFont.c b/unix/tkUnixRFont.c
|
|
||||||
index abdde7819..44e733944 100644
|
|
||||||
--- a/unix/tkUnixRFont.c
|
|
||||||
+++ b/unix/tkUnixRFont.c
|
|
||||||
@@ -388,16 +388,7 @@ FinishedWithFont(
|
|
||||||
if (fontPtr->fontset) {
|
|
||||||
FcFontSetDestroy(fontPtr->fontset);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Synchronize with X server before dropping the error handler.
|
|
||||||
- * This seems to catch sporadic RenderBadPicture errors on tear
|
|
||||||
- * down of an application.
|
|
||||||
- *
|
|
||||||
- * See bugs [1821174fff] and [1938774fff].
|
|
||||||
- */
|
|
||||||
XSync(fontPtr->display, False);
|
|
||||||
-
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -885,6 +876,7 @@ Tk_DrawChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
+ XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
XGetGCValues(display, gc, GCForeground, &values);
|
|
||||||
@@ -1018,6 +1010,7 @@ TkDrawAngledChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
+ XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1107,6 +1100,7 @@ TkDrawAngledChars(
|
|
||||||
Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
|
|
||||||
XftDrawChange(fontPtr->ftDraw, drawable);
|
|
||||||
+ XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
XGetGCValues(display, gc, GCForeground, &values);
|
|
||||||
diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c
|
|
||||||
index 6d379ecc8..9313df5c0 100644
|
|
||||||
--- a/unix/tkUnixSelect.c
|
|
||||||
+++ b/unix/tkUnixSelect.c
|
|
||||||
@@ -470,6 +470,7 @@ TkSelPropProc(
|
|
||||||
ckfree(propPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ XSync(eventPtr->xproperty.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1048,6 +1049,7 @@ ConvertSelection(
|
|
||||||
reply.xsel.property = incr.multAtoms[1];
|
|
||||||
}
|
|
||||||
XSendEvent(reply.xsel.display, reply.xsel.requestor, False, 0, &reply.ev);
|
|
||||||
+ XSync(reply.xsel.display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1066,6 +1068,7 @@ ConvertSelection(
|
|
||||||
errorHandler = Tk_CreateErrorHandler(winPtr->display,
|
|
||||||
-1, -1, -1, (int (*)()) NULL, NULL);
|
|
||||||
XSelectInput(reply.xsel.display, reply.xsel.requestor, 0L);
|
|
||||||
+ XSync(winPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(errorHandler);
|
|
||||||
if (tsdPtr->pendingIncrs == &incr) {
|
|
||||||
tsdPtr->pendingIncrs = incr.nextPtr;
|
|
||||||
diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c
|
|
||||||
index bbbdd774c..0322a78d5 100644
|
|
||||||
--- a/unix/tkUnixSend.c
|
|
||||||
+++ b/unix/tkUnixSend.c
|
|
||||||
@@ -1748,6 +1748,7 @@ AppendPropCarefully(
|
|
||||||
pendingPtr);
|
|
||||||
XChangeProperty(display, window, property, XA_STRING, 8,
|
|
||||||
PropModeAppend, (unsigned char *) value, length);
|
|
||||||
+ XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
|
|
||||||
index 19ac86cb5..31e14cb72 100644
|
|
||||||
--- a/unix/tkUnixWm.c
|
|
||||||
+++ b/unix/tkUnixWm.c
|
|
||||||
@@ -4084,6 +4084,7 @@ ConfigureEvent(
|
|
||||||
XMoveResizeWindow(winPtr->display, winPtr->window, 0,
|
|
||||||
wmPtr->menuHeight, (unsigned) wrapperPtr->changes.width,
|
|
||||||
(unsigned) (wrapperPtr->changes.height - wmPtr->menuHeight));
|
|
||||||
+ XSync(winPtr->display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
if ((wmPtr->menubar != NULL)
|
|
||||||
&& ((Tk_Width(wmPtr->menubar) != wrapperPtr->changes.width)
|
|
||||||
@@ -4420,10 +4421,11 @@ WrapperEventProc(
|
|
||||||
* Tk_DestroyWindow will try to destroy the window, but of course
|
|
||||||
* it's already gone.
|
|
||||||
*/
|
|
||||||
+ Display *display = wmPtr->winPtr->display;
|
|
||||||
|
|
||||||
- handler = Tk_CreateErrorHandler(wmPtr->winPtr->display, -1, -1, -1,
|
|
||||||
- NULL, NULL);
|
|
||||||
+ handler = Tk_CreateErrorHandler(display, -1, -1, -1, NULL, NULL);
|
|
||||||
Tk_DestroyWindow((Tk_Window) wmPtr->winPtr);
|
|
||||||
+ XSync(display, False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
}
|
|
||||||
if (dispPtr->flags & TK_DISPLAY_WM_TRACING) {
|
|
||||||
@@ -5846,10 +5848,12 @@ Tk_CoordsToWindow(
|
|
||||||
* deleted
|
|
||||||
*/
|
|
||||||
|
|
||||||
+ XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (child == None) {
|
|
||||||
+ XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -5879,6 +5883,7 @@ Tk_CoordsToWindow(
|
|
||||||
* or below
|
|
||||||
*/
|
|
||||||
|
|
||||||
+ XSync(Tk_Display(tkwin), False);
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
handler = NULL;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
From eabf7dee83847addd7293f223b8604abe6adc485 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Fri, 24 Aug 2018 21:47:21 +0000
|
|
||||||
Subject: [PATCH 295/693] More general error message, since it can be raised
|
|
||||||
not only because of an empty -children option value
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/ttk/ttkLayout.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/generic/ttk/ttkLayout.c b/generic/ttk/ttkLayout.c
|
|
||||||
index 924355aa6..1bad8c7a8 100644
|
|
||||||
--- a/generic/ttk/ttkLayout.c
|
|
||||||
+++ b/generic/ttk/ttkLayout.c
|
|
||||||
@@ -702,7 +702,7 @@ Ttk_LayoutTemplate Ttk_ParseLayoutTemplate(Tcl_Interp *interp, Tcl_Obj *objPtr)
|
|
||||||
if (childSpec) {
|
|
||||||
tail->child = Ttk_ParseLayoutTemplate(interp, childSpec);
|
|
||||||
if (!tail->child) {
|
|
||||||
- Tcl_SetObjResult(interp, Tcl_ObjPrintf("Empty -children value"));
|
|
||||||
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf("Invalid -children value"));
|
|
||||||
Tcl_SetErrorCode(interp, "TTK", "VALUE", "LAYOUT", NULL);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
From c42964a52a7dbb003356da456afc992b9eecb377 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fvogel <fvogelnew1@free.fr>
|
|
||||||
Date: Mon, 15 Oct 2018 18:58:49 +0000
|
|
||||||
Subject: [PATCH 357/693] Third fix proposal for [4b555aca34]: text search -all
|
|
||||||
hangs and eats all memory. (And fix test text-22.229)
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkText.c | 3 ++-
|
|
||||||
tests/text.test | 2 +-
|
|
||||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkText.c b/generic/tkText.c
|
|
||||||
index e49693edc..7dfd0483d 100644
|
|
||||||
--- a/generic/tkText.c
|
|
||||||
+++ b/generic/tkText.c
|
|
||||||
@@ -6090,7 +6090,8 @@ SearchCore(
|
|
||||||
alreadySearchOffset -= matchLength;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
- firstOffset = p - startOfLine + matchLength;
|
|
||||||
+ firstOffset = (matchLength == 0) ? p - startOfLine + 1
|
|
||||||
+ : p - startOfLine + matchLength;
|
|
||||||
if (firstOffset >= lastOffset) {
|
|
||||||
/*
|
|
||||||
* Now, we have to be careful not to find
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
From 8fed49c19d7ff190c54ff8182a49ff887b56036a Mon Sep 17 00:00:00 2001
|
|
||||||
From: bll <brad.lanam.comp@gmail.com>
|
|
||||||
Date: Fri, 31 Aug 2018 15:31:13 +0000
|
|
||||||
Subject: [PATCH 301/693] bugfix branch for: [6fcaaa6f80] Fix position of
|
|
||||||
insertion cursor for ttk entry. Patch provided by Csaba Nemethi.
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/ttk/ttkEntry.c | 9 ++++++++-
|
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/generic/ttk/ttkEntry.c b/generic/ttk/ttkEntry.c
|
|
||||||
index 83f1a38e5..f476dc9e2 100644
|
|
||||||
--- a/generic/ttk/ttkEntry.c
|
|
||||||
+++ b/generic/ttk/ttkEntry.c
|
|
||||||
@@ -1257,9 +1257,16 @@ static void EntryDisplay(void *clientData, Drawable d)
|
|
||||||
/* @@@ should: maybe: SetCaretPos even when blinked off */
|
|
||||||
Tk_SetCaretPos(tkwin, cursorX, cursorY, cursorHeight);
|
|
||||||
|
|
||||||
+ cursorX -= cursorWidth/2;
|
|
||||||
+ if (cursorX < textarea.x) {
|
|
||||||
+ cursorX = textarea.x;
|
|
||||||
+ } else if (cursorX + cursorWidth > textarea.x + textarea.width) {
|
|
||||||
+ cursorX = textarea.x + textarea.width - cursorWidth;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
gc = EntryGetGC(entryPtr, es.insertColorObj, clipRegion);
|
|
||||||
XFillRectangle(Tk_Display(tkwin), d, gc,
|
|
||||||
- cursorX-cursorWidth/2, cursorY, cursorWidth, cursorHeight);
|
|
||||||
+ cursorX, cursorY, cursorWidth, cursorHeight);
|
|
||||||
XSetClipMask(Tk_Display(tkwin), gc, None);
|
|
||||||
Tk_FreeGC(Tk_Display(tkwin), gc);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
From fc0267a0bf485c9a753b488bf4df90b62b555317 Mon Sep 17 00:00:00 2001
|
|
||||||
From: culler <culler>
|
|
||||||
Date: Tue, 11 Dec 2018 19:55:11 +0000
|
|
||||||
Subject: [PATCH 542/693] fix bug [18a4ba19bd]: winfo containing gives wrong
|
|
||||||
answer on linux.
|
|
||||||
|
|
||||||
---
|
|
||||||
unix/tkUnixWm.c | 24 +++++++++---------------
|
|
||||||
1 file changed, 9 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
|
|
||||||
index 19ac86cb5..399916ff3 100644
|
|
||||||
--- a/unix/tkUnixWm.c
|
|
||||||
+++ b/unix/tkUnixWm.c
|
|
||||||
@@ -5855,16 +5855,15 @@ Tk_CoordsToWindow(
|
|
||||||
}
|
|
||||||
for (wmPtr = (WmInfo *) dispPtr->firstWmPtr; wmPtr != NULL;
|
|
||||||
wmPtr = wmPtr->nextPtr) {
|
|
||||||
- if (wmPtr->reparent == child) {
|
|
||||||
- goto gotToplevel;
|
|
||||||
- }
|
|
||||||
- if (wmPtr->wrapperPtr != NULL) {
|
|
||||||
- if (child == wmPtr->wrapperPtr->window) {
|
|
||||||
- goto gotToplevel;
|
|
||||||
- }
|
|
||||||
- } else if (child == wmPtr->winPtr->window) {
|
|
||||||
- goto gotToplevel;
|
|
||||||
- }
|
|
||||||
+ winPtr = wmPtr->winPtr;
|
|
||||||
+ if (wmPtr->winPtr == NULL) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ if (x >= winPtr->changes.x &&
|
|
||||||
+ x < winPtr->changes.x + winPtr->changes.width &&
|
|
||||||
+ y < winPtr->changes.y + winPtr->changes.height) {
|
|
||||||
+ goto gotToplevel;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
x = childX;
|
|
||||||
y = childY;
|
|
||||||
@@ -5882,7 +5881,6 @@ Tk_CoordsToWindow(
|
|
||||||
Tk_DeleteErrorHandler(handler);
|
|
||||||
handler = NULL;
|
|
||||||
}
|
|
||||||
- winPtr = wmPtr->winPtr;
|
|
||||||
if (winPtr->mainPtr != ((TkWindow *) tkwin)->mainPtr) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -5897,10 +5895,6 @@ Tk_CoordsToWindow(
|
|
||||||
|
|
||||||
x = childX - winPtr->changes.x;
|
|
||||||
y = childY - winPtr->changes.y;
|
|
||||||
- if ((x < 0) || (x >= winPtr->changes.width)
|
|
||||||
- || (y >= winPtr->changes.height)) {
|
|
||||||
- return NULL;
|
|
||||||
- }
|
|
||||||
if (y < 0) {
|
|
||||||
winPtr = (TkWindow *) wmPtr->menubar;
|
|
||||||
if (winPtr == NULL) {
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
From 17fc6d054e41444b64b3f56bdca60b2765402071 Mon Sep 17 00:00:00 2001
|
|
||||||
From: oehhar <harald.oehlmann@elmicron.de>
|
|
||||||
Date: Sun, 3 Feb 2019 11:21:11 +0000
|
|
||||||
Subject: [PATCH 644/693] gif read not complete on overflow image - information
|
|
||||||
missinterpreted if following subimage is querried [4da2191b]
|
|
||||||
|
|
||||||
---
|
|
||||||
generic/tkImgGIF.c | 21 ++++++++++++++++++++-
|
|
||||||
tests/imgPhoto.test | 33 +++++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 53 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c
|
|
||||||
index 7c4872bef..fa4b728d3 100644
|
|
||||||
--- a/generic/tkImgGIF.c
|
|
||||||
+++ b/generic/tkImgGIF.c
|
|
||||||
@@ -1034,7 +1034,7 @@ ReadImage(
|
|
||||||
int transparent)
|
|
||||||
{
|
|
||||||
unsigned char initialCodeSize;
|
|
||||||
- int xpos = 0, ypos = 0, pass = 0, i;
|
|
||||||
+ int xpos = 0, ypos = 0, pass = 0, i, count;
|
|
||||||
register unsigned char *pixelPtr;
|
|
||||||
static const int interlaceStep[] = { 8, 8, 4, 2 };
|
|
||||||
static const int interlaceStart[] = { 0, 4, 2, 1 };
|
|
||||||
@@ -1252,6 +1252,25 @@ ReadImage(
|
|
||||||
}
|
|
||||||
pixelPtr = imagePtr + (ypos) * len * ((transparent>=0)?4:3);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Now read until the final zero byte.
|
|
||||||
+ * It was observed that there might be 1 length blocks
|
|
||||||
+ * (test imgPhoto-14.1) which are not read.
|
|
||||||
+ *
|
|
||||||
+ * The field "stack" is abused for temporary buffer. it has 4096 bytes
|
|
||||||
+ * and we need 256.
|
|
||||||
+ *
|
|
||||||
+ * Loop until we hit a 0 length block which is the end sign.
|
|
||||||
+ */
|
|
||||||
+ while ( 0 < (count = GetDataBlock(gifConfPtr, chan, stack)))
|
|
||||||
+ {
|
|
||||||
+ if (-1 == count ) {
|
|
||||||
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
|
||||||
+ "error reading GIF image: %s", Tcl_PosixError(interp)));
|
|
||||||
+ return TCL_ERROR;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
25
tk-8.6.10-conf.patch
Normal file
25
tk-8.6.10-conf.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff --git a/unix/tcl.m4 b/unix/tcl.m4
|
||||||
|
index f3d08ec..dd75fc3 100644
|
||||||
|
--- a/unix/tcl.m4
|
||||||
|
+++ b/unix/tcl.m4
|
||||||
|
@@ -1382,7 +1382,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||||
|
# get rid of the warnings.
|
||||||
|
#CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
|
||||||
|
|
||||||
|
- SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared'
|
||||||
|
+ SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared -Wl,-soname,${@}'
|
||||||
|
DL_OBJS="tclLoadDl.o"
|
||||||
|
DL_LIBS="-ldl"
|
||||||
|
LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
|
||||||
|
@@ -1398,7 +1398,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||||
|
esac
|
||||||
|
|
||||||
|
AS_IF([test $doRpath = yes], [
|
||||||
|
- CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
|
||||||
|
+ CC_SEARCH_FLAGS=''])
|
||||||
|
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
|
||||||
|
AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"])
|
||||||
|
AS_IF([test $do64bit = yes], [
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
22
tk-8.6.10-font-sizes-fix.patch
Normal file
22
tk-8.6.10-font-sizes-fix.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Author: Sergei Golovan
|
||||||
|
Description: Patch sets the default font sizes for X11 in points instead of
|
||||||
|
pixels. This helps to get reasonable font sizes for high DPI displays.
|
||||||
|
Last-Modified: Sat, 24 Mar 2018 16:14:33 +0300
|
||||||
|
|
||||||
|
--- a/library/ttk/fonts.tcl
|
||||||
|
+++ b/library/ttk/fonts.tcl
|
||||||
|
@@ -131,10 +131,10 @@
|
||||||
|
set F(family) "Helvetica"
|
||||||
|
set F(fixed) "courier"
|
||||||
|
}
|
||||||
|
- set F(size) -12
|
||||||
|
- set F(ttsize) -10
|
||||||
|
- set F(capsize) -14
|
||||||
|
- set F(fixedsize) -12
|
||||||
|
+ set F(size) 10
|
||||||
|
+ set F(ttsize) 9
|
||||||
|
+ set F(capsize) 12
|
||||||
|
+ set F(fixedsize) 10
|
||||||
|
|
||||||
|
font configure TkDefaultFont -family $F(family) -size $F(size)
|
||||||
|
font configure TkTextFont -family $F(family) -size $F(size)
|
||||||
13
tk-8.6.10-make.patch
Normal file
13
tk-8.6.10-make.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/unix/Makefile.in b/unix/Makefile.in
|
||||||
|
index c6f8c25..a3cc8cb 100644
|
||||||
|
--- a/unix/Makefile.in
|
||||||
|
+++ b/unix/Makefile.in
|
||||||
|
@@ -744,7 +744,7 @@ install-binaries: $(TK_STUB_LIB_FILE) $(TK_LIB_FILE) ${WISH_EXE}
|
||||||
|
fi
|
||||||
|
@echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/"
|
||||||
|
@@INSTALL_LIB@
|
||||||
|
- @chmod 555 "$(DLL_INSTALL_DIR)/$(LIB_FILE)"
|
||||||
|
+ @chmod 755 "$(DLL_INSTALL_DIR)/$(LIB_FILE)"
|
||||||
|
@if test -f "tk${MAJOR_VERSION}${MINOR_VERSION}.dll"; then \
|
||||||
|
$(INSTALL_LIBRARY) "tk${MAJOR_VERSION}${MINOR_VERSION}.dll" "$(DLL_INSTALL_DIR)";\
|
||||||
|
chmod 555 "$(DLL_INSTALL_DIR)/tk${MAJOR_VERSION}${MINOR_VERSION}.dll";\
|
||||||
44
tk.spec
44
tk.spec
@ -2,43 +2,26 @@
|
|||||||
%define epoch 1
|
%define epoch 1
|
||||||
|
|
||||||
Name: tk
|
Name: tk
|
||||||
Version: 8.6.8
|
Version: 8.6.12
|
||||||
Release: 4
|
Release: 1
|
||||||
Summary: The graphical toolkit for the Tcl scripting language
|
Summary: The graphical toolkit for the Tcl scripting language
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: TCL
|
License: TCL
|
||||||
URL: http://tcl.sourceforge.net
|
URL: http://tcl.sourceforge.net
|
||||||
Source0: http://download.sourceforge.net/sourceforge/tcl/%{name}%{version}-src.tar.gz
|
Source0: http://download.sourceforge.net/sourceforge/tcl/%{name}%{version}-src.tar.gz
|
||||||
|
|
||||||
Requires: tcl = %{epoch}:%{version} glibc
|
Requires: tcl = %{epoch}:%{version} glibc
|
||||||
|
BuildRequires: gcc
|
||||||
BuildRequires: tcl-devel = %{epoch}:%{version} autoconf libX11-devel libXft-devel
|
BuildRequires: tcl-devel = %{epoch}:%{version} autoconf libX11-devel libXft-devel
|
||||||
|
|
||||||
Conflicts: itcl <= 3.2
|
Conflicts: itcl <= 3.2
|
||||||
Obsoletes: tile <= 0.8.2
|
Obsoletes: tile <= 0.8.2
|
||||||
Provides: tile = 0.8.2
|
Provides: tile = 0.8.2
|
||||||
|
|
||||||
Patch6001: Bugfix-4966cad4d4-Now-function-NotebookPlaceSlaves-i.patch
|
Patch0001: tk-8.6.10-make.patch
|
||||||
Patch6002: Fix-382712ade6-X11-event-generate-.-KeyPress-segfaul.patch
|
Patch0002: tk-8.6.10-conf.patch
|
||||||
Patch6003: Fix-657c389120-and-b4214b4712-Segfault-when-destroyi.patch
|
Patch0003: tk-8.6.10-font-sizes-fix.patch
|
||||||
Patch6004: Fix-1821174fff-and-1938774fff-RenderBadPicture-inval.patch
|
|
||||||
Patch6005: More-complete-patch-from-Christian-Werner-to-fix-182.patch
|
|
||||||
Patch6006: Fix-broken-build-one-line-of-the-patch-was-missing.patch
|
|
||||||
Patch6007: Latest-fix-proposal-from-Christian-Werner-revert-the.patch
|
|
||||||
Patch6008: Fix-5d991b822e-segmentation-violation-in-TclObjLooku.patch
|
|
||||||
Patch6009: Fix-502e74e9ad-crash-for-untrusted-X-connections-for.patch
|
|
||||||
Patch6011: Fix-de01e24aa1-Text-replace-command-involving-select.patch
|
|
||||||
Patch6012: Fix-fbaed1f66b-image-create-photo-errors-out-on-a-sa.patch
|
|
||||||
Patch6013: Fix-3441086fff-ttk-style-layout-with-empty-children-.patch
|
|
||||||
Patch6014: More-general-error-message-since-it-can-be-raised-no.patch
|
|
||||||
Patch6015: bugfix-branch-for-6fcaaa6f80.patch
|
|
||||||
Patch6016: Fix-6437e8d00d-font-24.5-test-fails-on-macOS-and-Lin.patch
|
|
||||||
Patch6017: Fix-4b555aca34-text-search-all-hangs-and-eats-all-me.patch
|
|
||||||
Patch6018: Another-proposed-fix-for-4b555aca34-text-search-all-.patch
|
|
||||||
Patch6019: Third-fix-proposal-for-4b555aca34-text-search-all-ha.patch
|
|
||||||
Patch6020: Fix-6b22d436aa-Treeview-ActivateHeading-Binding-Fail.patch
|
|
||||||
Patch6021: Crash-prevention.-Still-buggy-now-test-text-11a.22-f.patch
|
|
||||||
Patch6022: fix-bug-18a4ba19bd-winfo-containing-gives-wrong-answ.patch
|
|
||||||
Patch6023: Avoid-errors-when-a-menu-is-destroyed-before-its-pos.patch
|
|
||||||
Patch6024: gif-read-not-complete-on-overflow-image-information-.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
TK is a widget toolkit that creates graphical user interface(GUI). It's
|
TK is a widget toolkit that creates graphical user interface(GUI). It's
|
||||||
@ -91,7 +74,7 @@ sed -i -e "s|$PWD/unix|%{_libdir}|; s|$PWD|%{_includedir}/%{name}-private|" %{bu
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%doc README changes license.terms
|
%doc README.md changes license.terms
|
||||||
%{_bindir}/wish*
|
%{_bindir}/wish*
|
||||||
%{_datadir}/%{name}%{majorver}
|
%{_datadir}/%{name}%{majorver}
|
||||||
%exclude %{_datadir}/%{name}%{majorver}/tkAppInit.c
|
%exclude %{_datadir}/%{name}%{majorver}/tkAppInit.c
|
||||||
@ -113,6 +96,15 @@ sed -i -e "s|$PWD/unix|%{_libdir}|; s|$PWD|%{_includedir}/%{name}-private|" %{bu
|
|||||||
%{_mandir}/mann/*
|
%{_mandir}/mann/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 19 2022 wangkerong<wangkerong@h-partners.com> - 1:8.6.12-1
|
||||||
|
- Upgrade to 1:8.6.12-1
|
||||||
|
|
||||||
|
* Thu May 27 2021 liuyumeng<liuyumeng5@huawei.com> - 1:8.6.10-2
|
||||||
|
- Add a BuildRequires for gcc
|
||||||
|
|
||||||
|
* Thu Jul 30 2020 chengguipeng<chengguipeng1@huawei.com> - 1:8.6.10-1
|
||||||
|
- Upgrade to 1:8.6.10-1
|
||||||
|
|
||||||
* Mon Jan 13 2020 zhangrui <zhangrui182@huawei.com> - 1:8.6.8-4
|
* Mon Jan 13 2020 zhangrui <zhangrui182@huawei.com> - 1:8.6.8-4
|
||||||
- del patches to be consistent with open source
|
- del patches to be consistent with open source
|
||||||
|
|
||||||
|
|||||||
4
tk.yaml
Normal file
4
tk.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version_control: github
|
||||||
|
src_repo: tcltk/tk
|
||||||
|
tag_prefix: ^core-
|
||||||
|
seperator: "-"
|
||||||
BIN
tk8.6.12-src.tar.gz
Normal file
BIN
tk8.6.12-src.tar.gz
Normal file
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user