Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.2734 diff -u -r1.2734 ChangeLog --- ChangeLog 5 Nov 2004 22:38:47 -0000 1.2734 +++ ChangeLog 6 Nov 2004 16:29:49 -0000 @@ -1,3 +1,13 @@ +2004-11-06 Noa Resare + + * javax/swing/JLabel.java(indexOfIgnoreCase): New method. + * javax/swing/JLabel.java(setText): Recalculate + displayedMnemonicIndex if text changed. + * javax/swing/JLabel.java(setDisplayedMnemonic): + Made mnemonic char search case independent. + * javax/swing/JLabel.java(setDisplayedMnemonicIndex): + Make mnemonic position check case independent. + 2004-11-05 Noa Resare * java/net/Socket.java(getPort): Return 0 instead of -1 on Index: javax/swing/JLabel.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JLabel.java,v retrieving revision 1.16 diff -u -r1.16 JLabel.java --- javax/swing/JLabel.java 22 Oct 2004 12:43:59 -0000 1.16 +++ javax/swing/JLabel.java 6 Nov 2004 16:29:49 -0000 @@ -291,8 +291,8 @@ text = newText; firePropertyChange(TEXT_CHANGED_PROPERTY, oldText, newText); - if (text != null && text.length() <= displayedMnemonicIndex) - setDisplayedMnemonicIndex(text.length() - 1); + if (text != null) + setDisplayedMnemonicIndex(indexOfIgnoreCase(text, displayedMnemonic)); } } @@ -372,7 +372,7 @@ displayedMnemonic = mnemonic; if (text != null) - setDisplayedMnemonicIndex(text.indexOf(mnemonic)); + setDisplayedMnemonicIndex(indexOfIgnoreCase(text, mnemonic)); } } @@ -415,7 +415,9 @@ if (newIndex < -1 || (text != null && newIndex >= text.length())) throw new IllegalArgumentException(); - if (text == null || text.charAt(newIndex) != displayedMnemonic) + if (text == null || newIndex < -1 && + Character.toUpperCase(text.charAt(newIndex)) != + Character.toUpperCase((char)displayedMnemonic)) newIndex = -1; if (newIndex != displayedMnemonicIndex) @@ -691,4 +693,13 @@ { return null; } + + /** + * Returns the index of character c in str, ignoring case. + */ + private int indexOfIgnoreCase(String str, int c) + { + str = str.toUpperCase(); + return str.indexOf(Character.toUpperCase((char)c)); + } }