From 9af10f3f20085a15d64348796ed8a88fd67f36c9 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 13 Oct 2017 16:12:12 +0300 Subject: [PATCH] ui: keep selection in Keymap settings on clearing of Shortcut filter TreeExpansionMonitor does not support reentrant freezing. So calls like: myTreeExpansionMonitor.freeze(); myFilteringPanel.setShortcut(null); // triggers `filterTreeByShortcut` doSmth(); myTreeExpansionMonitor.restore(); did not work as expected, because `doSmth()` was performed without monitor state being frozen. --- .../src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java index 03644edb3463..15e4deaffd6e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java @@ -330,11 +330,12 @@ public class KeymapPanel extends JPanel implements SearchableConfigurable, Confi } private void filterTreeByShortcut(Shortcut shortcut) { - myTreeExpansionMonitor.freeze(); + boolean wasFreezed = myTreeExpansionMonitor.isFreeze(); + if (!wasFreezed) myTreeExpansionMonitor.freeze(); myActionsTree.filterTree(shortcut, myQuickLists); final JTree tree = myActionsTree.getTree(); TreeUtil.expandAll(tree); - myTreeExpansionMonitor.restore(); + if (!wasFreezed) myTreeExpansionMonitor.restore(); } public void showOption(String option) {