[Python-checkins] cpython: Issue #22085: Dropped support of Tk 8.3 in Tkinter.

serhiy.storchaka python-checkins at python.org
Wed Jul 30 18:19:30 CEST 2014


http://hg.python.org/cpython/rev/1aa6ac23340d
changeset:   91942:1aa6ac23340d
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Wed Jul 30 19:19:21 2014 +0300
summary:
  Issue #22085: Dropped support of Tk 8.3 in Tkinter.

files:
  Lib/tkinter/__init__.py |   9 ++---
  Misc/NEWS               |   2 +
  Modules/_tkinter.c      |  39 +++++++++-------------------
  3 files changed, 19 insertions(+), 31 deletions(-)


diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -245,7 +245,7 @@
         Return the name of the callback.
         """
         cbname = self._master._register(callback)
-        self._tk.call("trace", "variable", self._name, mode, cbname)
+        self._tk.call("trace", "add", "variable", self._name, mode, cbname)
         return cbname
     trace = trace_variable
     def trace_vdelete(self, mode, cbname):
@@ -254,12 +254,12 @@
         MODE is one of "r", "w", "u" for read, write, undefine.
         CBNAME is the name of the callback returned from trace_variable or trace.
         """
-        self._tk.call("trace", "vdelete", self._name, mode, cbname)
+        self._tk.call("trace", "remove", "variable", self._name, mode, cbname)
         self._master.deletecommand(cbname)
     def trace_vinfo(self):
         """Return all trace callback information."""
         return [self._tk.split(x) for x in self._tk.splitlist(
-            self._tk.call("trace", "vinfo", self._name))]
+            self._tk.call("trace", "info", "variable", self._name))]
     def __eq__(self, other):
         """Comparison for equality (==).
 
@@ -3789,8 +3789,7 @@
 def _test():
     root = Tk()
     text = "This is Tcl/Tk version %s" % TclVersion
-    if TclVersion >= 8.1:
-        text += "\nThis should be a cedilla: \xe7"
+    text += "\nThis should be a cedilla: \xe7"
     label = Label(root, text=text)
     label.pack()
     test = Button(root, text="Click me!",
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -113,6 +113,8 @@
 Library
 -------
 
+- Issue #22085: Dropped support of Tk 8.3 in Tkinter.
+
 - Issue #21580: Now Tkinter correctly handles bytes arguments passed to Tk.
   In particular this allows to initialize images from binary data.
 
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -9,8 +9,8 @@
 
 /* TCL/TK VERSION INFO:
 
-    Only Tcl/Tk 8.3.1 and later are supported.  Older versions are not
-    supported. Use Python 2.6 or older if you cannot upgrade your
+    Only Tcl/Tk 8.4 and later are supported.  Older versions are not
+    supported. Use Python 3.4 or older if you cannot upgrade your
     Tcl/Tk libraries.
 */
 
@@ -36,13 +36,6 @@
 #define CHECK_SIZE(size, elemsize) \
     ((size_t)(size) <= Py_MAX((size_t)INT_MAX, UINT_MAX / (size_t)(elemsize)))
 
-/* Starting with Tcl 8.4, many APIs offer const-correctness.  Unfortunately,
-   making _tkinter correct for this API means to break earlier
-   versions. USE_COMPAT_CONST allows to make _tkinter work with both 8.4 and
-   earlier versions. Once Tcl releases before 8.4 don't need to be supported
-   anymore, this should go. */
-#define USE_COMPAT_CONST
-
 /* If Tcl is compiled for threads, we must also define TCL_THREAD. We define
    it always; if Tcl is not threaded, the thread functions in
    Tcl are empty.  */
@@ -58,15 +51,8 @@
 
 #include "tkinter.h"
 
-/* For Tcl 8.2 and 8.3, CONST* is not defined (except on Cygwin). */
-#ifndef CONST84_RETURN
-#define CONST84_RETURN
-#undef CONST
-#define CONST
-#endif
-
-#if TK_VERSION_HEX < 0x08030102
-#error "Tk older than 8.3.1 not supported"
+#if TK_VERSION_HEX < 0x08040002
+#error "Tk older than 8.4 not supported"
 #endif
 
 #if !(defined(MS_WINDOWS) || defined(__CYGWIN__))
@@ -376,10 +362,10 @@
 
 
 static PyObject *
-Split(char *list)
+Split(const char *list)
 {
     int argc;
-    char **argv;
+    const char **argv;
     PyObject *v;
 
     if (list == NULL) {
@@ -481,7 +467,7 @@
     }
     else if (PyUnicode_Check(arg)) {
         int argc;
-        char **argv;
+        const char **argv;
         char *list = PyUnicode_AsUTF8(arg);
 
         if (list == NULL ||
@@ -496,7 +482,7 @@
     }
     else if (PyBytes_Check(arg)) {
         int argc;
-        char **argv;
+        const char **argv;
         char *list = PyBytes_AsString(arg);
 
         if (Tcl_SplitList((Tcl_Interp *)NULL, list, &argc, &argv) != TCL_OK) {
@@ -563,8 +549,9 @@
 static void DisableEventHook(void); /* Forward */
 
 static TkappObject *
-Tkapp_New(char *screenName, char *className,
-          int interactive, int wantobjects, int wantTk, int sync, char *use)
+Tkapp_New(const char *screenName, const char *className,
+          int interactive, int wantobjects, int wantTk, int sync,
+          const char *use)
 {
     TkappObject *v;
     char *argv0;
@@ -1857,7 +1844,7 @@
 {
     char *list;
     int argc;
-    char **argv;
+    const char **argv;
     PyObject *arg, *v;
     int i;
 
@@ -1984,7 +1971,7 @@
  * function or method.
  */
 static int
-PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
+PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
 {
     PythonCmd_ClientData *data = (PythonCmd_ClientData *)clientData;
     PyObject *func, *arg, *res;

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list