diff -r 095fbf03cad7 Lib/idlelib/IOBinding.py --- a/Lib/idlelib/IOBinding.py Wed Apr 02 15:51:38 2014 -0400 +++ b/Lib/idlelib/IOBinding.py Thu Apr 03 20:58:59 2014 +0530 @@ -512,10 +512,14 @@ def asksavefile(self): dir, base = self.defaultfilename("save") + filetypes = self.filetypes + if not self.editwin.ispythonsource(self.filename): + #See issue21140 + filetypes[0], filetypes[1] = filetypes[1], filetypes[0] if not self.savedialog: self.savedialog = tkFileDialog.SaveAs( master=self.text, - filetypes=self.filetypes, + filetypes=filetypes, defaultextension=self.defaultextension) filename = self.savedialog.show(initialdir=dir, initialfile=base) return filename @@ -546,6 +550,8 @@ self.text.event_generate("<>") def save_a_copy(self, event): self.text.event_generate("<>") + def ispythonsource(self, filename): + return True #Change to False to mock OutputWindow. text = Text(root) text.pack() text.focus_set() diff -r 095fbf03cad7 Lib/idlelib/OutputWindow.py --- a/Lib/idlelib/OutputWindow.py Wed Apr 02 15:51:38 2014 -0400 +++ b/Lib/idlelib/OutputWindow.py Thu Apr 03 20:58:59 2014 +0530 @@ -20,7 +20,7 @@ def ispythonsource(self, filename): # No colorization needed - return 0 + return False def short_title(self): return "Output"