diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2004-01-20 21:24:09 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@gcc.gnu.org> | 2004-01-20 21:24:09 +0000 |
commit | c01c143789ef36be55a16b399775a6d84dffb992 (patch) | |
tree | 78d8ff190e6b0e72cde58a5a6f203fe2ad124fef | |
parent | 901150179382792c4786c922b7d67a21f3202e7a (diff) | |
download | gcc-c01c143789ef36be55a16b399775a6d84dffb992.zip gcc-c01c143789ef36be55a16b399775a6d84dffb992.tar.gz gcc-c01c143789ef36be55a16b399775a6d84dffb992.tar.bz2 |
GtkComponentPeer.java (setBounds): Calculate proper offsets for heavyweight components packed in lightweight...
2004-01-20 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java (setBounds):
Calculate proper offsets for heavyweight components packed in
lightweight containers.
From-SVN: r76230
-rw-r--r-- | libjava/ChangeLog | 4 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java | 31 |
2 files changed, 33 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 98b8497..95f86ef 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,9 @@ 2004-01-20 Thomas Fitzsimmons <fitzsim@redhat.com> + * gnu/java/awt/peer/gtk/GtkComponentPeer.java (setBounds): + Calculate proper offsets for heavyweight components packed in + lightweight containers. + * gnu/java/awt/peer/gtk/GtkTextFieldPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c (native create): Add width parameter. diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index ee067ce..9a56619 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -42,6 +42,7 @@ import java.awt.AWTEvent; import java.awt.BufferCapabilities; import java.awt.Color; import java.awt.Component; +import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; @@ -302,8 +303,34 @@ public class GtkComponentPeer extends GtkGenericPeer public void setBounds (int x, int y, int width, int height) { Component parent = awtComponent.getParent (); - - if (parent instanceof Window) + + // Heavyweight components that are children of one or more + // lightweight containers have to be handled specially. Because + // calls to GLightweightPeer.setBounds do nothing, GTK has no + // knowledge of the lightweight containers' positions. So we have + // to add the offsets manually when placing a heavyweight + // component within a lightweight container. The lightweight + // container may itself be in a lightweight container and so on, + // so we need to continue adding offsets until we reach a + // container whose position GTK knows -- that is, the first + // non-lightweight. + boolean lightweightChild = false; + Insets i; + while (parent.isLightweight ()) + { + lightweightChild = true; + + i = ((Container) parent).getInsets (); + + x += parent.getX () + i.left; + y += parent.getY () + i.top; + + parent = parent.getParent (); + } + + // We only need to convert from Java to GTK coordinates if we're + // placing a heavyweight component in a Window. + if (parent instanceof Window && !lightweightChild) { Insets insets = ((Window) parent).getInsets (); // Convert from Java coordinates to GTK coordinates. |