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>
77 lines
3 KiB
Go
77 lines
3 KiB
Go
// pkg/window/mock_test.go
|
|
package window
|
|
|
|
type mockPlatform struct {
|
|
windows []*mockWindow
|
|
}
|
|
|
|
func newMockPlatform() *mockPlatform {
|
|
return &mockPlatform{}
|
|
}
|
|
|
|
func (m *mockPlatform) CreateWindow(opts PlatformWindowOptions) PlatformWindow {
|
|
w := &mockWindow{
|
|
name: opts.Name, title: opts.Title, url: opts.URL,
|
|
width: opts.Width, height: opts.Height,
|
|
x: opts.X, y: opts.Y,
|
|
}
|
|
m.windows = append(m.windows, w)
|
|
return w
|
|
}
|
|
|
|
func (m *mockPlatform) GetWindows() []PlatformWindow {
|
|
out := make([]PlatformWindow, len(m.windows))
|
|
for i, w := range m.windows {
|
|
out[i] = w
|
|
}
|
|
return out
|
|
}
|
|
|
|
type mockWindow struct {
|
|
name, title, url string
|
|
width, height, x, y int
|
|
maximised, focused bool
|
|
visible, alwaysOnTop bool
|
|
closed bool
|
|
eventHandlers []func(WindowEvent)
|
|
fileDropHandlers []func(paths []string, targetID string)
|
|
}
|
|
|
|
func (w *mockWindow) Name() string { return w.name }
|
|
func (w *mockWindow) Position() (int, int) { return w.x, w.y }
|
|
func (w *mockWindow) Size() (int, int) { return w.width, w.height }
|
|
func (w *mockWindow) IsMaximised() bool { return w.maximised }
|
|
func (w *mockWindow) IsFocused() bool { return w.focused }
|
|
func (w *mockWindow) SetTitle(title string) { w.title = title }
|
|
func (w *mockWindow) SetPosition(x, y int) { w.x = x; w.y = y }
|
|
func (w *mockWindow) SetSize(width, height int) { w.width = width; w.height = height }
|
|
func (w *mockWindow) SetBackgroundColour(r, g, b, a uint8) {}
|
|
func (w *mockWindow) SetVisibility(visible bool) { w.visible = visible }
|
|
func (w *mockWindow) SetAlwaysOnTop(alwaysOnTop bool) { w.alwaysOnTop = alwaysOnTop }
|
|
func (w *mockWindow) Maximise() { w.maximised = true }
|
|
func (w *mockWindow) Restore() { w.maximised = false }
|
|
func (w *mockWindow) Minimise() {}
|
|
func (w *mockWindow) Focus() { w.focused = true }
|
|
func (w *mockWindow) Close() { w.closed = true }
|
|
func (w *mockWindow) Show() { w.visible = true }
|
|
func (w *mockWindow) Hide() { w.visible = false }
|
|
func (w *mockWindow) Fullscreen() {}
|
|
func (w *mockWindow) UnFullscreen() {}
|
|
func (w *mockWindow) OnWindowEvent(handler func(WindowEvent)) { w.eventHandlers = append(w.eventHandlers, handler) }
|
|
func (w *mockWindow) OnFileDrop(handler func(paths []string, targetID string)) {
|
|
w.fileDropHandlers = append(w.fileDropHandlers, handler)
|
|
}
|
|
|
|
// emit fires a test event to all registered handlers.
|
|
func (w *mockWindow) emit(e WindowEvent) {
|
|
for _, h := range w.eventHandlers {
|
|
h(e)
|
|
}
|
|
}
|
|
|
|
// emitFileDrop simulates a file drop on the window.
|
|
func (w *mockWindow) emitFileDrop(paths []string, targetID string) {
|
|
for _, h := range w.fileDropHandlers {
|
|
h(paths, targetID)
|
|
}
|
|
}
|