aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/awt
diff options
context:
space:
mode:
authorHans Boehm <Hans_Boehm@hp.com>2003-02-19 00:35:35 +0000
committerHans Boehm <hboehm@gcc.gnu.org>2003-02-19 00:35:35 +0000
commit56bba8cf57d0aa75d0266486595efe0d070af0b7 (patch)
treeabb4641e8aaeacc764f059098100e1aa5dde90a7 /libjava/java/awt
parent35bd55199796da40e73ce07ac42c4e88a9e40e6a (diff)
downloadgcc-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.java21
-rw-r--r--libjava/java/awt/FlowLayout.java6
-rw-r--r--libjava/java/awt/Scrollbar.java5
-rw-r--r--libjava/java/awt/TextArea.java6
-rw-r--r--libjava/java/awt/TextField.java5
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));
}