[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 733279a: Simplify represented filename handling (bu
From: |
Alan Third |
Subject: |
[Emacs-diffs] master 733279a: Simplify represented filename handling (bug#30800) |
Date: |
Fri, 30 Mar 2018 07:35:29 -0400 (EDT) |
branch: master
commit 733279abedc598a927e66c6f6ac10d1bd9271e79
Author: Alan Third <address@hidden>
Commit: Alan Third <address@hidden>
Simplify represented filename handling (bug#30800)
* src/nsfns.m (ns_set_represented_filename): Move function from
nsterm.m and set represented filename directly.
* src/nsterm.h (ns_set_represented_filename): Remove definition.
* src/nsterm.m (ns_set_represented_filename): Move function to
nsfns.m.
(x_free_frame_resources): Remove references to represented_frame.
(sendEvent): Don't set represented filename.
---
src/nsfns.m | 41 +++++++++++++++++++++++++++++++++++++++++
src/nsterm.h | 6 ------
src/nsterm.m | 58 ----------------------------------------------------------
3 files changed, 41 insertions(+), 64 deletions(-)
diff --git a/src/nsfns.m b/src/nsfns.m
index 6df54b4..7cf45a5 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -463,6 +463,47 @@ ns_set_name (struct frame *f, Lisp_Object name, int
explicit)
ns_set_name_internal (f, name);
}
+static void
+ns_set_represented_filename (struct frame *f)
+{
+ Lisp_Object filename, encoded_filename;
+ Lisp_Object buf = XWINDOW (f->selected_window)->contents;
+ NSAutoreleasePool *pool;
+ NSString *fstr;
+ NSView *view = FRAME_NS_VIEW (f);
+
+ NSTRACE ("ns_set_represented_filename");
+
+ if (f->explicit_name || ! NILP (f->title))
+ return;
+
+ block_input ();
+ pool = [[NSAutoreleasePool alloc] init];
+ filename = BVAR (XBUFFER (buf), filename);
+
+ if (! NILP (filename))
+ {
+ encoded_filename = ENCODE_UTF_8 (filename);
+
+ fstr = [NSString stringWithUTF8String: SSDATA (encoded_filename)];
+ if (fstr == nil) fstr = @"";
+ }
+ else
+ fstr = @"";
+
+#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];
+
+ [pool release];
+ unblock_input ();
+}
+
/* This function should be called when the user's lisp code has
specified a name for the frame; the name will override any set by the
diff --git a/src/nsterm.h b/src/nsterm.h
index a963537..a99b517 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -1237,12 +1237,6 @@ struct input_event;
extern void ns_init_events (struct input_event *);
extern void ns_finish_events (void);
-#ifdef __OBJC__
-/* Needed in nsfns.m. */
-extern void
-ns_set_represented_filename (struct frame *f);
-
-#endif
#ifdef NS_IMPL_GNUSTEP
extern char gnustep_base_version[]; /* version tracking */
diff --git a/src/nsterm.m b/src/nsterm.m
index 06ba2e1..3c95fed 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -327,9 +327,6 @@ 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:
@@ -473,40 +470,6 @@ static void ns_judge_scroll_bars (struct frame *f);
==========================================================================
*/
void
-ns_set_represented_filename (struct frame *f)
-{
- Lisp_Object filename, encoded_filename;
- Lisp_Object buf = XWINDOW (f->selected_window)->contents;
- NSAutoreleasePool *pool;
- NSString *fstr;
-
- NSTRACE ("ns_set_represented_filename");
-
- if (f->explicit_name || ! NILP (f->title))
- return;
-
- block_input ();
- pool = [[NSAutoreleasePool alloc] init];
- filename = BVAR (XBUFFER (buf), filename);
-
- if (! NILP (filename))
- {
- encoded_filename = ENCODE_UTF_8 (filename);
-
- fstr = [NSString stringWithUTF8String: SSDATA (encoded_filename)];
- if (fstr == nil) fstr = @"";
- }
- else
- fstr = @"";
-
- represented_filename = [fstr retain];
- represented_frame = f;
-
- [pool release];
- unblock_input ();
-}
-
-void
ns_init_events (struct input_event *ev)
{
EVENT_INIT (*ev);
@@ -1783,10 +1746,6 @@ x_free_frame_resources (struct frame *f)
dpyinfo->x_highlight_frame = 0;
if (f == hlinfo->mouse_face_mouse_frame)
reset_mouse_highlight (hlinfo);
- /* Ensure that sendEvent does not attempt to dereference a freed
- frame. (bug#30800) */
- if (represented_frame == f)
- represented_frame = NULL;
if (f->output_data.ns->miniimage != nil)
[f->output_data.ns->miniimage release];
@@ -5630,23 +5589,6 @@ 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 == NSEventTypeApplicationDefined)
{
switch ([theEvent data2])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 733279a: Simplify represented filename handling (bug#30800),
Alan Third <=