diff options
Diffstat (limited to 'platform/platform-api/src/com/intellij/ui/AnActionButton.java')
-rw-r--r-- | platform/platform-api/src/com/intellij/ui/AnActionButton.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/platform/platform-api/src/com/intellij/ui/AnActionButton.java b/platform/platform-api/src/com/intellij/ui/AnActionButton.java index 7c539b1bb2a4..d1c19df6e3ad 100644 --- a/platform/platform-api/src/com/intellij/ui/AnActionButton.java +++ b/platform/platform-api/src/com/intellij/ui/AnActionButton.java @@ -17,6 +17,7 @@ package com.intellij.ui; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.ui.awt.RelativePoint; import com.intellij.util.containers.SmartHashSet; import com.intellij.util.ui.UIUtil; @@ -187,7 +188,7 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide @Override public void actionPerformed(AnActionEvent e) { - myAction.actionPerformed(e); + myAction.actionPerformed(new AnActionEventWrapper(e, this)); } @Override @@ -205,4 +206,20 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide return myAction.isDumbAware(); } } + + public static class AnActionEventWrapper extends AnActionEvent { + private final AnActionButton myPeer; + + private AnActionEventWrapper(AnActionEvent e, AnActionButton peer) { + super(e.getInputEvent(), e.getDataContext(), e.getPlace(), e.getPresentation(), e.getActionManager(), e.getModifiers()); + myPeer = peer; + } + + public void showPopup(JBPopup popup) { + popup.show(myPeer.getPreferredPopupPoint()); + } + + + + } } |