7124210: [macosx] Replacing text in a TextField does generate an extra TextEvent

Reviewed-by: serb
This commit is contained in:
Alexander Potochkin 2012-04-26 21:16:12 +04:00
parent 39c1b4be34
commit 21e63eca82
3 changed files with 23 additions and 5 deletions

View File

@ -210,6 +210,15 @@ final class LWTextAreaPeer
super();
}
@Override
public void replaceSelection(String content) {
getDocument().removeDocumentListener(LWTextAreaPeer.this);
super.replaceSelection(content);
// post only one text event in this case
postTextEvent();
getDocument().addDocumentListener(LWTextAreaPeer.this);
}
@Override
public boolean hasFocus() {
return getTarget().hasFocus();

View File

@ -187,7 +187,7 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
}
}
private void sendTextEvent(final DocumentEvent e) {
protected final void postTextEvent() {
postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED));
synchronized (getDelegateLock()) {
revalidate();
@ -196,17 +196,17 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
@Override
public final void changedUpdate(final DocumentEvent e) {
sendTextEvent(e);
postTextEvent();
}
@Override
public final void insertUpdate(final DocumentEvent e) {
sendTextEvent(e);
postTextEvent();
}
@Override
public final void removeUpdate(final DocumentEvent e) {
sendTextEvent(e);
postTextEvent();
}
@Override

View File

@ -95,7 +95,7 @@ final class LWTextFieldPeer
@Override
public void actionPerformed(final ActionEvent e) {
postEvent(new ActionEvent(getTarget(), ActionEvent.ACTION_PERFORMED,
getText(), e.getWhen(), e.getModifiers()));
getText(), e.getWhen(), e.getModifiers()));
}
/**
@ -121,6 +121,15 @@ final class LWTextFieldPeer
super();
}
@Override
public void replaceSelection(String content) {
getDocument().removeDocumentListener(LWTextFieldPeer.this);
super.replaceSelection(content);
// post only one text event in this case
postTextEvent();
getDocument().addDocumentListener(LWTextFieldPeer.this);
}
@Override
public boolean hasFocus() {
return getTarget().hasFocus();