]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
PAL18653: sub-menus are hidden always
authorasl <asl@opencascade.com>
Fri, 21 Mar 2008 08:38:08 +0000 (08:38 +0000)
committerasl <asl@opencascade.com>
Fri, 21 Mar 2008 08:38:08 +0000 (08:38 +0000)
src/Qtx/QtxPopupMgr.cxx
src/Qtx/QtxPopupMgr.h

index 7725e8d6e34cb7bfa66781dc2899fabf7fd9abd7..36ecc8011e7697287fcc31a6c9edf565928c7c0a 100644 (file)
@@ -366,6 +366,26 @@ int QtxPopupMgr::insertAction( QAction* a, const int pId, const QString& rule, c
   return res;
 }
 
+/*!
+  \return true if action has rule of given type
+  \param a - action
+  \param t - rule type
+*/
+bool QtxPopupMgr::hasRule( QAction* a, const RuleType t ) const
+{
+  return a ? expression( a, t, false ) : false;
+}
+
+/*!
+  \return true if action with given id has rule of given type
+  \param id - action id
+  \param t - rule type
+*/
+bool QtxPopupMgr::hasRule( const int id, const RuleType t ) const
+{
+  return hasRule( action( id ), t );
+}
+
 /*!
   \brief Get rule of type \a type for the action \a a.
   \param a action
@@ -528,7 +548,7 @@ bool QtxPopupMgr::isSatisfied( QAction* act, const RuleType ruleType ) const
 */
 bool QtxPopupMgr::isVisible( const int id, const int place ) const
 {
-  return QtxActionMenuMgr::isVisible( id, place ) && isSatisfied( action( id ) );
+  return QtxActionMenuMgr::isVisible( id, place ) && ( !hasRule( id ) || isSatisfied( action( id ) ) );
 }
 
 /*!
index 9759f8c9559108e9615cb48d9f7237371fe0a32f..5fc946eeb8ad4505e3c26c50ff11b8f781846c63 100644 (file)
@@ -66,6 +66,9 @@ public:
   void               setRule( QAction*, const QString&, const RuleType = VisibleRule );
   void               setRule( const int, const QString&, const RuleType = VisibleRule );
 
+  bool               hasRule( QAction*, const RuleType = VisibleRule ) const;
+  bool               hasRule( const int, const RuleType = VisibleRule ) const;
+
   QtxPopupSelection* selection() const;
   void               setSelection( QtxPopupSelection* );