refactor(ax): dedupe window close events
This commit is contained in:
parent
97c9d34f4f
commit
02b7fa9230
5 changed files with 22 additions and 3 deletions
|
|
@ -55,7 +55,12 @@ 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) Close() {
|
||||
w.closed = true
|
||||
for _, handler := range w.eventHandlers {
|
||||
handler(WindowEvent{Type: "close", Name: w.name})
|
||||
}
|
||||
}
|
||||
func (w *MockWindow) Show() { w.visible = true }
|
||||
func (w *MockWindow) Hide() { w.visible = false }
|
||||
func (w *MockWindow) Fullscreen() {}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,10 @@ func (w *mockWindow) Maximise() { w.maximised = true
|
|||
func (w *mockWindow) Restore() { w.maximised = false }
|
||||
func (w *mockWindow) Minimise() { w.minimised = true }
|
||||
func (w *mockWindow) Focus() { w.focused = true }
|
||||
func (w *mockWindow) Close() { w.closed = true }
|
||||
func (w *mockWindow) Close() {
|
||||
w.closed = true
|
||||
w.emit(WindowEvent{Type: "close", Name: w.name})
|
||||
}
|
||||
func (w *mockWindow) Show() { w.visible = true }
|
||||
func (w *mockWindow) Hide() { w.visible = false }
|
||||
func (w *mockWindow) Fullscreen() { w.fullscreened = true }
|
||||
|
|
|
|||
|
|
@ -275,7 +275,6 @@ func (s *Service) taskCloseWindow(name string) error {
|
|||
s.manager.State().CaptureState(platformWindow)
|
||||
platformWindow.Close()
|
||||
s.manager.Remove(name)
|
||||
_ = s.Core().ACTION(ActionWindowClosed{Name: name})
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ func (m *mockScreenPlatform) GetPrimary() *screen.Screen {
|
|||
|
||||
func newTestWindowServiceWithScreen(t *testing.T, screens []screen.Screen) (*Service, *core.Core) {
|
||||
t.Helper()
|
||||
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
||||
|
||||
c, err := core.New(
|
||||
core.WithService(screen.Register(&mockScreenPlatform{screens: screens})),
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ import (
|
|||
|
||||
func newTestWindowService(t *testing.T) (*Service, *core.Core) {
|
||||
t.Helper()
|
||||
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
||||
|
||||
c, err := core.New(
|
||||
core.WithService(Register(newMockPlatform())),
|
||||
core.WithServiceLock(),
|
||||
|
|
@ -108,9 +110,18 @@ func TestTaskCloseWindow_Good(t *testing.T) {
|
|||
_, c := newTestWindowService(t)
|
||||
_, _, _ = c.PERFORM(TaskOpenWindow{Window: Window{Name: "test"}})
|
||||
|
||||
var closedCount int
|
||||
c.RegisterAction(func(_ *core.Core, msg core.Message) error {
|
||||
if _, ok := msg.(ActionWindowClosed); ok {
|
||||
closedCount++
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
_, handled, err := c.PERFORM(TaskCloseWindow{Name: "test"})
|
||||
require.NoError(t, err)
|
||||
assert.True(t, handled)
|
||||
assert.Equal(t, 1, closedCount)
|
||||
|
||||
// Verify window is removed
|
||||
result, _, _ := c.QUERY(QueryWindowByName{Name: "test"})
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue