From 45fa6942f7e249c70863cb5d6722ed9a2912bf83 Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 14:36:08 +0000 Subject: [PATCH] feat(window): expose visibility in window lists Co-Authored-By: Virgil --- pkg/display/display_test.go | 11 +++++++++++ pkg/window/service.go | 9 ++++++++- pkg/window/service_test.go | 11 +++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/display/display_test.go b/pkg/display/display_test.go index 3c2aa1d..47a07c4 100644 --- a/pkg/display/display_test.go +++ b/pkg/display/display_test.go @@ -465,9 +465,20 @@ func TestListWindowInfos_Good(t *testing.T) { _ = svc.OpenWindow(window.WithName("win-1")) _ = svc.OpenWindow(window.WithName("win-2")) + _ = svc.MinimizeWindow("win-2") infos := svc.ListWindowInfos() assert.Len(t, infos, 2) + + byName := make(map[string]window.WindowInfo, len(infos)) + for _, info := range infos { + byName[info.Name] = info + } + + assert.True(t, byName["win-1"].Visible) + assert.False(t, byName["win-1"].Minimized) + assert.False(t, byName["win-2"].Visible) + assert.True(t, byName["win-2"].Minimized) } func TestSetWindowPosition_Good(t *testing.T) { diff --git a/pkg/window/service.go b/pkg/window/service.go index b98ab52..f52c710 100644 --- a/pkg/window/service.go +++ b/pkg/window/service.go @@ -102,7 +102,14 @@ func (s *Service) queryWindowList() []WindowInfo { x, y := pw.Position() w, h := pw.Size() result = append(result, WindowInfo{ - Name: name, Title: pw.Title(), X: x, Y: y, Width: w, Height: h, + Name: name, + Title: pw.Title(), + X: x, + Y: y, + Width: w, + Height: h, + Visible: pw.IsVisible(), + Minimized: pw.IsMinimised(), Maximized: pw.IsMaximised(), Focused: pw.IsFocused(), }) diff --git a/pkg/window/service_test.go b/pkg/window/service_test.go index 883e2a0..08d3f4d 100644 --- a/pkg/window/service_test.go +++ b/pkg/window/service_test.go @@ -78,12 +78,23 @@ func TestQueryWindowList_Good(t *testing.T) { _, c := newTestWindowService(t) _, _, _ = c.PERFORM(TaskOpenWindow{Opts: []WindowOption{WithName("a")}}) _, _, _ = c.PERFORM(TaskOpenWindow{Opts: []WindowOption{WithName("b")}}) + _, _, _ = c.PERFORM(TaskMinimise{Name: "b"}) result, handled, err := c.QUERY(QueryWindowList{}) require.NoError(t, err) assert.True(t, handled) list := result.([]WindowInfo) assert.Len(t, list, 2) + + byName := make(map[string]WindowInfo, len(list)) + for _, info := range list { + byName[info.Name] = info + } + + assert.True(t, byName["a"].Visible) + assert.False(t, byName["a"].Minimized) + assert.False(t, byName["b"].Visible) + assert.True(t, byName["b"].Minimized) } func TestQueryWindowByName_Good(t *testing.T) {