]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
#1133 Del in old GEOM
authornds <nds@opencascade.com>
Wed, 3 Feb 2016 06:32:57 +0000 (09:32 +0300)
committernds <nds@opencascade.com>
Wed, 3 Feb 2016 06:33:23 +0000 (09:33 +0300)
src/XGUI/XGUI_OperationMgr.cpp
src/XGUI/XGUI_OperationMgr.h
src/XGUI/XGUI_Workshop.cpp

index 0f622a24c327a147c22c7493ce3abecb52a6d67d..533bb6adce8006e68fdd757cf9bdba069e5c1430 100644 (file)
@@ -48,11 +48,14 @@ public:
   }
   ~XGUI_ShortCutListener() {}
 
+  /// Switch on short cut listener
+  void setActive(const bool theIsActive) { myIsActive = theIsActive; }
+
   /// Redefinition of virtual function to process Delete key release
   virtual bool eventFilter(QObject *theObject, QEvent *theEvent)
   {
     bool isAccepted = false;
-    if (theEvent->type() == QEvent::KeyRelease) {
+    if (myIsActive && theEvent->type() == QEvent::KeyRelease) {
       QKeyEvent* aKeyEvent = dynamic_cast<QKeyEvent*>(theEvent);
       if(aKeyEvent) {
         switch (aKeyEvent->key()) {
@@ -69,6 +72,7 @@ public:
 
 private:
   XGUI_OperationMgr* myOperationMgr; /// processor for key event
+  bool myIsActive; /// boolean state whether the event filter perform own signal processing
 };
 
 XGUI_OperationMgr::XGUI_OperationMgr(QObject* theParent,
@@ -78,13 +82,23 @@ XGUI_OperationMgr::XGUI_OperationMgr(QObject* theParent,
   /// we need to install filter to the application in order to react to 'Delete' key button
   /// this key can not be a short cut for a corresponded action because we need to set
   /// the actions priority
-  XGUI_ShortCutListener* aShortCutListener = new XGUI_ShortCutListener(theParent, this);
+  myShortCutListener = new XGUI_ShortCutListener(theParent, this);
 }
 
 XGUI_OperationMgr::~XGUI_OperationMgr()
 {
 }
 
+void XGUI_OperationMgr::activate()
+{
+  myShortCutListener->setActive(true);
+}
+
+void XGUI_OperationMgr::deactivate()
+{
+  myShortCutListener->setActive(false);
+}
+
 ModuleBase_Operation* XGUI_OperationMgr::currentOperation() const
 {
   return myOperations.count() > 0 ? myOperations.last() : 0;
@@ -652,7 +666,7 @@ bool XGUI_OperationMgr::onProcessDelete(QObject* theObject)
     /// processing delete by workshop
     XGUI_ObjectsBrowser* aBrowser = workshop()->objectBrowser();
     QWidget* aViewPort = myWorkshop->viewer()->activeViewPort();
-    // property panel childe object is processed to process delete performed on Apply button of PP
+    // property panel child object is processed to process delete performed on Apply button of PP
     if (isChildObject(theObject, aBrowser) ||
         isChildObject(theObject, aViewPort) ||
         isPPChildObject)
index 1b345039771f98b2188a779164764f2001f3cdc5..7a62ddbe3efd2cabecbfb81b341a28275580316f 100755 (executable)
@@ -20,6 +20,7 @@ class QKeyEvent;
 
 class ModuleBase_IWorkshop;
 class XGUI_Workshop;
+class XGUI_ShortCutListener;
 
 /**\class XGUI_OperationMgr
  * \ingroup GUI
@@ -42,6 +43,11 @@ Q_OBJECT
   /// Destructor
   virtual ~XGUI_OperationMgr();
 
+  /// Switch on short cut listener
+  void activate();
+  /// Switch off short cut listener
+  void deactivate();
+
   /// Set reference to workshop
   /// \param theWorkshop reference to workshop
   void setWorkshop(ModuleBase_IWorkshop* theWorkshop)
@@ -219,6 +225,8 @@ private:
 
   /// Current workshop
   ModuleBase_IWorkshop* myWorkshop;
+
+  XGUI_ShortCutListener* myShortCutListener;
 };
 
 #endif
index d2782f2ffb9c643394afc9c1a0d173bf5b1f36c1..071d698bbaa16dba787c8d927df7850bd57d7337 100755 (executable)
@@ -242,6 +242,7 @@ void XGUI_Workshop::activateModule()
   QIntList aModes;
   module()->activeSelectionModes(aModes);
   aDisplayer->activateObjects(aModes, aDisplayed);
+  myOperationMgr->activate();
 }
 
 void XGUI_Workshop::deactivateModule()
@@ -259,6 +260,8 @@ void XGUI_Workshop::deactivateModule()
   XGUI_Displayer* aDisplayer = displayer();
   QObjectPtrList aDisplayed = aDisplayer->displayedObjects();
   aDisplayer->deactivateObjects(aDisplayed, true);
+
+  myOperationMgr->deactivate();
 }
 
 //******************************************************