From d821ffe9bdf262ab23f7bb4f15c515228e2a0ce4 Mon Sep 17 00:00:00 2001 From: Vasily Postnicov Date: Wed, 5 Jun 2024 10:13:24 +0300 Subject: [PATCH] Fix toolbar toggling when entering/leaving fullscreen mode --- source/renderer/gtk.lisp | 15 +++++++++------ source/window.lisp | 23 +++++++++++++---------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/source/renderer/gtk.lisp b/source/renderer/gtk.lisp index 295203a0f51..67366cccb4a 100644 --- a/source/renderer/gtk.lisp +++ b/source/renderer/gtk.lisp @@ -501,11 +501,14 @@ response. The BODY is wrapped with `with-protect'." (connect-signal window "window-state-event" nil (widget event) (declare (ignore widget)) (setf (nyxt::fullscreen-p window) - (find :fullscreen - (gdk:gdk-event-window-state-new-window-state event))) + (sera:true + (find :fullscreen + (gdk:gdk-event-window-state-new-window-state event)))) (setf (nyxt::maximized-p window) - (find :maximized - (gdk:gdk-event-window-state-new-window-state event))) + (sera:true + (find :maximized + (gdk:gdk-event-window-state-new-window-state event)))) + (toggle-toolbars-on-fullscreen) nil)) (unless nyxt::*headless-p* @@ -1611,12 +1614,12 @@ the `active-buffer'." (connect-signal buffer "enter-fullscreen" nil (web-view) (declare (ignore web-view)) (setf (nyxt::fullscreen-p (current-window)) t) - (toggle-fullscreen :skip-renderer-resize t) + (toggle-toolbars-on-fullscreen) nil) (connect-signal buffer "leave-fullscreen" nil (web-view) (declare (ignore web-view)) (setf (nyxt::fullscreen-p (current-window)) nil) - (toggle-fullscreen :skip-renderer-resize t) + (toggle-toolbars-on-fullscreen) nil) buffer) diff --git a/source/window.lisp b/source/window.lisp index 82c47e2ce78..645060f9713 100644 --- a/source/window.lisp +++ b/source/window.lisp @@ -178,17 +178,12 @@ not try to quit the browser." (window-set-buffer window buffer) (values window buffer))) -(define-command toggle-fullscreen (&key (window (current-window)) - skip-renderer-resize) - "Fullscreen WINDOW, or the current window, when omitted. -When `skip-renderer-resize' is non-nil, don't ask the renderer to fullscreen the window." +(define-command toggle-fullscreen (&key (window (current-window))) + "Fullscreen WINDOW, or the current window, when omitted." (let ((fullscreen (fullscreen-p window))) - (unless skip-renderer-resize - (if fullscreen - (ffi-window-unfullscreen window) - (ffi-window-fullscreen window))) - (toggle-status-buffer :show-p (not fullscreen)) - (toggle-message-buffer :show-p (not fullscreen)))) + (if fullscreen + (ffi-window-unfullscreen window) + (ffi-window-fullscreen window)))) (define-command toggle-maximize (&key (window (current-window))) "Maximize WINDOW, or the current window, when omitted." @@ -241,3 +236,11 @@ If SHOW-P is provided: (zerop (height (message-buffer window)))) (enable-message-buffer window)) (t (disable-message-buffer window)))) + +(defun toggle-toolbars-on-fullscreen (&key (window (current-window))) + "Toggle toolbar when fullscreen state is changed. Should be called +from the renderer." + (let ((fullscreen (fullscreen-p window))) + (toggle-message-buffer :window window :show-p (not fullscreen)) + (toggle-status-buffer :window window :show-p (not fullscreen)))) +(export 'toggle-toolbars-on-fullscreen)