mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[Markdown][IDEA-326905] Use a local copy of the graphics object to ensure that antialiasing settings won't leak to other renderers
GitOrigin-RevId: 70898237564ab43dc95d68fc79b66114c0306f27
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5a26112b5e
commit
ad742eaf43
@@ -37,4 +37,13 @@ internal object GraphicsUtils {
|
||||
val arc = Arc2D.Double(x.toDouble(), y.toDouble(), width.toDouble(), height.toDouble(), start, 180.0, Arc2D.PIE)
|
||||
fill(arc)
|
||||
}
|
||||
|
||||
fun <T> Graphics2D.useCopy(block: (Graphics2D) -> T): T {
|
||||
val local = create() as Graphics2D
|
||||
try {
|
||||
return block(local)
|
||||
} finally {
|
||||
local.dispose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.actionSystem.ActionManager
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar
|
||||
import com.intellij.openapi.actionSystem.DataProvider
|
||||
import com.intellij.openapi.actionSystem.impl.ToolbarUtils
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.invokeLater
|
||||
import com.intellij.openapi.command.executeCommand
|
||||
@@ -29,11 +30,11 @@ import org.intellij.plugins.markdown.editor.tables.actions.TableActionKeys
|
||||
import org.intellij.plugins.markdown.editor.tables.actions.TableActionPlaces
|
||||
import org.intellij.plugins.markdown.editor.tables.selectColumn
|
||||
import org.intellij.plugins.markdown.editor.tables.ui.presentation.GraphicsUtils.clearOvalOverEditor
|
||||
import org.intellij.plugins.markdown.editor.tables.ui.presentation.GraphicsUtils.useCopy
|
||||
import org.intellij.plugins.markdown.lang.MarkdownTokenTypes
|
||||
import org.intellij.plugins.markdown.lang.psi.impl.MarkdownTable
|
||||
import org.intellij.plugins.markdown.lang.psi.impl.MarkdownTableRow
|
||||
import org.intellij.plugins.markdown.lang.psi.util.hasType
|
||||
import com.intellij.openapi.actionSystem.impl.ToolbarUtils
|
||||
import java.awt.*
|
||||
import java.awt.event.MouseEvent
|
||||
import java.lang.ref.WeakReference
|
||||
@@ -78,9 +79,11 @@ internal class HorizontalBarPresentation(private val editor: Editor, private val
|
||||
if (isInvalid) {
|
||||
return
|
||||
}
|
||||
GraphicsUtil.setupAntialiasing(graphics)
|
||||
GraphicsUtil.setupRoundedBorderAntialiasing(graphics)
|
||||
paintBars(graphics)
|
||||
graphics.useCopy { local ->
|
||||
GraphicsUtil.setupAntialiasing(local)
|
||||
GraphicsUtil.setupRoundedBorderAntialiasing(local)
|
||||
paintBars(local)
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString() = "HorizontalBarPresentation"
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.actionSystem.ActionManager
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar
|
||||
import com.intellij.openapi.actionSystem.DataProvider
|
||||
import com.intellij.openapi.actionSystem.impl.ToolbarUtils
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.invokeLater
|
||||
import com.intellij.openapi.command.executeCommand
|
||||
@@ -29,9 +30,9 @@ import org.intellij.plugins.markdown.editor.tables.actions.TableActionKeys
|
||||
import org.intellij.plugins.markdown.editor.tables.actions.TableActionPlaces
|
||||
import org.intellij.plugins.markdown.editor.tables.ui.presentation.GraphicsUtils.clearHalfOvalOverEditor
|
||||
import org.intellij.plugins.markdown.editor.tables.ui.presentation.GraphicsUtils.fillHalfOval
|
||||
import org.intellij.plugins.markdown.editor.tables.ui.presentation.GraphicsUtils.useCopy
|
||||
import org.intellij.plugins.markdown.lang.psi.impl.MarkdownTableRow
|
||||
import org.intellij.plugins.markdown.lang.psi.impl.MarkdownTableSeparatorRow
|
||||
import com.intellij.openapi.actionSystem.impl.ToolbarUtils
|
||||
import java.awt.Dimension
|
||||
import java.awt.Graphics2D
|
||||
import java.awt.Point
|
||||
@@ -101,9 +102,11 @@ internal class VerticalBarPresentation(
|
||||
if (!row.isValid || editor.isDisposed || boundsState == initialState) {
|
||||
return
|
||||
}
|
||||
GraphicsUtil.setupAntialiasing(graphics)
|
||||
GraphicsUtil.setupRoundedBorderAntialiasing(graphics)
|
||||
paintRow(graphics, rowLocation)
|
||||
graphics.useCopy { local ->
|
||||
GraphicsUtil.setupAntialiasing(local)
|
||||
GraphicsUtil.setupRoundedBorderAntialiasing(local)
|
||||
paintRow(local, rowLocation)
|
||||
}
|
||||
}
|
||||
|
||||
private fun calculateBarRect(location: RowLocation): Rectangle {
|
||||
|
||||
Reference in New Issue
Block a user