[Python-checkins] bpo-41611: IDLE: fix freezing on completion on macOS (GH-26400)

taleinat webhook-mailer at python.org
Thu May 27 10:30:14 EDT 2021


https://github.com/python/cpython/commit/abc4bd5db91c86b6b74289241378a13bd3a0a5e2
commit: abc4bd5db91c86b6b74289241378a13bd3a0a5e2
branch: main
author: Tal Einat <532281+taleinat at users.noreply.github.com>
committer: taleinat <532281+taleinat at users.noreply.github.com>
date: 2021-05-27T17:29:55+03:00
summary:

bpo-41611: IDLE: fix freezing on completion on macOS (GH-26400)

files:
A Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst
M Lib/idlelib/autocomplete_w.py

diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py
index d3d1e6982bfb2e..4676822a697034 100644
--- a/Lib/idlelib/autocomplete_w.py
+++ b/Lib/idlelib/autocomplete_w.py
@@ -247,7 +247,13 @@ def winconfig_event(self, event):
         text.see(self.startindex)
         x, y, cx, cy = text.bbox(self.startindex)
         acw = self.autocompletewindow
-        acw.update()
+        if platform.system().startswith('Windows'):
+            # On Windows an update() call is needed for the completion list
+            # window to be created, so that we can fetch its width and
+            # height. However, this is not needed on other platforms (tested
+            # on Ubuntu and macOS) but at one point began causing freezes on
+            # macOS.  See issues 37849 and 41611.
+            acw.update()
         acw_width, acw_height = acw.winfo_width(), acw.winfo_height()
         text_width, text_height = text.winfo_width(), text.winfo_height()
         new_x = text.winfo_rootx() + min(x, max(0, text_width - acw_width))
diff --git a/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst b/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst
new file mode 100644
index 00000000000000..27d778bbe41009
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst
@@ -0,0 +1 @@
+Fix IDLE sometimes freezing upon tab-completion on macOS.



More information about the Python-checkins mailing list