From abc4bd5db91c86b6b74289241378a13bd3a0a5e2 Mon Sep 17 00:00:00 2001 From: Tal Einat <532281+taleinat@users.noreply.github.com> Date: Thu, 27 May 2021 17:29:55 +0300 Subject: bpo-41611: IDLE: fix freezing on completion on macOS (GH-26400) --- Lib/idlelib/autocomplete_w.py | 8 +++++++- Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py index d3d1e69..4676822 100644 --- a/Lib/idlelib/autocomplete_w.py +++ b/Lib/idlelib/autocomplete_w.py @@ -247,7 +247,13 @@ class AutoCompleteWindow: 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 0000000..27d778b --- /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. -- cgit v0.12