Remove NS special handling of 'frame-title-format'
* lisp/term/ns-win.el (frame-title-format, icon-title-format): Change default format to just the filename. * src/nsfns.m (ns-use-proxy-icon): New variable. (ns_set_name_as_filename): Remove function. (x_implicitly_set_name): Get rid of special handling of frame-title-format. * src/nsterm.h (ns_set_represented_filename): Use new definition. * src/nsterm.m (ns_set_represented_filename): Move some of the logic from ns_set_name_as_filename into this function.
This commit is contained in:
parent
5a75cd1f8f
commit
f7a853d818
5 changed files with 45 additions and 87 deletions
5
etc/NEWS
5
etc/NEWS
|
@ -289,6 +289,11 @@ Previously it was supported only in the Cygwin-w32 build.
|
|||
** Emacs now handles key combinations involving the macOS "command"
|
||||
and "option" modifier keys more correctly.
|
||||
|
||||
** The special handling of `frame-title-format' on NS where setting it
|
||||
to `t' would enable the macOS proxy icon has been replaced with a
|
||||
separate variable, `ns-use-proxy-icon'. `frame-title-format' will now
|
||||
work as on other platforms.
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
This file is part of GNU Emacs.
|
||||
|
|
|
@ -809,8 +809,8 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
|
|||
|
||||
|
||||
;; Set some options to be as Nextstep-like as possible.
|
||||
(setq frame-title-format t
|
||||
icon-title-format t)
|
||||
(setq frame-title-format "%b"
|
||||
icon-title-format "%b")
|
||||
|
||||
|
||||
(defvar ns-initialized nil
|
||||
|
|
91
src/nsfns.m
91
src/nsfns.m
|
@ -61,7 +61,6 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
static ptrdiff_t image_cache_refcount;
|
||||
|
||||
static struct ns_display_info *ns_display_info_for_name (Lisp_Object);
|
||||
static void ns_set_name_as_filename (struct frame *);
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
|
@ -483,17 +482,10 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
|
|||
{
|
||||
NSTRACE ("x_implicitly_set_name");
|
||||
|
||||
Lisp_Object frame_title = buffer_local_value
|
||||
(Qframe_title_format, XWINDOW (f->selected_window)->contents);
|
||||
Lisp_Object icon_title = buffer_local_value
|
||||
(Qicon_title_format, XWINDOW (f->selected_window)->contents);
|
||||
if (! NILP (ns_use_proxy_icon))
|
||||
ns_set_represented_filename (f);
|
||||
|
||||
/* Deal with NS specific format t. */
|
||||
if (FRAME_NS_P (f) && ((FRAME_ICONIFIED_P (f) && EQ (icon_title, Qt))
|
||||
|| EQ (frame_title, Qt)))
|
||||
ns_set_name_as_filename (f);
|
||||
else
|
||||
ns_set_name (f, arg, 0);
|
||||
ns_set_name (f, arg, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -520,78 +512,6 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
|
|||
ns_set_name_internal (f, name);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_set_name_as_filename (struct frame *f)
|
||||
{
|
||||
NSView *view;
|
||||
Lisp_Object name, filename;
|
||||
Lisp_Object buf = XWINDOW (f->selected_window)->contents;
|
||||
const char *title;
|
||||
NSAutoreleasePool *pool;
|
||||
Lisp_Object encoded_name, encoded_filename;
|
||||
NSString *str;
|
||||
NSTRACE ("ns_set_name_as_filename");
|
||||
|
||||
if (f->explicit_name || ! NILP (f->title))
|
||||
return;
|
||||
|
||||
block_input ();
|
||||
pool = [[NSAutoreleasePool alloc] init];
|
||||
filename = BVAR (XBUFFER (buf), filename);
|
||||
name = BVAR (XBUFFER (buf), name);
|
||||
|
||||
if (NILP (name))
|
||||
{
|
||||
if (! NILP (filename))
|
||||
name = Ffile_name_nondirectory (filename);
|
||||
else
|
||||
name = build_string ([ns_app_name UTF8String]);
|
||||
}
|
||||
|
||||
encoded_name = ENCODE_UTF_8 (name);
|
||||
|
||||
view = FRAME_NS_VIEW (f);
|
||||
|
||||
title = FRAME_ICONIFIED_P (f) ? [[[view window] miniwindowTitle] UTF8String]
|
||||
: [[[view window] title] UTF8String];
|
||||
|
||||
if (title && (! strcmp (title, SSDATA (encoded_name))))
|
||||
{
|
||||
[pool release];
|
||||
unblock_input ();
|
||||
return;
|
||||
}
|
||||
|
||||
str = [NSString stringWithUTF8String: SSDATA (encoded_name)];
|
||||
if (str == nil) str = @"Bad coding";
|
||||
|
||||
if (FRAME_ICONIFIED_P (f))
|
||||
[[view window] setMiniwindowTitle: str];
|
||||
else
|
||||
{
|
||||
NSString *fstr;
|
||||
|
||||
if (! NILP (filename))
|
||||
{
|
||||
encoded_filename = ENCODE_UTF_8 (filename);
|
||||
|
||||
fstr = [NSString stringWithUTF8String: SSDATA (encoded_filename)];
|
||||
if (fstr == nil) fstr = @"";
|
||||
}
|
||||
else
|
||||
fstr = @"";
|
||||
|
||||
ns_set_represented_filename (fstr, f);
|
||||
[[view window] setTitle: str];
|
||||
fset_name (f, name);
|
||||
}
|
||||
|
||||
[pool release];
|
||||
unblock_input ();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ns_set_doc_edited (void)
|
||||
{
|
||||
|
@ -3311,6 +3231,11 @@ - (NSString *)panel: (id)sender userEnteredFilename: (NSString *)filename
|
|||
doc: /* Toolkit version for NS Windowing. */);
|
||||
Vns_version_string = ns_appkit_version_str ();
|
||||
|
||||
DEFVAR_BOOL ("ns-use-proxy-icon", ns_use_proxy_icon,
|
||||
doc: /* When non-nil display a proxy icon in the titlebar.
|
||||
Default is t. */);
|
||||
ns_use_proxy_icon = Qt;
|
||||
|
||||
defsubr (&Sns_read_file_name);
|
||||
defsubr (&Sns_get_resource);
|
||||
defsubr (&Sns_set_resource);
|
||||
|
|
|
@ -1237,7 +1237,7 @@ extern void ns_finish_events (void);
|
|||
#ifdef __OBJC__
|
||||
/* Needed in nsfns.m. */
|
||||
extern void
|
||||
ns_set_represented_filename (NSString *fstr, struct frame *f);
|
||||
ns_set_represented_filename (struct frame *f);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
30
src/nsterm.m
30
src/nsterm.m
|
@ -444,10 +444,38 @@ - (NSColor *)colorUsingDefaultColorSpace
|
|||
========================================================================== */
|
||||
|
||||
void
|
||||
ns_set_represented_filename (NSString *fstr, struct frame *f)
|
||||
ns_set_represented_filename (struct frame *f)
|
||||
{
|
||||
NSView *view;
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue