diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 7b74492aae37cab39322cebfcecd81c5d9ec8c3d_TGliL2lkbGVsaWIvUHlTaGVsbC5weQ==..c6ee2e70df314c7afb94df514c24159f6b4c1c67_TGliL2lkbGVsaWIvUHlTaGVsbC5weQ== 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -111,9 +111,8 @@ self.breakpointPath = os.path.join(idleConf.GetUserCfgDir(), 'breakpoints.lst') # whenever a file is changed, restore breakpoints - if self.io.filename: self.restore_file_breaks() def filename_changed_hook(old_hook=self.io.filename_change_hook, self=self): self.restore_file_breaks() old_hook() self.io.set_filename_change_hook(filename_changed_hook) @@ -115,8 +114,10 @@ def filename_changed_hook(old_hook=self.io.filename_change_hook, self=self): self.restore_file_breaks() old_hook() self.io.set_filename_change_hook(filename_changed_hook) + if self.io.filename: + self.restore_file_breaks() rmenu_specs = [ ("Cut", "<<cut>>", "rmenu_check_cut"), @@ -233,6 +234,9 @@ def restore_file_breaks(self): self.text.update() # this enables setting "BREAK" tags to be visible + if self.io is None: + # can happen if IDLE closes due to the .update() call + return filename = self.io.filename if filename is None: return diff --git a/Misc/NEWS b/Misc/NEWS index 7b74492aae37cab39322cebfcecd81c5d9ec8c3d_TWlzYy9ORVdT..c6ee2e70df314c7afb94df514c24159f6b4c1c67_TWlzYy9ORVdT 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -302,6 +302,8 @@ Library ------- +- Issue #17614: IDLE no longer raises exception when quickly closing a file. + - Issue #6698: IDLE now opens just an editor window when configured to do so. - Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer