[FinderRecursivePanel] restore "updateSelectedPathModeActive" on exceptions

This commit is contained in:
Yann Cébron
2016-10-31 10:25:21 +01:00
parent c35825d5b5
commit 428da641d7
@@ -438,20 +438,24 @@ public abstract class FinderRecursivePanel<T> 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) {