aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorAlan Third2017-08-20 21:14:47 +0100
committerAlan Third2017-08-23 19:57:00 +0100
commit7baa50eca28ff21497b058fa22656bbb4a447d87 (patch)
tree248e7eae805b65b76f368f70928cdcfb1a54cb84 /src/frame.c
parent4309d1574ae86244751600171b605b2b2eca4697 (diff)
downloademacs-7baa50eca28ff21497b058fa22656bbb4a447d87.tar.gz
emacs-7baa50eca28ff21497b058fa22656bbb4a447d87.zip
Add ability to change macOS WM theme (bug#27973)
* src/frame.c (make_frame, frame_parms, syms_of_frame) [NS_IMPL_COCOA]: Add ns-appearance and ns-transparent-titlebar options. * src/frame.h (ns_appearance_type) [NS_IMPL_COCOA]: Add enum to represent NSAppearance options. (struct frame) [NS_IMPL_COCOA]: Add ns_appearance and ns_transparent_titlebar frame parameters. * src/nsfns.m (ns_frame_parm_handlers) [NS_IMPL_COCOA]: Add ns_set_appearance and ns_set_transparent_titlebar handlers. (Sx_create_frame): Handle ns-appearance and ns-transparent-titlebar frame parameters. (Qdark): Add new symbol for use with ns-appearance. * src/nsterm.h (ns_set_appearance, ns_set_transparent_titlebar) [NS_IMPL_COCOA]: Add prototypes. * src/nsterm.m (ns_set_appearance, ns_set_transparent_titlebar) [NS_IMPL_COCOA]: New functions. (initFrameFromEmacs) [NS_IMPL_COCOA]: Handle ns-appearance and ns-transparent-titlebar frame parameters. * doc/lispref/frames.texi (Window Management Parameters): Document ns-apperance and ns-transparent-titlebar.
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/frame.c b/src/frame.c
index 1e5e4bbdb48..5099f75be4d 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -834,6 +834,10 @@ make_frame (bool mini_p)
834#if ! defined (USE_GTK) && ! defined (HAVE_NS) 834#if ! defined (USE_GTK) && ! defined (HAVE_NS)
835 f->last_tool_bar_item = -1; 835 f->last_tool_bar_item = -1;
836#endif 836#endif
837#ifdef NS_IMPL_COCOA
838 f->ns_appearance = ns_appearance_aqua;
839 f->ns_transparent_titlebar = false;
840#endif
837#endif 841#endif
838 842
839 root_window = make_window (); 843 root_window = make_window ();
@@ -3520,6 +3524,10 @@ static const struct frame_parm_table frame_parms[] =
3520 {"z-group", SYMBOL_INDEX (Qz_group)}, 3524 {"z-group", SYMBOL_INDEX (Qz_group)},
3521 {"override-redirect", SYMBOL_INDEX (Qoverride_redirect)}, 3525 {"override-redirect", SYMBOL_INDEX (Qoverride_redirect)},
3522 {"no-special-glyphs", SYMBOL_INDEX (Qno_special_glyphs)}, 3526 {"no-special-glyphs", SYMBOL_INDEX (Qno_special_glyphs)},
3527#ifdef NS_IMPL_COCOA
3528 {"ns-appearance", SYMBOL_INDEX (Qns_appearance)},
3529 {"ns-transparent-titlebar", SYMBOL_INDEX (Qns_transparent_titlebar)},
3530#endif
3523}; 3531};
3524 3532
3525#ifdef HAVE_WINDOW_SYSTEM 3533#ifdef HAVE_WINDOW_SYSTEM
@@ -5646,6 +5654,10 @@ syms_of_frame (void)
5646#ifdef HAVE_NS 5654#ifdef HAVE_NS
5647 DEFSYM (Qns_parse_geometry, "ns-parse-geometry"); 5655 DEFSYM (Qns_parse_geometry, "ns-parse-geometry");
5648#endif 5656#endif
5657#ifdef NS_IMPL_COCOA
5658 DEFSYM (Qns_appearance, "ns-appearance");
5659 DEFSYM (Qns_transparent_titlebar, "ns-transparent-titlebar");
5660#endif
5649 5661
5650 DEFSYM (Qalpha, "alpha"); 5662 DEFSYM (Qalpha, "alpha");
5651 DEFSYM (Qauto_lower, "auto-lower"); 5663 DEFSYM (Qauto_lower, "auto-lower");