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>
64 lines
2.8 KiB
Go
64 lines
2.8 KiB
Go
package window
|
|
|
|
// MockPlatform is an exported mock for cross-package integration tests.
|
|
// For internal tests, use the unexported mockPlatform in mock_test.go.
|
|
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)
|
|
}
|