From: Po Lu Date: Sun, 6 Feb 2022 00:58:23 +0000 (+0800) Subject: Handle window state changes on PGTK X-Git-Tag: emacs-29.0.90~2497 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9c1d6b1d6a24338517756437757cc4aaaa4da4e5;p=emacs.git Handle window state changes on PGTK * src/pgtkterm.c (window_state_event): Set fullscreen, sticky, and iconification status according to the new window state. (bug#53793) --- diff --git a/src/pgtkterm.c b/src/pgtkterm.c index d0a2980bc1b..23ad3c318c2 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -5694,6 +5694,32 @@ window_state_event (GtkWidget *widget, } } + if (event->window_state.new_window_state + & GDK_WINDOW_STATE_FULLSCREEN) + store_frame_param (f, Qfullscreen, Qfullboth); + else if (event->window_state.new_window_state + & GDK_WINDOW_STATE_MAXIMIZED) + store_frame_param (f, Qfullscreen, Qmaximized); + else + store_frame_param (f, Qfullscreen, Qnil); + + if (event->window_state.new_window_state + & GDK_WINDOW_STATE_ICONIFIED) + SET_FRAME_ICONIFIED (f, true); + else + { + FRAME_X_OUTPUT (f)->has_been_visible = true; + inev.ie.kind = DEICONIFY_EVENT; + XSETFRAME (inev.ie.frame_or_window, f); + SET_FRAME_ICONIFIED (f, false); + } + + if (event->window_state.new_window_state + & GDK_WINDOW_STATE_STICKY) + store_frame_param (f, Qsticky, Qt); + else + store_frame_param (f, Qsticky, Qnil); + if (inev.ie.kind != NO_EVENT) evq_enqueue (&inev); return FALSE;