[Python-checkins] cpython (merge 3.3 -> default): #14146: merge with 3.3.

roger.serwy python-checkins at python.org
Tue May 21 05:18:05 CEST 2013


http://hg.python.org/cpython/rev/b56ae3f878cb
changeset:   83878:b56ae3f878cb
parent:      83875:96c842873c30
parent:      83877:3735b4e0fc7c
user:        Roger Serwy <roger.serwy at gmail.com>
date:        Mon May 20 22:16:53 2013 -0500
summary:
  #14146: merge with 3.3.

files:
  Lib/idlelib/EditorWindow.py |  30 +++++++++++++++++++++++++
  Misc/NEWS                   |   2 +
  2 files changed, 32 insertions(+), 0 deletions(-)


diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -340,6 +340,36 @@
         self.askinteger = tkSimpleDialog.askinteger
         self.showerror = tkMessageBox.showerror
 
+        self._highlight_workaround()  # Fix selection tags on Windows
+
+    def _highlight_workaround(self):
+        # On Windows, Tk removes painting of the selection
+        # tags which is different behavior than on Linux and Mac.
+        # See issue14146 for more information.
+        if not sys.platform.startswith('win'):
+            return
+
+        text = self.text
+        text.event_add("<<Highlight-FocusOut>>", "<FocusOut>")
+        text.event_add("<<Highlight-FocusIn>>", "<FocusIn>")
+        def highlight_fix(focus):
+            sel_range = text.tag_ranges("sel")
+            if sel_range:
+                if focus == 'out':
+                    HILITE_CONFIG = idleConf.GetHighlight(
+                            idleConf.CurrentTheme(), 'hilite')
+                    text.tag_config("sel_fix", HILITE_CONFIG)
+                    text.tag_raise("sel_fix")
+                    text.tag_add("sel_fix", *sel_range)
+                elif focus == 'in':
+                    text.tag_remove("sel_fix", "1.0", "end")
+
+        text.bind("<<Highlight-FocusOut>>",
+                lambda ev: highlight_fix("out"))
+        text.bind("<<Highlight-FocusIn>>",
+                lambda ev: highlight_fix("in"))
+
+
     def _filename_to_unicode(self, filename):
         """convert filename to unicode in order to display it in Tk"""
         if isinstance(filename, str) or not filename:
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -351,6 +351,8 @@
 IDLE
 ----
 
+- Issue #14146: Highlight source line while debugging on Windows.
+
 - Issue #17838: Allow sys.stdin to be reassigned.
 
 - Issue #13495: Avoid loading the color delegator twice in IDLE.

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


More information about the Python-checkins mailing list