From 4fc2b005a07270713c14fd9b605cd909bf3ade8e Mon Sep 17 00:00:00 2001 From: Maxim Kartashev Date: Tue, 26 Mar 2024 13:25:17 +0400 Subject: [PATCH] IDEA-349390 Wayland: git push dialog dropdown option misplaced GitOrigin-RevId: 6154e17269bcc606dae83fa9974ca92e666504cf --- .../src/com/intellij/ui/popup/AbstractPopup.java | 9 +++++++++ platform/util/ui/src/com/intellij/ui/JreHiDpiUtil.kt | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java index bbc00e3f0ed3..ee33f1bbb58b 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java @@ -1212,6 +1212,15 @@ public class AbstractPopup implements JBPopup, ScreenAreaConsumer, AlignedPopup popupOwner = root.getRootPane(); LOG.debug("popup owner fixed for JDK cache"); } + if (StartupUiUtil.isWaylandToolkit()) { + // targetBounds are "screen" coordinates, which in Wayland means that they + // are relative to the nearest toplevel (Window). + // But popups in Wayland are expected to be relative to popup's "owner"; + // let's re-set the owner to be that window. + popupOwner = popupOwner instanceof Window + ? popupOwner + : SwingUtilities.getWindowAncestor(popupOwner); + } if (LOG.isDebugEnabled()) { LOG.debug("expected preferred size: " + myContent.getPreferredSize()); } diff --git a/platform/util/ui/src/com/intellij/ui/JreHiDpiUtil.kt b/platform/util/ui/src/com/intellij/ui/JreHiDpiUtil.kt index df4154729519..3cb18a160cc5 100644 --- a/platform/util/ui/src/com/intellij/ui/JreHiDpiUtil.kt +++ b/platform/util/ui/src/com/intellij/ui/JreHiDpiUtil.kt @@ -5,6 +5,7 @@ import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.util.SystemInfoRt import com.intellij.ui.scale.JBUIScale.sysScale import com.intellij.ui.scale.isHiDPIEnabledAndApplicable +import com.intellij.util.ui.StartupUiUtil import org.jetbrains.annotations.TestOnly import java.awt.Graphics2D import java.awt.GraphicsConfiguration @@ -37,7 +38,7 @@ object JreHiDpiUtil { @JvmStatic fun isJreHiDPIEnabled(): Boolean { - if (SystemInfoRt.isMac) { + if (SystemInfoRt.isMac || StartupUiUtil.isWaylandToolkit()) { return true }