Buggy code:
public int getSizeFlags ( boolean horizontal ) { } public IStatus restoreState ( IMemento memento ) { } public void setVisible ( boolean makeVisible ) { } public IStatus saveState ( IMemento memento ) { } protected WorkbenchPage getPage ( ) { } public void setActive ( int activeState ) { } public int getActive ( ) { } public void setBounds ( Rectangle r ) { } public void setSelection ( LayoutPart part ) { } protected abstract void updateActions ( PresentablePart current ) { } protected void handleDeferredEvents ( ) { } private void refreshPresentationSelection ( ) { } public int getState ( ) { } public void setMinimized ( boolean minimized ) { } public boolean childObscuredByZoom ( LayoutPart toTest ) { } public void childRequestZoomIn ( LayoutPart toZoom ) { } public void childRequestZoomOut ( ) { } public boolean childIsZoomed ( LayoutPart toTest ) { } private boolean isIntroInStack ( ) { } protected void setState ( int newState ) { int oldState = presentationSite . getState ( ) ; if ( ( ! ( supportsState ( newState ) ) ) || ( newState == oldState ) ) { return ; } boolean minimized = newState == ( IStackPresentationSite . STATE_MINIMIZED ) ; setMinimized ( minimized ) ; IPreferenceStore preferenceStore = PrefUtil . getAPIPreferenceStore ( ) ; boolean useNewMinMax = preferenceStore . getBoolean ( ENABLE_NEW_MIN_MAX ) ; if ( newState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) useNewMinMax = useNewMinMax && ( ! ( isIntroInStack ( ) ) ) ; else if ( newState == ( IStackPresentationSite . STATE_RESTORED ) ) useNewMinMax = useNewMinMax && ( smartZoomed ) ; if ( useNewMinMax ) { WorkbenchWindow wbw = ( ( WorkbenchWindow ) ( getPage ( ) . getWorkbenchWindow ( ) ) ) ; if ( ( wbw == null ) || ( ( wbw . getShell ( ) ) == null ) ) return ; wbw . getPageComposite ( ) . setRedraw ( false ) ; try { ITrimManager tbm = wbw . getTrimManager ( ) ; FastViewManager fvm = getPage ( ) . getActivePerspective ( ) . getFastViewManager ( ) ; if ( newState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) { ILayoutContainer root = getContainer ( ) ; boolean zoomingEditorArea = false ; if ( root instanceof EditorSashContainer ) { root = ( ( EditorSashContainer ) ( root ) ) . getContainer ( ) ; zoomingEditorArea = true ; } LayoutPart [ ] children = root . getChildren ( ) ; for ( int i = 0 ; i < ( children . length ) ; i ++ ) { if ( ( ( children [ i ] ) != ( this ) ) && ( ( children [ i ] ) instanceof ViewStack ) ) { ( ( ViewStack ) ( children [ i ] ) ) . setMinimized ( true ) ; ViewStackTrimToolBar vstb = fvm . getViewStackTrimToolbar ( children [ i ] . getID ( ) ) ; vstb . setRestoreOnUnzoom ( true ) ; } else if ( ( ( children [ i ] ) instanceof EditorSashContainer ) && ( ! zoomingEditorArea ) ) { getPage ( ) . getActivePerspective ( ) . setEditorAreaTrimVisibility ( true ) ; } } smartZoomed = true ; } else if ( oldState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) { ILayoutContainer root = getContainer ( ) ; if ( root instanceof EditorSashContainer ) { root = ( ( EditorSashContainer ) ( root ) ) . getContainer ( ) ; } LayoutPart [ ] children = root . getChildren ( ) ; for ( int i = 0 ; i < ( children . length ) ; i ++ ) { if ( ( children [ i ] ) != ( this ) ) { IWindowTrim trim = tbm . getTrim ( children [ i ] . getID ( ) ) ; if ( trim == null ) continue ; if ( trim instanceof ViewStackTrimToolBar ) { ViewStackTrimToolBar vstb = ( ( ViewStackTrimToolBar ) ( trim ) ) ; if ( ( vstb . restoreOnUnzoom ( ) ) && ( ( children [ i ] ) instanceof ContainerPlaceholder ) ) { ViewStack realStack = ( ( ViewStack ) ( ( ( ContainerPlaceholder ) ( children [ i ] ) ) . getRealContainer ( ) ) ) ; realStack . setMinimized ( false ) ; vstb . setRestoreOnUnzoom ( false ) ; } } else if ( trim instanceof EditorAreaTrimToolBar ) { getPage ( ) . getActivePerspective ( ) . setEditorAreaTrimVisibility ( false ) ; } } } smartZoomed = false ; } } finally { wbw . getPageComposite ( ) . setRedraw ( true ) ; <START_BUG> wbw . getShell ( ) . update ( ) ; <END_BUG> } setPresentationState ( newState ) ; } else { if ( newState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) { requestZoomIn ( ) ; } else if ( oldState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) { requestZoomOut ( ) ; } } } public void setZoomed ( boolean isZoomed ) { } public boolean isZoomed ( ) { } private void refreshPresentationState ( ) { } private void showPart ( LayoutPart part , Object cookie ) { } private void updateContainerVisibleTab ( ) { } public void showSystemMenu ( ) { } public void showPaneMenu ( ) { } public void showPartList ( ) { } public Control [ ] getTabList ( LayoutPart part ) { } private void dragStart ( IPresentablePart beingDragged , Point initialLocation , boolean keyboard ) { } public void paneDragStart ( LayoutPart pane , Point initialLocation , boolean keyboard ) { } public IMemento getSavedPresentationState ( ) { } private void fireInternalPropertyChange ( int id ) { } public void setPresentationState ( int newState ) { } public String getProperty ( String id ) { } public void setProperty ( String id , String value ) { } public void copyAppearanceProperties ( PartStack copyTo ) { } }

Fix:
wbw . getPageComposite ( ) . update ( ) ;