]> git.sesse.net Git - vlc/commitdiff
Qt: delete submenus when clearing the View menu
authorJakob Leben <jleben@videolan.org>
Mon, 29 Mar 2010 10:38:15 +0000 (12:38 +0200)
committerJakob Leben <jleben@videolan.org>
Mon, 29 Mar 2010 10:38:15 +0000 (12:38 +0200)
Prevent unnecessary memory accumulation when new submenus are
created again and again.

modules/gui/qt4/menus.cpp

index 036d72243d5c549504220d21530aaf12f629090e..51e982f349ac21969d960cc2021690783f044a23 100644 (file)
@@ -430,7 +430,16 @@ QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf, QMenu *current, MainInterface
     else
     {
         menu = current;
-        menu->clear();
+        //menu->clear();
+        //HACK menu->clear() does not delete submenus
+        QList<QAction*> actions = menu->actions();
+        foreach( QAction *a, actions )
+        {
+            QMenu *m = a->menu();
+            if( m && m->parent() == menu ) delete m;
+            if( a->parent() == menu ) delete a;
+            else menu->removeAction( a );
+        }
     }
 
     MainInterface *mi = _mi ? _mi : p_intf->p_sys->p_mi;