diff --git a/org.eclipse.wb.core.java/src/org/eclipse/wb/core/model/AbstractComponentInfo.java b/org.eclipse.wb.core.java/src/org/eclipse/wb/core/model/AbstractComponentInfo.java index fd0f54d29..184a766bb 100644 --- a/org.eclipse.wb.core.java/src/org/eclipse/wb/core/model/AbstractComponentInfo.java +++ b/org.eclipse.wb.core.java/src/org/eclipse/wb/core/model/AbstractComponentInfo.java @@ -83,19 +83,19 @@ public final void setModelBounds(Rectangle bounds) { */ public final Rectangle getAbsoluteBounds() { Rectangle bounds = getBounds().getCopy(); - // make relative to screen + // normalize screen location if root component + if (isRoot()) { + bounds.setLocation(0, 0); + return bounds; + } + // make relative to root component { AbstractComponentInfo parent = (AbstractComponentInfo) getParent(); - while (parent != null) { + while (parent != null && !parent.isRoot()) { bounds.performTranslate(parent.getBounds().getLocation()); parent = (AbstractComponentInfo) parent.getParent(); } } - // make relative to root component - { - AbstractComponentInfo rootComponent = (AbstractComponentInfo) getRoot(); - bounds.performTranslate(rootComponent.getBounds().getLocation().getNegated()); - } // OK, final result return bounds; }