void Widget::Expose( CullingTarget& target ) const { if( m_invalidated ) { m_invalidated = false; m_drawable.reset( InvalidateImpl() ); if( m_drawable ) { m_drawable->SetPosition( GetAbsolutePosition() ); } } if( IsVisible() ) { if( m_drawable ) { target.Draw( *m_drawable ); } HandleExpose( target ); OnExpose(); } }
void Widget::Update( float seconds ) { if( m_invalidated ) { m_invalidated = false; m_parent_notified = false; m_drawable = InvalidateImpl(); if( m_drawable ) { m_drawable->SetPosition( GetAbsolutePosition() ); m_drawable->SetLevel( m_hierarchy_level ); m_drawable->SetZOrder( m_z_order ); m_drawable->Show( IsGloballyVisible() ); // We don't want to propagate container viewports for Canvases, // they have their own special viewport for drawing. if( m_drawable->GetPrimitives().empty() || !m_drawable->GetPrimitives()[0]->GetCustomDrawCallback() ) { m_drawable->SetViewport( m_viewport ); } } } HandleUpdate( seconds ); }