Skip to content

Conversation

@carlos-zamora
Copy link
Member

Summary of the Pull Request

Fixes a bug where search would not scroll to results just below the viewport.

This was caused by code intended to scroll the search result in such a way that it isn't covered by the search box. The scroll offset is calculated in TermControl::_calculateSearchScrollOffset() then handed down in the SearchRequest when conducting a search. This would get to Terminal::ScrollToSearchHighlight() where the offset is applied to the search result's position so that we would scroll to the adjusted position.

The adjustment was overly aggressive in that it would apply it to both "start" and "end". In reality, we don't need to apply it to "end" because it wouldn't be covered by the search box (we only scroll to end if it's past the end of the current view anyways).

The fix applies the adjustment only to "start" and only does so if it's actually in the first few rows that would be covered by the search box.

That unveiled another bug where Terminal::_ScrollToPoints() would also be too aggressive about scrolling the "end" into view. In some testing, it would generally end up scrolling to the end of the buffer. To fix this cascading bug, I just had _ScrollToPoints() just call Terminal::_ScrollToPoint() (singular, not plural) which is consistently used throughout the Terminal code for selection (so it's battle tested).

_ScrollToPoints() was kept since it's still used for accessibility when selecting a new region to keep the new selection in view. It's also just a nice wrapper that ensures a range is visible (or at least as much as it could be).

References and Relevant Issues

Scroll offset was added in #17516

Validation Steps Performed

✅ search results that would be covered by the search box are still adjusted
✅ search results that are past the end of the view become visible
✅ UIA still selects properly and brings the selection into view

PR Checklist

Duncan reported this bug internally, but there doesn't seem to be one on the repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants