refactor(ax): dedupe window close events
Some checks failed
Security Scan / security (push) Failing after 29s
Test / test (push) Successful in 1m20s

This commit is contained in:
Virgil 2026-03-31 07:54:57 +00:00
parent 97c9d34f4f
commit 02b7fa9230
5 changed files with 22 additions and 3 deletions

View file

@ -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() {}

View file

@ -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 }

View file

@ -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
}

View file

@ -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})),

View file

@ -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"})