mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix popup position when invoked from list in main window
This commit is contained in:
@@ -24,14 +24,14 @@ import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.DataKey;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.impl.EditorComponentImpl;
|
||||
import com.intellij.openapi.ui.popup.JBPopup;
|
||||
import com.intellij.openapi.ui.popup.util.PopupUtil;
|
||||
import com.intellij.openapi.util.DimensionService;
|
||||
import com.intellij.ui.ScreenUtil;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -105,8 +105,9 @@ public class PopupPositionManager {
|
||||
final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
|
||||
if (focusOwner == null) return null;
|
||||
|
||||
if (focusOwner instanceof JBList) {
|
||||
return new PositionAdjuster(SwingUtilities.getWindowAncestor(focusOwner));
|
||||
JBPopup popup = PopupUtil.getPopupContainerFor(focusOwner);
|
||||
if (popup != null) {
|
||||
return new PositionAdjuster(popup.getContent());
|
||||
}
|
||||
|
||||
final Component existing = discoverPopup(LangDataKeys.POSITION_ADJUSTER_POPUP, focusOwner);
|
||||
@@ -114,8 +115,10 @@ public class PopupPositionManager {
|
||||
return new PositionAdjuster2(existing, discoverPopup(LangDataKeys.PARENT_POPUP, focusOwner));
|
||||
}
|
||||
|
||||
//final Window window = SwingUtilities.getWindowAncestor(focusOwner);
|
||||
//return window == null ? null : new PositionAdjuster(window);
|
||||
if (!(focusOwner instanceof EditorComponentImpl)) {
|
||||
return new PositionAdjuster(focusOwner);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user