mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	Issue #10365: File open dialog now works instead of crashing
even when parent window is closed. Patch by Roger Serwy.
This commit is contained in:
		
							parent
							
								
									809309a482
								
							
						
					
					
						commit
						cd6b8c67ce
					
				
					 3 changed files with 17 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -156,7 +156,8 @@ class IOBinding:
 | 
			
		|||
                self.filename_change_hook()
 | 
			
		||||
 | 
			
		||||
    def open(self, event=None, editFile=None):
 | 
			
		||||
        if self.editwin.flist:
 | 
			
		||||
        flist = self.editwin.flist
 | 
			
		||||
        if flist:
 | 
			
		||||
            if not editFile:
 | 
			
		||||
                filename = self.askopenfile()
 | 
			
		||||
            else:
 | 
			
		||||
| 
						 | 
				
			
			@ -167,16 +168,22 @@ class IOBinding:
 | 
			
		|||
                # we open a new window.  But we won't replace the
 | 
			
		||||
                # shell window (which has an interp(reter) attribute), which
 | 
			
		||||
                # gets set to "not modified" at every new prompt.
 | 
			
		||||
                # Also, make sure the current window has not been closed,
 | 
			
		||||
                # since it can be closed during the Open File dialog.
 | 
			
		||||
                try:
 | 
			
		||||
                    interp = self.editwin.interp
 | 
			
		||||
                except AttributeError:
 | 
			
		||||
                    interp = None
 | 
			
		||||
                if not self.filename and self.get_saved() and not interp:
 | 
			
		||||
                    self.editwin.flist.open(filename, self.loadfile)
 | 
			
		||||
 | 
			
		||||
                if self.editwin and not self.filename and \
 | 
			
		||||
                          self.get_saved() and not interp:
 | 
			
		||||
                    flist.open(filename, self.loadfile)
 | 
			
		||||
                else:
 | 
			
		||||
                    self.editwin.flist.open(filename)
 | 
			
		||||
                    flist.open(filename)
 | 
			
		||||
            else:
 | 
			
		||||
                if self.text:
 | 
			
		||||
                    self.text.focus_set()
 | 
			
		||||
            
 | 
			
		||||
            return "break"
 | 
			
		||||
        #
 | 
			
		||||
        # Code for use outside IDLE:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1435,6 +1435,7 @@ def main():
 | 
			
		|||
    if tkversionwarning:
 | 
			
		||||
        shell.interp.runcommand(''.join(("print('", tkversionwarning, "')")))
 | 
			
		||||
 | 
			
		||||
    while flist.inversedict:  # keep IDLE running while files are open.
 | 
			
		||||
        root.mainloop()
 | 
			
		||||
    root.destroy()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,6 +67,9 @@ Core and Builtins
 | 
			
		|||
Library
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
- Issue #10365: File open dialog now works instead of crashing
 | 
			
		||||
  even when parent window is closed. Patch by Roger Serwy.
 | 
			
		||||
 | 
			
		||||
- Issue #14876: Use user-selected font for highlight configuration.
 | 
			
		||||
 | 
			
		||||
- Issue #14920: Fix the help(urllib.parse) failure on locale C on terminals.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue