From c0567c70130911594b5e283af6c18c38dfa4dffb Mon Sep 17 00:00:00 2001 From: Bogdan Kirilenko Date: Thu, 18 Jun 2026 11:08:47 +0200 Subject: [PATCH] [minimap] PY-90183 adding 1px border to the minimap if it's inside scrollbar too fix border visibility for dark theme (cherry picked from commit 9da2020dbf277a125f73d351c3c06231f298c3fa) IJ-CR-210985 GitOrigin-RevId: 056dc520ba10ad5437d1607b33fc2aa3f9e26c29 --- .../ide/minimap/hover/MinimapHoverPresenter.kt | 18 +++++++++++++++++- .../factories/EditorSeparatorLayerFactory.kt | 6 +++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/minimap/hover/MinimapHoverPresenter.kt b/platform/platform-impl/src/com/intellij/ide/minimap/hover/MinimapHoverPresenter.kt index 6b0d1e644c2b..dd4f41bb315e 100644 --- a/platform/platform-impl/src/com/intellij/ide/minimap/hover/MinimapHoverPresenter.kt +++ b/platform/platform-impl/src/com/intellij/ide/minimap/hover/MinimapHoverPresenter.kt @@ -7,8 +7,10 @@ import com.intellij.ide.minimap.geometry.MinimapLineGeometryUtil import com.intellij.ide.minimap.render.MinimapRenderContext import com.intellij.openapi.editor.colors.EditorColors import com.intellij.ui.JBColor +import com.intellij.util.ui.JBUI import java.awt.Color import java.awt.Graphics2D +import java.awt.Rectangle import kotlin.math.roundToInt class MinimapHoverPresenter(private val panel: MinimapPanel) { @@ -40,7 +42,17 @@ class MinimapHoverPresenter(private val panel: MinimapPanel) { val context = lastContext ?: return val lineHeight = computeLineHeight(context) - hoverPainter.paint(graphics, target.rect, target.declarationWidth, lineHeight, hoverColor()) + val leftInset = hoverFrameLeftInset() + if (leftInset == 0) { + hoverPainter.paint(graphics, target.rect, target.declarationWidth, lineHeight, hoverColor()) + } + else { + val rect = Rectangle(target.rect) + rect.x += leftInset + rect.width = (rect.width - leftInset).coerceAtLeast(1) + val declarationWidth = (target.declarationWidth - leftInset).coerceAtLeast(1) + hoverPainter.paint(graphics, rect, declarationWidth, lineHeight, hoverColor()) + } } fun hide() { @@ -62,4 +74,8 @@ class MinimapHoverPresenter(private val panel: MinimapPanel) { return scheme.getAttributes(EditorColors.REFERENCE_HYPERLINK_COLOR)?.foregroundColor ?: JBColor.BLUE } + + private fun hoverFrameLeftInset(): Int { + return if (panel.settings.state.rightAligned) JBUI.scale(1) else 0 + } } diff --git a/platform/platform-impl/src/com/intellij/ide/minimap/layers/factories/EditorSeparatorLayerFactory.kt b/platform/platform-impl/src/com/intellij/ide/minimap/layers/factories/EditorSeparatorLayerFactory.kt index ec5d6712121a..ddcc1e9d0826 100644 --- a/platform/platform-impl/src/com/intellij/ide/minimap/layers/factories/EditorSeparatorLayerFactory.kt +++ b/platform/platform-impl/src/com/intellij/ide/minimap/layers/factories/EditorSeparatorLayerFactory.kt @@ -8,14 +8,14 @@ import com.intellij.ide.minimap.layers.MinimapLayerId import com.intellij.ide.minimap.layers.MinimapLayerIds import com.intellij.ide.minimap.layers.MinimapLayerRenderState import com.intellij.ide.minimap.settings.MinimapSettings -import com.intellij.openapi.ui.OnePixelDivider +import com.intellij.ui.JBColor import com.intellij.util.ui.JBUI import java.awt.Graphics2D internal class EditorSeparatorLayerFactory : MinimapLayerFactory { override val id: MinimapLayerId = MinimapLayerIds.EDITOR_SEPARATOR override val order: Int = 100 - private val leftBorder = JBUI.Borders.customLineLeft(OnePixelDivider.BACKGROUND) + private val leftBorder = JBUI.Borders.customLineLeft(JBColor.namedColor("EditorPane.splitBorder", JBColor.border())) override fun createLayer(panel: MinimapPanel): MinimapLayer { return object : MinimapLayer { @@ -24,7 +24,7 @@ internal class EditorSeparatorLayerFactory : MinimapLayerFactory { override fun isApplicable(state: MinimapLayerRenderState): Boolean { val minimapState = MinimapSettings.getInstance().state - return minimapState.rightAligned && minimapState.insideScrollbar + return minimapState.rightAligned } override fun paint(graphics: Graphics2D, state: MinimapLayerRenderState) {