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:
parent
86a1de6788
commit
f4749db8b3
@ -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(""),
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -177,3 +177,7 @@ func newMinimizeMenuItem() *MenuItem {
|
||||
func newZoomMenuItem() *MenuItem {
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func newFullScreenMenuItem() *MenuItem {
|
||||
panic("implement me")
|
||||
}
|
||||
|
@ -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))
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user