From: Leif Åstrand Date: Tue, 7 Feb 2012 12:39:40 +0000 (+0200) Subject: getParent() shouldn't throw npe when widget's parent is null X-Git-Tag: 7.0.0.alpha2~434^2~85 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=87c3bf1e50ad6949e1fedff2429d41e79abfc971;p=vaadin-framework.git getParent() shouldn't throw npe when widget's parent is null --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java index 474e9c416d..9747deacd1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java @@ -15,7 +15,7 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget { private ApplicationConnection connection; private String id; private VPaintableWidgetContainer parent; - + /* State variables */ private boolean enabled = true; @@ -86,21 +86,24 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget { } public VPaintableWidgetContainer getParent() { - if (parent != null) + if (parent != null) { return parent; - + } + // FIXME: Hierarchy should be set by framework instead of looked up here VPaintableMap paintableMap = VPaintableMap.get(getConnection()); Widget w = getWidgetForPaintable(); - while (w != null) { + while (true) { w = w.getParent(); + if (w == null) { + return null; + } if (paintableMap.isPaintable(w)) { - parent = (VPaintableWidgetContainer) paintableMap.getPaintable(w); + parent = (VPaintableWidgetContainer) paintableMap + .getPaintable(w); return parent; } } - - return null; } }