[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] FYI: JTextComponent repaint fix
From: |
Roman Kennke |
Subject: |
[cp-patches] FYI: JTextComponent repaint fix |
Date: |
Fri, 08 Apr 2005 10:07:38 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204 |
Hi,
I committed the attached patch that fixes JTextComponent repaint. The
problem I encountered was that JTextComponent were only repainted on
direct user input. I changed this behaviour so that the JTextComponent
is repainted on every change of the underlying Document. This is
accomplished by using a DocumentListener that triggers repaint() requests.
Of course I removed the repaint requests that were triggered on user
input in DefaultEditorKit.
2005-04-08 Roman Kennke <address@hidden>
* javax/swing/text/JTextComponent.java
(JTextComponent): Added repaintListener which issues repaint
requests when the underlying document changes.
(setDocument): Adds repaintListener to document when the
document is changed.
* javax/swing/text/DefaultEditorKit.java:
Removed repaint calls on JTextComponent. This is now handled
through a DocumentListener in JTextComponent that repaints
the component when needed.
/Roman
? java/util/LocaleData.java
? lib/classes.locale
? scripts/classpath.spec
Index: javax/swing/text/DefaultEditorKit.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/DefaultEditorKit.java,v
retrieving revision 1.13
diff -u -r1.13 DefaultEditorKit.java
--- javax/swing/text/DefaultEditorKit.java 21 Jan 2005 09:20:55 -0000
1.13
+++ javax/swing/text/DefaultEditorKit.java 8 Apr 2005 07:53:37 -0000
@@ -110,7 +110,6 @@
t.getDocument().insertString(t.getCaret().getDot(),
event.getActionCommand(), null);
t.getCaret().setDot(Math.min(t.getCaret().getDot() + 1,
t.getDocument().getEndPosition().getOffset()));
- t.repaint();
}
catch (BadLocationException be)
{
@@ -251,7 +250,6 @@
if (pos < t.getDocument().getEndPosition().getOffset())
{
t.getDocument().remove(t.getCaret().getDot(), 1);
- t.repaint();
}
}
catch (BadLocationException e)
@@ -275,7 +273,6 @@
{
t.getDocument().remove(pos - 1, 1);
t.getCaret().setDot(pos - 1);
- t.repaint();
}
}
catch (BadLocationException e)
Index: javax/swing/text/JTextComponent.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/JTextComponent.java,v
retrieving revision 1.25
diff -u -r1.25 JTextComponent.java
--- javax/swing/text/JTextComponent.java 31 Mar 2005 22:17:17 -0000
1.25
+++ javax/swing/text/JTextComponent.java 8 Apr 2005 07:53:37 -0000
@@ -894,11 +894,30 @@
private Insets margin;
private boolean dragEnabled;
+ /** Issues repaint request on document changes. */
+ private DocumentListener repaintListener;
+
/**
* Creates a new <code>JTextComponent</code> instance.
*/
public JTextComponent()
{
+ repaintListener = new DocumentListener()
+ {
+ public void changedUpdate(DocumentEvent ev)
+ {
+ repaint();
+ }
+ public void insertUpdate(DocumentEvent ev)
+ {
+ repaint();
+ }
+ public void removeUpdate(DocumentEvent ev)
+ {
+ repaint();
+ }
+ };
+
Keymap defkeymap = getKeymap(DEFAULT_KEYMAP);
boolean creatingKeymap = false;
if (defkeymap == null)
@@ -932,6 +951,13 @@
{
Document oldDoc = doc;
doc = newDoc;
+
+ // setup document listener
+ if (oldDoc != null)
+ oldDoc.removeDocumentListener(repaintListener);
+ if (newDoc != null)
+ newDoc.addDocumentListener(repaintListener);
+
firePropertyChange("document", oldDoc, newDoc);
revalidate();
repaint();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] FYI: JTextComponent repaint fix,
Roman Kennke <=