gui/pkg/window/platform.go
Snider 23bf0302d3 feat(window): add file drop support to PlatformWindow interface
Adds OnFileDrop(handler func(paths []string, targetID string)) to PlatformWindow.
trackWindow() now wires file drop callbacks to ActionFilesDropped broadcasts.
Updates both exported MockWindow and unexported mockWindow with the new method.
Wails adapter maps WindowFilesDropped event with DroppedFiles and DropTargetDetails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:36:55 +00:00

69 lines
1.5 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
// Queries
Position() (int, int)
Size() (int, int)
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()
// 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
}