diff options
author | Hans Boehm <Hans_Boehm@hp.com> | 2003-02-19 00:35:35 +0000 |
---|---|---|
committer | Hans Boehm <hboehm@gcc.gnu.org> | 2003-02-19 00:35:35 +0000 |
commit | 56bba8cf57d0aa75d0266486595efe0d070af0b7 (patch) | |
tree | abb4641e8aaeacc764f059098100e1aa5dde90a7 /libjava/java/awt | |
parent | 35bd55199796da40e73ce07ac42c4e88a9e40e6a (diff) | |
download | gcc-56bba8cf57d0aa75d0266486595efe0d070af0b7.zip gcc-56bba8cf57d0aa75d0266486595efe0d070af0b7.tar.gz gcc-56bba8cf57d0aa75d0266486595efe0d070af0b7.tar.bz2 |
XToolkit.java (getFontMetrics): initialize if necessary.
2003-02-18 Hans Boehm <Hans.Boehm@hp.com>
* gnu/awt/xlib/XToolkit.java (getFontMetrics): initialize
if necessary.
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c
(setFont, gtkSetFont): add.
gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer):
Propagate font to peer. (setFont): add FIXME comment.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
(gtkTextGetSize): fix height, width computation.
* gnu/java/awt/peer/gtk/GtkFontPeer.java (GtkFontPeer):
Make X font name a bit less bogus.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
(post_adjustment_event): Pass on GTK_SCROLL_NONE.
* java/awt/Scrollbar.java (setValues): Fix visibleAmount range check.
(processAdjustmentEvent): Adjust value.
* java/awt/FlowLayout.java (layoutContainer) Fix 2 indexing and one
logic errors.
* java/awt/Component.java (setVisible, show, hide): Call show and
hide methods in subclasses.
(getPreferredSize): don't set prefSize before we have peer.
* java/awt/TextArea.java, java/awt/TextField.java (getPreferredSize):
Guess (0,0) if we don't have peer.
From-SVN: r63077
Diffstat (limited to 'libjava/java/awt')
-rw-r--r-- | libjava/java/awt/Component.java | 21 | ||||
-rw-r--r-- | libjava/java/awt/FlowLayout.java | 6 | ||||
-rw-r--r-- | libjava/java/awt/Scrollbar.java | 5 | ||||
-rw-r--r-- | libjava/java/awt/TextArea.java | 6 | ||||
-rw-r--r-- | libjava/java/awt/TextField.java | 5 |
5 files changed, 28 insertions, 15 deletions
diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java index d61db05..88f9181 100644 --- a/libjava/java/awt/Component.java +++ b/libjava/java/awt/Component.java @@ -844,9 +844,10 @@ public abstract class Component // Inspection by subclassing shows that Sun's implementation calls // show(boolean) which then calls show() or hide(). It is the show() // method that is overriden in subclasses like Window. - if (peer != null) - peer.setVisible(b); - this.visible = b; + if (b) + show(); + else + hide(); } /** @@ -856,7 +857,9 @@ public abstract class Component */ public void show() { - setVisible(true); + if (peer != null) + peer.setVisible(true); + this.visible = true; } /** @@ -877,7 +880,9 @@ public abstract class Component */ public void hide() { - setVisible(false); + if (peer != null) + peer.setVisible(false); + this.visible = false; } /** @@ -1448,8 +1453,10 @@ public abstract class Component public Dimension getPreferredSize() { if (prefSize == null) - prefSize = (peer != null ? peer.getPreferredSize() - : new Dimension(width, height)); + if (peer == null) + return new Dimension(width, height); + else + prefSize = peer.getPreferredSize(); return prefSize; } diff --git a/libjava/java/awt/FlowLayout.java b/libjava/java/awt/FlowLayout.java index 1f9465e..795dfd8 100644 --- a/libjava/java/awt/FlowLayout.java +++ b/libjava/java/awt/FlowLayout.java @@ -171,13 +171,13 @@ public class FlowLayout implements LayoutManager, Serializable int new_h = 0; int j; boolean found_one = false; - for (j = i; j < num && ! found_one; ++j) + for (j = i; j < num; ++j) { // Skip invisible items. - if (! comps[i].visible) + if (! comps[j].visible) continue; - Dimension c = comps[i].getPreferredSize (); + Dimension c = comps[j].getPreferredSize (); int next_w = new_w + hgap + c.width; if (next_w <= d.width || ! found_one) diff --git a/libjava/java/awt/Scrollbar.java b/libjava/java/awt/Scrollbar.java index f78f402..b9a81a5 100644 --- a/libjava/java/awt/Scrollbar.java +++ b/libjava/java/awt/Scrollbar.java @@ -390,8 +390,8 @@ setValues(int value, int visibleAmount, int minimum, int maximum) if (value > maximum) value = maximum; - if (visibleAmount > value) - visibleAmount = value; + if (visibleAmount > maximum - minimum) + visibleAmount = maximum - minimum; this.value = value; this.visibleAmount = visibleAmount; @@ -664,6 +664,7 @@ processEvent(AWTEvent event) protected void processAdjustmentEvent(AdjustmentEvent event) { + value = event.getValue(); if (adjustment_listeners != null) adjustment_listeners.adjustmentValueChanged(event); } diff --git a/libjava/java/awt/TextArea.java b/libjava/java/awt/TextArea.java index f458f9b..ec87f87 100644 --- a/libjava/java/awt/TextArea.java +++ b/libjava/java/awt/TextArea.java @@ -370,7 +370,11 @@ getPreferredSize(int rows, int columns) { TextAreaPeer tap = (TextAreaPeer)getPeer(); if (tap == null) - return(null); // FIXME: What do we do if there is no peer? + { + // Sun's JDK just seems to return Dimension(0,0) in this case. + // we do the same. + return new Dimension(0, 0); + } return(tap.getPreferredSize(rows, columns)); } diff --git a/libjava/java/awt/TextField.java b/libjava/java/awt/TextField.java index c2c2be7..13275e3 100644 --- a/libjava/java/awt/TextField.java +++ b/libjava/java/awt/TextField.java @@ -345,8 +345,9 @@ getPreferredSize(int columns) { TextFieldPeer tfp = (TextFieldPeer)getPeer(); if (tfp == null) - return(null); // FIXME: What do we do if there is no peer? - + { + return new Dimension(0, 0); + } return(tfp.getPreferredSize(columns)); } |