From 416094a82c573541a061889b0227793444968c1a Mon Sep 17 00:00:00 2001 From: Inkeliz Date: Thu, 25 Mar 2021 13:18:48 +0000 Subject: [PATCH] app: [js] support for fullscreen mode Signed-off-by: Inkeliz --- app/internal/wm/os_js.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/internal/wm/os_js.go b/app/internal/wm/os_js.go index f43c026f..067d1f53 100644 --- a/app/internal/wm/os_js.go +++ b/app/internal/wm/os_js.go @@ -77,7 +77,9 @@ func NewWindow(win Callbacks, opts *Options) error { }) w.addEventListeners() w.addHistory() + w.windowMode(opts.WindowMode) w.w = win + go func() { defer w.cleanup() w.w.SetDriver(w) @@ -536,6 +538,25 @@ func (w *window) config() (int, int, system.Insets, unit.Metric) { } } +func (w *window) windowMode(mode WindowMode) { + switch mode { + case Windowed: + if fs := w.document.Get("fullscreenElement"); !fs.Truthy() { + return // Browser is already Windowed. + } + if !w.document.Get("exitFullscreen").Truthy() { + return // Browser doesn't support such feature. + } + w.document.Call("exitFullscreen") + case Fullscreen: + elem := w.document.Get("documentElement") + if !elem.Get("requestFullscreen").Truthy() { + return // Browser doesn't support such feature. + } + elem.Call("requestFullscreen") + } +} + func Main() { select {} }