bpo-42508: Keep IDLE running on macOS (GH-23577) (#23670)

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.
(cherry picked from commit 57e5113610)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
Miss Islington (bot) 2021-01-05 00:09:30 -08:00 committed by GitHub
parent 0ccac5ff58
commit d05b470d6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 19 deletions

View File

@ -3,6 +3,10 @@ Released on 2020-12-??
======================================
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

View File

@ -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__":

View File

@ -0,0 +1,3 @@
Keep IDLE running on macOS. Remove obsolete workaround that prevented
running files with shortcuts when using new universal2 installers built
on macOS 11.