[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
This commit is contained in:
Bogdan Kirilenko
2026-07-07 22:38:05 +00:00
committed by intellij-monorepo-bot
parent eeff548d96
commit c0567c7013
2 changed files with 20 additions and 4 deletions
@@ -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
}
}
@@ -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) {