From 556290b4063aae9c2d9fc107b9f3c65f6cd0839b Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Tue, 21 Feb 2017 21:01:59 +0300 Subject: [PATCH] Proper focus requests through the IDE focus subsystem. Part II. --- .../images/editor/impl/ImageEditorUI.java | 5 ++- .../thumbnail/impl/ThumbnailViewUI.java | 7 ++- .../options/ProcessedModulesTable.java | 15 +++++-- .../options/ExcludedEntriesConfigurable.java | 7 ++- .../debugger/ui/InstanceFilterEditor.java | 7 ++- .../debugger/ui/impl/DebuggerTreePanel.java | 7 ++- .../facet/impl/ui/FacetEditorImpl.java | 7 ++- .../ide/projectWizard/ChooseTemplateStep.java | 7 ++- .../importProject/ProjectLayoutPanel.java | 3 +- .../newProjectWizard/SourcePathsStep.java | 7 ++- .../classpath/ClasspathPanelImpl.java | 8 +++- .../libraryEditor/LibraryRootsComponent.java | 11 +++-- .../options/ImportLayoutPanel.java | 7 ++- .../ChangeClassSignatureDialog.java | 3 +- .../JavaChangeSignatureDialog.java | 11 +++-- .../MoveClassesOrPackagesDialog.java | 15 +++++-- .../naming/AutomaticUsageRenamingDialog.java | 7 ++- .../util/xml/ui/PsiClassTableCellEditor.java | 20 ++++++++- .../advHighlighting/Unreachable.java | 1 - .../EnumWithAbstractMethods.java | 1 - .../EnumWithAbstractMethods.java | 1 - .../extractMethod/TypeParamsList.java | 1 - .../extractMethod/TypeParamsList_after.java | 1 - .../ui/classFilter/ClassFilterEditor.java | 11 +++-- .../src/MasterPasswordDialog.java | 5 ++- .../codeInspection/ui/ListEditForm.java | 7 ++- .../openapi/projectRoots/ui/PathEditor.java | 5 ++- .../AbstractDescriptionAwareSchemesPanel.java | 14 +++--- .../documentation/DocumentationComponent.java | 15 ++++--- .../documentation/DocumentationManager.java | 6 ++- .../impl/config/IntentionSettingsTree.java | 7 ++- .../logging/LogConfigurationPanel.java | 11 +++-- .../actions/ShowRunningListAction.java | 12 ++++-- .../execution/console/DuplexConsoleView.java | 7 ++- .../console/LanguageConsoleImpl.java | 7 ++- .../execution/impl/RunConfigurable.java | 11 +++-- .../ReplaceInProjectManager.java | 7 ++- .../impl/FrameworkDetectionManager.java | 3 +- .../ide/actions/SearchEverywhereAction.java | 14 ++++-- .../ide/commander/CommanderPanel.java | 19 +++++--- .../impl/FileTemplateConfigurable.java | 11 +++-- .../ide/hierarchy/HierarchyBrowserBaseEx.java | 7 ++- .../navigationToolbar/NavBarListWrapper.java | 7 ++- .../impl/AbstractProjectViewPane.java | 7 ++- .../ide/scopeView/ScopeTreeViewPanel.java | 7 ++- .../util/AbstractTreeClassChooserDialog.java | 8 +++- .../internal/psiView/PsiViewerDialog.java | 8 +++- .../fileTypes/impl/FileTypeConfigurable.java | 19 +++++--- .../configuration/ContentEntryTreeEditor.java | 5 ++- .../openapi/util/registry/RegistryUi.java | 13 +++--- .../changeSignature/DefaultValueChooser.java | 7 ++- .../refactoring/ui/EnableDisableAction.java | 7 ++- .../refactoring/util/RadioUpDownListener.java | 8 +++- .../com/intellij/tools/BaseToolsPanel.java | 23 +++++++--- .../src/com/intellij/tools/FilterDialog.java | 5 ++- .../intellij/tools/OutputFiltersDialog.java | 23 +++++++--- .../com/intellij/tools/ToolEditorDialog.java | 3 +- .../debugger/extensions/PlaybackDebugger.java | 11 +++-- .../packaging/ManagePackagesDialog.java | 7 ++- .../openapi/ui/ComponentWithBrowseButton.java | 7 ++- .../openapi/ui/FixedComboBoxEditor.java | 7 ++- .../intellij/openapi/ui/InputException.java | 7 ++- .../openapi/ui/MasterDetailsComponent.java | 5 ++- .../openapi/ui/popup/PopupChooserBuilder.java | 12 ++++-- .../wm/PassThroughIdeFocusManager.java | 6 ++- .../src/com/intellij/ui/EditableRowTable.java | 20 ++++++--- .../src/com/intellij/ui/JBIntSpinner.java | 7 ++- .../src/com/intellij/ui/OrderPanel.java | 11 +++-- .../src/com/intellij/ui/SearchTextField.java | 7 ++- .../intellij/ui/TableToolbarDecorator.java | 15 +++++-- .../com/intellij/ui/TreeToolbarDecorator.java | 7 ++- .../ui/components/ValidatingTextField.java | 7 ++- .../ui/components/panels/Wrapper.java | 15 +++++-- .../ui/speedSearch/ListWithFilter.java | 7 ++- .../com/intellij/ui/tabs/impl/JBTabsImpl.java | 14 ++++-- .../com/intellij/util/ui/tree/TreeUtil.java | 8 +++- .../src/com/intellij/ide/SwingCleanuper.java | 7 ++- .../customize/CustomizeIDEWizardDialog.java | 7 ++- .../ide/util/MultiStateElementsChooser.java | 15 +++++-- .../openapi/diff/ex/DiffPanelOptions.java | 11 +++-- .../openapi/diff/impl/DiffPanelImpl.java | 12 ++++-- .../openapi/diff/impl/DiffSideView.java | 9 +++- .../impl/incrementalMerge/ui/MergePanel2.java | 7 ++- .../editor/impl/EditorMarkupModelImpl.java | 5 ++- .../fileChooser/ex/FileChooserDialogImpl.java | 7 ++- .../fileChooser/ex/FileTextFieldImpl.java | 8 ++-- .../fileEditor/impl/EditorComposite.java | 7 ++- .../openapi/fileEditor/impl/EditorWindow.java | 6 ++- .../keymap/impl/ui/KeyboardShortcutPanel.java | 20 ++++++--- .../ui/impl/GlassPaneDialogWrapperPeer.java | 5 ++- .../openapi/wm/impl/IdeGlassPaneImpl.java | 9 +++- .../openapi/wm/impl/ProjectWindowAction.java | 7 ++- .../impl/welcomeScreen/FlatWelcomeFrame.java | 23 ++++++---- .../welcomeScreen/NewRecentProjectPanel.java | 5 ++- .../welcomeScreen/RecentProjectPanel.java | 5 ++- .../com/intellij/ui/EditorComboBoxEditor.java | 7 ++- .../src/com/intellij/ui/EditorTextField.java | 17 ++++++-- .../com/intellij/ui/TabbedPaneWrapper.java | 23 +++++++--- .../ui/TableCellEditorWithButton.java | 7 ++- .../ui/content/impl/ContentManagerImpl.java | 8 +++- .../intellij/ui/mac/MacPathChooserDialog.java | 9 +++- .../intellij/ui/messages/SheetController.java | 8 +++- .../intellij/ui/messages/SheetMessage.java | 10 ++++- .../com/intellij/ui/plaf/beg/BegListUI.java | 10 +++-- .../com/intellij/ui/plaf/beg/BegTableUI.java | 11 +++-- .../com/intellij/ui/popup/AbstractPopup.java | 6 ++- .../CellEditorComponentWithBrowseButton.java | 7 ++- .../util/ui/CheckBoxListModelEditor.java | 7 ++- .../util/ui/table/TableModelEditor.java | 15 +++++-- .../plugin/ui/EditVarConstraintsDialog.java | 29 +++++++++++-- .../RenameRefactoringDialogFixture.java | 7 ++- .../util/src/com/intellij/util/ui/UIUtil.java | 1 + .../StandardVersionFilterComponent.java | 9 ++-- .../committed/ChangeListGroupingStrategy.java | 4 +- .../changes/ui/NewEditChangelistPanel.java | 7 ++- .../vcs/history/FileHistoryPanelImpl.java | 7 ++- .../openapi/vcs/ui/CommitMessage.java | 7 ++- .../breakpoints/ui/XSuspendPolicyPanel.java | 11 +++-- .../xdebugger/impl/ui/DebuggerUIUtil.java | 8 +++- .../impl/ui/tree/TreeInplaceEditor.java | 9 +++- .../src/com/siyeh/ig/ui/UiUtils.java | 9 +++- .../IfStatementWithIdenticalBranches.java | 17 +++++++- .../TestCaseWithConstructorInspection2.java | 16 ++++++- .../config/execution/AntBuildMessageView.java | 8 +++- .../config/impl/configuration/AntUIUtil.java | 7 ++- .../com/intellij/ide/commander/Commander.java | 14 +++--- .../coverage/CoverageConfigurable.java | 7 ++- .../actions/ActionOnSelectedElement.java | 3 +- .../ssh/ui/SshConnectionSettingsPanel.java | 7 ++- .../cvsSupport2/cvsBrowser/CvsTree.java | 7 ++- .../ui/DateOrRevisionOrTagSettings.java | 11 +++-- .../ui/experts/SelectLocationStep.java | 7 ++- .../cvsSupport2/ui/experts/WizardStep.java | 7 ++- .../importToCvs/CvsFieldValidator.java | 11 +++-- .../GroovyMapParameterDialog.java | 7 ++- .../changeSignature/TableWithButtons.java | 19 +++++--- .../constant/GrIntroduceConstantDialog.java | 7 ++- .../javaFX/packaging/JavaFxAntTaskTest.java | 1 - .../execution/MavenSelectProjectPopup.java | 7 ++- ...seSubsequentPropertyValueEditorAction.java | 7 ++- .../MultipleRootEditorWithSplitter.java | 7 ++- .../update/SvnIntegrateRootOptionsPanel.java | 11 +++-- .../svn/update/SvnUpdateRootOptionsPanel.java | 7 ++- .../intellij/tasks/actions/SearchSupport.java | 8 ++-- .../palette/PaletteGroupComponent.java | 43 +++++++++++-------- .../palette/PaletteItemsComponent.java | 11 +++-- .../palette/impl/PaletteComponentList.java | 11 +++-- .../ide/palette/impl/PaletteGroupHeader.java | 36 +++++++++------- .../uiDesigner/actions/MorphAction.java | 7 ++- .../DesignDropTargetListener.java | 7 ++- .../designSurface/GridCaptionPanel.java | 8 ++-- .../propertyInspector/PropertyInspector.java | 7 ++- .../editors/BindingEditor.java | 15 ++++--- .../properties/ClassToBindProperty.java | 7 ++- .../xpathView/ui/ExpressionCellEditor.java | 5 ++- .../plugins/xpathView/ui/MultilineEditor.java | 5 ++- .../edu/coursecreator/settings/CCOptions.java | 9 +++- .../editor/actions/IpnbRunAllCellsAction.java | 5 ++- .../ipnb/editor/panels/IpnbEditablePanel.java | 5 ++- .../ipnb/editor/panels/IpnbFilePanel.java | 5 ++- .../intentions/PyAnnotateTypesIntention.java | 3 +- .../introduce/PyIntroduceDialog.java | 7 ++- .../util/xml/ui/EditorTextFieldControl.java | 7 ++- 163 files changed, 1073 insertions(+), 429 deletions(-) diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java index 86df94a1d95e..072f8199c7a3 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java @@ -25,6 +25,7 @@ import com.intellij.openapi.ide.CopyPasteManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; import com.intellij.ui.IdeBorderFactory; @@ -460,7 +461,9 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, private class FocusRequester extends MouseAdapter { public void mousePressed(@NotNull MouseEvent e) { - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(ImageEditorUI.this, true); + }); } } diff --git a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java index dd9b485d6816..e5e8f2d271eb 100644 --- a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java +++ b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.*; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -613,7 +614,9 @@ final class ThumbnailViewUI extends JPanel implements DataProvider, Disposable { private class FocusRequester extends MouseAdapter { public void mouseClicked(MouseEvent e) { - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(ThumbnailViewUI.this, true); + }); } } } diff --git a/java/compiler/impl/src/com/intellij/compiler/options/ProcessedModulesTable.java b/java/compiler/impl/src/com/intellij/compiler/options/ProcessedModulesTable.java index d5339f94dd9a..05d2956f7f47 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/ProcessedModulesTable.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/ProcessedModulesTable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.ChooseModulesDialog; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.SpeedSearchBase; import com.intellij.ui.SpeedSearchComparator; import com.intellij.ui.TableUtil; @@ -140,7 +141,9 @@ public class ProcessedModulesTable extends JPanel { public void addModule(Module element, String dirName) { myTableModel.addElement(element, dirName); selectRow(myTableModel.getRowCount() - 1); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } public void removeModule(Module element) { @@ -161,7 +164,9 @@ public class ProcessedModulesTable extends JPanel { myTable.getSelectionModel().clearSelection(); } } - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } public void removeAllElements() { @@ -204,7 +209,9 @@ public class ProcessedModulesTable extends JPanel { final int[] rows = getElementsRows(elements); TableUtil.selectRows(myTable, rows); TableUtil.scrollSelectionToVisible(myTable); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } private int[] getElementsRows(final Collection elements) { diff --git a/java/compiler/openapi/src/com/intellij/openapi/compiler/options/ExcludedEntriesConfigurable.java b/java/compiler/openapi/src/com/intellij/openapi/compiler/options/ExcludedEntriesConfigurable.java index a6f1191429a2..f5d336516302 100644 --- a/java/compiler/openapi/src/com/intellij/openapi/compiler/options/ExcludedEntriesConfigurable.java +++ b/java/compiler/openapi/src/com/intellij/openapi/compiler/options/ExcludedEntriesConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vcs.FileStatusManager; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.table.JBTable; @@ -227,7 +228,9 @@ public class ExcludedEntriesConfigurable implements UnnamedConfigurable, NoScrol if(indexToSelect >= 0) { myExcludedTable.setRowSelectionInterval(indexToSelect, indexToSelect); } - myExcludedTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myExcludedTable, true); + }); } protected JComponent createMainComponent(){ diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java index b4ea92616d3f..683ea4f0be5d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import com.intellij.debugger.DebuggerBundle; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.InputValidatorEx; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.classFilter.ClassFilter; import com.intellij.ui.classFilter.ClassFilterEditor; import com.intellij.util.IconUtil; @@ -72,7 +73,9 @@ public class InstanceFilterEditor extends ClassFilterEditor { myTable.getSelectionModel().setSelectionInterval(row, row); myTable.scrollRectToVisible(myTable.getCellRect(row, 0, true)); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java index d5664b7e8732..6578093b729d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; import com.intellij.ui.PopupHandler; import com.intellij.util.SingleAlarm; @@ -131,6 +132,8 @@ public abstract class DebuggerTreePanel extends UpdatableDebuggerView implements @Override public void requestFocus() { - getTree().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getTree(), true); + }); } } diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/FacetEditorImpl.java b/java/idea-ui/src/com/intellij/facet/impl/ui/FacetEditorImpl.java index e86600280e97..f7f791367ecc 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/FacetEditorImpl.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/FacetEditorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.options.UnnamedConfigurableGroup; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.TabbedPaneWrapper; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; @@ -119,7 +120,9 @@ public class FacetEditorImpl extends UnnamedConfigurableGroup implements Unnamed if (preferredFocusedComponent != null) { ApplicationManager.getApplication().invokeLater(() -> { if (preferredFocusedComponent.isShowing()) { - preferredFocusedComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(preferredFocusedComponent, true); + }); } }); } diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java index 5f8c144a8ead..cee4c108fd1d 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package com.intellij.ide.projectWizard; import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.WizardContext; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.components.JBCheckBox; import org.jetbrains.annotations.TestOnly; @@ -45,7 +46,9 @@ public class ChooseTemplateStep extends ModuleWizardStep { public void actionPerformed(ActionEvent e) { myTemplateList.setEnabled(myCreateFromTemplateCheckBox.isSelected()); if (myCreateFromTemplateCheckBox.isSelected()) { - myTemplateList.getList().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTemplateList.getList(), true); + }); } } }); diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java b/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java index 1715e7539739..219ae8ca059f 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -397,7 +397,6 @@ abstract class ProjectLayoutPanel extends JPanel { myEntriesChooser.sort(COMPARATOR); myEntriesChooser.selectElements(Collections.singleton(extracted)); } - ; } } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java index c18d2e001d1b..bd7034e68a8c 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,7 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.FieldPanel; import com.intellij.util.StringBuilderSpinAllocator; @@ -153,7 +154,9 @@ public class SourcePathsStep extends AbstractStepWithProgress { + IdeFocusManager.getGlobalInstance().requestFocus(myTfSourceDirectoryName, true); + }); } } }); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java index b7734043972c..6223bc5b0da5 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -88,6 +88,8 @@ import java.awt.event.MouseEvent; import java.util.*; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.classpath.ClasspathPanelImpl"); private final JBTable myEntryTable; @@ -541,7 +543,9 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { } finally { enableModelUpdate(); - myEntryTable.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myEntryTable, true); + }); } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java index af8bf9cdbaf3..7781a4fe0c09 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,6 +45,7 @@ import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.AnActionButton; import com.intellij.ui.AnActionButtonRunnable; import com.intellij.ui.ToolbarDecorator; @@ -421,7 +422,9 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent myLastChosen = first.getFile(); } fireLibraryChanged(); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } protected abstract List selectRoots(@Nullable VirtualFile initialSelection); @@ -476,7 +479,9 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent updatePropertiesLabel(); myTreeBuilder.queueUpdate(); if (putFocusIntoTree) { - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } fireLibraryChanged(); } diff --git a/java/java-impl/src/com/intellij/application/options/ImportLayoutPanel.java b/java/java-impl/src/com/intellij/application/options/ImportLayoutPanel.java index 58f946d0a87b..23e236fdf0d3 100644 --- a/java/java-impl/src/com/intellij/application/options/ImportLayoutPanel.java +++ b/java/java-impl/src/com/intellij/application/options/ImportLayoutPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.openapi.actionSystem.CommonShortcuts; import com.intellij.openapi.actionSystem.ShortcutSet; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.editor.markup.TextAttributes; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.codeStyle.PackageEntry; import com.intellij.psi.codeStyle.PackageEntryTable; import com.intellij.ui.*; @@ -392,7 +393,9 @@ public abstract class ImportLayoutPanel extends JPanel { TableUtil.editCellAt(table, selectedRow, 0); Component editorComp = table.getEditorComponent(); if (editorComp != null) { - editorComp.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editorComp, true); + }); } } } diff --git a/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java index ad9d4d7f3eed..8f22f895ea01 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -103,7 +103,6 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { myTypeParameterInfos.add(p.getInfo()); myBoundValueTypeCodeFragments.add(p.getBoundValueFragment()); myDefaultValueTypeCodeFragments.add(p.getDefaultValueFragment()); - ; } myTableModel = new MyTableModel(); diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java index 44017c160566..8fe37301bc70 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.SuggestedNameInfo; @@ -523,11 +524,15 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase { + IdeFocusManager.getGlobalInstance().requestFocus(myReturnTypeField, true); + }); return RefactoringBundle.message("changeSignature.wrong.return.type", myReturnTypeCodeFragment.getText()); } catch (PsiTypeCodeFragment.NoTypeException e) { - myReturnTypeField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myReturnTypeField, true); + }); return RefactoringBundle.message("changeSignature.no.return.type"); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java index 43cb5371857b..8d4e39cf570b 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Pass; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.ProjectScope; @@ -116,7 +117,9 @@ public class MoveClassesOrPackagesDialog extends MoveDialogBase { myInnerClassChooser.setText(((PsiClass)initialTargetElement).getQualifiedName()); - ApplicationManager.getApplication().invokeLater(() -> myInnerClassChooser.requestFocus(), ModalityState.stateForComponent(myMainPanel)); + ApplicationManager.getApplication().invokeLater(() -> IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myInnerClassChooser, true); + }), ModalityState.stateForComponent(myMainPanel)); } else if (initialTargetElement instanceof PsiPackage) { myClassPackageChooser.setText(((PsiPackage)initialTargetElement).getQualifiedName()); @@ -126,13 +129,17 @@ public class MoveClassesOrPackagesDialog extends MoveDialogBase { myToPackageRadioButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { updateControlsEnabled(); - myClassPackageChooser.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myClassPackageChooser, true); + }); } }); myMakeInnerClassOfRadioButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { updateControlsEnabled(); - myInnerClassChooser.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myInnerClassChooser, true); + }); } }); diff --git a/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java b/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java index 08ac2c2f7ae8..3b2aee03c64b 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.refactoring.RefactoringBundle; import com.intellij.ui.*; import com.intellij.ui.components.panels.ValidatingComponent; @@ -400,7 +401,9 @@ public class AutomaticUsageRenamingDialog extends DialogWrapper { myShouldRename[row] = !myShouldRename[row]; fireTableDataChanged(); repaintTable(); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } } } diff --git a/java/java-impl/src/com/intellij/util/xml/ui/PsiClassTableCellEditor.java b/java/java-impl/src/com/intellij/util/xml/ui/PsiClassTableCellEditor.java index aa96b8c93483..87264c0c4b59 100644 --- a/java/java-impl/src/com/intellij/util/xml/ui/PsiClassTableCellEditor.java +++ b/java/java-impl/src/com/intellij/util/xml/ui/PsiClassTableCellEditor.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.util.xml.ui; import com.intellij.ide.util.TreeClassChooser; @@ -7,6 +22,7 @@ import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.FixedSizeButton; import com.intellij.openapi.util.Conditions; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.EditorTextField; @@ -83,7 +99,9 @@ public class PsiClassTableCellEditor extends AbstractTableCellEditor { panel.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { if (!e.isTemporary() && myEditor != null) { - myEditor.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditor, true); + }); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/Unreachable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/Unreachable.java index 63d879b477cf..2cedd96888c6 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/Unreachable.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/Unreachable.java @@ -211,7 +211,6 @@ interface ii {} } } } - ; } void cf8() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnumWithAbstractMethods.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnumWithAbstractMethods.java index 1abae6b17a2d..ecab51f881b8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnumWithAbstractMethods.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnumWithAbstractMethods.java @@ -5,7 +5,6 @@ C { void foo() {} } - ; abstract void foo(); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/EnumWithAbstractMethods.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/EnumWithAbstractMethods.java index 1abae6b17a2d..ecab51f881b8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/EnumWithAbstractMethods.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/EnumWithAbstractMethods.java @@ -5,7 +5,6 @@ C { void foo() {} } - ; abstract void foo(); } diff --git a/java/java-tests/testData/refactoring/extractMethod/TypeParamsList.java b/java/java-tests/testData/refactoring/extractMethod/TypeParamsList.java index e752fbf74a49..2666e03c2295 100644 --- a/java/java-tests/testData/refactoring/extractMethod/TypeParamsList.java +++ b/java/java-tests/testData/refactoring/extractMethod/TypeParamsList.java @@ -6,6 +6,5 @@ class Test { System.out.println(variable); } } - ; } } \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/TypeParamsList_after.java b/java/java-tests/testData/refactoring/extractMethod/TypeParamsList_after.java index 8c545b8d08fa..091fe750b7a7 100644 --- a/java/java-tests/testData/refactoring/extractMethod/TypeParamsList_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/TypeParamsList_after.java @@ -6,7 +6,6 @@ class Test { newMethod(variable); } } - ; } private void newMethod(T variable) { diff --git a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java index 70636d55a8aa..1d465e755e36 100644 --- a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java +++ b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeClassChooserFactory; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; @@ -306,7 +307,9 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText myTable.getSelectionModel().setSelectionInterval(row, row); myTable.scrollRectToVisible(myTable.getCellRect(row, 0, true)); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } } } @@ -323,7 +326,9 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText myTable.getSelectionModel().setSelectionInterval(row, row); myTable.scrollRectToVisible(myTable.getCellRect(row, 0, true)); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } } diff --git a/platform/credential-store/src/MasterPasswordDialog.java b/platform/credential-store/src/MasterPasswordDialog.java index 6fc71f087083..b369ee29d7a2 100644 --- a/platform/credential-store/src/MasterPasswordDialog.java +++ b/platform/credential-store/src/MasterPasswordDialog.java @@ -18,6 +18,7 @@ package com.intellij.credentialStore; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -68,7 +69,9 @@ public class MasterPasswordDialog extends DialogWrapper { else { setErrorText(info.message + " " + StringUtil.repeat(".", myRetriesCount), myRootPanel); if (info.component != null) { - info.component.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(info.component, true); + }); } if (++myRetriesCount > NUMBER_OF_RETRIES) { super.doCancelAction(); diff --git a/platform/lang-api/src/com/intellij/codeInspection/ui/ListEditForm.java b/platform/lang-api/src/com/intellij/codeInspection/ui/ListEditForm.java index 389751cf6d9d..d158418573c9 100644 --- a/platform/lang-api/src/com/intellij/codeInspection/ui/ListEditForm.java +++ b/platform/lang-api/src/com/intellij/codeInspection/ui/ListEditForm.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.codeInspection.ui; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.AnActionButton; import com.intellij.ui.AnActionButtonRunnable; import com.intellij.ui.TableUtil; @@ -51,7 +52,9 @@ public class ListEditForm { final Component component = editor.getTableCellEditorComponent(table, null, true, lastRowIndex, 0); - component.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(component, true); + }); }); } }) diff --git a/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java index 4567cfa5171d..8d509dfe56fe 100644 --- a/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java +++ b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java @@ -31,6 +31,7 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.ex.http.HttpFileSystem; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.components.JBList; import com.intellij.util.PlatformIcons; @@ -226,7 +227,9 @@ public class PathEditor { protected void requestDefaultFocus() { if (myList != null) { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/application/options/schemes/AbstractDescriptionAwareSchemesPanel.java b/platform/lang-impl/src/com/intellij/application/options/schemes/AbstractDescriptionAwareSchemesPanel.java index d36180578dae..41b205d7262c 100644 --- a/platform/lang-impl/src/com/intellij/application/options/schemes/AbstractDescriptionAwareSchemesPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/schemes/AbstractDescriptionAwareSchemesPanel.java @@ -61,14 +61,18 @@ public abstract class AbstractDescriptionAwareSchemesPanel ext @Override public void actionPerformed(ActionEvent e) { showDescription(); - getConfigurableFocusComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getConfigurableFocusComponent(), true); + }); } }, ESC_KEY_STROKE, JComponent.WHEN_FOCUSED); myDescriptionTextField.registerKeyboardAction(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { applyDescription(); - getConfigurableFocusComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getConfigurableFocusComponent(), true); + }); } }, ENTER_KEY_STROKE, JComponent.WHEN_FOCUSED); @@ -123,9 +127,9 @@ public abstract class AbstractDescriptionAwareSchemesPanel ext public void editDescription(@Nullable String startValue) { myLayout.show(myInfoComponent, EDIT_DESCRIPTION_CARD); myDescriptionTextField.setText(StringUtil.notNullize(startValue)); - - final IdeFocusManager fm = IdeFocusManager.getGlobalInstance(); - fm.doWhenFocusSettlesDown(() -> fm.requestFocus(myDescriptionTextField, true)); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myDescriptionTextField, true); + }); } @NotNull diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java index 12ac267e4033..a76e2c5d16c2 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,6 +44,7 @@ import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiElement; @@ -187,10 +188,14 @@ public class DocumentationComponent extends JPanel implements Disposable, DataPr public void requestFocus() { // With a screen reader active, set the focus directly to the editor because // it makes it easier for users to read/navigate the documentation contents. - if (ScreenReader.isActive()) - myEditorPane.requestFocus(); - else - myScrollPane.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + if (ScreenReader.isActive()) { + IdeFocusManager.getGlobalInstance().requestFocus(myEditorPane, true); + } + else { + IdeFocusManager.getGlobalInstance().requestFocus(myScrollPane, true); + } + }); } public DocumentationComponent(final DocumentationManager manager, final AnAction[] additionalActions) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 92f26dd03345..e1ce690cd003 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -81,6 +81,8 @@ import java.lang.ref.WeakReference; import java.util.*; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class DocumentationManager extends DockablePopupManager { @NonNls public static final String JAVADOC_LOCATION_AND_SIZE = "javadoc.popup"; public static final DataKey SELECTED_QUICK_DOC_TEXT = DataKey.create("QUICK_DOC.SELECTED_TEXT"); @@ -993,7 +995,9 @@ public class DocumentationManager extends DockablePopupManager { + getGlobalInstance().requestFocus(myPreviouslyFocused.getParent(), true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java index cb1d8d77f8d4..b5593f3d6d7a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.packageDependencies.ui.TreeExpansionMonitor; import com.intellij.ui.*; import com.intellij.util.ArrayUtil; @@ -371,7 +372,9 @@ public abstract class IntentionSettingsTree { } SwingUtilities.invokeLater(() -> { myTree.setSelectionRow(0); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); }); TreeUtil.expandAll(myTree); if (filter == null || filter.length() == 0) { diff --git a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java index fa5e2e36045e..97e3e28e2f0e 100644 --- a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java +++ b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.table.TableView; @@ -125,7 +126,9 @@ public class LogConfigurationPanel extends Setti if (selection >= 0) { myFilesTable.setRowSelectionInterval(selection, selection); } - myFilesTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFilesTable, true); + }); } }).setEditAction(new AnActionButtonRunnable() { @Override @@ -424,7 +427,9 @@ public class LogConfigurationPanel extends Setti showEditorDialog(myLogFileOptions); JTextField textField = getChildComponent(); textField.setText(myLogFileOptions.getName()); - textField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(textField, true); + }); myModel.fireTableDataChanged(); } }); diff --git a/platform/lang-impl/src/com/intellij/execution/actions/ShowRunningListAction.java b/platform/lang-impl/src/com/intellij/execution/actions/ShowRunningListAction.java index c822744bd829..6dd77e161536 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/ShowRunningListAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/ShowRunningListAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.Trinity; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.WindowManagerEx; @@ -44,13 +45,14 @@ import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; -import javax.swing.Timer; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Set; public class ShowRunningListAction extends AnAction { public ShowRunningListAction() { @@ -109,7 +111,9 @@ public class ShowRunningListAction extends AnAction { Project aProject = (Project)((Trinity)value).first; JFrame aFrame = WindowManager.getInstance().getFrame(aProject); if (aFrame != null && !aFrame.isActive()) { - aFrame.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(aFrame, true); + }); } ExecutionManagerImpl.getInstance(aProject).getContentManager(). toFrontRunContent((Executor)((Trinity)value).second, (RunContentDescriptor)((Trinity)value).third); diff --git a/platform/lang-impl/src/com/intellij/execution/console/DuplexConsoleView.java b/platform/lang-impl/src/com/intellij/execution/console/DuplexConsoleView.java index ad7f2f9ee6e8..4e968c5ace0e 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/DuplexConsoleView.java +++ b/platform/lang-impl/src/com/intellij/execution/console/DuplexConsoleView.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import com.intellij.openapi.editor.actions.ToggleUseSoftWrapsToolbarAction; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; @@ -116,7 +117,9 @@ public class DuplexConsoleView ext CardLayout cl = (CardLayout)(getLayout()); cl.show(this, primary ? PRIMARY_CONSOLE_PANEL : SECONDARY_CONSOLE_PANEL); - getSubConsoleView(primary).getComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getSubConsoleView(primary).getComponent(), true); + }); myPrimary = primary; } 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 6c13f4f36d6f..cf9552f66cf8 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,6 +51,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.GlobalSearchScope; @@ -218,7 +219,9 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons @Override public void keyTyped(KeyEvent event) { if (isConsoleEditorEnabled() && UIUtil.isReallyTypedEvent(event)) { - myConsoleEditor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myConsoleEditor.getContentComponent(), true); + }); myConsoleEditor.processKeyTyped(event); } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java index d5715378c889..b8fdbebf3f9e 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,6 +63,7 @@ import java.util.List; import static com.intellij.execution.impl.RunConfigurable.NodeKind.*; import static com.intellij.openapi.ui.LabeledComponent.create; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; import static com.intellij.ui.RowsDnDSupport.RefinedDropSupport.Position.*; class RunConfigurable extends BaseConfigurable { @@ -361,7 +362,9 @@ class RunConfigurable extends BaseConfigurable { textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - myTree.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myTree, true); + }); } }); p.add(new JLabel("Folder name:"), "gapright 5"); @@ -373,7 +376,9 @@ class RunConfigurable extends BaseConfigurable { myRightPanel.repaint(); if (isFolderCreating) { textField.selectAll(); - textField.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(textField, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java b/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java index ac72feb4b95d..7c88e7a8cfbb 100644 --- a/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java +++ b/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,6 +41,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.ReadonlyStatusHandler; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.WindowManager; import com.intellij.psi.PsiDocumentManager; @@ -488,7 +489,9 @@ public class ReplaceInProjectManager { final UsageView usageView = replaceContext.getUsageView(); if (closeUsageViewIfEmpty(usageView, success)) return; - usageView.getComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(usageView.getComponent(), true); + }); }, FindBundle.message("find.replace.command"), null); replaceContext.invalidateExcludedSetCache(); diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java index 71b38444f189..27bbafc1a18a 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -257,7 +257,6 @@ public class FrameworkDetectionManager extends AbstractProjectComponent implemen final int detectorId = FrameworkDetectorRegistry.getInstance().getDetectorId(description.getDetector()); myDetectedFrameworksData.putExistentFrameworkFiles(detectorId, description.getRelatedFiles()); } - ; } } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java index 5cb8a77b4bd6..ba2cef4eae0a 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java @@ -132,6 +132,8 @@ import java.util.List; import java.util.Vector; import java.util.concurrent.atomic.AtomicBoolean; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * @author Konstantin Bulenkov */ @@ -293,7 +295,9 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA final int i = myList.locationToIndex(e.getPoint()); if (i != -1) { mySkipFocusGain = true; - getField().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(getField(), true); + }); //noinspection SSBasedInspection SwingUtilities.invokeLater(() -> { myList.setSelectedIndex(i); @@ -402,7 +406,9 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA } if (myNonProjectCheckBox == e.getOppositeComponent()) { mySkipFocusGain = true; - editor.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(editor, true); + }); return; } onFocusLost(); @@ -497,7 +503,9 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA option.setOptionState(!option.isOptionEnabled()); myList.revalidate(); myList.repaint(); - getField().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(getField(), true); + }); return; } diff --git a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java index 46e3a7cdcf8e..a1c55aaa4e86 100644 --- a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,6 +41,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiDirectory; @@ -300,12 +301,16 @@ public class CommanderPanel extends JPanel { myTitlePanel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(final MouseEvent e) { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } @Override public void mousePressed(final MouseEvent e) { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } }); } @@ -398,7 +403,9 @@ public class CommanderPanel extends JPanel { if (selectedIndices.length == 0 && myList.getModel().getSize() > 0) { myList.setSelectedIndex(0); if (!myList.hasFocus()) { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } } else if (myList.getModel().getSize() > 0) { @@ -418,7 +425,9 @@ public class CommanderPanel extends JPanel { final int popupIndex = myList.locationToIndex(new Point(x, y)); if (popupIndex >= 0) { myList.setSelectedIndex(popupIndex); - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateConfigurable.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateConfigurable.java index 8d3438342c36..d75973263027 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateConfigurable.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,6 +47,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; @@ -448,11 +449,15 @@ public class FileTemplateConfigurable implements Configurable, Configurable.NoSc public void focusToNameField() { myNameField.selectAll(); - myNameField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myNameField, true); + }); } public void focusToExtensionField() { myExtensionField.selectAll(); - myExtensionField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myExtensionField, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java index f50fd8b23ad2..9db7d54a116e 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.pom.Navigatable; import com.intellij.psi.*; import com.intellij.psi.search.scope.packageSet.NamedScope; @@ -377,7 +378,9 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem } } - getCurrentTree().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getCurrentTree(), true); + }); } @SuppressWarnings("deprecation") diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarListWrapper.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarListWrapper.java index bbf70c4e483c..9ad6677d99b8 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarListWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarListWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package com.intellij.ide.navigationToolbar; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ScrollingUtil; import com.intellij.ui.components.JBScrollPane; import com.intellij.util.ui.UIUtil; @@ -88,7 +89,9 @@ class NavBarListWrapper extends JBScrollPane implements DataProvider { @Override public void requestFocus() { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } @Override diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java index d8cea1c90c66..ea641a23c22e 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,6 +43,7 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.util.*; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ToolWindowId; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.pom.Navigatable; @@ -183,7 +184,9 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl TreePath treePath = new TreePath(node.getPath()); myTree.expandPath(treePath); if (requestFocus) { - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } TreeUtil.selectPath(myTree, treePath); } diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java index bb8b5520a810..b6062b0ae7b7 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,6 +61,7 @@ import com.intellij.openapi.vcs.FileStatusManager; import com.intellij.openapi.vcs.changes.*; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.packageDependencies.DefaultScopesProvider; import com.intellij.packageDependencies.DependencyValidationManager; @@ -228,7 +229,9 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { if (node != null) { TreeUtil.selectPath(myTree, new TreePath(node.getPath())); if (requestFocus) { - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java b/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java index f88562be89a6..7e4a948b141d 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiDirectory; @@ -257,7 +258,10 @@ public abstract class AbstractTreeClassChooserDialog protected void initUI(ChooseByNamePopupComponent.Callback callback, ModalityState modalityState, boolean allowMultipleSelection) { super.initUI(callback, modalityState, allowMultipleSelection); dummyPanel.add(myGotoByNamePanel.getPanel(), BorderLayout.CENTER); - IdeFocusTraversalPolicy.getPreferredFocusedComponent(myGotoByNamePanel.getPanel()).requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance() + .requestFocus(IdeFocusTraversalPolicy.getPreferredFocusedComponent(myGotoByNamePanel.getPanel()), true); + }); } @Override diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java index 69856378a32c..41644a5d2afc 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -101,6 +101,8 @@ import java.util.*; import java.util.List; import java.util.regex.Pattern; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * @author Konstantin Bulenkov */ @@ -225,7 +227,9 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp doOKAction(); ApplicationManager.getApplication().invokeLater(() -> { - myEditor.getContentComponent().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myEditor.getContentComponent(), true); + }); myEditor.getCaretModel().moveToOffset(selectedEditor.getCaretModel().getOffset()); myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); //myEditor.getSelectionModel().setSelection(selectedEditor.getSelectionModel().getSelectionStart(), diff --git a/platform/lang-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable.java b/platform/lang-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable.java index 7af9bdc1cc0e..c18d074a73e1 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.templateLanguages.TemplateDataLanguagePatterns; import com.intellij.ui.*; import com.intellij.ui.components.JBList; @@ -302,7 +303,9 @@ public class FileTypeConfigurable extends BaseConfigurable implements Searchable if (index >= 0) { ScrollingUtil.selectItem(myPatterns.myPatternsList, index); } - myPatterns.myPatternsList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPatterns.myPatternsList, true); + }); } } @@ -334,7 +337,9 @@ public class FileTypeConfigurable extends BaseConfigurable implements Searchable myTempPatternsTable.addAssociation(matcher, type); myPatterns.addPatternAndSelect(pattern); - myPatterns.myPatternsList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPatterns.myPatternsList, true); + }); return null; } @@ -347,7 +352,9 @@ public class FileTypeConfigurable extends BaseConfigurable implements Searchable FileNameMatcher matcher = FileTypeManager.parseFromString(extension); myTempPatternsTable.removeAssociation(matcher, type); - myPatterns.myPatternsList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPatterns.myPatternsList, true); + }); } @Override @@ -525,7 +532,9 @@ public class FileTypeConfigurable extends BaseConfigurable implements Searchable public void selectFileType(FileType fileType) { myFileTypesList.setSelectedValue(fileType, true); - myFileTypesList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFileTypesList, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java index e2547cdd3b17..3819d82f44b2 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java @@ -43,6 +43,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.TreeSpeedSearch; import com.intellij.ui.treeStructure.Tree; @@ -202,7 +203,9 @@ public class ContentEntryTreeEditor { } public void requestFocus() { - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } public void update() { diff --git a/platform/lang-impl/src/com/intellij/openapi/util/registry/RegistryUi.java b/platform/lang-impl/src/com/intellij/openapi/util/registry/RegistryUi.java index bfa2c6050a12..f74940a127fc 100644 --- a/platform/lang-impl/src/com/intellij/openapi/util/registry/RegistryUi.java +++ b/platform/lang-impl/src/com/intellij/openapi/util/registry/RegistryUi.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.ShadowAction; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.table.JBTable; import com.intellij.util.PlatformIcons; @@ -210,11 +211,11 @@ public class RegistryUi implements Disposable { private void startEditingAtSelection() { myTable.editCellAt(myTable.getSelectedRow(), 2); - SwingUtilities.invokeLater(() -> { - if (myTable.isEditing()) { - myTable.getEditorComponent().requestFocus(); - } - }); + if (myTable.isEditing()) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable.getEditorComponent(), true); + }); + } } private static class MyTableModel extends AbstractTableModel { diff --git a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/DefaultValueChooser.java b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/DefaultValueChooser.java index 7c5e6c1c7c02..e838fb38ae21 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/DefaultValueChooser.java +++ b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/DefaultValueChooser.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.intellij.refactoring.changeSignature; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.MultiLineLabelUI; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.refactoring.util.RadioUpDownListener; import com.intellij.ui.EditorTextField; @@ -47,7 +48,9 @@ public class DefaultValueChooser extends DialogWrapper{ myValueEditor.setEnabled(myUseValueRadioButton.isSelected()); if (myUseValueRadioButton.isSelected()) { myValueEditor.selectAll(); - myValueEditor.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myValueEditor, true); + }); } } }; diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/EnableDisableAction.java b/platform/lang-impl/src/com/intellij/refactoring/ui/EnableDisableAction.java index 4d5f3dcce735..c7b32aacf06a 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/ui/EnableDisableAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/EnableDisableAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.refactoring.ui; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NonNls; import javax.swing.*; @@ -41,7 +42,9 @@ public abstract class EnableDisableAction extends AbstractAction { applyValue(rows, valueToBeSet); // myMyTableModel.fireTableRowsUpdated(rows[0], rows[rows.length - 1]); } - getTable().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getTable(), true); + }); } protected abstract JTable getTable(); diff --git a/platform/lang-impl/src/com/intellij/refactoring/util/RadioUpDownListener.java b/platform/lang-impl/src/com/intellij/refactoring/util/RadioUpDownListener.java index 97ee05fea6b8..4a4a60885777 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/util/RadioUpDownListener.java +++ b/platform/lang-impl/src/com/intellij/refactoring/util/RadioUpDownListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,8 @@ package com.intellij.refactoring.util; +import com.intellij.openapi.wm.IdeFocusManager; + import javax.swing.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; @@ -75,7 +77,9 @@ public class RadioUpDownListener extends KeyAdapter { private static boolean click(final JRadioButton button) { if (button.isEnabled() && button.isVisible()) { - button.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(button, true); + }); button.doClick(); return true; } diff --git a/platform/lang-impl/src/com/intellij/tools/BaseToolsPanel.java b/platform/lang-impl/src/com/intellij/tools/BaseToolsPanel.java index 017710bc5a15..bb1c570f8d1e 100644 --- a/platform/lang-impl/src/com/intellij/tools/BaseToolsPanel.java +++ b/platform/lang-impl/src/com/intellij/tools/BaseToolsPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.options.CompoundScheme; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.util.ArrayUtil; import com.intellij.util.PlatformIcons; @@ -140,7 +141,9 @@ public abstract class BaseToolsPanel extends JPanel { if (dlg.showAndGet()) { insertNewTool(dlg.getData(), true); } - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } }).setRemoveAction(new AnActionButtonRunnable() { @Override @@ -151,7 +154,9 @@ public abstract class BaseToolsPanel extends JPanel { @Override public void run(AnActionButton button) { editSelected(); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } }).setMoveUpAction(new AnActionButtonRunnable() { @Override @@ -178,7 +183,9 @@ public abstract class BaseToolsPanel extends JPanel { if (dlg.showAndGet()) { insertNewTool(dlg.getData(), true); } - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } } }).createPanel(), BorderLayout.CENTER); @@ -285,7 +292,9 @@ public abstract class BaseToolsPanel extends JPanel { TreePath path = new TreePath(node.getPath()); myTree.getSelectionModel().setSelectionPath(path); myTree.expandPath(path); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } } } @@ -422,7 +431,9 @@ public abstract class BaseToolsPanel extends JPanel { removeNodeFromParent(node); } update(); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/tools/FilterDialog.java b/platform/lang-impl/src/com/intellij/tools/FilterDialog.java index 55b1630a9099..7bc00f98f75f 100644 --- a/platform/lang-impl/src/com/intellij/tools/FilterDialog.java +++ b/platform/lang-impl/src/com/intellij/tools/FilterDialog.java @@ -22,6 +22,7 @@ import com.intellij.execution.filters.RegexpFilter; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.JBPopupMenu; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.PopupHandler; import com.intellij.util.ui.JBUI; @@ -191,7 +192,9 @@ class FilterDialog extends DialogWrapper { } } catch (BadLocationException ex) { } - myRegexpField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myRegexpField, true); + }); } } diff --git a/platform/lang-impl/src/com/intellij/tools/OutputFiltersDialog.java b/platform/lang-impl/src/com/intellij/tools/OutputFiltersDialog.java index f10582508a57..f5a15e03fac1 100644 --- a/platform/lang-impl/src/com/intellij/tools/OutputFiltersDialog.java +++ b/platform/lang-impl/src/com/intellij/tools/OutputFiltersDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.intellij.tools; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.components.JBList; import org.jetbrains.annotations.NotNull; @@ -111,7 +112,9 @@ public class OutputFiltersDialog extends DialogWrapper { myFiltersModel.addElement(filterInfo); setModified(true); } - myFiltersList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFiltersList, true); + }); } }).setEditAction(new AnActionButtonRunnable() { @Override @@ -122,7 +125,9 @@ public class OutputFiltersDialog extends DialogWrapper { if (wasEdited) { setModified(true); } - myFiltersList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFiltersList, true); + }); } }).setRemoveAction(new AnActionButtonRunnable() { @Override @@ -131,7 +136,9 @@ public class OutputFiltersDialog extends DialogWrapper { myFiltersModel.removeElementAt(myFiltersList.getSelectedIndex()); setModified(true); } - myFiltersList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFiltersList, true); + }); } }).setMoveUpAction(new AnActionButtonRunnable() { @Override @@ -140,7 +147,9 @@ public class OutputFiltersDialog extends DialogWrapper { if (movedCount > 0) { setModified(true); } - myFiltersList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFiltersList, true); + }); } }).setMoveDownAction(new AnActionButtonRunnable() { @Override @@ -149,7 +158,9 @@ public class OutputFiltersDialog extends DialogWrapper { if (movedCount > 0) { setModified(true); } - myFiltersList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFiltersList, true); + }); } }) .createPanel(); diff --git a/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java b/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java index 3c6f2f7f5148..3a4836ac903c 100644 --- a/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java +++ b/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -379,7 +379,6 @@ public class ToolEditorDialog extends DialogWrapper { } catch (BadLocationException ignored) { } - ; } IdeFocusManager.findInstance().requestFocus(myTextField, true); } diff --git a/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java b/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java index ff8260e5f0e0..fffa86acecf6 100644 --- a/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java +++ b/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import com.intellij.openapi.ui.playback.PlaybackContext; import com.intellij.openapi.ui.playback.PlaybackRunner; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.*; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.WindowManagerEx; @@ -340,9 +341,13 @@ public class PlaybackDebugger implements UiDebuggerExtension, PlaybackRunner.Sta final Component c = ((WindowManagerEx)WindowManager.getInstance()).getFocusedComponent(frame); if (c != null) { - c.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(c, true); + }); } else { - frame.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(frame, true); + }); } //noinspection SSBasedInspection diff --git a/platform/lang-impl/src/com/intellij/webcore/packaging/ManagePackagesDialog.java b/platform/lang-impl/src/com/intellij/webcore/packaging/ManagePackagesDialog.java index c5fd63f9a7c2..3b79503cbbdf 100644 --- a/platform/lang-impl/src/com/intellij/webcore/packaging/ManagePackagesDialog.java +++ b/platform/lang-impl/src/com/intellij/webcore/packaging/ManagePackagesDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.components.JBList; import com.intellij.util.CatchingConsumer; @@ -356,7 +357,9 @@ public class ManagePackagesDialog extends DialogWrapper { if (e.getKeyCode() == KeyEvent.VK_ENTER) { e.consume(); filter(); - myPackages.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPackages, true); + }); } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { onEscape(e); } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java index 4ff1e6d33243..93939813a922 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.GuiUtils; import com.intellij.ui.UIBundle; import com.intellij.util.ui.UIUtil; @@ -302,7 +303,9 @@ public class ComponentWithBrowseButton extends JPanel i @Override public final void requestFocus() { - myComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myComponent, true); + }); } @SuppressWarnings("deprecation") diff --git a/platform/platform-api/src/com/intellij/openapi/ui/FixedComboBoxEditor.java b/platform/platform-api/src/com/intellij/openapi/ui/FixedComboBoxEditor.java index ead440d3d440..5e8f488c2e2c 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/FixedComboBoxEditor.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/FixedComboBoxEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.openapi.ui; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.Gray; import com.intellij.ui.components.JBTextField; import com.intellij.util.ReflectionUtil; @@ -107,7 +108,9 @@ public class FixedComboBoxEditor implements ComboBoxEditor { public void selectAll() { myField.selectAll(); - myField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myField, true); + }); } @Override diff --git a/platform/platform-api/src/com/intellij/openapi/ui/InputException.java b/platform/platform-api/src/com/intellij/openapi/ui/InputException.java index 89af3d618a7c..675500db4b91 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/InputException.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/InputException.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.openapi.ui; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.UIBundle; import javax.swing.*; @@ -40,6 +41,8 @@ public class InputException extends RuntimeException{ if (myMessage != null) { Messages.showMessageDialog(myMessage, UIBundle.message("invalid.user.input.dialog.title"), Messages.getErrorIcon()); } - myComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myComponent, true); + }); } } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/MasterDetailsComponent.java b/platform/platform-api/src/com/intellij/openapi/ui/MasterDetailsComponent.java index aa8c901fdfe1..2f01240d0ea5 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/MasterDetailsComponent.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/MasterDetailsComponent.java @@ -30,6 +30,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Conditions; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.navigation.History; import com.intellij.ui.navigation.Place; @@ -583,7 +584,9 @@ public abstract class MasterDetailsComponent implements Configurable, DetailsCom public ActionCallback selectNodeInTree(final DefaultMutableTreeNode nodeToSelect, boolean center, final boolean requestFocus) { if (requestFocus) { - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } if (nodeToSelect != null) { return TreeUtil.selectInTree(nodeToSelect, requestFocus, myTree, center); diff --git a/platform/platform-api/src/com/intellij/openapi/ui/popup/PopupChooserBuilder.java b/platform/platform-api/src/com/intellij/openapi/ui/popup/PopupChooserBuilder.java index 245eb15167da..2c8fcbe6f43e 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/popup/PopupChooserBuilder.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/popup/PopupChooserBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,11 @@ import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; -import com.intellij.ui.*; +import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.ui.ActiveComponent; +import com.intellij.ui.ListUtil; +import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.ScrollingUtil; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.speedSearch.ListWithFilter; import com.intellij.ui.treeStructure.treetable.TreeTable; @@ -544,7 +548,9 @@ public class PopupChooserBuilder { } public void requestFocus() { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } public synchronized void addMouseListener(MouseListener l) { diff --git a/platform/platform-api/src/com/intellij/openapi/wm/PassThroughIdeFocusManager.java b/platform/platform-api/src/com/intellij/openapi/wm/PassThroughIdeFocusManager.java index 9956eb0785b7..875858c8cc5d 100644 --- a/platform/platform-api/src/com/intellij/openapi/wm/PassThroughIdeFocusManager.java +++ b/platform/platform-api/src/com/intellij/openapi/wm/PassThroughIdeFocusManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,7 +36,9 @@ public class PassThroughIdeFocusManager extends IdeFocusManager { @NotNull public ActionCallback requestFocus(@NotNull Component c, boolean forced) { - c.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(c, true); + }); return ActionCallback.DONE; } diff --git a/platform/platform-api/src/com/intellij/ui/EditableRowTable.java b/platform/platform-api/src/com/intellij/ui/EditableRowTable.java index 35cf025db4ba..5dc9995185cc 100644 --- a/platform/platform-api/src/com/intellij/ui/EditableRowTable.java +++ b/platform/platform-api/src/com/intellij/ui/EditableRowTable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,8 @@ */ package com.intellij.ui; +import com.intellij.openapi.wm.IdeFocusManager; + import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -84,7 +86,9 @@ public class EditableRowTable{ if (editorComponent != null) { final Rectangle bounds = editorComponent.getBounds(); table.scrollRectToVisible(bounds); - editorComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editorComponent, true); + }); } } } @@ -109,7 +113,9 @@ public class EditableRowTable{ } table.getParent().repaint(); - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); } } ); @@ -123,7 +129,9 @@ public class EditableRowTable{ tableModel.exchangeRows(index, index - 1); table.setRowSelectionInterval(index - 1, index - 1); } - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); } } ); @@ -137,7 +145,9 @@ public class EditableRowTable{ tableModel.exchangeRows(index, index + 1); table.setRowSelectionInterval(index + 1, index + 1); } - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); } } ); diff --git a/platform/platform-api/src/com/intellij/ui/JBIntSpinner.java b/platform/platform-api/src/com/intellij/ui/JBIntSpinner.java index 1d58402bd0b2..acc63c90d70e 100644 --- a/platform/platform-api/src/com/intellij/ui/JBIntSpinner.java +++ b/platform/platform-api/src/com/intellij/ui/JBIntSpinner.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.ui; import com.intellij.ide.ui.UINumericRange; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -91,7 +92,9 @@ public class JBIntSpinner extends JSpinner { JTextField textField = getTextField(); if (textField.isEnabled() ) { MouseEvent event = SwingUtilities.convertMouseEvent(component, e, textField); - textField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(textField, true); + }); //noinspection SSBasedInspection SwingUtilities.invokeLater(() -> textField.dispatchEvent(event)); } diff --git a/platform/platform-api/src/com/intellij/ui/OrderPanel.java b/platform/platform-api/src/com/intellij/ui/OrderPanel.java index 5c5a04afdb1f..83ac1934895a 100644 --- a/platform/platform-api/src/com/intellij/ui/OrderPanel.java +++ b/platform/platform-api/src/com/intellij/ui/OrderPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.ui; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.table.JBTable; import com.intellij.util.containers.ContainerUtil; @@ -108,7 +109,9 @@ public abstract class OrderPanel extends JPanel { } public void moveSelectedItemsUp() { - myEntryTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEntryTable, true); + }); try { myInsideMove++; TableUtil.moveSelectedItemsUp(myEntryTable); @@ -122,7 +125,9 @@ public abstract class OrderPanel extends JPanel { } public void moveSelectedItemsDown() { - myEntryTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEntryTable, true); + }); try { myInsideMove++; TableUtil.moveSelectedItemsDown(myEntryTable); diff --git a/platform/platform-api/src/com/intellij/ui/SearchTextField.java b/platform/platform-api/src/com/intellij/ui/SearchTextField.java index 9ac9cdf2660e..925511b618f6 100644 --- a/platform/platform-api/src/com/intellij/ui/SearchTextField.java +++ b/platform/platform-api/src/com/intellij/ui/SearchTextField.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.components.JBList; import com.intellij.ui.components.JBTextField; import com.intellij.util.ReflectionUtil; @@ -343,7 +344,9 @@ public class SearchTextField extends JPanel { } public void requestFocus() { - getTextEditor().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getTextEditor(), true); + }); } public class MyModel extends AbstractListModel { diff --git a/platform/platform-api/src/com/intellij/ui/TableToolbarDecorator.java b/platform/platform-api/src/com/intellij/ui/TableToolbarDecorator.java index 137ae5dc899e..363604f318c1 100644 --- a/platform/platform-api/src/com/intellij/ui/TableToolbarDecorator.java +++ b/platform/platform-api/src/com/intellij/ui/TableToolbarDecorator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.ui; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.ArrayUtil; import com.intellij.util.ui.EditableModel; import com.intellij.util.ui.ElementProducer; @@ -129,7 +130,9 @@ class TableToolbarDecorator extends ToolbarDecorator { if (editorComponent != null) { final Rectangle bounds = editorComponent.getBounds(); table.scrollRectToVisible(bounds); - editorComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editorComponent, true); + }); } }); @@ -142,7 +145,9 @@ class TableToolbarDecorator extends ToolbarDecorator { public void run(AnActionButton button) { if (TableUtil.doRemoveSelectedItems(table, tableModel, null)) { updateButtons(); - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); TableUtil.updateScroller(table); } } @@ -175,7 +180,9 @@ class TableToolbarDecorator extends ToolbarDecorator { idx[i] += delta; } TableUtil.selectRows(table, idx); - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); if (row > 0 && col != -1) { table.editCellAt(row - 1, col); } diff --git a/platform/platform-api/src/com/intellij/ui/TreeToolbarDecorator.java b/platform/platform-api/src/com/intellij/ui/TreeToolbarDecorator.java index cda33d1e5381..9c384b0a45f1 100644 --- a/platform/platform-api/src/com/intellij/ui/TreeToolbarDecorator.java +++ b/platform/platform-api/src/com/intellij/ui/TreeToolbarDecorator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package com.intellij.ui; import com.intellij.openapi.actionSystem.ActionToolbarPosition; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.treeStructure.SimpleNode; import com.intellij.util.ui.EditableModel; import com.intellij.util.ui.EditableTreeModel; @@ -91,7 +92,9 @@ class TreeToolbarDecorator extends ToolbarDecorator { final TreePath createdPath = model.addNode(new TreePath(parent.getPath())); if (path != null) { TreeUtil.selectPath(myTree, createdPath); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } } }; diff --git a/platform/platform-api/src/com/intellij/ui/components/ValidatingTextField.java b/platform/platform-api/src/com/intellij/ui/components/ValidatingTextField.java index d640987b4b52..c63812840dcc 100644 --- a/platform/platform-api/src/com/intellij/ui/components/ValidatingTextField.java +++ b/platform/platform-api/src/com/intellij/ui/components/ValidatingTextField.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.ui.components; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.components.panels.ValidatingComponent; @@ -51,7 +52,9 @@ public class ValidatingTextField extends ValidatingComponent { } public void requestFocus() { - getMainComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getMainComponent(), true); + }); } public boolean requestFocusInWindow() { diff --git a/platform/platform-api/src/com/intellij/ui/components/panels/Wrapper.java b/platform/platform-api/src/com/intellij/ui/components/panels/Wrapper.java index 2e3c12aeaf03..50d30699d62a 100644 --- a/platform/platform-api/src/com/intellij/ui/components/panels/Wrapper.java +++ b/platform/platform-api/src/com/intellij/ui/components/panels/Wrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.ui.components.panels; import com.intellij.openapi.ui.NullableComponent; +import com.intellij.openapi.wm.IdeFocusManager; import javax.swing.*; import java.awt.*; @@ -78,10 +79,14 @@ public class Wrapper extends JPanel implements NullableComponent { @Override public void requestFocus() { if (getTargetComponent() == this) { - super.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + super.requestFocus(); + }); return; } - getTargetComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getTargetComponent(), true); + }); } @Override @@ -93,7 +98,9 @@ public class Wrapper extends JPanel implements NullableComponent { } public void requestFocusInternal() { - super.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + super.requestFocus(); + }); } @Override diff --git a/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java b/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java index 2745636f43ec..358e86e73d6e 100644 --- a/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java +++ b/platform/platform-api/src/com/intellij/ui/speedSearch/ListWithFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ package com.intellij.ui.speedSearch; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.util.PopupUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.LightColors; import com.intellij.ui.SearchTextField; @@ -187,6 +188,8 @@ public class ListWithFilter extends JPanel implements DataProvider { @Override public void requestFocus() { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } } diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java index f3ac1110488a..bf6df6977d01 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java @@ -59,6 +59,8 @@ import java.beans.PropertyChangeListener; import java.util.*; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class JBTabsImpl extends JComponent implements JBTabs, PropertyChangeListener, TimerListener, DataProvider, PopupMenuListener, Disposable, JBTabsPresentation, Queryable, UISettingsListener, QuickActionProvider, Accessible { @@ -696,10 +698,14 @@ public class JBTabsImpl extends JComponent public void requestFocus() { final JComponent toFocus = getToFocus(); if (toFocus != null) { - toFocus.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(toFocus, true); + }); } else { - super.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + super.requestFocus(); + }); } } @@ -969,7 +975,9 @@ public class JBTabsImpl extends JComponent if (toFocus == null) return ActionCallback.DONE; if (myTestMode) { - toFocus.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(toFocus, true); + }); return ActionCallback.DONE; } diff --git a/platform/platform-api/src/com/intellij/util/ui/tree/TreeUtil.java b/platform/platform-api/src/com/intellij/util/ui/tree/TreeUtil.java index 51a93ee3a426..0d82428fb81e 100644 --- a/platform/platform-api/src/com/intellij/util/ui/tree/TreeUtil.java +++ b/platform/platform-api/src/com/intellij/util/ui/tree/TreeUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,6 +42,8 @@ import java.awt.event.KeyEvent; import java.util.*; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public final class TreeUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.util.ui.tree.TreeUtil"); @NonNls @NotNull private static final String TREE_UTIL_SCROLL_TIME_STAMP = "TreeUtil.scrollTimeStamp"; @@ -845,7 +847,9 @@ public final class TreeUtil { final TreePath treePath = new TreePath(node.getPath()); tree.expandPath(treePath); if (requestFocus) { - tree.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(tree, true); + }); } return selectPath(tree, treePath, center); } diff --git a/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java b/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java index 5827925f931b..1d0039ea263f 100644 --- a/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java +++ b/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java @@ -23,6 +23,7 @@ import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.impl.IdeFrameImpl; import com.intellij.util.Alarm; @@ -82,7 +83,11 @@ public final class SwingCleanuper { final Application app = ApplicationManager.getApplication(); if (app != null && app.isActive()) { StatusBar statusBar = frame.getStatusBar(); - if (statusBar != null) ((JComponent)statusBar).requestFocus(); + if (statusBar != null) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus((JComponent)statusBar, true); + }); + } } } diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java index 3e3b7331955c..b9667411b53f 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.internal.statistic.ideSettings.IdeInitialConfigButtonUsages; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBCardLayout; import com.intellij.ui.components.JBLabel; import com.intellij.util.PlatformUtils; @@ -190,7 +191,9 @@ public class CustomizeIDEWizardDialog extends DialogWrapper implements ActionLis myCardLayout.swipe(myContentPanel, myCurrentStep.getTitle(), JBCardLayout.SwipeDirection.AUTO, () -> { Component component = myCurrentStep.getDefaultFocusedComponent(); if (component != null) { - component.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(component, true); + }); } }); diff --git a/platform/platform-impl/src/com/intellij/ide/util/MultiStateElementsChooser.java b/platform/platform-impl/src/com/intellij/ide/util/MultiStateElementsChooser.java index 3493afc756ff..28db1db41f67 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/MultiStateElementsChooser.java +++ b/platform/platform-impl/src/com/intellij/ide/util/MultiStateElementsChooser.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.ide.util; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.table.JBTable; import com.intellij.util.containers.ContainerUtil; @@ -286,7 +287,9 @@ public class MultiStateElementsChooser extends JPanel implements Component myTable.getSelectionModel().clearSelection(); } } - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } public void removeAllElements() { @@ -322,7 +325,9 @@ public class MultiStateElementsChooser extends JPanel implements Component myTableModel.addElement(element, markState); myElementToPropertiesMap.put(element, elementProperties); selectRow(myTableModel.getRowCount() - 1); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } public void setElementProperties(T element, ElementProperties properties) { @@ -365,7 +370,9 @@ public class MultiStateElementsChooser extends JPanel implements Component final int[] rows = getElementsRows(elements); TableUtil.selectRows(myTable, rows); TableUtil.scrollSelectionToVisible(myTable); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } private int[] getElementsRows(final Collection elements) { diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java b/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java index 5f1baa1a8dff..27fc6007d9ca 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,9 +20,9 @@ import com.intellij.openapi.diff.impl.DiffPanelImpl; import com.intellij.openapi.diff.impl.DiffSideView; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; -import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.DialogWrapperDialog; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -42,8 +42,11 @@ public class DiffPanelOptions { } public void onNewContent(DiffSideView currentSide) { - if (myRequestFocusOnNewContent) - currentSide.getFocusableComponent().requestFocus(); + if (myRequestFocusOnNewContent) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(currentSide.getFocusableComponent(), true); + }); + } } public void setRequestFocusOnNewContent(boolean requestFocusOnNewContent) { diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java index e115cf138f6a..1bb59c720650 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -85,6 +85,8 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class DiffPanelImpl implements DiffPanelEx, ContentChangeListener, TwoSidesContainer { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.diff.impl.DiffPanelImpl"); @@ -758,10 +760,14 @@ public class DiffPanelImpl implements DiffPanelEx, ContentChangeListener, TwoSid public void focusOppositeSide() { if (myCurrentSide == myLeftSide) { - myRightSide.getEditor().getContentComponent().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myRightSide.getEditor().getContentComponent(), true); + }); } else { - myLeftSide.getEditor().getContentComponent().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myLeftSide.getEditor().getContentComponent(), true); + }); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffSideView.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffSideView.java index 2b6a21834940..64d2d28895a8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffSideView.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffSideView.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.IJSwingUtilities; import com.intellij.util.ui.ScrollUtil; import com.intellij.util.ui.UIUtil; @@ -293,7 +294,11 @@ public class DiffSideView { } public void restore() { - if (isFocused) getFocusableComponent().requestFocus(); + if (isFocused) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getFocusableComponent(), true); + }); + } if (myIsMaster) beMaster(); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ui/MergePanel2.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ui/MergePanel2.java index f42837c9eb4f..d35d5371f85b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ui/MergePanel2.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ui/MergePanel2.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -58,6 +58,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.EditorNotificationPanel; import com.intellij.util.containers.Convertor; import gnu.trove.TIntHashSet; @@ -459,7 +460,9 @@ public class MergePanel2 implements DiffViewer { Editor centerEditor = getEditor(1); JComponent centerComponent = centerEditor.getContentComponent(); if (centerComponent.isShowing()) { - centerComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(centerComponent, true); + }); } int[] toLeft = getPrimaryBeginnings(myDividers[0].getPaint()); int[] toRight = getPrimaryBeginnings(myDividers[1].getPaint()); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java index 0e4a0f8426f6..8642d9e57870 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java @@ -51,6 +51,7 @@ import com.intellij.openapi.util.ProperTextRange; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.awt.RelativePoint; import com.intellij.util.Alarm; @@ -853,7 +854,9 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark } private void doMouseClicked(@NotNull MouseEvent e) { - myEditor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditor.getContentComponent(), true); + }); int lineCount = getDocument().getLineCount() + myEditor.getSettings().getAdditionalLinesCount(); if (lineCount == 0) { return; diff --git a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileChooserDialogImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileChooserDialogImpl.java index df8d9a5c6da1..4b0bafd39fac 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileChooserDialogImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileChooserDialogImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,6 +42,7 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeFrame; import com.intellij.ui.*; import com.intellij.ui.components.JBList; @@ -621,7 +622,9 @@ public class FileChooserDialogImpl extends DialogWrapper implements FileChooserD else { setErrorText(null); } - myPathTextField.getField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPathTextField.getField(), true); + }); myNorthPanel.revalidate(); myNorthPanel.repaint(); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java index 3afd88daa839..433a4ef00f41 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +28,11 @@ import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.*; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.codeStyle.MinusculeMatcher; import com.intellij.psi.codeStyle.NameUtil; import com.intellij.ui.ScrollingUtil; @@ -384,7 +384,9 @@ public abstract class FileTextFieldImpl implements FileLookup, Disposable, FileT myPathTextField.setSelectionStart(caret); myPathTextField.setSelectionEnd(caret); myPathTextField.setFocusTraversalKeysEnabled(true); - SwingUtilities.invokeLater(() -> getField().requestFocus()); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getField(), true); + }); return Boolean.TRUE; }).setItemChoosenCallback(() -> processChosenFromCompletion(false)).setCancelKeyEnabled(false).setAlpha(0.1f).setFocusOwners(new Component[]{myPathTextField}). createPopup(); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorComposite.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorComposite.java index d4cfb84427c5..4c42ee16ef00 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorComposite.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorComposite.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.util.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.FocusWatcher; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBColor; import com.intellij.ui.PrevNextActionsDescriptor; import com.intellij.ui.SideBorder; @@ -442,7 +443,9 @@ public abstract class EditorComposite implements Disposable { @Override public void requestFocus() { if (myFocusComponent != null) { - myFocusComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFocusComponent, true); + }); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorWindow.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorWindow.java index ac971faced7d..c51314f6d5fd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorWindow.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorWindow.java @@ -63,6 +63,8 @@ import java.util.*; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * Author: msk */ @@ -753,7 +755,9 @@ public class EditorWindow { res.setFilePinned (nextFile, isFilePinned (file)); if (!focusNew) { res.setSelectedEditor(selectedEditor, true); - selectedEditor.getComponent().requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(selectedEditor.getComponent(), true); + }); } panel.revalidate(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeyboardShortcutPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeyboardShortcutPanel.java index eeaa466c7e38..c86689aad67e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeyboardShortcutPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeyboardShortcutPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,14 @@ package com.intellij.openapi.keymap.impl.ui; import com.intellij.openapi.actionSystem.KeyboardShortcut; +import com.intellij.openapi.wm.IdeFocusManager; -import java.awt.LayoutManager; +import javax.swing.*; +import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import javax.swing.JCheckBox; -import javax.swing.KeyStroke; /** * @author Sergey.Malenkov @@ -40,7 +40,9 @@ final class KeyboardShortcutPanel extends ShortcutPanel { mySecondStroke.setEnabled(enabled); ShortcutTextField component = !enabled || null == myFirstStroke.getKeyStroke() ? myFirstStroke : mySecondStroke; setShortcut(newShortcut()); - component.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(component, true); + }); } }; private final PropertyChangeListener myPropertyListener = new PropertyChangeListener() { @@ -49,10 +51,14 @@ final class KeyboardShortcutPanel extends ShortcutPanel { if (KeyboardShortcutPanel.this != event.getSource()) { setShortcut(newShortcut()); if (null == myFirstStroke.getKeyStroke()) { - myFirstStroke.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myFirstStroke, true); + }); } else if (null == mySecondStroke.getKeyStroke() && mySecondStrokeEnable.isSelected()) { - mySecondStroke.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(mySecondStroke, true); + }); } } else if (event.getNewValue() instanceof KeyboardShortcut) { diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java b/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java index a2396322dfc9..94b7bcbf753e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java @@ -35,6 +35,7 @@ import com.intellij.openapi.ui.popup.StackingPopupDispatcher; import com.intellij.openapi.util.ActionCallback; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.WindowManagerEx; @@ -518,7 +519,9 @@ public class GlassPaneDialogWrapperPeer extends DialogWrapperPeer implements Foc myTransparentPane.repaint(); if (myPreviouslyFocusedComponent != null) { - myPreviouslyFocusedComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPreviouslyFocusedComponent, true); + }); myPreviouslyFocusedComponent = null; } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java index 1bf9eda430cc..a1cfb1e3d04b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.Weighted; import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeGlassPane; import com.intellij.openapi.wm.IdeGlassPaneUtil; import com.intellij.ui.BalloonImpl; @@ -183,7 +184,11 @@ public class IdeGlassPaneImpl extends JPanel implements IdeGlassPaneEx, IdeEvent switch (me.getID()) { case MouseEvent.MOUSE_PRESSED: boolean consumed = false; - if (target.isFocusable()) target.requestFocus(); + if (target.isFocusable()) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(target, true); + }); + } for (final MouseListener listener : listeners) { final String className = listener.getClass().getName(); if (className.indexOf("BasicTreeUI$") >= 0 || className.indexOf("MacTreeUI$") >= 0) continue; diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectWindowAction.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectWindowAction.java index 038489276e8f..1e72c0bfd962 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectWindowAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectWindowAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.WindowManager; import com.intellij.util.BitUtil; import org.jetbrains.annotations.NotNull; @@ -140,7 +141,9 @@ public class ProjectWindowAction extends ToggleAction implements DumbAware { projectFrame.setExtendedState(frameState ^ Frame.ICONIFIED); } projectFrame.toFront(); - projectFrame.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(projectFrame, true); + }); //ProjectUtil.focusProjectWindow(project, true); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java index 128d7642692b..3f3d3b47121e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,10 +39,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListItemDescriptorAdapter; import com.intellij.openapi.util.*; import com.intellij.openapi.util.registry.Registry; -import com.intellij.openapi.wm.IdeFrame; -import com.intellij.openapi.wm.IdeRootPaneNorthExtension; -import com.intellij.openapi.wm.StatusBar; -import com.intellij.openapi.wm.WelcomeScreen; +import com.intellij.openapi.wm.*; import com.intellij.openapi.wm.impl.IdeGlassPaneImpl; import com.intellij.ui.*; import com.intellij.ui.border.CustomLineBorder; @@ -487,7 +484,9 @@ public class FlatWelcomeFrame extends JFrame implements IdeFrame, Disposable, Ac } JComponent toFocus = FlatWelcomeFrame.getPreferredFocusedComponent(panel); if (toFocus != null) { - toFocus.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(toFocus, true); + }); } }; final String name = action.getClass().getName(); @@ -605,7 +604,9 @@ public class FlatWelcomeFrame extends JFrame implements IdeFrame, Disposable, Ac } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { if (focusListOnLeft) { if (list != null) { - list.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(list, true); + }); } } else { focusPrev(comp); @@ -636,7 +637,9 @@ public class FlatWelcomeFrame extends JFrame implements IdeFrame, Disposable, Ac if (policy != null) { Component prev = policy.getComponentBefore(FlatWelcomeFrame.this, comp); if (prev != null) { - prev.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(prev, true); + }); } } } @@ -646,7 +649,9 @@ public class FlatWelcomeFrame extends JFrame implements IdeFrame, Disposable, Ac if (policy != null) { Component next = policy.getComponentAfter(FlatWelcomeFrame.this, comp); if (next != null) { - next.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(next, true); + }); } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java index 557c27a140ec..ff5d0b49a6ec 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java @@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.util.io.UniqueNameBuilder; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.PopupHandler; import com.intellij.ui.components.JBList; import com.intellij.ui.components.panels.NonOpaquePanel; @@ -110,7 +111,9 @@ public class NewRecentProjectPanel extends RecentProjectPanel { if (policy != null) { Component next = policy.getComponentAfter(frame, list); if (next != null) { - next.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(next, true); + }); } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/RecentProjectPanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/RecentProjectPanel.java index 461c17c506b1..2641253ac284 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/RecentProjectPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/RecentProjectPanel.java @@ -37,6 +37,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.UniqueNameBuilder; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ClickListener; import com.intellij.ui.ListUtil; import com.intellij.ui.components.JBList; @@ -247,7 +248,9 @@ public class RecentProjectPanel extends JPanel { public void mouseMoved(MouseEvent e) { Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (focusOwner == null) { - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } if (myList.getSelectedIndices().length > 1) { return; diff --git a/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java b/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java index 60371365f2c3..b1851ecd1bbb 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -51,7 +52,9 @@ public class EditorComboBoxEditor implements ComboBoxEditor{ @Override public void selectAll() { myTextField.selectAll(); - myTextField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTextField, true); + }); } @Nullable diff --git a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java index b5bfc5dd8556..fef23710973e 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java @@ -44,6 +44,7 @@ import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerListener; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Key; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.AbstractDelegatingToRootTraversalPolicy; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; @@ -226,7 +227,9 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, validate(); if (isFocused) { - myEditor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditor.getContentComponent(), true); + }); } } } @@ -355,7 +358,9 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, } revalidate(); if (isFocused) { - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + requestFocus(); + }); } } @@ -714,11 +719,15 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, @Override public void requestFocus() { if (myEditor != null) { - myEditor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditor.getContentComponent(), true); + }); myEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); } else { - super.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + requestFocus(); + }); } } diff --git a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java index 93d807d17efa..f372a1f9286e 100644 --- a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java +++ b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; import com.intellij.ui.tabs.JBTabs; import com.intellij.util.IJSwingUtilities; @@ -177,7 +178,9 @@ public class TabbedPaneWrapper { final boolean hadFocus = IJSwingUtilities.hasFocus2(myTabbedPaneHolder); myTabbedPane.setSelectedIndex(index); if (hadFocus && requestFocus) { - myTabbedPaneHolder.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTabbedPaneHolder, true); + }); } } @@ -203,7 +206,9 @@ public class TabbedPaneWrapper { myTabbedPane.revalidate(); } if (hadFocus) { - myTabbedPaneHolder.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTabbedPaneHolder, true); + }); } } finally { @@ -383,7 +388,9 @@ public class TabbedPaneWrapper { final JComponent preferredFocusedComponent = IdeFocusTraversalPolicy.getPreferredFocusedComponent(myComponent); if (preferredFocusedComponent != null) { if (!preferredFocusedComponent.requestFocusInWindow()) { - preferredFocusedComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(preferredFocusedComponent, true); + }); } return true; } else { @@ -393,7 +400,9 @@ public class TabbedPaneWrapper { public void requestFocus() { if (!myCustomFocus) { - super.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + super.requestFocus(); + }); } else { requestDefaultFocus(); } @@ -429,7 +438,9 @@ public class TabbedPaneWrapper { final JComponent preferredFocusedComponent = IdeFocusTraversalPolicy.getPreferredFocusedComponent(myWrapper.myTabbedPane.getComponent()); if (preferredFocusedComponent != null) { if (!preferredFocusedComponent.requestFocusInWindow()) { - preferredFocusedComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(preferredFocusedComponent, true); + }); } return true; } else { diff --git a/platform/platform-impl/src/com/intellij/ui/TableCellEditorWithButton.java b/platform/platform-impl/src/com/intellij/ui/TableCellEditorWithButton.java index 2cd45c769caa..9bee5e243d38 100644 --- a/platform/platform-impl/src/com/intellij/ui/TableCellEditorWithButton.java +++ b/platform/platform-impl/src/com/intellij/ui/TableCellEditorWithButton.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.ui; import com.intellij.openapi.ui.FixedSizeButton; +import com.intellij.openapi.wm.IdeFocusManager; import javax.swing.*; import javax.swing.table.TableCellEditor; @@ -141,7 +142,9 @@ public class TableCellEditorWithButton extends AbstractCellEditor implements Tab } public boolean requestDefaultFocus() { - myTextField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTextField, true); + }); return true; } } diff --git a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java index 1e714a5cc986..472fd33e1f4b 100644 --- a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,6 +46,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * @author Anton Katilin * @author Vladimir Kondratyev @@ -614,7 +616,9 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene JComponent toFocus = computeWillFocusComponent(toSelect); if (toFocus != null) { - toFocus.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(toFocus, true); + }); } return ActionCallback.DONE; diff --git a/platform/platform-impl/src/com/intellij/ui/mac/MacPathChooserDialog.java b/platform/platform-impl/src/com/intellij/ui/mac/MacPathChooserDialog.java index 814e6ee5d7b7..c86091bbba1d 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/MacPathChooserDialog.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/MacPathChooserDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.UIBundle; import com.intellij.util.ArrayUtil; import com.intellij.util.Consumer; @@ -139,7 +140,11 @@ public class MacPathChooserDialog implements PathChooserDialog, FileChooserDialo if (appStarted) { commandProcessor.leaveModal(); LaterInvocator.leaveModal(myFileDialog); - if (parent != null) parent.requestFocus(); + if (parent != null) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(parent, true); + }); + } } } diff --git a/platform/platform-impl/src/com/intellij/ui/messages/SheetController.java b/platform/platform-impl/src/com/intellij/ui/messages/SheetController.java index 8915e6e3cf37..5582e37fbd88 100755 --- a/platform/platform-impl/src/com/intellij/ui/messages/SheetController.java +++ b/platform/platform-impl/src/com/intellij/ui/messages/SheetController.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,8 @@ import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * Created by Denis Fokin */ @@ -186,7 +188,9 @@ public class SheetController { void requestFocus() { IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { if (myFocusedComponent != null) { - myFocusedComponent.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myFocusedComponent, true); + }); } else { LOG.debug("My focused component is null for the next message: " + messageTextPane.getText()); } diff --git a/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java b/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java index 198afb4e9dad..514675b633c7 100755 --- a/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java +++ b/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,8 @@ import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + /** * Created by Denis Fokin */ @@ -134,10 +136,14 @@ public class SheetMessage { focusCandidate = IdeFocusManager.getGlobalInstance().getLastFocusedFor(IdeFocusManager.getGlobalInstance().getLastFocusedFrame()); } + final Component finalFocusCandidate = focusCandidate; + // focusCandidate is null if a welcome screen is closed and ide frame is not opened. // this is ok. We set focus correctly on our frame activation. if (focusCandidate != null) { - focusCandidate.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(finalFocusCandidate, true); + }); } } diff --git a/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegListUI.java b/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegListUI.java index d509715107b6..aedfa23735a4 100644 --- a/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegListUI.java +++ b/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegListUI.java @@ -1,6 +1,6 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,12 @@ */ package com.intellij.ui.plaf.beg; -import java.awt.event.MouseEvent; +import com.intellij.openapi.wm.IdeFocusManager; + import javax.swing.*; import javax.swing.event.MouseInputListener; import javax.swing.plaf.basic.BasicListUI; +import java.awt.event.MouseEvent; public class BegListUI extends BasicListUI { protected MouseInputListener createMouseInputListener() { @@ -48,7 +50,9 @@ public class BegListUI extends BasicListUI { * synchronous (it is on Windows). See bug 4122345 */ if (!myList.hasFocus()){ - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); } int row = BegListUI.this.convertYToRow(e.getY()); diff --git a/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegTableUI.java b/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegTableUI.java index f46ded741d0b..d891335b769f 100644 --- a/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegTableUI.java +++ b/platform/platform-impl/src/com/intellij/ui/plaf/beg/BegTableUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.intellij.ui.plaf.beg; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NonNls; import javax.swing.*; @@ -69,7 +70,9 @@ public class BegTableUI extends BasicTableUI { if (cellEditor != null && !cellEditor.stopCellEditing()) { return; } - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); return; } ListSelectionModel rsm = table.getSelectionModel(); @@ -80,7 +83,9 @@ public class BegTableUI extends BasicTableUI { Component editorComp = table.getEditorComponent(); if (editorComp != null) { editorComp.addKeyListener(myAdapter); - editorComp.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editorComp, true); + }); } } } diff --git a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java index 0a9a175d939c..c80181e04bb7 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java @@ -64,6 +64,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class AbstractPopup implements JBPopup { public static final String SHOW_HINTS = "ShowHints"; @@ -1205,7 +1207,9 @@ public class AbstractPopup implements JBPopup { if (!myFocusable) return; if (myPreferredFocusedComponent != null) { - myPreferredFocusedComponent.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(myPreferredFocusedComponent, true); + }); } } diff --git a/platform/platform-impl/src/com/intellij/util/ui/CellEditorComponentWithBrowseButton.java b/platform/platform-impl/src/com/intellij/util/ui/CellEditorComponentWithBrowseButton.java index 0725e4e1e7f4..72a1965f6db6 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/CellEditorComponentWithBrowseButton.java +++ b/platform/platform-impl/src/com/intellij/util/ui/CellEditorComponentWithBrowseButton.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.util.ui; import com.intellij.openapi.ui.ComponentWithBrowseButton; +import com.intellij.openapi.wm.IdeFocusManager; import javax.swing.*; import javax.swing.event.CellEditorListener; @@ -74,7 +75,9 @@ public class CellEditorComponentWithBrowseButton extend @Override public void requestFocus() { - myComponent.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myComponent, true); + }); } @SuppressWarnings("deprecation") diff --git a/platform/platform-impl/src/com/intellij/util/ui/CheckBoxListModelEditor.java b/platform/platform-impl/src/com/intellij/util/ui/CheckBoxListModelEditor.java index 40ad2d5f6e80..bc602f953680 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/CheckBoxListModelEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/CheckBoxListModelEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.AnActionButton; import com.intellij.ui.AnActionButtonRunnable; import com.intellij.ui.CheckBoxList; @@ -57,7 +58,9 @@ public class CheckBoxListModelEditor { if (newItem != null) { list.updateItem(item, newItem, StringUtil.notNullize(toNameConverter.fun(newItem))); } - list.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(list, true); + }); } }; toolbarDecorator.setEditAction(new AnActionButtonRunnable() { diff --git a/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java b/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java index 7301580a5f3b..2a6a0b81c84e 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.table.JBTable; import com.intellij.ui.table.TableView; @@ -119,7 +120,9 @@ public class TableModelEditor extends CollectionModelEditor helper.getMutable(item12, selectedRow); } ((DialogItemEditor)itemEditor).edit(item, mutator, false); - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); } } }).setEditActionUpdater(new AnActionButtonUpdater() { @@ -272,7 +275,9 @@ public class TableModelEditor extends CollectionModelEditor { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); TableUtil.updateScroller(table); } } @@ -345,7 +350,9 @@ public class TableModelEditor extends CollectionModelEditor { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); TableUtil.updateScroller(table); } } diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java index 2c59bdde6c16..cd356928fcb9 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.structuralsearch.plugin.ui; import com.intellij.codeInsight.template.impl.Variable; @@ -23,11 +38,11 @@ import com.intellij.openapi.ui.ComponentWithBrowseButton; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; import com.intellij.structuralsearch.*; -import com.intellij.structuralsearch.impl.matcher.CompiledPattern; import com.intellij.structuralsearch.impl.matcher.predicates.ScriptLog; import com.intellij.structuralsearch.impl.matcher.predicates.ScriptSupport; import com.intellij.structuralsearch.plugin.replace.ReplaceOptions; @@ -495,7 +510,9 @@ class EditVarConstraintsDialog extends DialogWrapper { } catch(PatternSyntaxException ex) { Messages.showErrorDialog(SSRBundle.message("invalid.regular.expression", ex.getMessage()), SSRBundle.message("invalid.regular.expression.title")); - field.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); return false; } return true; @@ -509,7 +526,9 @@ class EditVarConstraintsDialog extends DialogWrapper { if (message != null) { Messages.showErrorDialog(message, SSRBundle.message("invalid.groovy.script")); - field.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); return false; } } @@ -521,7 +540,9 @@ class EditVarConstraintsDialog extends DialogWrapper { if (Integer.parseInt(field.getText()) < 0) throw new NumberFormatException(); } catch(NumberFormatException ex) { Messages.showErrorDialog(SSRBundle.message("invalid.occurence.count"), SSRBundle.message("invalid.occurence.count")); - field.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); return false; } return true; diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/RenameRefactoringDialogFixture.java b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/RenameRefactoringDialogFixture.java index d277be657d75..5cac4d353e57 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/RenameRefactoringDialogFixture.java +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/RenameRefactoringDialogFixture.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.testGuiFramework.fixtures; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.refactoring.rename.RenameDialog; import com.intellij.refactoring.ui.ConflictsDialog; import com.intellij.ui.EditorTextField; @@ -51,7 +52,9 @@ public class RenameRefactoringDialogFixture extends IdeaDialogFixture { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); } }); robot().pressAndReleaseKey(KeyEvent.VK_BACK_SPACE); // to make sure we don't append to existing item on Linux diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index dc2c3b25e0c8..f42caf90d366 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -2385,6 +2385,7 @@ public class UIUtil { return component != null && component.isFocusable() && component.isEnabled() && component.isShowing(); } + @Deprecated public static void requestFocus(@NotNull final JComponent c) { if (c.isShowing()) { c.requestFocus(); diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/StandardVersionFilterComponent.java b/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/StandardVersionFilterComponent.java index 4bd1c0877aec..c28e258770c5 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/StandardVersionFilterComponent.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/StandardVersionFilterComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,9 @@ */ package com.intellij.openapi.vcs.versionBrowser; -import com.intellij.ui.IdeBorderFactory; import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.ui.IdeBorderFactory; import javax.swing.*; import java.awt.*; @@ -84,7 +85,9 @@ public abstract class StandardVersionFilterComponent { + IdeFocusManager.getGlobalInstance().requestFocus(textField, true); + }); } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListGroupingStrategy.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListGroupingStrategy.java index 29aea762965a..3dd51471613f 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListGroupingStrategy.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListGroupingStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,8 +34,6 @@ public interface ChangeListGroupingStrategy { String getGroupName(CommittedChangeList changeList); Comparator getComparator(); - ; - ChangeListGroupingStrategy USER = new ChangeListGroupingStrategy() { public String toString() { return VcsBundle.message("user.group.title"); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/NewEditChangelistPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/NewEditChangelistPanel.java index fe1147803c74..3e171aa5325f 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/NewEditChangelistPanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/NewEditChangelistPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.VcsConfiguration; import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.openapi.vcs.changes.LocalChangeList; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.util.Consumer; import com.intellij.util.containers.ContainerUtil; @@ -156,7 +157,9 @@ public abstract class NewEditChangelistPanel extends JPanel { } public void requestFocus() { - myNameTextField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myNameTextField, true); + }); } public JComponent getPreferredFocusedComponent() { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java index e9f5d59c94bf..fa03d9c82eb9 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,6 +51,7 @@ import com.intellij.openapi.vcs.vfs.VcsFileSystem; import com.intellij.openapi.vcs.vfs.VcsVirtualFile; import com.intellij.openapi.vcs.vfs.VcsVirtualFolder; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.ui.content.ContentManager; import com.intellij.ui.dualView.CellWrapper; @@ -357,7 +358,9 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton impleme myDualView.setShowGrid(true); PopupHandler.installPopupHandler(myDualView.getTreeView(), group, ActionPlaces.UPDATE_POPUP, ActionManager.getInstance()); PopupHandler.installPopupHandler(myDualView.getFlatView(), group, ActionPlaces.UPDATE_POPUP, ActionManager.getInstance()); - myDualView.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myDualView, true); + }); myDualView.addListSelectionListener(e -> updateMessage()); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ui/CommitMessage.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ui/CommitMessage.java index b40f2fd93650..032f8f9e48be 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ui/CommitMessage.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ui/CommitMessage.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.VcsConfiguration; import com.intellij.openapi.vcs.VcsDataKeys; import com.intellij.openapi.vcs.changes.ChangeList; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.*; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.*; @@ -161,7 +162,9 @@ public class CommitMessage extends JPanel implements Disposable, DataProvider, C } public void requestFocusInMessage() { - myEditorField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditorField, true); + }); myEditorField.selectAll(); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XSuspendPolicyPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XSuspendPolicyPanel.java index 2d2f918a01b6..7ecc2a50b1cc 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XSuspendPolicyPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XSuspendPolicyPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.xdebugger.impl.breakpoints.ui; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.xdebugger.breakpoints.SuspendPolicy; import com.intellij.xdebugger.breakpoints.XBreakpointManager; import com.intellij.xdebugger.impl.breakpoints.XBreakpointBase; @@ -89,10 +90,14 @@ public class XSuspendPolicyPanel extends XBreakpointPropertiesSubPanel { ((XBreakpointManagerImpl)myBreakpointManager).getBreakpointDefaults(myBreakpointType).setSuspendPolicy(suspendPolicy); updateSuspendPolicyFont(); if (SuspendPolicy.THREAD == suspendPolicy) { - mySuspendThread.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(mySuspendThread, true); + }); } else { - mySuspendAll.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(mySuspendAll, true); + }); } myMakeDefaultButton.setEnabled(false); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java index 5eac17b25e76..c9d03be21fe8 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -68,6 +68,8 @@ import java.awt.*; import java.awt.event.*; import java.util.concurrent.atomic.AtomicBoolean; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public class DebuggerUIUtil { @NonNls public static final String FULL_VALUE_POPUP_DIMENSION_KEY = "XDebugger.FullValuePopup"; @@ -83,7 +85,9 @@ public class DebuggerUIUtil { } public static void focusEditorOnCheck(final JCheckBox checkbox, final JComponent component) { - final Runnable runnable = () -> component.requestFocus(); + final Runnable runnable = () -> getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(component, true); + }); checkbox.addActionListener(e -> { if (checkbox.isSelected()) { SwingUtilities.invokeLater(runnable); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java index f50f7c1a8d11..e3196aa336f5 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java @@ -29,6 +29,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -86,7 +87,9 @@ public abstract class TreeInplaceEditor implements AWTEventListener { final JTree tree = getTree(); tree.repaint(); - tree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(tree, true); + }); } protected void onHidden() { @@ -126,7 +129,9 @@ public abstract class TreeInplaceEditor implements AWTEventListener { inplaceEditorComponent.validate(); inplaceEditorComponent.paintImmediately(0,0,inplaceEditorComponent.getWidth(),inplaceEditorComponent.getHeight()); - getPreferredFocusedComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getPreferredFocusedComponent(), true); + }); final ComponentAdapter componentListener = new ComponentAdapter() { @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java index 446f427fe3ac..c3a07f5ff9a4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java @@ -24,6 +24,7 @@ import com.intellij.ide.util.TreeClassChooserFactory; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.InheritanceUtil; @@ -120,13 +121,17 @@ public class UiUtils { selectionModel.setSelectionInterval(row, row); EventQueue.invokeLater(() -> { final ListWrappingTableModel tableModel = table.getModel(); - table.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(table, true); + }); final Rectangle rectangle = table.getCellRect(row, column, true); table.scrollRectToVisible(rectangle); table.editCellAt(row, column); final TableCellEditor editor = table.getCellEditor(); final Component component = editor.getTableCellEditorComponent(table, tableModel.getValueAt(row, column), true, row, column); - component.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(component, true); + }); }); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_statement_with_identical_branches/IfStatementWithIdenticalBranches.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_statement_with_identical_branches/IfStatementWithIdenticalBranches.java index 89b141cfdf73..ddf04ea32a30 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_statement_with_identical_branches/IfStatementWithIdenticalBranches.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_statement_with_identical_branches/IfStatementWithIdenticalBranches.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.siyeh.igtest.controlflow.if_statement_with_identical_branches; import java.util.Collection; @@ -177,8 +192,6 @@ class NotADup { void n(int i) { if (i == 0) { System.out.println(((i))); - ; - ; { } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/test_case_with_constructor/TestCaseWithConstructorInspection2.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/test_case_with_constructor/TestCaseWithConstructorInspection2.java index 5da309358cb4..e9b1876c483b 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/test_case_with_constructor/TestCaseWithConstructorInspection2.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/test_case_with_constructor/TestCaseWithConstructorInspection2.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.siyeh.igtest.junit; import junit.framework.TestCase; @@ -7,7 +22,6 @@ public class TestCaseWithConstructorInspection2 extends TestCase public TestCaseWithConstructorInspection2() { super(); - ; if (false) { System.out.println(); } diff --git a/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java b/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java index 7dfb89c04b10..7627b4b4bdb9 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -69,6 +69,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static com.intellij.openapi.wm.IdeFocusManager.getGlobalInstance; + public final class AntBuildMessageView extends JPanel implements DataProvider, OccurenceNavigator { private static final Logger LOG = Logger.getInstance("#com.intellij.ant.execution.AntBuildMessageView"); @@ -218,7 +220,9 @@ public final class AntBuildMessageView extends JPanel implements DataProvider, O myCardLayout.show(myContentPanel, newView.getId()); JComponent component = IdeFocusTraversalPolicy.getPreferredFocusedComponent(myMessagePanel); - component.requestFocus(); + getGlobalInstance().doWhenFocusSettlesDown(() -> { + getGlobalInstance().requestFocus(component, true); + }); repaint(); } diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntUIUtil.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntUIUtil.java index a77959b63948..371a6ec57a8a 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntUIUtil.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntUIUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.roots.ui.OrderEntryAppearanceService; import com.intellij.openapi.ui.FixedSizeButton; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.SimpleTextAttributes; @@ -139,7 +140,9 @@ public class AntUIUtil { catch (BadLocationException ex) { LOG.error(ex); } - textField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(textField, true); + }); } } }); diff --git a/plugins/commander/src/com/intellij/ide/commander/Commander.java b/plugins/commander/src/com/intellij/ide/commander/Commander.java index f44831f7b734..687762574f71 100644 --- a/plugins/commander/src/com/intellij/ide/commander/Commander.java +++ b/plugins/commander/src/com/intellij/ide/commander/Commander.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,11 +33,7 @@ import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; -import com.intellij.openapi.wm.FocusWatcher; -import com.intellij.openapi.wm.ToolWindow; -import com.intellij.openapi.wm.ToolWindowId; -import com.intellij.openapi.wm.ToolWindowManager; -import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; +import com.intellij.openapi.wm.*; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; @@ -56,6 +52,8 @@ import java.awt.*; import java.awt.event.*; import java.util.List; +import static com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy.getPreferredFocusedComponent; + /** * @author Eugene Belyaev */ @@ -429,7 +427,9 @@ public class Commander extends JPanel implements PersistentStateComponent { + IdeFocusManager.getGlobalInstance().requestFocus(getPreferredFocusedComponent(inactivePanel), true); + }); } public void enterElementInActivePanel(final PsiElement element) { diff --git a/plugins/coverage/src/com/intellij/execution/configurations/coverage/CoverageConfigurable.java b/plugins/coverage/src/com/intellij/execution/configurations/coverage/CoverageConfigurable.java index d06925d718ad..97d83072b9e8 100644 --- a/plugins/coverage/src/com/intellij/execution/configurations/coverage/CoverageConfigurable.java +++ b/plugins/coverage/src/com/intellij/execution/configurations/coverage/CoverageConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.PackageChooser; import com.intellij.openapi.ui.VerticalFlowLayout; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiPackage; import com.intellij.ui.IdeBorderFactory; @@ -102,7 +103,9 @@ public class CoverageConfigurable extends SettingsEditor { int row = myTableModel.getRowCount() - 1; myTable.getSelectionModel().setSelectionInterval(row, row); myTable.scrollRectToVisible(myTable.getCellRect(row, 0, true)); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } } } diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java index e5cb1e7ddffa..6624a0a27ea3 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,6 @@ public abstract class ActionOnSelectedElement extends AbstractAction { result.add(CvsVfsUtil.getFileFor(selectedFiles[i])); } } - ; if (selectedIOFiles != null) ContainerUtil.addAll(result, selectedIOFiles); return (File[])result.toArray(new File[result.size()]); } diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java index 18814bdb1784..93ef9f18a384 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.cvsSupport2.config.ui.CvsConfigurationPanel; import com.intellij.cvsSupport2.ui.FormUtils; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.wm.IdeFocusManager; import javax.swing.*; import java.awt.event.ActionEvent; @@ -61,7 +62,9 @@ public class SshConnectionSettingsPanel { else { myPathToPrivateKeyFile.setEnabled(true); myPathToPrivateKeyFile.getTextField().selectAll(); - myPathToPrivateKeyFile.getTextField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPathToPrivateKeyFile.getTextField(), true); + }); } } diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CvsTree.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CvsTree.java index 7339d1eb267f..ab24d06b2964 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CvsTree.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CvsTree.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.VcsException; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.TreeUIHelper; import com.intellij.ui.treeStructure.Tree; @@ -150,7 +151,9 @@ public class CvsTree extends JPanel implements CvsTabbedWindow.DeactivateListene uiHelper.installTreeSpeedSearch(myTree); TreeUtil.installActions(myTree); - myTree.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTree, true); + }); } private static class AlwaysNotifiedObservable extends Observable{ diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java index dcd4b0803d26..9a31c054f3e0 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.TagsHelper; import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.TagsProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.text.DateFormatUtil; import com.intellij.util.text.SyncDateFormat; import com.michaelbaranov.microba.calendar.DatePicker; @@ -65,7 +66,9 @@ public class DateOrRevisionOrTagSettings { refreshEnabling(); if (myUseBranch.isEnabled()){ myBranch.getTextField().selectAll(); - myBranch.getTextField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myBranch.getTextField(), true); + }); } } }); @@ -85,7 +88,9 @@ public class DateOrRevisionOrTagSettings { } refreshEnabling(); if (myUseDate.isEnabled()){ - myDatePicker.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myDatePicker, true); + }); } } diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/SelectLocationStep.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/SelectLocationStep.java index 75bcee1b573e..4b3ff29e318c 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/SelectLocationStep.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/SelectLocationStep.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,6 +35,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.PopupHandler; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.components.labels.LinkLabel; @@ -237,7 +238,9 @@ public abstract class SelectLocationStep extends WizardStep { updatePathFromTree(myFileSystemTree.getSelectedFile(), true); myNorthPanel.add(myPathTextFieldWrapper, BorderLayout.SOUTH); } - myPathTextField.getField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myPathTextField.getField(), true); + }); myNorthPanel.revalidate(); myNorthPanel.repaint(); diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/WizardStep.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/WizardStep.java index 6319a8e00a65..d89703bfc670 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/WizardStep.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/WizardStep.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.cvsSupport2.ui.experts; import com.intellij.ide.wizard.StepAdapter; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.border.IdeaTitledBorder; @@ -71,6 +72,8 @@ public abstract class WizardStep extends StepAdapter{ } public void focus() { - SwingUtilities.invokeLater(() -> getPreferredFocusedComponent().requestFocus()); + SwingUtilities.invokeLater(() -> IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getPreferredFocusedComponent(), true); + })); } } diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/importToCvs/CvsFieldValidator.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/importToCvs/CvsFieldValidator.java index a7c9b27190aa..52c509364d6d 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/importToCvs/CvsFieldValidator.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/experts/importToCvs/CvsFieldValidator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,9 +15,10 @@ */ package com.intellij.cvsSupport2.ui.experts.importToCvs; -import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.ui.TagNameFieldOwner; -import com.intellij.ui.DocumentAdapter; import com.intellij.CvsBundle; +import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.ui.TagNameFieldOwner; +import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.ui.DocumentAdapter; import org.jetbrains.annotations.NonNls; import javax.swing.*; @@ -84,7 +85,9 @@ public class CvsFieldValidator { dialog.enableOkAction(); } else { - field.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/parameterToEntry/GroovyMapParameterDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/parameterToEntry/GroovyMapParameterDialog.java index a1cbd5b431e1..7a7e6f3858b1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/parameterToEntry/GroovyMapParameterDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/parameterToEntry/GroovyMapParameterDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.event.DocumentListener; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.EditorComboBoxEditor; import com.intellij.ui.EditorComboBoxRenderer; import com.intellij.ui.EditorTextField; @@ -166,7 +167,9 @@ public class GroovyMapParameterDialog extends DialogWrapper { contentPane.registerKeyboardAction(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - myNameComboBox.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myNameComboBox, true); + }); } }, KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.ALT_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/TableWithButtons.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/TableWithButtons.java index f730fbe375bd..e43f69d41d40 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/TableWithButtons.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/TableWithButtons.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.refactoring.changeSignature; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.RowEditableTableModel; import com.intellij.ui.table.JBTable; @@ -40,7 +41,9 @@ public abstract class TableWithButtons { myTable.setRowSelectionInterval(myModel.getRowCount() - 1, myModel.getRowCount() - 1); myTable.setColumnSelectionInterval(selectedColumn, selectedColumn); innerUpdate(); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } }); myRemoveButton.addActionListener(new ActionListener() { @@ -56,7 +59,9 @@ public abstract class TableWithButtons { myTable.setRowSelectionInterval(selectedRow, selectedRow); myTable.setColumnSelectionInterval(selectedColumn, selectedColumn); innerUpdate(); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } }); myMoveUpButton.addActionListener(new ActionListener() { @@ -68,7 +73,9 @@ public abstract class TableWithButtons { myTable.setRowSelectionInterval(selectedRow - 1, selectedRow - 1); myTable.setColumnSelectionInterval(selectedColumn, selectedColumn); innerUpdate(); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } }); myMoveDownButton.addActionListener(new ActionListener() { @@ -80,7 +87,9 @@ public abstract class TableWithButtons { myTable.setRowSelectionInterval(selectedRow + 1, selectedRow + 1); myTable.setColumnSelectionInterval(selectedColumn, selectedColumn); innerUpdate(); - myTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTable, true); + }); } }); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java index 32bf0845775a..0fb7e2fcd1d9 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.JavaResolveUtil; import com.intellij.psi.search.GlobalSearchScope; @@ -205,7 +206,9 @@ public class GrIntroduceConstantDialog extends DialogWrapper myPanel.registerKeyboardAction(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - myNameField.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myNameField, true); + }); } }, KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.ALT_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/packaging/JavaFxAntTaskTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/packaging/JavaFxAntTaskTest.java index c8453b63da13..bec9bf664ffa 100644 --- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/packaging/JavaFxAntTaskTest.java +++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/packaging/JavaFxAntTaskTest.java @@ -428,7 +428,6 @@ public class JavaFxAntTaskTest extends UsefulTestCase{ private List myCustomManifestAttributes; private JavaFxApplicationIcons myIcons; private JavaFxPackagerConstants.NativeBundles myNativeBundle = JavaFxPackagerConstants.NativeBundles.none; - ; private MockJavaFxPackager(String outputPath) { myOutputPath = outputPath; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenSelectProjectPopup.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenSelectProjectPopup.java index 12aff32faa7d..13ae23b64d65 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenSelectProjectPopup.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenSelectProjectPopup.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.PopupChooserBuilder; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.TreeSpeedSearch; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.Consumer; @@ -59,7 +60,9 @@ public class MavenSelectProjectPopup { if (focusAfterSelection != null) { ApplicationManager.getApplication().invokeLater(() -> { if (workingDirectoryField.hasFocus()) { - focusAfterSelection.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(focusAfterSelection, true); + }); } }); } diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/ChooseSubsequentPropertyValueEditorAction.java b/plugins/properties/src/com/intellij/lang/properties/editor/ChooseSubsequentPropertyValueEditorAction.java index 5bcd56efdde7..ee8084bde35d 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/ChooseSubsequentPropertyValueEditorAction.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/ChooseSubsequentPropertyValueEditorAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.Key; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.NotNull; /** @@ -49,7 +50,9 @@ public class ChooseSubsequentPropertyValueEditorAction extends AnAction { @Override public void actionPerformed(final AnActionEvent e) { - getNext(e).getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(getNext(e).getContentComponent(), true); + }); } @Override diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/MultipleRootEditorWithSplitter.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/MultipleRootEditorWithSplitter.java index f68c527b2e3a..7107bdef1025 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/MultipleRootEditorWithSplitter.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/MultipleRootEditorWithSplitter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.vcs.FilePath; import com.intellij.openapi.vcs.impl.VcsPathPresenter; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.SimpleTextAttributes; @@ -110,7 +111,9 @@ public class MultipleRootEditorWithSplitter extends JPanel { }); myList.setSelectedIndex(0); - myList.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myList, true); + }); final int finalMinimumRightSize = minimumRightSize; new AdjustComponentWhenShown() { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnIntegrateRootOptionsPanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnIntegrateRootOptionsPanel.java index fc7b350de5bd..9294ca0726ed 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnIntegrateRootOptionsPanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnIntegrateRootOptionsPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package org.jetbrains.idea.svn.update; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.vcs.FilePath; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.idea.svn.SvnBundle; import org.jetbrains.idea.svn.SvnConfiguration; import org.jetbrains.idea.svn.SvnVcs; @@ -99,12 +100,16 @@ public class SvnIntegrateRootOptionsPanel implements SvnPanel{ public void apply(SvnConfiguration conf) throws ConfigurationException { if (myMergeText1.getText().trim().length() == 0) { - myMergeText1.getTextField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myMergeText1.getTextField(), true); + }); throw new ConfigurationException(SvnBundle.message("source.url.could.not.be.empty.error.message")); } if (myMergeText2.getText().trim().length() == 0) { - myMergeText2.getTextField().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myMergeText2.getTextField(), true); + }); throw new ConfigurationException(SvnBundle.message("source.url.could.not.be.empty.error.message")); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnUpdateRootOptionsPanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnUpdateRootOptionsPanel.java index 4a0ceb65b879..d08ea3f4be35 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnUpdateRootOptionsPanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/update/SvnUpdateRootOptionsPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.vcs.FilePath; +import com.intellij.openapi.wm.IdeFocusManager; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.svn.*; import org.jetbrains.idea.svn.branchConfig.SelectBranchPopup; @@ -97,7 +98,9 @@ public class SvnUpdateRootOptionsPanel implements SvnPanel{ myRevisionText.setText("HEAD"); } myRevisionText.getTextField().selectAll(); - myRevisionText.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myRevisionText, true); + }); } } } diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SearchSupport.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SearchSupport.java index 1364fd15bde8..fd8663cfc393 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SearchSupport.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/SearchSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.ui.popup.*; -import com.intellij.openapi.util.Computable; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.tasks.Task; import com.intellij.ui.EditorTextField; import com.intellij.ui.ScrollingUtil; @@ -237,7 +237,9 @@ public abstract class SearchSupport { final int caret = myTextField.getCaretModel().getOffset(); getEditor().getSelectionModel().setSelection(caret, caret); myTextField.setFocusTraversalKeysEnabled(true); - ApplicationManager.getApplication().invokeLater(() -> myTextField.requestFocus()); + ApplicationManager.getApplication().invokeLater(() -> IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myTextField, true); + })); return Boolean.TRUE; }).setItemChoosenCallback(() -> processChosenFromCompletion()).setCancelKeyEnabled(false).setAlpha(0.1f).setFocusOwners(new Component[]{myTextField}). createPopup(); diff --git a/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteGroupComponent.java b/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteGroupComponent.java index 5290150b72e8..98e6768df58b 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteGroupComponent.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteGroupComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.intellij.designer.palette; import com.intellij.icons.AllIcons; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.Gray; import com.intellij.util.ui.UIUtil; @@ -107,27 +108,31 @@ public class PaletteGroupComponent extends JCheckBox { public void actionPerformed(ActionEvent e) { KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); Container container = kfm.getCurrentFocusCycleRoot(); - FocusTraversalPolicy policy = container.getFocusTraversalPolicy(); - if (policy == null) { - policy = kfm.getDefaultFocusTraversalPolicy(); - } - Component next = myMoveDown - ? policy.getComponentAfter(container, PaletteGroupComponent.this) - : policy.getComponentBefore(container, PaletteGroupComponent.this); - if (next instanceof PaletteItemsComponent) { - PaletteItemsComponent list = (PaletteItemsComponent)next; - if (list.getModel().getSize() != 0) { - list.takeFocusFrom(list == myItemsComponent ? 0 : -1); - return; + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + + FocusTraversalPolicy policy = container.getFocusTraversalPolicy(); + if (policy == null) { + policy = kfm.getDefaultFocusTraversalPolicy(); } - else { - next = myMoveDown ? policy.getComponentAfter(container, next) : policy.getComponentBefore(container, next); + + Component next = myMoveDown + ? policy.getComponentAfter(container, PaletteGroupComponent.this) + : policy.getComponentBefore(container, PaletteGroupComponent.this); + if (next instanceof PaletteItemsComponent) { + PaletteItemsComponent list = (PaletteItemsComponent)next; + if (list.getModel().getSize() != 0) { + list.takeFocusFrom(list == myItemsComponent ? 0 : -1); + return; + } + else { + next = myMoveDown ? policy.getComponentAfter(container, next) : policy.getComponentBefore(container, next); + } } - } - if (next instanceof PaletteGroupComponent) { - next.requestFocus(); - } + if (next instanceof PaletteGroupComponent) { + IdeFocusManager.getGlobalInstance().requestFocus(next, true); + } + }); } } diff --git a/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteItemsComponent.java b/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteItemsComponent.java index 19b2d4bac018..69edddb19e24 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteItemsComponent.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/palette/PaletteItemsComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.intellij.ide.dnd.DnDSource; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.components.JBList; @@ -242,7 +243,9 @@ public class PaletteItemsComponent extends JBList { else if (getModel().getSize() == 0) { indexToSelect = -1; } - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(this, true); + }); setSelectedIndex(indexToSelect); if (indexToSelect >= 0) { ensureIndexIsVisible(indexToSelect); @@ -309,7 +312,9 @@ public class PaletteItemsComponent extends JBList { : policy.getComponentBefore(container, PaletteItemsComponent.this); if (next instanceof PaletteGroupComponent) { clearSelection(); - next.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(next, true); + }); ((PaletteGroupComponent)next).scrollRectToVisible(next.getBounds()); } } diff --git a/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteComponentList.java b/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteComponentList.java index 7e5501be663f..eb439ef8f89e 100644 --- a/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteComponentList.java +++ b/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteComponentList.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.ActionPopupMenu; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.PopupHandler; import com.intellij.ui.components.JBList; @@ -196,7 +197,9 @@ public class PaletteComponentList extends JBList { else if (getModel().getSize() == 0) { indexToSelect = -1; } - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(this, true); + }); setSelectedIndex(indexToSelect); if (indexToSelect >= 0) { ensureIndexIsVisible(indexToSelect); @@ -296,7 +299,9 @@ public class PaletteComponentList extends JBList { : policy.getComponentBefore(container, PaletteComponentList.this); if (null != next && next instanceof PaletteGroupHeader) { clearSelection(); - next.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(next, true); + }); ((PaletteGroupHeader)next).scrollRectToVisible(next.getBounds()); } } diff --git a/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java b/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java index c98caefa3f75..e4d5cdae895f 100644 --- a/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java +++ b/plugins/ui-designer/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import com.intellij.ide.palette.PaletteGroup; import com.intellij.ide.palette.PaletteItem; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.PopupHandler; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; @@ -173,23 +174,26 @@ public class PaletteGroupHeader extends JCheckBox implements DataProvider { public void actionPerformed(ActionEvent e) { KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); Container container = kfm.getCurrentFocusCycleRoot(); - FocusTraversalPolicy policy = container.getFocusTraversalPolicy(); - if (null == policy) policy = kfm.getDefaultFocusTraversalPolicy(); - Component next = - moveDown ? policy.getComponentAfter(container, PaletteGroupHeader.this) : policy.getComponentBefore(container, PaletteGroupHeader.this); - if (null != next && next instanceof PaletteComponentList) { - final PaletteComponentList list = (PaletteComponentList)next; - if (list.getModel().getSize() != 0) { - list.takeFocusFrom(PaletteGroupHeader.this, list == myComponentList ? 0 : -1); - return; + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + FocusTraversalPolicy policy = container.getFocusTraversalPolicy(); + if (null == policy) policy = kfm.getDefaultFocusTraversalPolicy(); + Component next = + moveDown ? policy.getComponentAfter(container, PaletteGroupHeader.this) : policy.getComponentBefore(container, PaletteGroupHeader.this); + if (null != next && next instanceof PaletteComponentList) { + final PaletteComponentList list = (PaletteComponentList)next; + if (list.getModel().getSize() != 0) { + list.takeFocusFrom(PaletteGroupHeader.this, list == myComponentList ? 0 : -1); + return; + } + else { + next = moveDown ? policy.getComponentAfter(container, next) : policy.getComponentBefore(container, next); + } } - else { - next = moveDown ? policy.getComponentAfter(container, next) : policy.getComponentBefore(container, next); + if (null != next && next instanceof PaletteGroupHeader) { + + IdeFocusManager.getGlobalInstance().requestFocus(next, true); } - } - if (null != next && next instanceof PaletteGroupHeader) { - next.requestFocus(); - } + }); } } diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/actions/MorphAction.java b/plugins/ui-designer/src/com/intellij/uiDesigner/actions/MorphAction.java index a04c22128dcd..d5f2cbe34baa 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/actions/MorphAction.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/actions/MorphAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListPopup; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiElementFactory; import com.intellij.psi.PsiField; @@ -69,7 +70,9 @@ public class MorphAction extends AbstractGuiEditorAction { editor.refreshAndSave(true); }; CommandProcessor.getInstance().executeCommand(editor.getProject(), runnable, UIDesignerBundle.message("morph.component.command"), null); - editor.getGlassLayer().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editor.getGlassLayer(), true); + }); return true; }; diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/DesignDropTargetListener.java b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/DesignDropTargetListener.java index e9fdee839f09..2cf25cec40e5 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/DesignDropTargetListener.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/DesignDropTargetListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import com.intellij.ide.palette.impl.PaletteToolWindowManager; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.uiDesigner.CutCopyPasteSupport; import com.intellij.uiDesigner.FormEditingUtil; import com.intellij.uiDesigner.SimpleTransferable; @@ -223,7 +224,9 @@ class DesignDropTargetListener implements DropTargetListener { PaletteToolWindowManager.getInstance(myEditor).clearActiveItem(); myEditor.getActiveDecorationLayer().removeFeedback(); myEditor.getLayeredPane().setCursor(null); - myEditor.getGlassLayer().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myEditor.getGlassLayer(), true); + }); myEditor.getMainProcessor().setInsertFeedbackEnabled(true); }); } diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GridCaptionPanel.java b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GridCaptionPanel.java index bd1c3e8bf1cc..d30c098762f1 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GridCaptionPanel.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GridCaptionPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.EditorColors; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBColor; import com.intellij.ui.LightColors; import com.intellij.uiDesigner.CaptionSelection; @@ -36,7 +37,6 @@ import com.intellij.uiDesigner.radComponents.RadContainer; import com.intellij.uiDesigner.radComponents.RadRootContainer; import com.intellij.util.Alarm; import com.intellij.util.ArrayUtil; -import com.intellij.util.NotNullProducer; import com.intellij.util.ui.PlatformColors; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -335,7 +335,9 @@ public class GridCaptionPanel extends JPanel implements ComponentSelectionListen @Override public void mousePressed(MouseEvent e) { if (mySelectedContainer == null) return; - requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(GridCaptionPanel.this, true); + }); Point pnt = SwingUtilities.convertPoint(GridCaptionPanel.this, e.getPoint(), mySelectedContainer.getDelegee()); if (canResizeCells()) { diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/PropertyInspector.java b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/PropertyInspector.java index 477ed50c11a6..c4a79845183c 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/PropertyInspector.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/PropertyInspector.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.intellij.uiDesigner.propertyInspector; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ex.MultiLineLabel; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.SideBorder; @@ -204,7 +205,9 @@ public final class PropertyInspector extends JPanel{ } public void requestFocus() { - myInspectorTable.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myInspectorTable, true); + }); } /** diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/editors/BindingEditor.java b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/editors/BindingEditor.java index c1d6f08701fb..a24dee090f3a 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/editors/BindingEditor.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/editors/BindingEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,12 +20,12 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonShortcuts; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.*; import com.intellij.uiDesigner.FormEditingUtil; import com.intellij.uiDesigner.core.Spacer; import com.intellij.uiDesigner.inspections.FormInspectionUtil; import com.intellij.uiDesigner.lw.IRootContainer; -import com.intellij.uiDesigner.propertyInspector.DesignerToolWindowManager; import com.intellij.uiDesigner.propertyInspector.InplaceContext; import com.intellij.uiDesigner.propertyInspector.properties.BindingProperty; import com.intellij.uiDesigner.radComponents.RadComponent; @@ -41,6 +41,8 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Arrays; +import static com.intellij.uiDesigner.propertyInspector.DesignerToolWindowManager.getInstance; + /** * @author Anton Katilin * @author Vladimir Kondratyev @@ -64,10 +66,11 @@ public final class BindingEditor extends ComboBoxPropertyEditor { public void actionPerformed(final AnActionEvent e) { if (!myCbx.isPopupVisible()) { fireEditingCancelled(); - SwingUtilities.invokeLater( - () -> DesignerToolWindowManager.getInstance(DesignerToolWindowManager.getInstance(project).getActiveFormEditor()) - .getPropertyInspector().requestFocus() - ); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance() + .requestFocus(getInstance(getInstance(project).getActiveFormEditor()) + .getPropertyInspector(), true); + }); } } }.registerCustomShortcutSet(CommonShortcuts.ESCAPE, myCbx); diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClassToBindProperty.java b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClassToBindProperty.java index ce23bd07911f..4f314804d04d 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClassToBindProperty.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClassToBindProperty.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.ComponentWithBrowseButton; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.EditorTextField; @@ -172,7 +173,9 @@ public final class ClassToBindProperty extends Property { + IdeFocusManager.getGlobalInstance().requestFocus(myEditorTextField, true); + }); // todo[anton] make it via providing proper parent } } diff --git a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/ExpressionCellEditor.java b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/ExpressionCellEditor.java index f740d90f293d..f293d877f721 100644 --- a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/ExpressionCellEditor.java +++ b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/ExpressionCellEditor.java @@ -18,6 +18,7 @@ package org.intellij.plugins.xpathView.ui; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.ui.EditorTextField; @@ -51,7 +52,9 @@ public class ExpressionCellEditor extends AbstractCellEditor implements TableCel Runnable runnable = () -> { final Editor editor = getEditor(); if (editor != null) { - editor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editor.getContentComponent(), true); + }); } }; SwingUtilities.invokeLater(runnable); diff --git a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/MultilineEditor.java b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/MultilineEditor.java index 5c0cecbc1e39..a6fd4cc15938 100644 --- a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/MultilineEditor.java +++ b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/ui/MultilineEditor.java @@ -21,6 +21,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.EditorTextField; import javax.swing.*; @@ -132,7 +133,9 @@ public class MultilineEditor extends JPanel { SwingUtilities.invokeLater(() -> { final Editor editor = myEditorTextField.getEditor(); if (editor != null) { - editor.getContentComponent().requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(editor.getContentComponent(), true); + }); } myEditorTextField.selectAll(); }); diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/settings/CCOptions.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/settings/CCOptions.java index 4835ad525e01..c61a866b0fc6 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/settings/CCOptions.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/settings/CCOptions.java @@ -1,6 +1,7 @@ package com.jetbrains.edu.coursecreator.settings; import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.wm.IdeFocusManager; import com.jetbrains.edu.learning.settings.StudyOptionsProvider; import org.jetbrains.annotations.Nullable; @@ -16,11 +17,15 @@ public class CCOptions implements StudyOptionsProvider { public JComponent createComponent() { if (CCSettings.getInstance().useHtmlAsDefaultTaskFormat()) { myHtmlRadioButton.setSelected(true); - myHtmlRadioButton.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myHtmlRadioButton, true); + }); } else { myMarkdownRadioButton.setSelected(true); - myMarkdownRadioButton.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myMarkdownRadioButton, true); + }); } return myPanel; } diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbRunAllCellsAction.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbRunAllCellsAction.java index b8dd00fa3bf7..4a7332266642 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbRunAllCellsAction.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbRunAllCellsAction.java @@ -6,6 +6,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.ipnb.configuration.IpnbConnectionManager; @@ -60,7 +61,9 @@ public class IpnbRunAllCellsAction extends IpnbRunCellBaseAction { cell.runCell(true); ipnbFilePanel.revalidate(); ipnbFilePanel.repaint(); - ipnbFilePanel.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(ipnbFilePanel, true); + }); } } } diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbEditablePanel.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbEditablePanel.java index 6f05bc065df8..a80a2f439c7b 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbEditablePanel.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbEditablePanel.java @@ -4,6 +4,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.popup.ListPopup; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBColor; import com.intellij.ui.OnePixelSplitter; import com.intellij.ui.awt.RelativePoint; @@ -164,7 +165,9 @@ public abstract class IpnbEditablePanel { + IdeFocusManager.getGlobalInstance().requestFocus(textArea, true); + }); } } } diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java index 0af83f3b9786..ff2b060352b2 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java @@ -18,6 +18,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.ui.JBColor; import com.intellij.util.Alarm; @@ -660,7 +661,9 @@ public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider, D IpnbEditablePanel ipnbPanel = getIpnbPanelByClick(e.getPoint()); if (ipnbPanel != null) { ipnbPanel.setEditing(false); - ipnbPanel.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(ipnbPanel, true); + }); repaint(); setSelectedCell(ipnbPanel, true); } diff --git a/python/src/com/jetbrains/python/codeInsight/intentions/PyAnnotateTypesIntention.java b/python/src/com/jetbrains/python/codeInsight/intentions/PyAnnotateTypesIntention.java index 05ddc58f7dd5..a942c30fefab 100644 --- a/python/src/com/jetbrains/python/codeInsight/intentions/PyAnnotateTypesIntention.java +++ b/python/src/com/jetbrains/python/codeInsight/intentions/PyAnnotateTypesIntention.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -163,7 +163,6 @@ public class PyAnnotateTypesIntention extends PyBaseIntentionAction { private static void startTemplate(Project project, PyCallable callable, TemplateBuilder builder) { final Template template = ((TemplateBuilderImpl)builder).buildInlineTemplate(); - ; int offset = callable.getTextRange().getStartOffset(); diff --git a/python/src/com/jetbrains/python/refactoring/introduce/PyIntroduceDialog.java b/python/src/com/jetbrains/python/refactoring/introduce/PyIntroduceDialog.java index 2e2f280728b2..efe8094f73f9 100644 --- a/python/src/com/jetbrains/python/refactoring/introduce/PyIntroduceDialog.java +++ b/python/src/com/jetbrains/python/refactoring/introduce/PyIntroduceDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.event.DocumentListener; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.EditorComboBoxEditor; import com.intellij.ui.EditorComboBoxRenderer; import com.intellij.ui.EditorTextField; @@ -106,7 +107,9 @@ public class PyIntroduceDialog extends DialogWrapper { myContentPane.registerKeyboardAction(new ActionListener() { public void actionPerformed(ActionEvent e) { - myNameComboBox.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(myNameComboBox, true); + }); } }, KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.ALT_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); diff --git a/xml/dom-impl/src/com/intellij/util/xml/ui/EditorTextFieldControl.java b/xml/dom-impl/src/com/intellij/util/xml/ui/EditorTextFieldControl.java index bf373fd9409b..900d4c24b8a4 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/ui/EditorTextFieldControl.java +++ b/xml/dom-impl/src/com/intellij/util/xml/ui/EditorTextFieldControl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.openapi.editor.markup.EffectType; import com.intellij.openapi.editor.markup.MarkupModel; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.EditorTextField; import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.xml.DomElement; @@ -185,7 +186,9 @@ public abstract class EditorTextFieldControl extends BaseM public void navigate(final DomElement element) { final EditorTextField field = getEditorTextField(getComponent()); SwingUtilities.invokeLater(() -> { - field.requestFocus(); + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> { + IdeFocusManager.getGlobalInstance().requestFocus(field, true); + }); field.selectAll(); }); }