Merged
Conversation
- GitScopeFileStatusProvider: use live ChangeListManager.getStatus() instead of cached localChangesMap so scope color is restored immediately after undo - LineStatusGutterMarkerRenderer/ScopeLineStatusMarkerRenderer: derive normal and hover thickness from lineMarkerAreaWidth (via getGutterArea() reflection) instead of hardcoded pixel values, fixing incorrect size on Linux - ScopeLineStatusMarkerRenderer: fix updateHoverState bounds to match paint/ canDoAction exactly; add mouseEntered to recover stuck hover state; add EditorFactoryListener for split editors; remove spurious invokeLater from installMouseListeners to fix timing race that left reopened files without mouse listeners - MyLineStatusTrackerImpl: wrap FileDocumentManager.getDocument() in runReadAction() to comply with IntelliJ threading rules - Gutter popup: use setBorderColor() on ComponentPopupBuilder so the popup window border is consistent across themes; add right padding to scope name label so text is not clipped against the panel edge when no diff is shown Fixes comod#88 Fixes comod#89
Mirrors IntelliJ's own VCS gutter popup behaviour (LineStatusMarkerPopupPanel.installMasterEditorWordHighlighters): - Line-level background highlight (dimmed 'ignored' variant) is added to the current editor lines covered by the open range so the diff context is immediately visible without scrolling the popup - Word-level inline highlights are layered on top for MODIFIED ranges, using the same ComparisonManager word diff already computed for the popup diff panel (offset2 = current-file side) - DELETED ranges are skipped — no current lines exist to highlight - All highlighters are scoped to a child Disposable of the popup lifetime and auto-removed when the popup closes - On prev/next navigation the per-range child disposable is replaced so the highlights always track the currently displayed range - Popup window border is now set via setBorderColor() on the builder for consistent appearance across themes; scope name label gets right padding so text does not sit flush against the panel edge when no diff is shown
Split the 1034-line ScopeLineStatusMarkerRenderer into three files following the same separation of concerns used by IntelliJ's own LineStatusMarkerRenderer / LineStatusMarkerPopupPanel split: - ScopeGutterHighlighterManager: owns the RangeHighlighter, error-stripe marks, gutter repaint, and the anonymous LineStatusGutterMarkerRenderer subclass (analogous to LineStatusMarkerRenderer) - ScopeGutterPopupPanel: builds the popup UI, toolbar actions, editor highlights, and rollback/copy operations (analogous to LineStatusMarkerPopupPanel); entirely original code, not derived from IntelliJ - ScopeLineStatusMarkerRenderer: trimmed to a pure orchestrator — hover state, mouse listeners, filler management, and public API only - rangeContainsY extracted as a package-level function in LineStatusGutterMarkerRenderer.kt so both the hover tracker and the gutter renderer can share it without a cross-class dependency - NOTICE updated to reflect the new file boundaries Also positions the gutter popup just below the last line of the clicked range so the changed text stays visible. Prev/next navigation does not reposition the window.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.