From 7664a574b5ab039501ee5cb984fa97389a4b4bd5 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Tue, 23 Oct 2012 15:03:22 +0400 Subject: [PATCH] IDEA-92048 Pop-up on hidden opening brace shows wrong line --- .../hint/EditorFragmentComponent.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/codeInsight/hint/EditorFragmentComponent.java b/platform/platform-impl/src/com/intellij/codeInsight/hint/EditorFragmentComponent.java index be359b04a7b3..5f4aff31a98e 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/hint/EditorFragmentComponent.java +++ b/platform/platform-impl/src/com/intellij/codeInsight/hint/EditorFragmentComponent.java @@ -42,9 +42,20 @@ public class EditorFragmentComponent extends JPanel { private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.hint.EditorFragmentComponent"); private EditorFragmentComponent(EditorEx editor, int startLine, int endLine, boolean showFolding, boolean showGutter) { + editor.setPurePaintingMode(true); + try { + doInit(editor, startLine, endLine, showFolding, showGutter); + } + finally { + editor.setPurePaintingMode(false); + } + } + + private void doInit(EditorEx editor, int startLine, int endLine, boolean showFolding, boolean showGutter) { Document doc = editor.getDocument(); final int endOffset = endLine < doc.getLineCount() ? doc.getLineEndOffset(endLine) : doc.getTextLength(); - final int textImageWidth = Math.min(editor.getMaxWidthInRange(doc.getLineStartOffset(startLine), endOffset), ScreenUtil.getScreenRectangle(1, 1).width); + final int textImageWidth = Math.min(editor.getMaxWidthInRange(doc.getLineStartOffset(startLine), endOffset), ScreenUtil + .getScreenRectangle(1, 1).width); LOG.assertTrue(textImageWidth > 0, "TextWidth: "+textImageWidth+"; startLine:" + startLine + "; endLine:" + endLine + ";"); FoldingModelEx foldingModel = editor.getFoldingModel(); @@ -97,13 +108,7 @@ public class EditorFragmentComponent extends JPanel { textGraphics.translate(0, -y1); textGraphics.setClip(0, y1, textImageWidth, textImageHeight); final boolean wasVisible = editor.setCaretVisible(false); - editor.setPurePaintingMode(true); - try { - editor.getContentComponent().paint(textGraphics); - } - finally { - editor.setPurePaintingMode(false); - } + editor.getContentComponent().paint(textGraphics); if (wasVisible) { editor.setCaretVisible(true); }