From 4b426677ac8bd5338909fb9f8301d12bc6b25095 Mon Sep 17 00:00:00 2001 From: Alexandre Porcelli Date: Tue, 5 Nov 2013 15:42:47 -0200 Subject: [PATCH] BZ-1008471: this nasty bug use to happen when parent was just attached and not yet properly resized, but even in this case we resize everything to 0 width and 0 height... so when the parent were properly resized, all the panels were already setted to 0/0. this commit seems to fix it. --- .../impl/BaseMultiPartWorkbenchPanelView.java | 9 +++++++- .../panels/impl/BaseWorkbenchPanelView.java | 11 +++++++++ .../panels/impl/SimpleWorkbenchPanelView.java | 6 ++++- .../widgets/listbar/ListBarWidget.java | 23 ++++++++----------- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseMultiPartWorkbenchPanelView.java b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseMultiPartWorkbenchPanelView.java index e9fd43ffb3..6c015bdab9 100644 --- a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseMultiPartWorkbenchPanelView.java +++ b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseMultiPartWorkbenchPanelView.java @@ -2,6 +2,7 @@ import javax.annotation.PostConstruct; +import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; @@ -95,9 +96,15 @@ public void setFocus( boolean hasFocus ) { @Override public void onResize() { final Widget parent = getParent(); - if ( parent != null ) { + if ( parent != null && parent.isAttached() ) { final int width = parent.getOffsetWidth(); final int height = parent.getOffsetHeight(); + if ( width == 0 && height == 0 ) { + scheduleResize( this ); + return; + } + + setPixelSize( width, height ); presenter.onResize( width, height ); widget.onResize(); super.onResize(); diff --git a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseWorkbenchPanelView.java b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseWorkbenchPanelView.java index c8b2b5a8e1..89b2dbbf59 100644 --- a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseWorkbenchPanelView.java +++ b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/BaseWorkbenchPanelView.java @@ -2,6 +2,8 @@ import javax.inject.Inject; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.user.client.ui.RequiresResize; import com.google.gwt.user.client.ui.ResizeComposite; import com.google.gwt.user.client.ui.Widget; import org.uberfire.client.workbench.BeanFactory; @@ -133,4 +135,13 @@ public P getPresenter() { return this.presenter; } + protected void scheduleResize( final RequiresResize widget ) { + Scheduler.get().scheduleDeferred( new Scheduler.ScheduledCommand() { + @Override + public void execute() { + widget.onResize(); + } + } ); + } + } diff --git a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/SimpleWorkbenchPanelView.java b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/SimpleWorkbenchPanelView.java index 9e312ecdf1..7cbfec4bc7 100644 --- a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/SimpleWorkbenchPanelView.java +++ b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/panels/impl/SimpleWorkbenchPanelView.java @@ -122,9 +122,13 @@ public void setFocus( boolean hasFocus ) { @Override public void onResize() { final Widget parent = getParent(); - if ( parent != null ) { + if ( parent != null && parent.isAttached() ) { final int width = parent.getOffsetWidth(); final int height = parent.getOffsetHeight(); + if ( width == 0 && height == 0 ) { + scheduleResize( this ); + return; + } setPixelSize( width, height ); presenter.onResize( width, height ); diff --git a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/widgets/listbar/ListBarWidget.java b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/widgets/listbar/ListBarWidget.java index 6eb60f6ba5..52adda6a3f 100644 --- a/uberfire-workbench/src/main/java/org/uberfire/client/workbench/widgets/listbar/ListBarWidget.java +++ b/uberfire-workbench/src/main/java/org/uberfire/client/workbench/widgets/listbar/ListBarWidget.java @@ -382,21 +382,18 @@ public HandlerRegistration addSelectionHandler( final SelectionHandler