summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTal Einat <taleinat+github@gmail.com>2018-08-02 10:21:49 +0300
committerGitHub <noreply@github.com>2018-08-02 10:21:49 +0300
commit894940b1099677c1ca0aa527dbb935e47d3d591a (patch)
tree2f53df08d23ce713e970edeff8e2d9e24db5a6cf
parent48c8bf21f97aeb124dbd48bf2bdec1ab4ebc5202 (diff)
downloadcpython-git-894940b1099677c1ca0aa527dbb935e47d3d591a.tar.gz
[2.7] 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)
-rw-r--r--Lib/idlelib/aboutDialog.py1
-rw-r--r--Lib/idlelib/configDialog.py2
-rw-r--r--Lib/idlelib/configHelpSourceEdit.py2
-rw-r--r--Lib/idlelib/configSectionNameDialog.py3
-rw-r--r--Lib/idlelib/idle_test/test_config_name.py2
-rw-r--r--Lib/idlelib/keybindingDialog.py2
-rw-r--r--Lib/idlelib/textView.py5
-rw-r--r--Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst1
8 files changed, 17 insertions, 1 deletions
diff --git a/Lib/idlelib/aboutDialog.py b/Lib/idlelib/aboutDialog.py
index c9adc08bb2..87d6c3cb9c 100644
--- a/Lib/idlelib/aboutDialog.py
+++ b/Lib/idlelib/aboutDialog.py
@@ -141,6 +141,7 @@ class AboutDialog(Toplevel):
textView.view_file(self, title, fn, encoding)
def Ok(self, event=None):
+ self.grab_release()
self.destroy()
if __name__ == '__main__':
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index d53f5ff200..3c29af1376 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -1197,10 +1197,12 @@ class ConfigDialog(Toplevel):
instance.reset_help_menu_entries()
def Cancel(self):
+ self.grab_release()
self.destroy()
def Ok(self):
self.Apply()
+ self.grab_release()
self.destroy()
def Apply(self):
diff --git a/Lib/idlelib/configHelpSourceEdit.py b/Lib/idlelib/configHelpSourceEdit.py
index 5816449caf..62b010a0ca 100644
--- a/Lib/idlelib/configHelpSourceEdit.py
+++ b/Lib/idlelib/configHelpSourceEdit.py
@@ -155,10 +155,12 @@ class GetHelpSourceDialog(Toplevel):
# Mac Safari insists on using the URI form for local files
self.result = list(self.result)
self.result[1] = "file://" + path
+ self.grab_release()
self.destroy()
def Cancel(self, event=None):
self.result = None
+ self.grab_release()
self.destroy()
if __name__ == '__main__':
diff --git a/Lib/idlelib/configSectionNameDialog.py b/Lib/idlelib/configSectionNameDialog.py
index c09dca896b..f28dc1a283 100644
--- a/Lib/idlelib/configSectionNameDialog.py
+++ b/Lib/idlelib/configSectionNameDialog.py
@@ -80,10 +80,13 @@ class GetCfgSectionNameDialog(Toplevel):
name = self.name_ok()
if name:
self.result = name
+ self.grab_release()
self.destroy()
def Cancel(self, event=None):
self.result = ''
+ self.grab_release()
self.destroy()
+
if __name__ == '__main__':
import unittest
unittest.main('idlelib.idle_test.test_config_name', verbosity=2, exit=False)
diff --git a/Lib/idlelib/idle_test/test_config_name.py b/Lib/idlelib/idle_test/test_config_name.py
index 4403f87fd3..2a4df6a744 100644
--- a/Lib/idlelib/idle_test/test_config_name.py
+++ b/Lib/idlelib/idle_test/test_config_name.py
@@ -15,6 +15,8 @@ class Dummy_name_dialog(object):
name = Var()
result = None
destroyed = False
+ def grab_release(self):
+ pass
def destroy(self):
self.destroyed = True
diff --git a/Lib/idlelib/keybindingDialog.py b/Lib/idlelib/keybindingDialog.py
index 4d32ca9476..755f1af47e 100644
--- a/Lib/idlelib/keybindingDialog.py
+++ b/Lib/idlelib/keybindingDialog.py
@@ -217,10 +217,12 @@ class GetKeysDialog(Toplevel):
def OK(self, event=None):
if self.advanced or self.KeysOK(): # doesn't check advanced string yet
self.result=self.keyString.get()
+ self.grab_release()
self.destroy()
def Cancel(self, event=None):
self.result=''
+ self.grab_release()
self.destroy()
def KeysOK(self):
diff --git a/Lib/idlelib/textView.py b/Lib/idlelib/textView.py
index b8c4ac1821..ec837f810c 100644
--- a/Lib/idlelib/textView.py
+++ b/Lib/idlelib/textView.py
@@ -39,7 +39,8 @@ class TextViewer(Toplevel):
self.textView.insert(0.0, text)
self.textView.config(state=DISABLED)
- if modal:
+ self.is_modal = modal
+ if self.is_modal:
self.transient(parent)
self.grab_set()
self.wait_window()
@@ -62,6 +63,8 @@ class TextViewer(Toplevel):
frameText.pack(side=TOP,expand=TRUE,fill=BOTH)
def Ok(self, event=None):
+ if self.is_modal:
+ 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 0000000000..f9954f7c1a
--- /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