Improved handling of backspace based on my understanding
of various known Java bugs. Those who mess around with backspace take note of the following: The Java bug database has several related bugs concerning the treatment of backspace. Here I adopt solution based on fix of bug 4402080: Evaluation The text components now key off of KEY_TYPED with a keyChar == 8 to do the deletion. The motivation for this can be found in bug 4256901. xxxxx@xxxxx 2001-01-05
This commit is contained in:
parent
e7684dedcd
commit
275cf9d79d
1 changed files with 9 additions and 42 deletions
|
@ -43,7 +43,7 @@ import org.thdl.util.StatusBar;
|
||||||
* @author Edward Garrett, Tibetan and Himalayan Digital Library
|
* @author Edward Garrett, Tibetan and Himalayan Digital Library
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class DuffPane extends TibetanPane implements FocusListener, KeyListener {
|
public class DuffPane extends TibetanPane implements FocusListener {
|
||||||
/**
|
/**
|
||||||
* The status bar to update with messages about the current input mode.
|
* The status bar to update with messages about the current input mode.
|
||||||
* Are we expecting a vowel? a subscript? et cetera.
|
* Are we expecting a vowel? a subscript? et cetera.
|
||||||
|
@ -285,7 +285,7 @@ public class DuffPane extends TibetanPane implements FocusListener, KeyListener
|
||||||
private void setupEditor() {
|
private void setupEditor() {
|
||||||
rtfBoard = getToolkit().getSystemClipboard();
|
rtfBoard = getToolkit().getSystemClipboard();
|
||||||
|
|
||||||
newDocument();
|
newDocument();
|
||||||
|
|
||||||
romanFontFamily = ThdlOptions.getStringOption("thdl.default.roman.font.face",
|
romanFontFamily = ThdlOptions.getStringOption("thdl.default.roman.font.face",
|
||||||
"Serif"); // FIXME write out this preference.
|
"Serif"); // FIXME write out this preference.
|
||||||
|
@ -294,8 +294,13 @@ public class DuffPane extends TibetanPane implements FocusListener, KeyListener
|
||||||
|
|
||||||
caret = getCaret();
|
caret = getCaret();
|
||||||
|
|
||||||
addKeyListener(this);
|
|
||||||
addFocusListener(this);
|
addFocusListener(this);
|
||||||
|
addKeyListener(new KeyAdapter() {
|
||||||
|
public void keyPressed(KeyEvent kev) {
|
||||||
|
if (kev.isActionKey() || kev.getKeyCode() == KeyEvent.VK_BACK_SPACE)
|
||||||
|
initKeyboard();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
setupKeymap();
|
setupKeymap();
|
||||||
}
|
}
|
||||||
|
@ -1137,44 +1142,6 @@ public void paste(int offset) {
|
||||||
isCutAndPasteEnabled = false;
|
isCutAndPasteEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required by contract with the KeyListener interface,
|
|
||||||
* this method initializes the keyboard
|
|
||||||
* when an action key is pressed. It leaves the
|
|
||||||
* behavior up to the Keymap of this DuffPane.
|
|
||||||
*/
|
|
||||||
public void keyPressed(KeyEvent e) {
|
|
||||||
// FIXME: exceptions thrown here do not cause the program to fail, even in development mode.
|
|
||||||
|
|
||||||
if (e.isActionKey())
|
|
||||||
initKeyboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required by contract with the KeyListener interface,
|
|
||||||
* this method does nothing.
|
|
||||||
*
|
|
||||||
* @param e a KeyEvent
|
|
||||||
*/
|
|
||||||
public void keyTyped(KeyEvent e) { }
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required by contract with the Key Listener interface,
|
|
||||||
* this method initializes the keyboard if the user presses
|
|
||||||
* backspace.
|
|
||||||
*
|
|
||||||
* @param e the KeyEvent
|
|
||||||
*/
|
|
||||||
public void keyReleased(KeyEvent e) {
|
|
||||||
// FIXME: exceptions thrown here do not cause the program to fail, even in development mode.
|
|
||||||
|
|
||||||
if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE)
|
|
||||||
initKeyboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processRomanChar(String key, MutableAttributeSet attSet) {
|
private void processRomanChar(String key, MutableAttributeSet attSet) {
|
||||||
switch (key.charAt(0)) {
|
switch (key.charAt(0)) {
|
||||||
case KeyEvent.VK_BACK_SPACE:
|
case KeyEvent.VK_BACK_SPACE:
|
||||||
|
|
Loading…
Reference in a new issue