From: Florian Rommel <mail@florommel.de>
To: Po Lu <luangruo@yahoo.com>
Cc: emacs-devel@gnu.org
Subject: Re: Support fullscreen values fullheight and fullwidth on pgtk
Date: Sat, 04 Jun 2022 16:03:22 +0200 [thread overview]
Message-ID: <763362fd85bae99fd8772ca219a7c3561200fb40.camel@florommel.de> (raw)
In-Reply-To: <8735gl446y.fsf@yahoo.com>
[-- Attachment #1: Type: text/plain, Size: 114 bytes --]
On Sat, 2022-06-04 at 09:17 +0800, Po Lu wrote:
> Otherwise, LGTM. Thanks.
Okay, thanks for the patience.
[-- Attachment #2: v4-0001-pgtk-Add-support-for-fullscreen-values-fullheight.patch --]
[-- Type: text/x-patch, Size: 5678 bytes --]
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);
--
2.36.1
next prev parent reply other threads:[~2022-06-04 14:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-01 14:57 Support fullscreen values fullheight and fullwidth on pgtk Florian Rommel
2022-06-02 6:00 ` Po Lu
2022-06-03 8:11 ` Florian Rommel
2022-06-03 8:23 ` Po Lu
2022-06-03 18:42 ` Florian Rommel
2022-06-04 1:17 ` Po Lu
2022-06-04 14:03 ` Florian Rommel [this message]
2022-06-05 1:06 ` Po Lu
2022-06-05 5:41 ` Eli Zaretskii
2022-06-05 10:41 ` Florian Rommel
2022-07-03 11:08 ` Florian Rommel
2022-07-03 11:37 ` Po Lu
2022-07-03 11:39 ` Florian Rommel
2022-07-04 2:20 ` Po Lu
2022-07-07 18:52 ` Florian Rommel
2022-07-08 2:30 ` Po Lu
2022-07-08 5:49 ` Eli Zaretskii
2022-07-08 6:34 ` Po Lu
2022-07-08 7:10 ` Eli Zaretskii
2022-07-08 7:37 ` Po Lu
2022-07-03 13:17 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=763362fd85bae99fd8772ca219a7c3561200fb40.camel@florommel.de \
--to=mail@florommel.de \
--cc=emacs-devel@gnu.org \
--cc=luangruo@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).