]> code.delx.au - gnu-emacs/blobdiff - src/nsterm.m
Merge from emacs-24
[gnu-emacs] / src / nsterm.m
index 8729fa55a9292ce88825c9664736d9a5ee743e18..f012528b40dc9f4e9eaebaf945ccca839f1209b8 100644 (file)
@@ -293,6 +293,9 @@ static struct {
   NULL, 0, 0
 };
 
+static NSString *represented_filename = nil;
+static struct frame *represented_frame = 0;
+
 #ifdef NS_IMPL_COCOA
 /*
  * State for pending menu activation:
@@ -399,6 +402,13 @@ void x_set_frame_alpha (struct frame *f);
 
    ========================================================================== */
 
+void
+ns_set_represented_filename (NSString* fstr, struct frame *f)
+{
+  represented_filename = [fstr retain];
+  represented_frame = f;
+}
+
 void
 ns_init_events (struct input_event* ev)
 {
@@ -4600,6 +4610,23 @@ ns_term_shutdown (int sig)
     }
 #endif
 
+  if (represented_filename != nil && represented_frame)
+    {
+      NSString *fstr = represented_filename;
+      NSView *view = FRAME_NS_VIEW (represented_frame);
+#ifdef NS_IMPL_COCOA
+      /* work around a bug observed on 10.3 and later where
+         setTitleWithRepresentedFilename does not clear out previous state
+         if given filename does not exist */
+      if (! [[NSFileManager defaultManager] fileExistsAtPath: fstr])
+        [[view window] setRepresentedFilename: @""];
+#endif
+      [[view window] setRepresentedFilename: fstr];
+      [represented_filename release];
+      represented_filename = nil;
+      represented_frame = NULL;
+    }
+
   if (type == NSApplicationDefined)
     {
       switch ([theEvent data2])