Hi, At various points we try to register a null KeyStroke with an InputMap. This gives some problems later on when InputMaps are copied because null entries aren't always expected. Does the following patch make sense?
2006-01-03 Mark Wielaard <[EMAIL PROTECTED]>
* javax/swing/JMenuItem.java (configurePropertiesFromAction): Only
register keyboard action when accelerator is not null.
* javax/swing/plaf/basic/BasicMenuItemUI.java (propertyChange): Only
re-register accelerator if not null.
(installKeyboardActions): Only put accelerator in map when not null.
Cheers,
Mark
Index: javax/swing/JMenuItem.java
===================================================================
RCS file: /sources/classpath/classpath/javax/swing/JMenuItem.java,v
retrieving revision 1.24
diff -u -r1.24 JMenuItem.java
--- javax/swing/JMenuItem.java 3 Jan 2006 18:42:22 -0000 1.24
+++ javax/swing/JMenuItem.java 3 Jan 2006 23:01:29 -0000
@@ -280,8 +280,9 @@
if (! (this instanceof JMenu) && action != null)
{
setAccelerator((KeyStroke) (action.getValue(Action.ACCELERATOR_KEY)));
- super.registerKeyboardAction(action, accelerator,
- JComponent.WHEN_IN_FOCUSED_WINDOW);
+ if (accelerator != null)
+ super.registerKeyboardAction(action, accelerator,
+ JComponent.WHEN_IN_FOCUSED_WINDOW);
}
}
Index: javax/swing/plaf/basic/BasicMenuItemUI.java
===================================================================
RCS file: /sources/classpath/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java,v
retrieving revision 1.41
diff -u -r1.41 BasicMenuItemUI.java
--- javax/swing/plaf/basic/BasicMenuItemUI.java 19 Dec 2005 15:05:04 -0000 1.41
+++ javax/swing/plaf/basic/BasicMenuItemUI.java 3 Jan 2006 23:01:30 -0000
@@ -206,7 +206,10 @@
map.remove((KeyStroke)e.getOldValue());
else
map = new ComponentInputMapUIResource(menuItem);
- map.put((KeyStroke)e.getNewValue(), "doClick");
+
+ KeyStroke accelerator = (KeyStroke) e.getNewValue();
+ if (accelerator != null)
+ map.put(accelerator, "doClick");
}
}
}
@@ -485,7 +488,9 @@
InputMap focusedWindowMap = SwingUtilities.getUIInputMap(menuItem, JComponent.WHEN_IN_FOCUSED_WINDOW);
if (focusedWindowMap == null)
focusedWindowMap = new ComponentInputMapUIResource(menuItem);
- focusedWindowMap.put(menuItem.getAccelerator(), "doClick");
+ KeyStroke accelerator = menuItem.getAccelerator();
+ if (accelerator != null)
+ focusedWindowMap.put(accelerator, "doClick");
SwingUtilities.replaceUIInputMap(menuItem, JComponent.WHEN_IN_FOCUSED_WINDOW, focusedWindowMap);
ActionMap UIActionMap = SwingUtilities.getUIActionMap(menuItem);
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Classpath-patches mailing list [email protected] http://lists.gnu.org/mailman/listinfo/classpath-patches
