5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 20:29:37 +08:00

[v3] Add some missing methods for darwin and windows

This commit is contained in:
stffabi 2023-05-02 21:54:56 +02:00
parent 86a1de6788
commit f4749db8b3
5 changed files with 40 additions and 7 deletions

View File

@ -3,11 +3,13 @@
package application
import (
"github.com/wailsapp/wails/v3/pkg/events"
"github.com/wailsapp/wails/v3/pkg/w32"
"os"
"syscall"
"unsafe"
"github.com/wailsapp/wails/v3/pkg/events"
"github.com/wailsapp/wails/v3/pkg/w32"
"github.com/samber/lo"
)
@ -217,7 +219,6 @@ func newPlatformApp(app *App) *windowsApp {
os.Exit(1)
}
result := &windowsApp{
parent: app,
instance: w32.GetModuleHandle(""),

View File

@ -173,6 +173,8 @@ func newRole(role Role) *MenuItem {
return newMinimizeMenuItem()
case Zoom:
return newZoomMenuItem()
case FullScreen:
return newFullScreenMenuItem()
default:
println("No support for role:", role)

View File

@ -606,7 +606,7 @@ func newMinimizeMenuItem() *MenuItem {
OnClick(func(ctx *Context) {
currentWindow := globalApplication.CurrentWindow()
if currentWindow != nil {
currentWindow.Minimize()
currentWindow.Minimise()
}
})
}
@ -620,3 +620,13 @@ func newZoomMenuItem() *MenuItem {
}
})
}
func newFullScreenMenuItem() *MenuItem {
return newMenuItem("Fullscreen").
OnClick(func(ctx *Context) {
currentWindow := globalApplication.CurrentWindow()
if currentWindow != nil {
currentWindow.Fullscreen()
}
})
}

View File

@ -177,3 +177,7 @@ func newMinimizeMenuItem() *MenuItem {
func newZoomMenuItem() *MenuItem {
panic("implement me")
}
func newFullScreenMenuItem() *MenuItem {
panic("implement me")
}

View File

@ -703,6 +703,12 @@ static bool isFullScreen(void *window) {
return (mask & NSWindowStyleMaskFullScreen) == NSWindowStyleMaskFullScreen;
}
static bool isVisible(void *window) {
// get main window
WebviewWindow* nsWindow = (WebviewWindow*)window;
return (nsWindow.occlusionState & NSWindowOcclusionStateVisible) == NSWindowOcclusionStateVisible;
}
// windowSetFullScreen
static void windowSetFullScreen(void *window, bool fullscreen) {
if (isFullScreen(window)) {
@ -942,6 +948,14 @@ func (w *macosWebviewWindow) isFullscreen() bool {
})
}
func (w *macosWebviewWindow) isNormal() bool {
return !w.isMinimised() && !w.isMaximised() && !w.isFullscreen()
}
func (w *macosWebviewWindow) isVisible() bool {
return bool(C.isVisible(w.nsWindow))
}
func (w *macosWebviewWindow) syncMainThreadReturningBool(fn func() bool) bool {
var wg sync.WaitGroup
wg.Add(1)
@ -1147,10 +1161,12 @@ func (w *macosWebviewWindow) run() {
})
}
func (w *macosWebviewWindow) nativeWindowHandle() uintptr {
return uintptr(w.nsWindow)
}
func (w *macosWebviewWindow) setBackgroundColour(colour RGBA) {
if colour == nil {
return
}
C.windowSetBackgroundColour(w.nsWindow, C.int(colour.Red), C.int(colour.Green), C.int(colour.Blue), C.int(colour.Alpha))
}