From cad9ef74ea903dc714850c5379646f5c5f229c63 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Wed, 1 Jul 2009 16:48:35 +0000 Subject: [PATCH] * w32fns.c (w32_frame_parm_handlers): Set 0 for sticky. * nsfns.m (ns_frame_parm_handlers): Ditto. * frame.c: Declare Qsticky. (frame_parms): Add sticky. * xfns.c (x_frame_parm_handlers): Let x_set_sticky handle sticky. * xterm.h: Declare x_set_sticky. * xterm.c (x_set_sticky): New function. * frame.c: Qmaximized is new. (x_set_frame_parameters): Do not handle fullscreen specially. Only set width and height if explicitly set. (x_set_fullscreen): Handle Qmaximized. (x_set_font, x_figure_window_size): Do not handle fullscreen specially. (syms_of_frame): Initialize Qmaximized. * xterm.c (handle_one_xevent): Remove call to x_check_fullscreen for Expose event. Add call to x_check_fullscreen for MapNotify event. Remove all code w.r.t. fullscreen from ConfigureNotify event. Do not set gravity to NorthWestGravity when USE_GTK. (set_wm_state): New function. (do_ewmh_fullscreen): Use set_wm_state. Also handle FULLSCREEN_MAXIMIZED. (x_handle_net_wm_state): Handle FULLSCREEN_MAXIMIZED. (x_check_fullscreen): Simplify so we only handle EMWH type of fullscreen or the case when no window manager is running. That means remove calls to x_real_positions and x_fullscreen_adjust. --- src/ChangeLog | 13 +++++++++++++ src/frame.c | 4 +++- src/nsfns.m | 3 ++- src/w32fns.c | 3 ++- src/xfns.c | 3 ++- src/xterm.c | 12 ++++++++++++ src/xterm.h | 2 ++ 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 481b6e8c88..53eb27addf 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,18 @@ 2009-07-01 Jan Djärv + * w32fns.c (w32_frame_parm_handlers): Set 0 for sticky. + + * nsfns.m (ns_frame_parm_handlers): Ditto. + + * frame.c: Declare Qsticky. + (frame_parms): Add sticky. + + * xfns.c (x_frame_parm_handlers): Let x_set_sticky handle sticky. + + * xterm.h: Declare x_set_sticky. + + * xterm.c (x_set_sticky): New function. + * gtkutil.c (xg_tool_bar_proxy_help_callback): New function. (xg_tool_bar_menu_proxy): Attach enter/leave events to xg_tool_bar_proxy_help_callback. diff --git a/src/frame.c b/src/frame.c index fa2807c150..506a4225a9 100644 --- a/src/frame.c +++ b/src/frame.c @@ -121,6 +121,7 @@ Lisp_Object Qtty_color_mode; Lisp_Object Qtty, Qtty_type; Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth, Qmaximized; +Lisp_Object Qsticky; Lisp_Object Qfont_backend; Lisp_Object Qalpha; @@ -2844,7 +2845,8 @@ static struct frame_parm_table frame_parms[] = {"wait-for-wm", &Qwait_for_wm}, {"fullscreen", &Qfullscreen}, {"font-backend", &Qfont_backend}, - {"alpha", &Qalpha} + {"alpha", &Qalpha}, + {"sticky", &Qsticky}, }; #ifdef HAVE_WINDOW_SYSTEM diff --git a/src/nsfns.m b/src/nsfns.m index 8cd7bfbb16..f99420ced2 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1031,7 +1031,8 @@ frame_parm_handler ns_frame_parm_handlers[] = 0, /* x_set_wait_for_wm, will ignore */ 0, /* x_set_fullscreen will ignore */ x_set_font_backend, /* generic OK */ - x_set_alpha + x_set_alpha, + 0, /* x_set_sticky */ }; diff --git a/src/w32fns.c b/src/w32fns.c index e9780670a7..8ecf3ccb20 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -6892,7 +6892,8 @@ frame_parm_handler w32_frame_parm_handlers[] = 0, /* x_set_wait_for_wm, */ x_set_fullscreen, x_set_font_backend, - x_set_alpha + x_set_alpha, + 0, /* x_set_sticky */ }; void diff --git a/src/xfns.c b/src/xfns.c index 37d41d3f52..9036ff171f 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -5779,7 +5779,8 @@ frame_parm_handler x_frame_parm_handlers[] = x_set_wait_for_wm, x_set_fullscreen, x_set_font_backend, - x_set_alpha + x_set_alpha, + x_set_sticky, }; void diff --git a/src/xterm.c b/src/xterm.c index 32ee159667..c56d82ee68 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -8456,6 +8456,18 @@ set_wm_state (frame, add, what, what2) : Qnil))); } +void +x_set_sticky (f, new_value, old_value) + struct frame *f; + Lisp_Object new_value, old_value; +{ + Lisp_Object frame; + + XSETFRAME (frame, f); + set_wm_state (frame, NILP (new_value) ? 0 : 1, + "_NET_WM_STATE_STICKY", NULL); +} + /* Do fullscreen as specified in extended window manager hints */ static int diff --git a/src/xterm.h b/src/xterm.h index 6681d4ed44..0d9d4804e5 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -964,6 +964,8 @@ extern unsigned int x_x_to_emacs_modifiers P_ ((struct x_display_info *, extern int x_display_pixel_height P_ ((struct x_display_info *)); extern int x_display_pixel_width P_ ((struct x_display_info *)); +extern void x_set_sticky P_ ((struct frame *, Lisp_Object, Lisp_Object)); + /* Defined in xselect.c */ extern void x_handle_property_notify P_ ((XPropertyEvent *)); -- 2.20.1