From 428da641d79a08cd3fc695fbc2a2bdb1e59a36f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Mon, 31 Oct 2016 10:25:21 +0100 Subject: [PATCH] [FinderRecursivePanel] restore "updateSelectedPathModeActive" on exceptions --- .../com/intellij/ui/FinderRecursivePanel.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/FinderRecursivePanel.java b/platform/platform-impl/src/com/intellij/ui/FinderRecursivePanel.java index cfe8ddc67f90..717e9c07db1b 100644 --- a/platform/platform-impl/src/com/intellij/ui/FinderRecursivePanel.java +++ b/platform/platform-impl/src/com/intellij/ui/FinderRecursivePanel.java @@ -438,20 +438,24 @@ public abstract class FinderRecursivePanel extends OnePixelSplitter implement */ public void updateSelectedPath(Object... pathToSelect) { if (!myUpdateSelectedPathModeActive.compareAndSet(false, true)) return; - FinderRecursivePanel panel = this; - for (int i = 0; i < pathToSelect.length; i++) { - Object selectedValue = pathToSelect[i]; - panel.setSelectedValue(selectedValue); - if (i < pathToSelect.length - 1) { - final JComponent component = panel.getSecondComponent(); - assert component instanceof FinderRecursivePanel : Arrays.toString(pathToSelect); - panel = (FinderRecursivePanel)component; + + try { + FinderRecursivePanel panel = this; + for (int i = 0; i < pathToSelect.length; i++) { + Object selectedValue = pathToSelect[i]; + panel.setSelectedValue(selectedValue); + if (i < pathToSelect.length - 1) { + final JComponent component = panel.getSecondComponent(); + assert component instanceof FinderRecursivePanel : Arrays.toString(pathToSelect); + panel = (FinderRecursivePanel)component; + } } + + IdeFocusManager.getInstance(myProject).requestFocus(panel.myList, true); + } + finally { + myUpdateSelectedPathModeActive.set(false); } - - IdeFocusManager.getInstance(myProject).requestFocus(panel.myList, true); - - myUpdateSelectedPathModeActive.set(false); } private void setSelectedValue(final Object value) {