Commit 894940b1 authored by Tal Einat's avatar Tal Einat Committed by GitHub

[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 10ea9409)
parent 48c8bf21
...@@ -141,6 +141,7 @@ class AboutDialog(Toplevel): ...@@ -141,6 +141,7 @@ class AboutDialog(Toplevel):
textView.view_file(self, title, fn, encoding) textView.view_file(self, title, fn, encoding)
def Ok(self, event=None): def Ok(self, event=None):
self.grab_release()
self.destroy() self.destroy()
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -1197,10 +1197,12 @@ class ConfigDialog(Toplevel): ...@@ -1197,10 +1197,12 @@ class ConfigDialog(Toplevel):
instance.reset_help_menu_entries() instance.reset_help_menu_entries()
def Cancel(self): def Cancel(self):
self.grab_release()
self.destroy() self.destroy()
def Ok(self): def Ok(self):
self.Apply() self.Apply()
self.grab_release()
self.destroy() self.destroy()
def Apply(self): def Apply(self):
......
...@@ -155,10 +155,12 @@ class GetHelpSourceDialog(Toplevel): ...@@ -155,10 +155,12 @@ class GetHelpSourceDialog(Toplevel):
# Mac Safari insists on using the URI form for local files # Mac Safari insists on using the URI form for local files
self.result = list(self.result) self.result = list(self.result)
self.result[1] = "file://" + path self.result[1] = "file://" + path
self.grab_release()
self.destroy() self.destroy()
def Cancel(self, event=None): def Cancel(self, event=None):
self.result = None self.result = None
self.grab_release()
self.destroy() self.destroy()
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -80,10 +80,13 @@ class GetCfgSectionNameDialog(Toplevel): ...@@ -80,10 +80,13 @@ class GetCfgSectionNameDialog(Toplevel):
name = self.name_ok() name = self.name_ok()
if name: if name:
self.result = name self.result = name
self.grab_release()
self.destroy() self.destroy()
def Cancel(self, event=None): def Cancel(self, event=None):
self.result = '' self.result = ''
self.grab_release()
self.destroy() self.destroy()
if __name__ == '__main__': if __name__ == '__main__':
import unittest import unittest
unittest.main('idlelib.idle_test.test_config_name', verbosity=2, exit=False) unittest.main('idlelib.idle_test.test_config_name', verbosity=2, exit=False)
......
...@@ -15,6 +15,8 @@ class Dummy_name_dialog(object): ...@@ -15,6 +15,8 @@ class Dummy_name_dialog(object):
name = Var() name = Var()
result = None result = None
destroyed = False destroyed = False
def grab_release(self):
pass
def destroy(self): def destroy(self):
self.destroyed = True self.destroyed = True
......
...@@ -217,10 +217,12 @@ class GetKeysDialog(Toplevel): ...@@ -217,10 +217,12 @@ class GetKeysDialog(Toplevel):
def OK(self, event=None): def OK(self, event=None):
if self.advanced or self.KeysOK(): # doesn't check advanced string yet if self.advanced or self.KeysOK(): # doesn't check advanced string yet
self.result=self.keyString.get() self.result=self.keyString.get()
self.grab_release()
self.destroy() self.destroy()
def Cancel(self, event=None): def Cancel(self, event=None):
self.result='' self.result=''
self.grab_release()
self.destroy() self.destroy()
def KeysOK(self): def KeysOK(self):
......
...@@ -39,7 +39,8 @@ class TextViewer(Toplevel): ...@@ -39,7 +39,8 @@ class TextViewer(Toplevel):
self.textView.insert(0.0, text) self.textView.insert(0.0, text)
self.textView.config(state=DISABLED) self.textView.config(state=DISABLED)
if modal: self.is_modal = modal
if self.is_modal:
self.transient(parent) self.transient(parent)
self.grab_set() self.grab_set()
self.wait_window() self.wait_window()
...@@ -62,6 +63,8 @@ class TextViewer(Toplevel): ...@@ -62,6 +63,8 @@ class TextViewer(Toplevel):
frameText.pack(side=TOP,expand=TRUE,fill=BOTH) frameText.pack(side=TOP,expand=TRUE,fill=BOTH)
def Ok(self, event=None): def Ok(self, event=None):
if self.is_modal:
self.grab_release()
self.destroy() self.destroy()
......
Fix unresponsiveness after closing certain windows and dialogs.
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment