Skip to content

Commit 5608c11

Browse files
committed
feat(ui): enhance resize handling to maintain selected package visibility
1 parent beef721 commit 5608c11

3 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/interactive-ui.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ export class InteractiveUI {
253253
case 'resize':
254254
const heightChanged = stateManager.updateTerminalHeight(action.height)
255255
if (heightChanged) {
256-
stateManager.resetForResize()
256+
stateManager.resetForResize(filteredStates.length)
257257
} else {
258258
// Even if height didn't change, width might have changed
259259
// Force a full re-render to clear any wrapping issues

src/ui/state/navigation-manager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,9 @@ export class NavigationManager {
156156
if (targetVisualIndex < this.state.scrollOffset) {
157157
this.state.scrollOffset = targetVisualIndex
158158
}
159-
// Scrolling down: scroll down by 1 item (smooth scrolling)
159+
// Scrolling down: adjust scroll to keep item visible
160160
else if (visualIndex >= this.state.scrollOffset + this.maxVisibleItems) {
161-
this.state.scrollOffset += 1
161+
this.state.scrollOffset = visualIndex - this.maxVisibleItems + 1
162162
}
163163

164164
// Ensure scrollOffset doesn't go negative or beyond bounds

src/ui/state/state-manager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ export class StateManager {
272272
this.renderState.forceFullRender = isInitial
273273
}
274274

275-
resetForResize(): void {
276-
const totalItems = this.renderState.renderableItems.length || this.displayState.maxVisibleItems
275+
resetForResize(totalFilteredItems?: number): void {
276+
const totalItems = totalFilteredItems || this.renderState.renderableItems.length || this.displayState.maxVisibleItems
277277
this.navigationManager.resetForResize(totalItems)
278278
this.renderState.forceFullRender = true
279279
}

0 commit comments

Comments
 (0)