Example #1
0
void PopupProxy::deleteMoreMenus() {
    const KMenu* myParent = parent();
    if ( myParent != m_proxy_for_menu ) {
        KMenu* delme = m_proxy_for_menu;
        m_proxy_for_menu = static_cast<KMenu*>( m_proxy_for_menu->parent() );
        while ( m_proxy_for_menu != myParent ) {
            delme = m_proxy_for_menu;
            m_proxy_for_menu = static_cast<KMenu*>( m_proxy_for_menu->parent() );
        }
        // We are called probably from within the menus event-handler (triggered=>slotMoveToTop=>changed=>slotHistoryChanged=>deleteMoreMenus)
        // what can result in a crash if we just delete the menu here (#155196 and #165154) So, delay the delete.
        delme->deleteLater();
    }
}