Imprecise triggering of vertical scrollbar after panel size changes

I have an issue wherein the vertical scrollbar of a popup window (i.e., panel) does not display when the window is just a little bit bigger than the screen after the window changes size due to user input. If the popup window is much bigger, a scrollbar is generated. If the popup window is smaller than the screen, then of course the scrollbar is not displayed (nor should it be). In the problem case where the window is slightly bigger than the screen, if I grab the frame of the window with the mouse, move it a little, and let go, the window generates the scrollbar. Please see the attached snapshots for illustration.

Has anyone else seen a similar problem? Could the issue be with Vaadin’s interaction with GWT? Code is lengthy. I provide (what I think is) the most relevant excerpt below but can provide additional details on request.

public class EndpointWindow extends BaseWindow {


private VerticalLayout detailsLayout;
@Override
protected Layout getDetailsLayout()
{
if ( detailsLayout == null )
{
detailsLayout = new VerticalLayout();
VerticalLayout basicDetailsLayoutWrapper = new VerticalLayout();
basicDetailsLayoutWrapper.setMargin(true);
basicDetailsLayoutWrapper.setSizeFull();
final Panel basicDetailsPanel = new Panel( “Basic Details:” );
{
basicDetailsPanel.addStyleName( Reindeer.PANEL_LIGHT );
basicDetailsPanel.setSizeFull();
VerticalLayout basicDetailsLayout = new VerticalLayout (
ComponentFactory.getHelpEnabledFieldTableWrapper();
basicDetailsLayout.setMargin( false );
basicDetailsLayout.setSizeFull();
new Restrain( basicDetailsLayout ).setMinWidth( “350px” );
new Restrain( basicDetailsLayout ).setMaxHeight( “500px” );

                                            basicDetailsPanel.setContent( basicDetailsLayout );
                                            basicDetailsPanel.setSizeFull();
                            }
                            basicDetailsLayoutWrapper.setWidth(getDefaultTableWidth(), Unit.PIXELS);
                            basicDetailsLayoutWrapper.addComponent( basicDetailsPanel );

                            VerticalLayout advancedDetailsLayoutWrapper = new VerticalLayout();
                            advancedDetailsLayoutWrapper.setMargin( true );
                            advancedDetailsLayoutWrapper.setSizeFull();                                   
                            final Panel advancedDetailsPanel = new Panel( "Advanced Details:" );
                            {
                                            advancedDetailsPanel.addStyleName( Reindeer.PANEL_LIGHT );
                                            advancedDetailsPanel.setVisible( false );
                                            advancedDetailsPanel.setSizeFull();
                                            VerticalLayout advancedDetailsLayout = new VerticalLayout();
                                            {
                                                            advancedDetailsLayout.setMargin( false );
                                                            advancedDetailsLayout.setSizeUndefined();
                                                            //advancedDetailsLayout.addComponent( getAdvancedDetailsPanel() );
                                                            new Restrain( advancedDetailsLayout ).setMinWidth( "350px" );
                                                            new Restrain( advancedDetailsLayout ).setMaxHeight( "500px" );
                                            }
                                            advancedDetailsPanel.setContent( advancedDetailsLayout );
                            }
                            advancedDetailsLayoutWrapper.addComponent(advancedDetailsPanel);

                            final CheckBox advancedCheckBox = new CheckBox( "Show Advanced Details" );
                            {
                                            advancedCheckBox.setSizeFull();
                                            advancedCheckBox.setValue(false);
                                            advancedCheckBox.addValueChangeListener( new ValueChangeListener()
                                            {
                                                            @Override
                                                            public void valueChange( ValueChangeEvent event )
                                                            {
                                                                            advancedDetailsPanel.setVisible( advancedCheckBox.getValue() );
                                                                            getOuter().center();
                                                            }
                                            } );
                            }
                            detailsLayout.addComponents( basicDetailsLayoutWrapper, advancedCheckBox, advancedDetailsLayoutWrapper, getGCPTabSheet());
                            detailsLayout.setComponentAlignment( basicDetailsLayoutWrapper, Alignment.TOP_CENTER );
                            detailsLayout.setComponentAlignment( advancedCheckBox, Alignment.MIDDLE_CENTER );
                            detailsLayout.setComponentAlignment( advancedDetailsLayoutWrapper, Alignment.BOTTOM_CENTER );
                            //detailsLayout.setComponentAlignment(propertiesPanel, Alignment.BOTTOM_CENTER);
                            detailsLayout.setComponentAlignment(getGCPTabSheet(), Alignment.BOTTOM_CENTER);
                            detailsLayout.setSizeFull();
                            //new Restrain( detailsLayout ).setMinWidth( "375px" );
            }
            return detailsLayout;

}

}

16416.docx (720 KB)