]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[2.7] bpo-34120: fix IDLE freezing after closing dialogs (GH-8603) 8619/head
authorTal Einat <taleinat+github@gmail.com>
Thu, 2 Aug 2018 07:21:49 +0000 (10:21 +0300)
committerGitHub <noreply@github.com>
Thu, 2 Aug 2018 07:21:49 +0000 (10:21 +0300)
Added missing .grab_release() calls to all places where we call .grab_set().

(cherry picked from commit 10ea9409ceb5da83cb380b610750551e26561044)

Lib/idlelib/aboutDialog.py
Lib/idlelib/configDialog.py
Lib/idlelib/configHelpSourceEdit.py
Lib/idlelib/configSectionNameDialog.py
Lib/idlelib/idle_test/test_config_name.py
Lib/idlelib/keybindingDialog.py
Lib/idlelib/textView.py
Misc/NEWS.d/next/IDLE/2018-08-01-23-25-38.bpo-34120.HgsIz-.rst [new file with mode: 0644]

index c9adc08bb2fc31a1b48705e77d19c9f34ec97909..87d6c3cb9c083a0cb0c9cdae2bd7a64e3b17ba6d 100644 (file)
@@ -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__':
index d53f5ff2008d7e95375763de9c0fd8de2ada2bbd..3c29af13763caaab10131f442ae4dc65528a5aa8 100644 (file)
@@ -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):
index 5816449caf5e695021c04665e243f2fd358dfe08..62b010a0ca20b3f06abd416b4527710006555f38 100644 (file)
@@ -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__':
index c09dca896b0c0ea692779a49e1522d18ca16e47f..f28dc1a28363dc706258f237fe6455e0fc91b3bd 100644 (file)
@@ -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)
index 4403f87fd3b1a130ff2e520b39f7548ec4480160..2a4df6a744587deb998e718843e5f1decb140320 100644 (file)
@@ -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
 
index 4d32ca9476988990eec14bf0b51f98c1f798d47d..755f1af47e2184bfa7094247b4ee6e9b12c0eda5 100644 (file)
@@ -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):
index b8c4ac1821d7ddd68209b57dac24b8878954e2a0..ec837f810c30e9f76981be6e622e339fce2c66ce 100644 (file)
@@ -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 (file)
index 0000000..f9954f7
--- /dev/null
@@ -0,0 +1 @@
+Fix unresponsiveness after closing certain windows and dialogs.
\ No newline at end of file