mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[RDCT] GTW-9280: Fix run popup sub-actions by storing run config id in a template presentation
GitOrigin-RevId: a33c1aa34f769d15d65889064e59a1dbc7b3443d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6baca570a5
commit
0afaa8ad4e
@@ -10,6 +10,7 @@ import com.intellij.execution.impl.EditConfigurationsDialog;
|
||||
import com.intellij.execution.impl.RunManagerImpl;
|
||||
import com.intellij.execution.runToolbar.RunToolbarSlotManager;
|
||||
import com.intellij.execution.ui.RedesignedRunWidgetKt;
|
||||
import com.intellij.execution.ui.RunToolbarPopupKt;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.idea.ActionsBundle;
|
||||
@@ -553,6 +554,7 @@ public class RunConfigurationsComboBoxAction extends ComboBoxAction implements D
|
||||
public SelectConfigAction(@NotNull Project project, @NotNull RunnerAndConfigurationSettings configuration) {
|
||||
myProject = project;
|
||||
myConfiguration = configuration;
|
||||
getTemplatePresentation().putClientProperty(RunToolbarPopupKt.RUN_CONFIGURATION_ID, myConfiguration.getUniqueID());
|
||||
// TODO remove when BackendAsyncActionHost.isNewActionUpdateEnabled is inlined
|
||||
if (ClientId.getCurrentOrNull() != null && !Registry.is("rdct.new.async.actions", true)) {
|
||||
Presentation p = getTemplatePresentation().clone();
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||
import com.intellij.openapi.ui.popup.PopupStep
|
||||
import com.intellij.openapi.ui.popup.StackingPopupDispatcher
|
||||
import com.intellij.openapi.ui.popup.util.PopupUtil
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
@@ -80,6 +81,9 @@ private val recentLimit: Int get() = AdvancedSettings.getInt("max.recent.run.con
|
||||
@JvmField
|
||||
val RUN_CONFIGURATION_KEY = DataKey.create<RunnerAndConfigurationSettings>("sub.popup.parent.action")
|
||||
|
||||
@JvmField
|
||||
internal val RUN_CONFIGURATION_ID: Key<String> = Key.create("sub.popup.run.configuration.unique.id")
|
||||
|
||||
private const val TAG_PINNED = "pinned"
|
||||
private const val TAG_RECENT = "recent"
|
||||
private const val TAG_REGULAR_HIDE = "regular-hide" // hidden behind "All configurations" toggle
|
||||
@@ -234,12 +238,17 @@ internal class RunConfigurationsActionGroupPopup(actionGroup: ActionGroup,
|
||||
serviceState = RunConfigurationStartHistory.getInstance(project)
|
||||
list.setExpandableItemsEnabled(false)
|
||||
(myStep as ActionPopupStep).setSubStepContextAdjuster { context, action ->
|
||||
if (action is SelectConfigAction) {
|
||||
CustomizedDataContext.withSnapshot(context) { sink ->
|
||||
sink[RUN_CONFIGURATION_KEY] = action.configuration
|
||||
val configuration = when {
|
||||
action is SelectConfigAction -> action.configuration
|
||||
else -> {
|
||||
action.templatePresentation.getClientProperty(RUN_CONFIGURATION_ID)?.let { configId ->
|
||||
RunManager.getInstance(project).allSettings.find { it.uniqueID == configId }
|
||||
} ?: return@setSubStepContextAdjuster context
|
||||
}
|
||||
}
|
||||
else context
|
||||
CustomizedDataContext.withSnapshot(context) { sink ->
|
||||
sink[RUN_CONFIGURATION_KEY] = configuration
|
||||
}
|
||||
}
|
||||
pinnedSize = (myStep as ActionPopupStep).values.asSequence()
|
||||
.filter { it.action !is Separator }
|
||||
|
||||
Reference in New Issue
Block a user