@item fullscreen
This parameter specifies whether to maximize the frame's width, height
or both. Its value can be @code{fullwidth}, @code{fullheight},
-@code{fullboth}, or @code{maximized}. A @dfn{fullwidth} frame is as
-wide as possible, a @dfn{fullheight} frame is as tall as possible, and
-a @dfn{fullboth} frame is both as wide and as tall as possible. A
-@dfn{maximized} frame is like a ``fullboth'' frame, except that it
-usually keeps its title bar and the buttons for resizing and closing
-the frame. Also, maximized frames typically avoid hiding any task bar
-or panels displayed on the desktop. A ``fullboth'' frame, on the
-other hand, usually omits the title bar and occupies the entire
-available screen space.
+@code{fullboth}, or @code{maximized}.@footnote{On PGTK frames, setting
+the values @code{fullheight} and @code{fullwidth} has no effect.} A
+@dfn{fullwidth} frame is as wide as possible, a @dfn{fullheight} frame
+is as tall as possible, and a @dfn{fullboth} frame is both as wide and
+as tall as possible. A @dfn{maximized} frame is like a ``fullboth''
+frame, except that it usually keeps its title bar and the buttons for
+resizing and closing the frame. Also, maximized frames typically
+avoid hiding any task bar or panels displayed on the desktop. A
+``fullboth'' frame, on the other hand, usually omits the title bar and
+occupies the entire available screen space.
Full-height and full-width frames are more similar to maximized
frames in this regard. However, these typically display an external
+++
** Emacs now supports being built with pure GTK.
-To use this option, make sure the GTK 3 (version 3.20 or later) and
+To use this option, make sure the GTK 3 (version 3.22.23 or later) and
Cairo development files are installed, and configure Emacs with the
option '--with-pgtk'. Unlike the default X and GTK build, the
resulting Emacs binary will work on any underlying window system
gpointer *user_data)
{
struct frame *f = pgtk_any_window_to_frame (event->window_state.window);
+ GdkWindowState new_state;
union buffered_input_event inev;
+ new_state = event->window_state.new_window_state;
+
EVENT_INIT (inev.ie);
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
if (f)
{
- if (event->window_state.new_window_state & GDK_WINDOW_STATE_FOCUSED)
+ if (new_state & GDK_WINDOW_STATE_FOCUSED)
{
if (FRAME_ICONIFIED_P (f))
{
}
}
- if (event->window_state.new_window_state
- & GDK_WINDOW_STATE_FULLSCREEN)
+ if (new_state & GDK_WINDOW_STATE_FULLSCREEN)
store_frame_param (f, Qfullscreen, Qfullboth);
- else if (event->window_state.new_window_state
- & GDK_WINDOW_STATE_MAXIMIZED)
+ else if (new_state & GDK_WINDOW_STATE_MAXIMIZED)
store_frame_param (f, Qfullscreen, Qmaximized);
+ else if ((new_state & GDK_WINDOW_STATE_TOP_TILED)
+ && (new_state & GDK_WINDOW_STATE_BOTTOM_TILED)
+ && !(new_state & GDK_WINDOW_STATE_TOP_RESIZABLE)
+ && !(new_state & GDK_WINDOW_STATE_BOTTOM_RESIZABLE))
+ store_frame_param (f, Qfullscreen, Qfullheight);
+ else if ((new_state & GDK_WINDOW_STATE_LEFT_TILED)
+ && (new_state & GDK_WINDOW_STATE_RIGHT_TILED)
+ && !(new_state & GDK_WINDOW_STATE_LEFT_RESIZABLE)
+ && !(new_state & GDK_WINDOW_STATE_RIGHT_RESIZABLE))
+ store_frame_param (f, Qfullscreen, Qfullwidth);
else
store_frame_param (f, Qfullscreen, Qnil);
- if (event->window_state.new_window_state
- & GDK_WINDOW_STATE_ICONIFIED)
+ if (new_state & GDK_WINDOW_STATE_ICONIFIED)
SET_FRAME_ICONIFIED (f, true);
else
{
SET_FRAME_ICONIFIED (f, false);
}
- if (event->window_state.new_window_state
- & GDK_WINDOW_STATE_STICKY)
+ if (new_state & GDK_WINDOW_STATE_STICKY)
store_frame_param (f, Qsticky, Qt);
else
store_frame_param (f, Qsticky, Qnil);