diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarModel.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarModel.java index ae29cc314971..7143204a717d 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarModel.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarModel.java @@ -52,13 +52,12 @@ public class NavBarModel { private final Project myProject; private final NavBarModelListener myNotificator; private boolean myChanged = true; - private boolean shouldSkipUpdateFromDataContext = false; - private final boolean myIsFloatingModeModel; + private boolean updated = false; + private boolean isFixedComponent = false; public NavBarModel(final Project project) { myProject = project; myNotificator = project.getMessageBus().syncPublisher(NavBarModelListener.NAV_BAR); - myIsFloatingModeModel = !UISettings.getInstance().SHOW_NAVIGATION_BAR; } public int getSelectedIndex() { @@ -93,7 +92,7 @@ public class NavBarModel { } protected void updateModel(DataContext dataContext) { - if (LaterInvocator.isInModalContext() || (shouldSkipUpdateFromDataContext && myIsFloatingModeModel)) return; + if (LaterInvocator.isInModalContext() || (updated && !isFixedComponent)) return; PsiElement psiElement = LangDataKeys.PSI_FILE.getData(dataContext); if (psiElement == null) { @@ -120,7 +119,7 @@ public class NavBarModel { } setChanged(false); - shouldSkipUpdateFromDataContext = !UISettings.getInstance().SHOW_NAVIGATION_BAR; + updated = true; } protected void updateModel(final PsiElement psiElement) { @@ -373,6 +372,10 @@ public class NavBarModel { } } + public void setFixedComponent(boolean fixedComponent) { + isFixedComponent = fixedComponent; + } + private static final class SiblingsComparator implements Comparator { public int compare(final Object o1, final Object o2) { final Pair w1 = getWeightedName(o1); diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java index 53ab3c0bf3e0..d9618a801814 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java @@ -127,6 +127,7 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { final JComponent result = new OpaquePanel.List(new BorderLayout()); result.setBackground(UIUtil.isUnderGTKLookAndFeel() ? Color.WHITE : UIUtil.getListBackground()); myNavigationBar = new NavBarPanel(myProject); + myNavigationBar.getModel().setFixedComponent(true); JScrollPane scroller = ScrollPaneFactory.createScrollPane(myNavigationBar); scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);