I adjusted the ElementBuffer.insert method so that it only registers an
element change if that element has actually changed. It is required that
DocumentEvent.getChange(Element) returns null for a not-changed element
instead of an empty ElementChange.
2006-02-07 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/text/DefaultStyledDocument.java
(ElementBuffer.insert): Only register change when the element
actually changed.
/Roman
Index: javax/swing/text/DefaultStyledDocument.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/DefaultStyledDocument.java,v
retrieving revision 1.58
diff -u -r1.58 DefaultStyledDocument.java
--- javax/swing/text/DefaultStyledDocument.java 3 Feb 2006 16:20:40 -0000 1.58
+++ javax/swing/text/DefaultStyledDocument.java 7 Feb 2006 11:56:55 -0000
@@ -684,9 +684,14 @@
BranchElement e = (BranchElement) curr.e;
Element[] removed = curr.getRemovedElements();
Element[] added = curr.getAddedElements();
- e.replace(curr.index, removed.length, added);
- ElementEdit ee = new ElementEdit(e, curr.index, removed, added);
- ev.addEdit(ee);
+ // FIXME: We probably shouldn't create the empty Element[] in the
+ // first place.
+ if (removed.length > 0 || added.length > 0)
+ {
+ e.replace(curr.index, removed.length, added);
+ ElementEdit ee = new ElementEdit(e, curr.index, removed, added);
+ ev.addEdit(ee);
+ }
}
}