diff --git a/pkg/cmdrunner/cmdrunner.go b/pkg/cmdrunner/cmdrunner.go index d9710ae9..9209467d 100644 --- a/pkg/cmdrunner/cmdrunner.go +++ b/pkg/cmdrunner/cmdrunner.go @@ -949,7 +949,7 @@ func RemoteShowAllCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) func ScreenShowAllCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstore.UpdatePacket, error) { ids, err := resolveUiIds(ctx, pk, R_Session) - screenArr, err := sstore.GetSessionScreens(ctx, ids.SessionId) + screenArr, err := sstore.GetBareSessionScreens(ctx, ids.SessionId) if err != nil { return nil, fmt.Errorf("/screen:showall error getting screen list: %v", err) } diff --git a/pkg/cmdrunner/resolver.go b/pkg/cmdrunner/resolver.go index c2f1c375..c719ac31 100644 --- a/pkg/cmdrunner/resolver.go +++ b/pkg/cmdrunner/resolver.go @@ -280,7 +280,7 @@ func resolveUiIds(ctx context.Context, pk *scpacket.FeCommandPacketType, rtype i } func resolveSessionScreen(ctx context.Context, sessionId string, screenArg string, curScreenArg string) (*ResolveItem, error) { - screens, err := sstore.GetSessionScreens(ctx, sessionId) + screens, err := sstore.GetBareSessionScreens(ctx, sessionId) if err != nil { return nil, fmt.Errorf("could not retreive screens for session=%s: %v", sessionId, err) } @@ -349,11 +349,11 @@ func genericResolve(arg string, curArg string, items []ResolveItem, isNumeric bo if (isUuid && item.Id == arg) || (tryPuid && strings.HasPrefix(item.Id, arg)) { return &item, nil } - if !item.Hidden && item.Name != "" { + if item.Name != "" { if item.Name == arg { return &item, nil } - if strings.HasPrefix(item.Name, arg) { + if !item.Hidden && strings.HasPrefix(item.Name, arg) { prefixMatches = append(prefixMatches, item) } } diff --git a/pkg/sstore/dbops.go b/pkg/sstore/dbops.go index 5e91ae99..a6931e2e 100644 --- a/pkg/sstore/dbops.go +++ b/pkg/sstore/dbops.go @@ -354,8 +354,8 @@ func GetWindowById(ctx context.Context, sessionId string, windowId string) (*Win return rtnWindow, err } -// includes archived screens -func GetSessionScreens(ctx context.Context, sessionId string) ([]*ScreenType, error) { +// includes archived screens (does not include screen windows) +func GetBareSessionScreens(ctx context.Context, sessionId string) ([]*ScreenType, error) { var rtn []*ScreenType txErr := WithTx(ctx, func(tx *TxWrap) error { query := `SELECT * FROM screen WHERE sessionid = ? ORDER BY archived, screenidx, archivedts` @@ -907,7 +907,10 @@ func ArchiveScreen(ctx context.Context, sessionId string, screenId string) (Upda } update, session := MakeSingleSessionUpdate(sessionId) session.ActiveScreenId = newActiveScreenId - session.Screens = append(session.Screens, &ScreenType{SessionId: sessionId, ScreenId: screenId, Remove: true}) + newScreen, _ := GetScreenById(ctx, sessionId, screenId) + if newScreen != nil { + session.Screens = append(session.Screens, newScreen) + } return update, nil }