]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
on menu item remove menu action and item action should be removed, otherwise these...
authorasl <asl@opencascade.com>
Thu, 18 Mar 2010 10:23:48 +0000 (10:23 +0000)
committerasl <asl@opencascade.com>
Thu, 18 Mar 2010 10:23:48 +0000 (10:23 +0000)
src/Qtx/QtxActionMenuMgr.cxx

index 90acf3ff7953ff395c221167298998a7c30a5b48..9359f12152fd9d167e7c180266225bc5eb6f6a7b 100644 (file)
@@ -491,8 +491,19 @@ void QtxActionMenuMgr::remove( const int id, const int pId, const int group )
       delNodes.append( *it );
   }
 
+  QWidget* mW = menuWidget( pNode );
   for ( NodeList::iterator itr = delNodes.begin(); itr != delNodes.end(); ++itr )
+  {
+    int id = (*itr)->id;
+    if( mW && menuAction( id ) )
+    {
+      mW->removeAction( menuAction( id ) );
+      myMenus.remove( id );
+    }
+    else if( mW && itemAction( id ) )
+      mW->removeAction( itemAction( id ) );
     pNode->children.removeAll( *itr );
+  }
 
   triggerUpdate( pNode->id, false );
 }
@@ -984,8 +995,10 @@ bool QtxActionMenuMgr::ownAction( QAction* a, MenuNode* node ) const
   for ( NodeList::const_iterator iter = node->children.begin(); iter != node->children.end(); ++iter )
   {
     QAction* mya = itemAction( (*iter)->id );
-    if ( !mya ) mya = menuAction( (*iter)->id );
-    if ( mya && mya == a ) return true;
+    if ( !mya )
+      mya = menuAction( (*iter)->id );
+    if ( mya && mya == a )
+      return true;
   }
   return false;
 }