On Mon, 17 Jun 2024 19:58:37 GMT, Phil Race <p...@openjdk.org> wrote:
>> Tejesh R has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Review fix - remove null initialization for table > > src/java.desktop/share/classes/sun/swing/FilePane.java line 1320: > >> 1318: } >> 1319: >> 1320: >> detailsTable.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, > > If I have this right, JTable gets the map initialised via this code in > BasicTableUI.java > > InputMap getInputMap(int condition) { > if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) { > InputMap keyMap = > (InputMap)DefaultLookup.get(table, this, > "Table.ancestorInputMap"); > InputMap rtlKeyMap; > > if (table.getComponentOrientation().isLeftToRight() || > ((rtlKeyMap = (InputMap)DefaultLookup.get(table, this, > > "Table.ancestorInputMap.RightToLeft")) == null)) { > return keyMap; > } else { > rtlKeyMap.setParent(keyMap); > return rtlKeyMap; > } > } > return null; > } > > This uses the shared defaults for the L&F. > I imagine that sharing is by far the most efficient thing to do for 99% of > uses, in which case I expect that somewhere there's some doc telling apps > that if they mess with the map for a component, they need to make a copy > first ? But how to do that ? And the author of the code above that modified > the shared map presumably was ignorant of this. Yes, modifying the shared `ActionMap` is causing this issue though. As far as I have seen the copy first solution is mentioned in this bug https://bugs.openjdk.org/browse/JDK-8166352 as customer submitted workaround. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19725#discussion_r1643800858