diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index 0df20d29aa37..ae91cbf886e5 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -146,7 +146,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { myHistoryViewer.getComponent().setPreferredSize(new Dimension(0, 0)); myConsoleEditor.getSettings().setAdditionalLinesCount(2); myConsoleEditor.setHighlighter(EditorHighlighterFactory.getInstance().createEditorHighlighter(myProject, myFile.getVirtualFile())); - myHistoryViewer.setCaretVisible(false); + myHistoryViewer.setCaretEnabled(false); myConsoleEditor.setHorizontalScrollbarVisible(true); final VisibleAreaListener areaListener = new VisibleAreaListener() { public void visibleAreaChanged(VisibleAreaEvent e) { diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java index 8c4865a897fa..b069234e1bd3 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java @@ -23,6 +23,7 @@ import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListPopup; import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -81,7 +82,11 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent new ActionListener() { public void actionPerformed(ActionEvent e) { if (!myForcePressed) { - showPopup(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(new Runnable() { + public void run() { + showPopup(); + } + }); } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java index ae1ede41ea4b..69c8cd6d29da 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java @@ -125,7 +125,9 @@ public class FocusManagerImpl extends IdeFocusManager implements Disposable { final ActionCallback result = new ActionCallback(); if (!forced) { - myFocusRequests.add(command); + if (!myFocusRequests.contains(command)) { + myFocusRequests.add(command); + } SwingUtilities.invokeLater(new Runnable() { public void run() { @@ -191,7 +193,7 @@ public class FocusManagerImpl extends IdeFocusManager implements Disposable { } }).doWhenProcessed(new Runnable() { public void run() { - resetCommand(command, true); + resetCommand(command, false); if (forced) { myForcedFocusRequestsAlarm.addRequest(new EdtRunnable() { @@ -220,6 +222,7 @@ public class FocusManagerImpl extends IdeFocusManager implements Disposable { if (!forced && !isUnforcedRequestAllowed()) { if (cmd.equals(lastRequest)) { + resetCommand(cmd, false); result.setDone(); } else { @@ -240,6 +243,9 @@ public class FocusManagerImpl extends IdeFocusManager implements Disposable { if (doNotExecuteBecauseAppIsInactive) { if (myCallbackOnActivation != null) { myCallbackOnActivation.setRejected(); + if (myFocusCommandOnAppActivation != null) { + resetCommand(myFocusCommandOnAppActivation, true); + } } myFocusCommandOnAppActivation = cmd; diff --git a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java index b3fda12ac47c..40abc8560c1e 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java @@ -139,7 +139,6 @@ public class PopupFactoryImpl extends JBPopupFactory { final int maxRowCount, final Condition preselectActionCondition) { final Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext); - LOG.assertTrue(component != null); final ActionStepBuilder builder = new ActionStepBuilder(dataContext, showNumbers, useAlphaAsNumbers, showDisabledActions, honorActionMnemonics); builder.buildGroup(actionGroup); @@ -389,7 +388,7 @@ public class PopupFactoryImpl extends JBPopupFactory { public Icon getIcon() { return myIcon; - } + } public boolean isPrependWithSeparator() { return myPrependWithSeparator; @@ -469,7 +468,10 @@ public class PopupFactoryImpl extends JBPopupFactory { public PopupStep onChosen(final ActionItem actionChoice, final boolean finalChoice) { if (!actionChoice.isEnabled()) return FINAL_CHOICE; final AnAction action = actionChoice.getAction(); - final DataContext dataContext = DataManager.getInstance().getDataContext(myContext); + DataManager mgr = DataManager.getInstance(); + + final DataContext dataContext = myContext != null ? mgr.getDataContext(myContext) : mgr.getDataContext(); + if (action instanceof ActionGroup && (!finalChoice || !((ActionGroup)action).canBePerformed())) { return JBPopupFactory.getInstance().createActionsStep((ActionGroup)action, dataContext, myEnableMnemonics, false, null, myContext, false); }