classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] fix heavyweight placement within lightweight container


From: Thomas Fitzsimmons
Subject: [cp-patches] fix heavyweight placement within lightweight container
Date: Wed, 31 Aug 2005 17:21:44 -0400

Hi,

This patch fixes the placement of heavyweight components in lightweight
containers.  I have an app that adds a Canvas to a JFrame; the canvas
was being drawn with the wrong offsets relative to the frame.  I've
committed this patch, which fixes the canvas's placement.

Tom

2005-08-31  Thomas Fitzsimmons  <address@hidden>

        * gnu/java/awt/peer/gtk/GtkComponentPeer.java (setBounds): Only
        add parent's x and y co-ordinates to translation if parent's
        parent is not a window.

Index: gnu/java/awt/peer/gtk/GtkComponentPeer.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v
retrieving revision 1.95
diff -u -r1.95 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java 25 Aug 2005 02:26:48 -0000      
1.95
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java 31 Aug 2005 21:13:40 -0000
@@ -424,6 +424,7 @@
     int new_y = y;
 
     Component parent = awtComponent.getParent ();
+    Component next_parent;
 
     // Heavyweight components that are children of one or more
     // lightweight containers have to be handled specially.  Because
@@ -441,12 +442,22 @@
       {
        lightweightChild = true;
 
+        next_parent = parent.getParent ();
+
        i = ((Container) parent).getInsets ();
 
-       new_x += parent.getX () + i.left;
-       new_y += parent.getY () + i.top;
+        if (next_parent instanceof Window)
+          {
+            new_x += i.left;
+            new_y += i.top;
+          }
+        else
+          {
+            new_x += parent.getX () + i.left;
+            new_y += parent.getY () + i.top;
+          }
 
-       parent = parent.getParent ();
+       parent = next_parent;
       }
 
     // We only need to convert from Java to GTK coordinates if we're

reply via email to

[Prev in Thread] Current Thread [Next in Thread]