From e4cd5c03947a29e73fe7d75167a12ef0b2ed55f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pit--Claudel?= Date: Tue, 16 Feb 2016 18:49:57 -0500 Subject: [PATCH] Prototype for undecorated frames Only works with --with-x-toolkit=none --- src/frame.c | 2 ++ src/nsfns.m | 1 + src/w32fns.c | 1 + src/xfns.c | 14 ++++++++++++++ 4 files changed, 18 insertions(+) diff --git a/src/frame.c b/src/frame.c index 8c86afe..0c74dce 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3065,6 +3065,7 @@ static const struct frame_parm_table frame_parms[] = {"fullscreen", SYMBOL_INDEX (Qfullscreen)}, {"font-backend", SYMBOL_INDEX (Qfont_backend)}, {"alpha", SYMBOL_INDEX (Qalpha)}, + {"decorated", SYMBOL_INDEX (Qdecorated)}, {"sticky", SYMBOL_INDEX (Qsticky)}, {"tool-bar-position", SYMBOL_INDEX (Qtool_bar_position)}, }; @@ -4982,6 +4983,7 @@ syms_of_frame (void) #endif DEFSYM (Qalpha, "alpha"); + DEFSYM (Qdecorated, "decorated"); DEFSYM (Qauto_lower, "auto-lower"); DEFSYM (Qauto_raise, "auto-raise"); DEFSYM (Qborder_color, "border-color"); diff --git a/src/nsfns.m b/src/nsfns.m index eda94c4..346c1a6 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1006,6 +1006,7 @@ frame_parm_handler ns_frame_parm_handlers[] = x_set_fullscreen, /* generic OK */ x_set_font_backend, /* generic OK */ x_set_alpha, + 0, /* x_set_decorated */ 0, /* x_set_sticky */ 0, /* x_set_tool_bar_position */ }; diff --git a/src/w32fns.c b/src/w32fns.c index a5018ae..226246b 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -9258,6 +9258,7 @@ frame_parm_handler w32_frame_parm_handlers[] = x_set_fullscreen, x_set_font_backend, x_set_alpha, + 0, /* x_set_decorated */ 0, /* x_set_sticky */ 0, /* x_set_tool_bar_position */ }; diff --git a/src/xfns.c b/src/xfns.c index 20ac627..56bae7ce 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3511,6 +3511,8 @@ This function is an internal primitive--use `make-frame' instead. */) RES_TYPE_NUMBER); x_default_parameter (f, parms, Qalpha, Qnil, "alpha", "Alpha", RES_TYPE_NUMBER); + x_default_parameter (f, parms, Qdecorated, Qt, + NULL, NULL, RES_TYPE_BOOLEAN); #if defined (USE_X_TOOLKIT) || defined (USE_GTK) /* Create the menu bar. */ @@ -5773,6 +5775,17 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object *root_x = min_x; } +void +x_set_decorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + XSetWindowAttributes attributes; + attributes.override_redirect = NILP(new_value) ? True : False; + + block_input (); + XChangeWindowAttributes (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), + CWOverrideRedirect, &attributes); + unblock_input (); +} DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0, doc: /* Show STRING in a "tooltip" window on frame FRAME. @@ -6791,6 +6804,7 @@ frame_parm_handler x_frame_parm_handlers[] = x_set_fullscreen, x_set_font_backend, x_set_alpha, + x_set_decorated, x_set_sticky, x_set_tool_bar_position, }; -- 2.7.1