summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2020-12-07 03:22:33 (GMT)
committerGitHub <noreply@github.com>2020-12-07 03:22:33 (GMT)
commit57e511361047895231f5ee7abfdfbbc60e11d2db (patch)
tree6bd56aa7bcd3ae53d134ba1b7435afbc92691ae9 /Lib
parent752cdf21eb2be0a26ea6a34a0de33a458459aead (diff)
downloadcpython-57e511361047895231f5ee7abfdfbbc60e11d2db.zip
cpython-57e511361047895231f5ee7abfdfbbc60e11d2db.tar.gz
cpython-57e511361047895231f5ee7abfdfbbc60e11d2db.tar.bz2
bpo-42508: Keep IDLE running on macOS (GH-23577)
Remove obsolete workaround that prevented running files with shortcuts when using new universal2 installers built on macOS 11. Ignore buggy 2nd run_module_event call.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/NEWS.txt4
-rw-r--r--Lib/idlelib/runscript.py26
2 files changed, 11 insertions, 19 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 34f28d6..7167314 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,10 @@ Released on 2021-10-04?
======================================
+bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround
+that prevented running files with shortcuts when using new universal2
+installers built on macOS 11.
+
bpo-42426: Fix reporting offset of the RE error in searchengine.
bpo-42416: Get docstrings for IDLE calltips more often
diff --git a/Lib/idlelib/runscript.py b/Lib/idlelib/runscript.py
index a541087..028b0db 100644
--- a/Lib/idlelib/runscript.py
+++ b/Lib/idlelib/runscript.py
@@ -11,6 +11,7 @@ TODO: Specify command line arguments in a dialog box.
"""
import os
import tabnanny
+import time
import tokenize
import tkinter.messagebox as tkMessageBox
@@ -42,9 +43,7 @@ class ScriptBinding:
self.root = self.editwin.root
# cli_args is list of strings that extends sys.argv
self.cli_args = []
-
- if macosx.isCocoaTk():
- self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event)
+ self.perf = 0.0 # Workaround for macOS 11 Uni2; see bpo-42508.
def check_module_event(self, event):
if isinstance(self.editwin, outwin.OutputWindow):
@@ -107,24 +106,10 @@ class ScriptBinding:
finally:
shell.set_warning_stream(saved_stream)
- def run_module_event(self, event):
- if macosx.isCocoaTk():
- # Tk-Cocoa in MacOSX is broken until at least
- # Tk 8.5.9, and without this rather
- # crude workaround IDLE would hang when a user
- # tries to run a module using the keyboard shortcut
- # (the menu item works fine).
- self.editwin.text_frame.after(200,
- lambda: self.editwin.text_frame.event_generate(
- '<<run-module-event-2>>'))
- return 'break'
- else:
- return self._run_module_event(event)
-
def run_custom_event(self, event):
- return self._run_module_event(event, customize=True)
+ return self.run_module_event(event, customize=True)
- def _run_module_event(self, event, *, customize=False):
+ def run_module_event(self, event, *, customize=False):
"""Run the module after setting up the environment.
First check the syntax. Next get customization. If OK, make
@@ -133,6 +118,8 @@ class ScriptBinding:
module being executed and also add that directory to its
sys.path if not already included.
"""
+ if macosx.isCocoaTk() and (time.perf_counter() - self.perf < .05):
+ return 'break'
if isinstance(self.editwin, outwin.OutputWindow):
self.editwin.text.bell()
return 'break'
@@ -218,6 +205,7 @@ class ScriptBinding:
# XXX This should really be a function of EditorWindow...
tkMessageBox.showerror(title, message, parent=self.editwin.text)
self.editwin.text.focus_set()
+ self.perf = time.perf_counter()
if __name__ == "__main__":