# HG changeset patch # User Jan Dj¸«£rv # Date 1246466915 0 # Node ID 1867be80e59582867833a4faa2a612e91af5897a # Parent 34f3338fd2bfc2378e7fa89e9410001791ec02ac * 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. diff -r 34f3338fd2bf -r 1867be80e595 src/ChangeLog --- a/src/ChangeLog Wed Jul 01 15:52:58 2009 +0000 +++ b/src/ChangeLog Wed Jul 01 16:48:35 2009 +0000 @@ -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 -r 34f3338fd2bf -r 1867be80e595 src/frame.c --- a/src/frame.c Wed Jul 01 15:52:58 2009 +0000 +++ b/src/frame.c Wed Jul 01 16:48:35 2009 +0000 @@ -121,6 +121,7 @@ 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 @@ {"wait-for-wm", &Qwait_for_wm}, {"fullscreen", &Qfullscreen}, {"font-backend", &Qfont_backend}, - {"alpha", &Qalpha} + {"alpha", &Qalpha}, + {"sticky", &Qsticky}, }; #ifdef HAVE_WINDOW_SYSTEM diff -r 34f3338fd2bf -r 1867be80e595 src/nsfns.m --- a/src/nsfns.m Wed Jul 01 15:52:58 2009 +0000 +++ b/src/nsfns.m Wed Jul 01 16:48:35 2009 +0000 @@ -1031,7 +1031,8 @@ 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 -r 34f3338fd2bf -r 1867be80e595 src/w32fns.c --- a/src/w32fns.c Wed Jul 01 15:52:58 2009 +0000 +++ b/src/w32fns.c Wed Jul 01 16:48:35 2009 +0000 @@ -6892,7 +6892,8 @@ 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 -r 34f3338fd2bf -r 1867be80e595 src/xfns.c --- a/src/xfns.c Wed Jul 01 15:52:58 2009 +0000 +++ b/src/xfns.c Wed Jul 01 16:48:35 2009 +0000 @@ -5779,7 +5779,8 @@ x_set_wait_for_wm, x_set_fullscreen, x_set_font_backend, - x_set_alpha + x_set_alpha, + x_set_sticky, }; void diff -r 34f3338fd2bf -r 1867be80e595 src/xterm.c --- a/src/xterm.c Wed Jul 01 15:52:58 2009 +0000 +++ b/src/xterm.c Wed Jul 01 16:48:35 2009 +0000 @@ -8456,6 +8456,18 @@ : 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 -r 34f3338fd2bf -r 1867be80e595 src/xterm.h --- a/src/xterm.h Wed Jul 01 15:52:58 2009 +0000 +++ b/src/xterm.h Wed Jul 01 16:48:35 2009 +0000 @@ -964,6 +964,8 @@ 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 *));