1.11: scrolling at all breaks the URL pattern buffer (no URLs work) #14983

Closed
opened 2026-01-31 04:25:03 +00:00 by claunia · 3 comments
Owner

Originally created by @DHowett on GitHub (Aug 26, 2021).

Originally assigned to: @zadjii-msft on GitHub.

Windows Terminal version (or Windows build number)

1.11

Other Software

No response

Steps to reproduce

Emit a URL
Scroll -- even downwards off the bottom of the screen where you can't scroll

Expected Behavior

No response

Actual Behavior

URLs stop hovering!

Originally created by @DHowett on GitHub (Aug 26, 2021). Originally assigned to: @zadjii-msft on GitHub. ### Windows Terminal version (or Windows build number) 1.11 ### Other Software _No response_ ### Steps to reproduce Emit a URL Scroll -- even downwards off the bottom of the screen where you can't scroll ### Expected Behavior _No response_ ### Actual Behavior URLs stop hovering!
Author
Owner

@zadjii-msft commented on GitHub (Aug 26, 2021):

I knew there was no way that #9955 was totally done 😋

@zadjii-msft commented on GitHub (Aug 26, 2021): I knew there was no way that #9955 was totally done 😋
Author
Owner

@zadjii-msft commented on GitHub (Aug 26, 2021):

guh Even just scrolling the wheel (even if there's nowhere to scroll) will break this!

EDIT: Investigation notes:

  • The wheel will get us into this state without ever firing Terminal::UpdatePatternsUnderLock

c20eb9dad has most of a fix in it

@zadjii-msft commented on GitHub (Aug 26, 2021): _guh_ Even just scrolling the wheel (even if there's nowhere to scroll) will break this! EDIT: Investigation notes: * The wheel will get us into this state without ever firing `Terminal::UpdatePatternsUnderLock` c20eb9dad has most of a fix in it
Author
Owner

@zadjii-msft commented on GitHub (Aug 26, 2021):

In #9820, in TermControl::_ScrollPositionChanged, there was still a call to _updatePatternLocations->Run();. (TermControl.cpp:1655 on the right) https://github.com/microsoft/terminal/pull/9820/files#diff-c10bb023995e88dac6c1d786129284c454c2df739ea547ce462129dc86dc2697R1654

#10051 didn't change this

In #10187 I moved the _updatePatternLocations throttled func from termcontrol to controlcore. Places it existed before:

  • TermControl::_coreReceivedOutput: already matched by ControlCore::_connectionOutputHandler
  • TermControl::_ScrollbarChangeHandler
  • TermControl::_ScrollPositionChanged

There's an existing call in ControlCore::_terminalScrollPositionChanged.

I added a call to Run() to ControlCore::UserScrollViewport in c20eb9d.

I believe TermControl::_ScrollbarChangeHandler -> ControlCore::UserScrollViewport, and TermControl::_ScrollPositionChanged -> ControlCore::_terminalScrollPositionChanged

@zadjii-msft commented on GitHub (Aug 26, 2021): In #9820, in `TermControl::_ScrollPositionChanged`, there was still a call to `_updatePatternLocations->Run();`. (TermControl.cpp:1655 on the right) https://github.com/microsoft/terminal/pull/9820/files#diff-c10bb023995e88dac6c1d786129284c454c2df739ea547ce462129dc86dc2697R1654 #10051 didn't change this In #10187 I moved the `_updatePatternLocations` throttled func from termcontrol to controlcore. Places it existed before: * [x] `TermControl::_coreReceivedOutput`: already matched by ControlCore::_connectionOutputHandler * [ ] `TermControl::_ScrollbarChangeHandler` * [ ] `TermControl::_ScrollPositionChanged` There's an existing call in `ControlCore::_terminalScrollPositionChanged`. I added a call to `Run()` to `ControlCore::UserScrollViewport` in c20eb9d. I believe `TermControl::_ScrollbarChangeHandler` -> `ControlCore::UserScrollViewport`, and `TermControl::_ScrollPositionChanged` -> `ControlCore::_terminalScrollPositionChanged`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#14983