mirror of https://github.com/icsharpcode/ILSpy.git
Browse Source
Two costs on the gutter's hot path: The margin rebuilt its document-line -> glyph map on every Render, resolving each bookmark by scanning the document's reference segments. A scroll, a hover, or the 600 ms post-navigation pulse repaints many times a second, so this rescanned the references per bookmark per frame. Compute the map once and reuse it, clearing the cache only when the document or the bookmark set changes (the model's DebugInfo/References are set before the text, so the document-change hook sees them current). CanToggleBookmarkAtLine, called for every gutter line the pointer moves over, built a full bookmark including a captured editor view state -- a foldings snapshot, scroll offsets, and a tree-path walk -- only to test it for null. It now does an anchor-only check; the view state is captured only when a bookmark is actually created. Assisted-by: Claude:claude-opus-4-8:Claude Codepull/3839/head
3 changed files with 127 additions and 19 deletions
Loading…
Reference in new issue