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
This commit is contained in:
Hans Boehm 2003-02-19 00:35:35 +00:00 committed by Hans Boehm
parent 35bd551997
commit 56bba8cf57
16 changed files with 229 additions and 24 deletions

View file

@ -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;
}

View file

@ -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)

View file

@ -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);
}

View file

@ -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));
}

View file

@ -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));
}