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
This commit is contained in:
parent
9011501793
commit
c01c143789
2 changed files with 33 additions and 2 deletions
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue