bpo-34120: fix IDLE freezing after closing dialogs (GH-8603)
![](https://secure.gravatar.com/avatar/cc7737cd64a84f1b5c61a160798e97ee.jpg?s=120&d=mm&r=g)
https://github.com/python/cpython/commit/9fcfb7b010bd41d4ebaeed372df92b69622... commit: 9fcfb7b010bd41d4ebaeed372df92b6962253fed branch: 3.6 author: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> committer: GitHub <noreply@github.com> date: 2018-08-02T00:14:24-07:00 summary: bpo-34120: fix IDLE freezing after closing dialogs (GH-8603) Added missing .grab_release() calls to all places where we call .grab_set(). (cherry picked from commit 10ea9409ceb5da83cb380b610750551e26561044) Co-authored-by: Tal Einat <taleinat+github@gmail.com> files: A Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst M Lib/idlelib/config_key.py M Lib/idlelib/configdialog.py M Lib/idlelib/help_about.py M Lib/idlelib/query.py M Lib/idlelib/textview.py diff --git a/Lib/idlelib/config_key.py b/Lib/idlelib/config_key.py index 7f4bb49ec8a6..abab74265f3e 100644 --- a/Lib/idlelib/config_key.py +++ b/Lib/idlelib/config_key.py @@ -235,10 +235,12 @@ def OK(self, event=None): return if (self.advanced or self.KeysOK(keys)) and self.bind_ok(keys): self.result = keys + self.grab_release() self.destroy() def Cancel(self, event=None): self.result='' + self.grab_release() self.destroy() def KeysOK(self, keys): diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index c78323809403..e682ec0da320 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -191,6 +191,7 @@ def cancel(self): def destroy(self): global font_sample_text font_sample_text = self.fontpage.font_sample.get('1.0', 'end') + self.grab_release() super().destroy() def help(self): diff --git a/Lib/idlelib/help_about.py b/Lib/idlelib/help_about.py index 2a274a930482..64b13ac2abb3 100644 --- a/Lib/idlelib/help_about.py +++ b/Lib/idlelib/help_about.py @@ -195,6 +195,7 @@ def display_file_text(self, title, filename, encoding=None): def ok(self, event=None): "Dismiss help_about dialog." + self.grab_release() self.destroy() diff --git a/Lib/idlelib/query.py b/Lib/idlelib/query.py index 15add6d12748..c2628cceb739 100644 --- a/Lib/idlelib/query.py +++ b/Lib/idlelib/query.py @@ -143,6 +143,10 @@ def cancel(self, event=None): # Do not replace. self.result = None self.destroy() + def destroy(self): + self.grab_release() + super().destroy() + class SectionName(Query): "Get a name for a config file section name." diff --git a/Lib/idlelib/textview.py b/Lib/idlelib/textview.py index d9260e6c7183..e78e297ab993 100644 --- a/Lib/idlelib/textview.py +++ b/Lib/idlelib/textview.py @@ -91,6 +91,7 @@ def __init__(self, parent, title, text, modal=True, def ok(self, event=None): """Dismiss text viewer dialog.""" + self.grab_release() self.destroy() diff --git a/Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst b/Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst new file mode 100644 index 000000000000..f9954f7c1af0 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst @@ -0,0 +1 @@ +Fix unresponsiveness after closing certain windows and dialogs. \ No newline at end of file
participants (1)
-
Miss Islington (bot)