From f6c82dcaba9248dd93a15346ae2b2489c4fbae6c Mon Sep 17 00:00:00 2001 From: Fadi Khadra Date: Sun, 1 Oct 2023 22:05:25 +0200 Subject: [PATCH] [v2 mac] add fullscreen option to preference (#2953) * [v2 mac] add fullscreen option to preference * update changelog * replace space by tabs --- v2/internal/frontend/desktop/darwin/WailsContext.h | 1 + v2/internal/frontend/desktop/darwin/WailsContext.m | 6 ++++++ v2/internal/frontend/desktop/darwin/window.go | 4 ++++ v2/pkg/options/mac/preferences.go | 3 +++ website/docs/reference/options.mdx | 3 +++ website/src/pages/changelog.mdx | 1 + 6 files changed, 18 insertions(+) diff --git a/v2/internal/frontend/desktop/darwin/WailsContext.h b/v2/internal/frontend/desktop/darwin/WailsContext.h index fe66f3549..99b6ce2de 100644 --- a/v2/internal/frontend/desktop/darwin/WailsContext.h +++ b/v2/internal/frontend/desktop/darwin/WailsContext.h @@ -58,6 +58,7 @@ struct Preferences { bool *tabFocusesLinks; bool *textInteractionEnabled; + bool *fullscreenEnabled; }; - (void) CreateWindow:(int)width :(int)height :(bool)frameless :(bool)resizable :(bool)fullscreen :(bool)fullSizeContent :(bool)hideTitleBar :(bool)titlebarAppearsTransparent :(bool)hideTitle :(bool)useToolbar :(bool)hideToolbarSeparator :(bool)webviewIsTransparent :(bool)hideWindowOnClose :(NSString *)appearance :(bool)windowIsTranslucent :(int)minWidth :(int)minHeight :(int)maxWidth :(int)maxHeight :(bool)fraudulentWebsiteWarningEnabled :(struct Preferences)preferences; diff --git a/v2/internal/frontend/desktop/darwin/WailsContext.m b/v2/internal/frontend/desktop/darwin/WailsContext.m index 1c84a5761..bf191e472 100644 --- a/v2/internal/frontend/desktop/darwin/WailsContext.m +++ b/v2/internal/frontend/desktop/darwin/WailsContext.m @@ -224,6 +224,12 @@ typedef void (^schemeTaskCaller)(id); config.preferences.textInteractionEnabled = *preferences.textInteractionEnabled; } } + + if (@available(macOS 12.3, *)) { + if (preferences.fullscreenEnabled != NULL) { + config.preferences.elementFullscreenEnabled = *preferences.fullscreenEnabled; + } + } // [config.preferences setValue:[NSNumber numberWithBool:true] forKey:@"developerExtrasEnabled"]; diff --git a/v2/internal/frontend/desktop/darwin/window.go b/v2/internal/frontend/desktop/darwin/window.go index 803d04c1e..c0f627419 100644 --- a/v2/internal/frontend/desktop/darwin/window.go +++ b/v2/internal/frontend/desktop/darwin/window.go @@ -95,6 +95,10 @@ func NewWindow(frontendOptions *options.App, debug bool, devtools bool) *Window if mac.Preferences.TextInteractionEnabled.IsSet() { preferences.textInteractionEnabled = bool2CboolPtr(mac.Preferences.TextInteractionEnabled.Get()) } + + if mac.Preferences.FullscreenEnabled.IsSet() { + preferences.fullscreenEnabled = bool2CboolPtr(mac.Preferences.FullscreenEnabled.Get()) + } } windowIsTranslucent = bool2Cint(mac.WindowIsTranslucent) diff --git a/v2/pkg/options/mac/preferences.go b/v2/pkg/options/mac/preferences.go index 2c690e7f7..dbc20c805 100644 --- a/v2/pkg/options/mac/preferences.go +++ b/v2/pkg/options/mac/preferences.go @@ -13,4 +13,7 @@ type Preferences struct { // A Boolean value that indicates whether to allow people to select or otherwise interact with text. // Set to true by default. TextInteractionEnabled u.Bool + // A Boolean value that indicates whether a web view can display content full screen. + // Set to false by default + FullscreenEnabled u.Bool } diff --git a/website/docs/reference/options.mdx b/website/docs/reference/options.mdx index 67e897077..a2a193277 100644 --- a/website/docs/reference/options.mdx +++ b/website/docs/reference/options.mdx @@ -812,6 +812,7 @@ You can specify the webview preferences. type Preferences struct { TabFocusesLinks u.Bool TextInteractionEnabled u.Bool + FullscreenEnabled u.Bool } ``` @@ -819,6 +820,7 @@ type Preferences struct { | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | TabFocusesLinks | A Boolean value that indicates whether pressing the tab key changes the focus to links and form controls. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/2818595-tabfocuseslinks?language=objc) | | TextInteractionEnabled | A Boolean value that indicates whether to allow people to select or otherwise interact with text. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/3727362-textinteractionenabled?language=objc) | +| FullscreenEnabled | A Boolean value that indicates whether a web view can display content full screen. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/3917769-elementfullscreenenabled?language=objc) | Example: @@ -827,6 +829,7 @@ Mac: &mac.Options{ Preferences: &mac.Preferences{ TabFocusesLinks: mac.Enabled, TextInteractionEnabled: mac.Disabled, + FullscreenEnabled: mac.Enabled, } } ``` diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index d49cf6d3a..ff94e77de 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added support for enabling/disabling swipe gestures for Windows WebView2. Added by @leaanthony in [PR](https://github.com/wailsapp/wails/pull/2878) - When building with `-devtools` flag, CMD/CTRL+SHIFT+F12 can be used to open the devtools. Added by @leaanthony in [PR](https://github.com/wailsapp/wails/pull/2915) - Added support for setting some of the Webview preferences, `textInteractionEnabled` and `tabFocusesLinks` on Mac. Added by @fkhadra in [PR](https://github.com/wailsapp/wails/pull/2937) +- Added support for enabling/disabling fullscreen of the Webview on Mac. Added by @fkhadra in [PR](https://github.com/wailsapp/wails/pull/2953) ### Changed