Skip to content

Commit

Permalink
Fix toolbar toggling when entering/leaving fullscreen mode
Browse files Browse the repository at this point in the history
  • Loading branch information
shamazmazum committed Jun 5, 2024
1 parent c6babcf commit d821ffe
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
15 changes: 9 additions & 6 deletions source/renderer/gtk.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -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*
Expand Down Expand Up @@ -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)

Expand Down
23 changes: 13 additions & 10 deletions source/window.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down Expand Up @@ -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)

0 comments on commit d821ffe

Please sign in to comment.