void Container::HandleChildInvalidate( Widget::PtrConst child ) const { auto parent = GetParent(); if( parent ) { parent->HandleChildInvalidate( child ); } }
void Widget::Invalidate() const { if( !m_invalidated ) { m_invalidated = true; } if( !m_parent_notified ) { auto parent = m_parent.lock(); if( parent ) { m_parent_notified = true; parent->HandleChildInvalidate( static_cast<Widget::PtrConst>( shared_from_this() ) ); } } }