From 98d9a90f7fd4d534df6481365bacb90d00fe5524 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 11 Sep 2012 19:26:23 +0400 Subject: [PATCH] IDEA-91365 'Open task' dropdown only drops down once --- .../intellij/tasks/actions/SwitchTaskAction.java | 14 ++++++++++++-- .../intellij/tasks/actions/SwitchTaskCombo.java | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskAction.java index 857e49ace87c..f2954c5b2b26 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskAction.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskAction.java @@ -17,10 +17,12 @@ package com.intellij.tasks.actions; import com.intellij.ide.DataManager; +import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.*; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Ref; import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.openapi.vcs.changes.LocalChangeList; @@ -52,11 +54,11 @@ public class SwitchTaskAction extends BaseTaskAction { DataContext dataContext = e.getDataContext(); final Project project = PlatformDataKeys.PROJECT.getData(dataContext); assert project != null; - final ListPopupImpl popup = createPopup(dataContext, true); + final ListPopupImpl popup = createPopup(dataContext, null, true); popup.showCenteredInCurrentWindow(project); } - public static ListPopupImpl createPopup(final DataContext dataContext, boolean withTitle) { + public static ListPopupImpl createPopup(final DataContext dataContext, @Nullable final Runnable onDispose, boolean withTitle) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); final Ref shiftPressed = Ref.create(false); final Ref componentRef = Ref.create(); @@ -98,6 +100,14 @@ public class SwitchTaskAction extends BaseTaskAction { }; final ListPopupImpl popup = (ListPopupImpl)JBPopupFactory.getInstance().createListPopup(step); + if (onDispose != null) { + Disposer.register(popup, new Disposable() { + @Override + public void dispose() { + onDispose.run(); + } + }); + } componentRef.set(popup.getComponent()); if (items.size() <= 2) { return popup; diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskCombo.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskCombo.java index a975a0e52e68..300981ef56ea 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskCombo.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SwitchTaskCombo.java @@ -66,7 +66,7 @@ public class SwitchTaskCombo extends ComboBoxAction implements DumbAware { @Override protected JBPopup createPopup(Runnable onDispose) { - return SwitchTaskAction.createPopup(DataManager.getInstance().getDataContext(this), false); + return SwitchTaskAction.createPopup(DataManager.getInstance().getDataContext(this), onDispose, false); } }; }