@@ -67,14 +67,9 @@ def set_filename_change_hook(self, hook):
6767 def set_filename (self , filename ):
6868 if filename and os .path .isdir (filename ):
6969 self .filename = None
70- self .file_timestamp = None
7170 self .dirname = filename
7271 else :
7372 self .filename = filename
74- if filename is not None :
75- self .file_timestamp = os .stat (filename ).st_mtime
76- else :
77- self .file_timestamp = None
7873 self .dirname = None
7974 self .set_saved (1 )
8075 if self .filename_change_hook :
@@ -133,6 +128,7 @@ def loadfile(self, filename):
133128 chars = f .read ()
134129 fileencoding = f .encoding
135130 eol_convention = f .newlines
131+ file_timestamp = os .stat (filename ).st_mtime
136132 converted = False
137133 except (UnicodeDecodeError , SyntaxError ):
138134 # Wait for the editor window to appear
@@ -148,6 +144,7 @@ def loadfile(self, filename):
148144 chars = f .read ()
149145 fileencoding = f .encoding
150146 eol_convention = f .newlines
147+ file_timestamp = os .stat (filename ).st_mtime
151148 converted = True
152149 except OSError as err :
153150 messagebox .showerror ("I/O Error" , str (err ), parent = self .text )
@@ -176,6 +173,7 @@ def loadfile(self, filename):
176173 self .text .insert ("1.0" , chars )
177174 self .reset_undo ()
178175 self .set_filename (filename )
176+ self .file_timestamp = file_timestamp
179177 if converted :
180178 # We need to save the conversion results first
181179 # before being able to execute the code
@@ -214,16 +212,21 @@ def save(self, event):
214212 else :
215213 # Check the time of most recent content modification so the
216214 # user doesn't accidentally overwrite a newer version of the file.
217- if self .file_timestamp != os .stat (self .filename ).st_mtime :
218- confirm = tkMessageBox .askokcancel (
219- title = "File has changed" ,
220- message = (
221- "The file has changed on disk since reading it!\n \n "
222- "Do you really want to overwrite it?" ),
223- default = tkMessageBox .CANCEL ,
224- parent = self .text )
225- if not confirm :
226- return
215+ try :
216+ file_timestamp = os .stat (self .filename ).st_mtime
217+ except OSError :
218+ pass
219+ else :
220+ if self .file_timestamp != file_timestamp :
221+ confirm = messagebox .askokcancel (
222+ title = "File has changed" ,
223+ message = (
224+ "The file has changed on disk since reading it!\n \n "
225+ "Do you really want to overwrite it?" ),
226+ default = messagebox .CANCEL ,
227+ parent = self .text )
228+ if not confirm :
229+ return
227230
228231 if self .writefile (self .filename ):
229232 self .file_timestamp = os .stat (self .filename ).st_mtime
@@ -239,6 +242,7 @@ def save_as(self, event):
239242 filename = self .asksavefile ()
240243 if filename :
241244 if self .writefile (filename ):
245+ self .file_timestamp = os .stat (filename ).st_mtime
242246 self .set_filename (filename )
243247 self .set_saved (1 )
244248 try :
0 commit comments