[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Support fullscreen values fullheight and fullwidth on pgtk
From: |
Po Lu |
Subject: |
Re: Support fullscreen values fullheight and fullwidth on pgtk |
Date: |
Sun, 05 Jun 2022 09:06:04 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) |
Florian Rommel <mail@florommel.de> writes:
> Okay, thanks for the patience.
Thanks. I forgot if you have copyright papers. Once Eli or Lars say
they are in order, I will install this patch, though with changes to the
commit message format.
> From 2f2b562054a4913995d517b73f189cc2055bd1f4 Mon Sep 17 00:00:00 2001
> From: Florian Rommel <mail@florommel.de>
> Date: Fri, 3 Jun 2022 03:03:03 +0200
> Subject: [PATCH v4] pgtk: Add support for fullscreen values fullheight and
> fullwidth
>
> * src/pgtkterm.c (window_state_event): Support values fullheight and
> fullwidth for the fullscreen frame-parameter
> * doc/lispref/frames.texi (Size Parameters): Document inability to
> actively set hullheight/fullwidth for PGTK frames
> * configure.ac: Bump GTK version for PGTK
> * etc/NEWS: Change GTK version in PGTK announcement
> ---
> configure.ac | 2 +-
> doc/lispref/frames.texi | 19 ++++++++++---------
> etc/NEWS | 2 +-
> src/pgtkterm.c | 27 ++++++++++++++++++---------
> 4 files changed, 30 insertions(+), 20 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 313a1436b5..76244a5096 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2865,7 +2865,7 @@ AC_DEFUN
> if test "${window_system}" = "x11"; then
> GTK_REQUIRED=3.10
> else
> - GTK_REQUIRED=3.20
> + GTK_REQUIRED=3.22.23
> fi
> GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
>
> diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
> index 9f7666ac63..bbd025d6dd 100644
> --- a/doc/lispref/frames.texi
> +++ b/doc/lispref/frames.texi
> @@ -1746,15 +1746,16 @@ Size Parameters
> @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
> diff --git a/etc/NEWS b/etc/NEWS
> index 850854edfa..fb37082a14 100644
> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -70,7 +70,7 @@ support from Lisp programs.
>
> +++
> ** 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
> diff --git a/src/pgtkterm.c b/src/pgtkterm.c
> index da958a6664..b816deba0a 100644
> --- a/src/pgtkterm.c
> +++ b/src/pgtkterm.c
> @@ -5420,15 +5420,18 @@ window_state_event (GtkWidget *widget,
> 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))
> {
> @@ -5444,17 +5447,24 @@ window_state_event (GtkWidget *widget,
> }
> }
>
> - 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
> {
> @@ -5464,8 +5474,7 @@ window_state_event (GtkWidget *widget,
> 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);
- Support fullscreen values fullheight and fullwidth on pgtk, Florian Rommel, 2022/06/02
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Po Lu, 2022/06/02
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Florian Rommel, 2022/06/03
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Po Lu, 2022/06/03
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Florian Rommel, 2022/06/03
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Po Lu, 2022/06/03
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Florian Rommel, 2022/06/04
- Re: Support fullscreen values fullheight and fullwidth on pgtk,
Po Lu <=
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Eli Zaretskii, 2022/06/05
- Re: Support fullscreen values fullheight and fullwidth on pgtk, Florian Rommel, 2022/06/05