From: Leif Åstrand Date: Fri, 10 Feb 2012 12:14:22 +0000 (+0200) Subject: Also find paintables inside HasOneWidget widgets (#8323) X-Git-Tag: 7.0.0.alpha2~451 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ecd80181d160b58a281eb92fabaa2a10ea0adac2;p=vaadin-framework.git Also find paintables inside HasOneWidget widgets (#8323) --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidgetContainer.java b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidgetContainer.java index ebdb05a6c8..42addc66eb 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidgetContainer.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidgetContainer.java @@ -6,6 +6,7 @@ package com.vaadin.terminal.gwt.client.ui; import java.util.ArrayList; import java.util.Collection; +import com.google.gwt.user.client.ui.HasOneWidget; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.VPaintableMap; @@ -36,15 +37,23 @@ public abstract class VAbstractPaintableWidgetContainer extends if (widget instanceof HasWidgets) { for (Widget child : (HasWidgets) widget) { - VPaintableWidget paintable = paintableMap.getPaintable(child); - if (paintable != null) { - // If child is a paintable, add it to the collection - paintables.add(paintable); - } else { - // Else keep looking for paintables inside the child widget - addDescendantPaintables(child, paintables, paintableMap); - } + addIfPaintable(child, paintables, paintableMap); } + } else if (widget instanceof HasOneWidget) { + Widget child = ((HasOneWidget) widget).getWidget(); + addIfPaintable(child, paintables, paintableMap); + } + } + + private static void addIfPaintable(Widget widget, + Collection paintables, VPaintableMap paintableMap) { + VPaintableWidget paintable = paintableMap.getPaintable(widget); + if (paintable != null) { + // If widget is a paintable, add it to the collection + paintables.add(paintable); + } else { + // Else keep looking for paintables inside the widget + addDescendantPaintables(widget, paintables, paintableMap); } }