Hi,
the magic caret position can be null when the cursor has not moved yet. I havent
considered this when writing the up/down movement & selection actions. This
patch fixes that.

The ChangeLog:

2006-02-22  Robert Schuster  <[EMAIL PROTECTED]>

        * javax/swing/text/DefaultEditorKit.java: Added checks and fallback
        behavior when magic caret position is null.

cya
Robert
Index: javax/swing/text/DefaultEditorKit.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/DefaultEditorKit.java,v
retrieving revision 1.30
diff -u -r1.30 DefaultEditorKit.java
--- javax/swing/text/DefaultEditorKit.java	20 Feb 2006 21:18:38 -0000	1.30
+++ javax/swing/text/DefaultEditorKit.java	22 Feb 2006 10:38:03 -0000
@@ -863,7 +863,10 @@
             if (t != null)
               {
                 Caret c = t.getCaret();
-                int x = c.getMagicCaretPosition().x;
+                // The magic caret position may be null when the caret
+                // has not moved yet.
+                Point mcp = c.getMagicCaretPosition();
+                int x = (mcp != null) ? mcp.x : 0;
                 int pos = Utilities.getPositionAbove(t, t.getCaretPosition(), x);
                 
                 if (pos > -1)
@@ -886,7 +889,10 @@
             if (t != null)
               {
                 Caret c = t.getCaret();
-                int x = c.getMagicCaretPosition().x;
+                // The magic caret position may be null when the caret
+                // has not moved yet.
+                Point mcp = c.getMagicCaretPosition();
+                int x = (mcp != null) ? mcp.x : 0;
                 int pos = Utilities.getPositionBelow(t, t.getCaretPosition(), x);
                 
                 if (pos > -1)
@@ -959,7 +965,10 @@
             if (t != null)
               {
                 Caret c = t.getCaret();
-                int x = c.getMagicCaretPosition().x;
+                // The magic caret position may be null when the caret
+                // has not moved yet.
+                Point mcp = c.getMagicCaretPosition();
+                int x = (mcp != null) ? mcp.x : 0;
                 int pos = Utilities.getPositionAbove(t, t.getCaretPosition(), x);
                 
                 if (pos > -1)
@@ -982,7 +991,10 @@
             if (t != null)
               {
                 Caret c = t.getCaret();
-                int x = c.getMagicCaretPosition().x;
+                // The magic caret position may be null when the caret
+                // has not moved yet.
+                Point mcp = c.getMagicCaretPosition();
+                int x = (mcp != null) ? mcp.x : 0;
                 int pos = Utilities.getPositionBelow(t, t.getCaretPosition(), x);
                 
                 if (pos > -1)

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to