summaryrefslogtreecommitdiff
path: root/platform/platform-api/src/com/intellij/ui/AnActionButton.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-api/src/com/intellij/ui/AnActionButton.java')
-rw-r--r--platform/platform-api/src/com/intellij/ui/AnActionButton.java19
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());
+ }
+
+
+
+ }
}