void GenericLayout::refreshRect( int x, int y, int width, int height ) { // Do nothing if the layout is hidden if( !m_visible ) return; // update the transparency global mask m_pImage->clear( x, y, width, height ); // Draw all the controls of the layout std::list<LayeredControl>::const_iterator iter; for( iter = m_controlList.begin(); iter != m_controlList.end(); ++iter ) { CtrlGeneric *pCtrl = (*iter).m_pControl; if( pCtrl->isVisible() ) { pCtrl->draw( *m_pImage, x, y, width, height ); } } // Refresh the associated window TopWindow *pWindow = getWindow(); if( pWindow ) { // first apply new shape to the window pWindow->updateShape(); pWindow->invalidateRect( x, y, width, height ); } }
void GenericLayout::resize( int width, int height ) { // Update the window size m_width = width; m_height = height; // Recreate a new image if( m_pImage ) { delete m_pImage; OSFactory *pOsFactory = OSFactory::instance( getIntf() ); m_pImage = pOsFactory->createOSGraphics( width, height ); } // Notify all the controls that the size has changed and redraw them list<LayeredControl>::const_iterator iter; for( iter = m_controlList.begin(); iter != m_controlList.end(); iter++ ) { iter->m_pControl->onResize(); } // Resize and refresh the associated window TopWindow *pWindow = getWindow(); if( pWindow ) { // Resize the window pWindow->resize( width, height ); refreshAll(); // Change the shape of the window and redraw it pWindow->updateShape(); refreshAll(); } }