diff --git a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupPanel.java b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupPanel.java index d29138b70658..f3fbad199887 100644 --- a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupPanel.java +++ b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupPanel.java @@ -141,9 +141,14 @@ public class LineStatusMarkerPopupPanel extends JPanel { // Space for horizontal scrollbar size.height += JBUI.scale(20); } - if (size.height > maxSize.height) { - size.height = maxSize.height; + + Rectangle panelRect = new Rectangle(new Point(0, 0), size); + Rectangle rectangle = SwingUtilities.convertRectangle(this, panelRect, window); + + if (rectangle.y + size.height > maxSize.height) { + size.height = maxSize.height - rectangle.y; } + return size; } diff --git a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt index 213def23a611..1ba6cc6abb8a 100644 --- a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt +++ b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt @@ -76,9 +76,7 @@ internal class LineStatusMarkerPopupService { } private fun showHint(hint: LightweightHint, editor: Editor, point: Point) { - val parent = editor.getComponent().rootPane - val hintHint = HintHint(editor, point) - hint.show(parent, point.x, point.y, editor.getComponent(), hintHint) + HintManagerImpl.doShowInGivenLocation(hint, editor, point, HintHint(editor, point), true) } companion object { diff --git a/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java b/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java index da700509bdb9..f48a10de1c82 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java @@ -213,7 +213,8 @@ public class HintManagerImpl extends HintManager { ClientHintManager.getCurrentInstance().showHint(component, p, flags, timeout, onHintHidden); } - static void doShowInGivenLocation(final LightweightHint hint, final Editor editor, Point p, HintHint hintInfo, boolean updateSize) { + @ApiStatus.Internal + public static void doShowInGivenLocation(final LightweightHint hint, final Editor editor, Point p, HintHint hintInfo, boolean updateSize) { if (ApplicationManager.getApplication().isUnitTestMode()) return; JComponent externalComponent = getExternalComponent(editor);