fix popup position when invoked from list in main window

This commit is contained in:
Dennis Ushakov
2018-01-29 17:38:25 +03:00
parent b52ea25e3f
commit 1329bdc92e
@@ -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;
}