Hi,
this patch fixes PR 26842[0]. The fix to GapContent made another drawing problem
visible which occured because document listeners have been registered twice. I
prevented that by not indicating that the document has changed when someone
changes the lineWrap or wrapStyleWord property and only update the view.

The ChangeLog:

2006-03-31  Robert Schuster  <[EMAIL PROTECTED]>

        * javax/swing/text/GapContent.java:
        (replace): Move all Position instances from gap's end to
        it's start before increasing the gap start.
        * javax/swing/plaf/basic/BasicTextAreaUI.java:
        (propertyChanged): Update the view only instead of
        indicating a document change.

[0] - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26842
Index: javax/swing/text/GapContent.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/GapContent.java,v
retrieving revision 1.43
diff -u -r1.43 GapContent.java
--- javax/swing/text/GapContent.java	29 Mar 2006 14:52:35 -0000	1.43
+++ javax/swing/text/GapContent.java	31 Mar 2006 15:17:58 -0000
@@ -644,10 +644,11 @@
         System.arraycopy(addItems, 0, buffer, gapStart, addSize);
         
         // Position objects having their mark at the end of the gap
-        // (results in an offset of 0) should be moved down because
-        // the size of the gap will decrease by addSize and the offsets
-        // will increase by the same amount and the latter should not happen.
-        resetMarksAtZero();
+        // (results in an offset equal to gapStart) should be moved down
+        // because the size of the gap will decrease by addSize and the
+        // offsets will increase by the same amount and the latter should
+        // not happen.
+        setPositionsInRange(gapEnd, 0, gapStart);
         
         gapStart += addSize;
       }
Index: javax/swing/plaf/basic/BasicTextAreaUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicTextAreaUI.java,v
retrieving revision 1.6
diff -u -r1.6 BasicTextAreaUI.java
--- javax/swing/plaf/basic/BasicTextAreaUI.java	31 Oct 2005 21:29:52 -0000	1.6
+++ javax/swing/plaf/basic/BasicTextAreaUI.java	31 Mar 2006 15:17:58 -0000
@@ -45,9 +45,11 @@
 import javax.swing.JTextArea;
 import javax.swing.UIDefaults;
 import javax.swing.plaf.ComponentUI;
+import javax.swing.text.Document;
 import javax.swing.text.Element;
 import javax.swing.text.PlainView;
 import javax.swing.text.View;
+import javax.swing.text.ViewFactory;
 import javax.swing.text.WrappedPlainView;
 
 public class BasicTextAreaUI extends BasicTextUI
@@ -108,6 +110,9 @@
     JTextArea comp = (JTextArea)getComponent();
     if (ev.getPropertyName() == "lineWrap"
         || ev.getPropertyName() == "wrapStyleWord")
-      modelChanged();
+      {
+        // Changes the View (without modifying the document or it's listeners).
+        setView(create(textComponent.getDocument().getDefaultRootElement()));
+      }
   }
 }

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to