From 0b6bd1b7c6a78b016e2ec8b69ef69ed8df8ca304 Mon Sep 17 00:00:00 2001 From: Ernie Rael Date: Thu, 9 Jan 2020 18:32:23 +0000 Subject: [PATCH 1/2] [NETBEANS-3674] change JTextComponent Keymap from EventDispatchThread --- .../src/org/netbeans/editor/BaseKit.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/ide/editor.lib/src/org/netbeans/editor/BaseKit.java b/ide/editor.lib/src/org/netbeans/editor/BaseKit.java index 3eeebc3fad35..7362120e4789 100644 --- a/ide/editor.lib/src/org/netbeans/editor/BaseKit.java +++ b/ide/editor.lib/src/org/netbeans/editor/BaseKit.java @@ -4101,8 +4101,8 @@ private void refreshShortcutsAndActions(boolean refreshActions) { LOG.fine("BaseKit.KeymapTracker('" + mimeType + "') refreshing keymap " + (refreshActions ? "and actions" : "")); //NOI18N } - MultiKeymap keymap; - JTextComponent [] arr; + final MultiKeymap keymap; + final JTextComponent [] arr; synchronized (KEYMAPS_AND_ACTIONS_LOCK) { MimePath mimePath = MimePath.parse(mimeType); @@ -4120,13 +4120,22 @@ private void refreshShortcutsAndActions(boolean refreshActions) { arr = components.toArray(new JTextComponent[components.size()]); } - for(JTextComponent c : arr) { - if (c != null) { - c.setKeymap(keymap); + if(arr.length > 0) { + Runnable pushKeymapChange = () -> { + for(JTextComponent c : arr) { + if (c != null) { + c.setKeymap(keymap); + } + } + + searchableKit.fireActionsChange(); + }; + if(SwingUtilities.isEventDispatchThread()) { + pushKeymapChange.run(); + } else { + SwingUtilities.invokeLater(pushKeymapChange); } } - - searchableKit.fireActionsChange(); } } // End of KeymapTracker class From b2214ccaea12accf613e23dc6ce5b32fa29d35f1 Mon Sep 17 00:00:00 2001 From: Ernie Rael Date: Fri, 10 Jan 2020 18:27:24 +0000 Subject: [PATCH 2/2] [NETBEANS-3674] tweak prev submit. Always run pushKeymapChange --- .../src/org/netbeans/editor/BaseKit.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ide/editor.lib/src/org/netbeans/editor/BaseKit.java b/ide/editor.lib/src/org/netbeans/editor/BaseKit.java index 7362120e4789..cd1ba15c4c09 100644 --- a/ide/editor.lib/src/org/netbeans/editor/BaseKit.java +++ b/ide/editor.lib/src/org/netbeans/editor/BaseKit.java @@ -4120,21 +4120,19 @@ private void refreshShortcutsAndActions(boolean refreshActions) { arr = components.toArray(new JTextComponent[components.size()]); } - if(arr.length > 0) { - Runnable pushKeymapChange = () -> { - for(JTextComponent c : arr) { - if (c != null) { - c.setKeymap(keymap); - } + Runnable pushKeymapChange = () -> { + for(JTextComponent c : arr) { + if (c != null) { + c.setKeymap(keymap); } - - searchableKit.fireActionsChange(); - }; - if(SwingUtilities.isEventDispatchThread()) { - pushKeymapChange.run(); - } else { - SwingUtilities.invokeLater(pushKeymapChange); } + + searchableKit.fireActionsChange(); + }; + if(SwingUtilities.isEventDispatchThread()) { + pushKeymapChange.run(); + } else { + SwingUtilities.invokeLater(pushKeymapChange); } }