[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: graydon's swing fixes
Kaffe CVS
cvs-commits at kaffe.org
Sat Nov 13 17:14:19 PST 2004
PatchSet 5454
Date: 2004/11/14 01:10:07
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: graydon's swing fixes
2004-11-13 Dalibor Topic <robilad at kaffe.org>
* libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java,
libraries/javalib/javax/swing/text/GapContent.java,
libraries/javalib/javax/swing/text/PlainDocument.java,
libraries/javalib/javax/swing/text/Utilities.java:
Resynced with GNU Classpath.
2004-11-11 Graydon Hoare <graydon at redhat.com>
* javax/swing/plaf/basic/BasicTextUI.java:
Listen to focus events, indicate focus via caret.
* javax/swing/text/GapContent.java (getString): Return substring.
* javax/swing/text/PlainDocument.java (reindex): New method.
(createDefaultRoot): Call it.
(insertUpdate): Likewise.
(removeUpdate): Likewise.
* javax/swing/text/Utilities.java (drawTabbedText): Always advance
on tab and newline, even if no painting happens.
Members:
ChangeLog:1.3000->1.3001
libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.7->1.8
libraries/javalib/javax/swing/text/GapContent.java:1.1->1.2
libraries/javalib/javax/swing/text/PlainDocument.java:1.2->1.3
libraries/javalib/javax/swing/text/Utilities.java:1.2->1.3
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3000 kaffe/ChangeLog:1.3001
--- kaffe/ChangeLog:1.3000 Sat Nov 13 23:58:05 2004
+++ kaffe/ChangeLog Sun Nov 14 01:10:07 2004
@@ -1,5 +1,25 @@
2004-11-13 Dalibor Topic <robilad at kaffe.org>
+ * libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java,
+ libraries/javalib/javax/swing/text/GapContent.java,
+ libraries/javalib/javax/swing/text/PlainDocument.java,
+ libraries/javalib/javax/swing/text/Utilities.java:
+ Resynced with GNU Classpath.
+
+ 2004-11-11 Graydon Hoare <graydon at redhat.com>
+
+ * javax/swing/plaf/basic/BasicTextUI.java:
+ Listen to focus events, indicate focus via caret.
+ * javax/swing/text/GapContent.java (getString): Return substring.
+ * javax/swing/text/PlainDocument.java (reindex): New method.
+ (createDefaultRoot): Call it.
+ (insertUpdate): Likewise.
+ (removeUpdate): Likewise.
+ * javax/swing/text/Utilities.java (drawTabbedText): Always advance
+ on tab and newline, even if no painting happens.
+
+2004-11-13 Dalibor Topic <robilad at kaffe.org>
+
* libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c:
Resynced with GNU Classpath.
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.7 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.8
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.7 Sat Nov 13 02:17:46 2004
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java Sun Nov 14 01:10:10 2004
@@ -45,6 +45,8 @@
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -228,9 +230,20 @@
caret.setBlinkRate(defaults.getInt(prefix + ".caretBlinkRate"));
}
+ private FocusListener focuslistener = new FocusListener() {
+ public void focusGained(FocusEvent e)
+ {
+ textComponent.repaint();
+ }
+ public void focusLost(FocusEvent e)
+ {
+ textComponent.repaint();
+ }
+ };
+
protected void installListeners()
{
- // Do nothing here.
+ textComponent.addFocusListener(focuslistener);
}
protected String getKeymapName()
@@ -328,7 +341,7 @@
protected void uninstallListeners()
{
- // Do nothing here.
+ textComponent.removeFocusListener(focuslistener);
}
protected void uninstallKeyboardActions()
@@ -367,7 +380,7 @@
rootView.paint(g, getVisibleEditorRect());
- if (caret != null)
+ if (caret != null && textComponent.hasFocus())
caret.paint(g);
}
Index: kaffe/libraries/javalib/javax/swing/text/GapContent.java
diff -u kaffe/libraries/javalib/javax/swing/text/GapContent.java:1.1 kaffe/libraries/javalib/javax/swing/text/GapContent.java:1.2
--- kaffe/libraries/javalib/javax/swing/text/GapContent.java:1.1 Thu Jul 22 19:37:40 2004
+++ kaffe/libraries/javalib/javax/swing/text/GapContent.java Sun Nov 14 01:10:10 2004
@@ -93,7 +93,7 @@
public String getString(int where, int len) throws BadLocationException
{
- return buf.toString();
+ return buf.substring(where, where+len);
}
public void getChars(int where, int len, Segment txt)
Index: kaffe/libraries/javalib/javax/swing/text/PlainDocument.java
diff -u kaffe/libraries/javalib/javax/swing/text/PlainDocument.java:1.2 kaffe/libraries/javalib/javax/swing/text/PlainDocument.java:1.3
--- kaffe/libraries/javalib/javax/swing/text/PlainDocument.java:1.2 Sun Jul 25 06:37:52 2004
+++ kaffe/libraries/javalib/javax/swing/text/PlainDocument.java Sun Nov 14 01:10:10 2004
@@ -37,6 +37,8 @@
package javax.swing.text;
+import java.util.ArrayList;
+
public class PlainDocument extends AbstractDocument
{
private static final long serialVersionUID = 4758290289196893664L;
@@ -59,14 +61,53 @@
rootElement = createDefaultRoot();
}
- protected AbstractDocument.AbstractElement createDefaultRoot()
+ protected void reindex()
{
- BranchElement rootElement =
- (BranchElement) createBranchElement(null, null);
- Element[] lines = new Element[1];
+ Element[] lines;
+ try
+ {
+ String str = content.getString(0, content.length());
+
+ ArrayList elts = new ArrayList();
+ int j = 0;
+ for (int i = str.indexOf('\n', 0); i != -1; i = str.indexOf('\n', i+1))
+ {
+ elts.add(createLeafElement(rootElement, null, j, i));
+ j = i;
+ }
+
+ if (j < content.length())
+ elts.add(createLeafElement(rootElement, null, j, content.length()));
+
+ lines = new Element[elts.size()];
+ for (int i = 0; i < elts.size(); ++i)
+ lines[i] = (Element) elts.get(i);
+
+ }
+ catch (BadLocationException e)
+ {
+ lines = new Element[1];
lines[0] = createLeafElement(rootElement, null, 0, 1);
- rootElement.replace(0, 0, lines);
- return rootElement;
+ }
+
+ ((BranchElement) rootElement).replace(0, rootElement.getElementCount(), lines);
+ }
+
+ protected AbstractDocument.AbstractElement createDefaultRoot()
+ {
+ rootElement = createBranchElement(null, null);
+ reindex();
+ return (AbstractElement) rootElement;
+ }
+
+ protected void insertUpdate(DefaultDocumentEvent chng, AttributeSet attr)
+ {
+ reindex();
+ }
+
+ protected void removeUpdate(DefaultDocumentEvent chng)
+ {
+ reindex();
}
public Element getDefaultRootElement()
Index: kaffe/libraries/javalib/javax/swing/text/Utilities.java
diff -u kaffe/libraries/javalib/javax/swing/text/Utilities.java:1.2 kaffe/libraries/javalib/javax/swing/text/Utilities.java:1.3
--- kaffe/libraries/javalib/javax/swing/text/Utilities.java:1.2 Sat Oct 9 22:18:56 2004
+++ kaffe/libraries/javalib/javax/swing/text/Utilities.java Sun Nov 14 01:10:10 2004
@@ -98,15 +98,17 @@
for (int offset = s.offset; offset < (s.offset + s.count); ++offset)
{
char c = buffer[offset];
- if (len > 0 && (c == '\t' || c == '\n'))
+ if (c == '\t' || c == '\n')
{
- g.drawChars(buffer, pos, len, pixelX, pixelY + ascent);
- pixelX += pixelWidth;
- pixelWidth = 0;
+ if (len > 0) {
+ g.drawChars(buffer, pos, len, pixelX, pixelY + ascent);
+ pixelX += pixelWidth;
+ pixelWidth = 0;
+ }
pos = offset+1;
len = 0;
}
-
+
switch (c)
{
case '\t':
More information about the kaffe
mailing list