mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Frame and editor background images: paint caret as sharp as text
This commit is contained in:
@@ -69,6 +69,7 @@ import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.openapi.wm.IdeGlassPane;
|
||||
import com.intellij.openapi.wm.ToolWindowAnchor;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
|
||||
import com.intellij.openapi.wm.impl.IdeBackgroundUtil;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
@@ -4719,21 +4720,22 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
|
||||
g.setColor(myScheme.getColor(EditorColors.CARET_COLOR));
|
||||
|
||||
Graphics2D originalG = IdeBackgroundUtil.getOriginalGraphics(g);
|
||||
if (!paintBlockCaret()) {
|
||||
if (UIUtil.isRetina()) {
|
||||
g.fillRect(x, y, mySettings.getLineCursorWidth(), lineHeight);
|
||||
} else {
|
||||
originalG.fillRect(x, y, mySettings.getLineCursorWidth(), lineHeight);
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i < mySettings.getLineCursorWidth(); i++) {
|
||||
UIUtil.drawLine(g, x + i, y, x + i, y + lineHeight - 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
Color caretColor = myScheme.getColor(EditorColors.CARET_COLOR);
|
||||
if (caretColor == null) caretColor = new JBColor(Gray._0, Gray._255);
|
||||
g.setColor(caretColor);
|
||||
g.fillRect(x, y, width, lineHeight - 1);
|
||||
originalG.fillRect(x, y, width, lineHeight - 1);
|
||||
final LogicalPosition startPosition = caret == null ? getCaretModel().getLogicalPosition() : caret.getLogicalPosition();
|
||||
final int offset = logicalPositionToOffset(startPosition);
|
||||
CharSequence chars = myDocument.getImmutableCharSequence();
|
||||
|
||||
@@ -25,12 +25,16 @@ import com.intellij.openapi.editor.ex.MarkupModelEx;
|
||||
import com.intellij.openapi.editor.ex.RangeHighlighterEx;
|
||||
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
|
||||
import com.intellij.openapi.editor.highlighter.HighlighterIterator;
|
||||
import com.intellij.openapi.editor.impl.*;
|
||||
import com.intellij.openapi.editor.impl.DocumentMarkupModel;
|
||||
import com.intellij.openapi.editor.impl.EditorComponentImpl;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.editor.impl.IterationState2;
|
||||
import com.intellij.openapi.editor.markup.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.impl.IdeBackgroundUtil;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.util.Processor;
|
||||
@@ -619,7 +623,8 @@ class EditorPainter {
|
||||
}
|
||||
}
|
||||
|
||||
private void paintCaretAt(Graphics2D g, int x, int y, int width) {
|
||||
private void paintCaretAt(Graphics2D g_, int x, int y, int width) {
|
||||
Graphics2D g = IdeBackgroundUtil.getOriginalGraphics(g_);
|
||||
Rectangle viewRectangle = myEditor.getScrollingModel().getVisibleArea();
|
||||
if (x - viewRectangle.x < 0) {
|
||||
return;
|
||||
|
||||
@@ -42,6 +42,11 @@ public class IdeBackgroundUtil {
|
||||
return withNamedPainters(g, "ide", component);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Graphics2D getOriginalGraphics(@NotNull Graphics g) {
|
||||
return g instanceof MyGraphics? ((MyGraphics)g).getDelegate() : (Graphics2D)g;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Graphics2D withNamedPainters(@NotNull Graphics g, @NotNull String paintersName, @NotNull final JComponent component) {
|
||||
JRootPane rootPane = component.getRootPane();
|
||||
|
||||
Reference in New Issue
Block a user