gui/pkg/window/platform.go
Virgil 77e03060ac
Some checks failed
Security Scan / security (push) Failing after 31s
Test / test (push) Successful in 1m28s
feat(window): expose visibility and minimized state
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 14:30:42 +00:00

74 lines
1.6 KiB
Go

// pkg/window/platform.go
package window
// Platform abstracts the windowing backend (Wails v3).
type Platform interface {
CreateWindow(opts PlatformWindowOptions) PlatformWindow
GetWindows() []PlatformWindow
}
// PlatformWindowOptions are the backend-specific options passed to CreateWindow.
type PlatformWindowOptions struct {
Name string
Title string
URL string
Width, Height int
X, Y int
MinWidth, MinHeight int
MaxWidth, MaxHeight int
Frameless bool
Hidden bool
AlwaysOnTop bool
BackgroundColour [4]uint8 // RGBA
DisableResize bool
EnableFileDrop bool
}
// PlatformWindow is a live window handle from the backend.
type PlatformWindow interface {
// Identity
Name() string
Title() string
// Queries
Position() (int, int)
Size() (int, int)
IsVisible() bool
IsMinimised() bool
IsMaximised() bool
IsFocused() bool
// Mutations
SetTitle(title string)
SetPosition(x, y int)
SetSize(width, height int)
SetBackgroundColour(r, g, b, a uint8)
SetVisibility(visible bool)
SetAlwaysOnTop(alwaysOnTop bool)
// Window state
Maximise()
Restore()
Minimise()
Focus()
Close()
Show()
Hide()
Fullscreen()
UnFullscreen()
OpenDevTools()
CloseDevTools()
// Events
OnWindowEvent(handler func(event WindowEvent))
// File drop
OnFileDrop(handler func(paths []string, targetID string))
}
// WindowEvent is emitted by the backend for window state changes.
type WindowEvent struct {
Type string // "focus", "blur", "move", "resize", "close"
Name string // window name
Data map[string]any
}