]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #565: Process double click on Object Browser header label
authorvsv <vitaly.smetannikov@opencascade.com>
Wed, 27 May 2015 14:53:02 +0000 (17:53 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Wed, 27 May 2015 14:53:21 +0000 (17:53 +0300)
src/PartSet/PartSet_Module.cpp
src/XGUI/XGUI_ObjectsBrowser.cpp
src/XGUI/XGUI_ObjectsBrowser.h

index 563bd786c90403d2532382d3908b3091f512820a..7f95d0893df73a2e20ac33addf08fbd7f9af74cd 100644 (file)
@@ -657,6 +657,8 @@ void PartSet_Module::customizeObjectBrowser(QWidget* theObjectBrowser)
     aOB->treeView()->setExpandsOnDoubleClick(false);
     connect(aOB->treeView(), SIGNAL(doubleClicked(const QModelIndex&)), 
       SLOT(onTreeViewDoubleClick(const QModelIndex&)));
+    connect(aOB, SIGNAL(headerMouseDblClicked(const QModelIndex&)), 
+      SLOT(onTreeViewDoubleClick(const QModelIndex&)));
     connect(aOB->treeView(), SIGNAL(doubleClicked(const QModelIndex&)), 
       myDataModel, SLOT(onMouseDoubleClick(const QModelIndex&)));
   }
@@ -756,8 +758,14 @@ void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMess
 
 void PartSet_Module::onTreeViewDoubleClick(const QModelIndex& theIndex)
 {
+  SessionPtr aMgr = ModelAPI_Session::get();
+  if (!theIndex.isValid()) {
+    aMgr->setActiveDocument(aMgr->moduleDocument());
+    return;
+  }
   if (theIndex.column() != 0) // Use only first column
     return;
+
   ObjectPtr aObj = myDataModel->object(theIndex);
   ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
   if (!aPart.get()) { // Probably this is Feature
@@ -767,7 +775,7 @@ void PartSet_Module::onTreeViewDoubleClick(const QModelIndex& theIndex)
     }
   }
   if (aPart.get()) { // if this is a part
-    SessionPtr aMgr = ModelAPI_Session::get();
+    
     if (aPart->partDoc() == aMgr->activeDocument()) {
       aMgr->setActiveDocument(aMgr->moduleDocument());
     } else {
index e8b0a1fed297976b71aa68890aed2b7c7de43ee2..81e5b9d4cb344c9509625a8641f527beb08c2f12 100644 (file)
@@ -205,6 +205,11 @@ bool XGUI_ObjectsBrowser::eventFilter(QObject* obj, QEvent* theEvent)
             break;
         }
       }
+    } else {
+      if (theEvent->type() == QEvent::MouseButtonDblClick) {
+        emit headerMouseDblClicked(QModelIndex());
+        return true;
+      }  
     }
   }
   return QWidget::eventFilter(obj, theEvent);
index 530a86a51b2c292bc15ba7fd30b4029d3990d01f..ade333a350bca37f89174408fd64a7d3d9a2a23c 100644 (file)
@@ -111,6 +111,9 @@ signals:
   //! Emited on context menu request
   void contextMenuRequested(QContextMenuEvent* theEvent);
 
+  //! Segnal is emitted when user cliks by mouse in header label of object browser
+  void headerMouseDblClicked(const QModelIndex&);
+
  protected:
    /// Redefinition of virtual method
   virtual bool eventFilter(QObject* obj, QEvent* theEvent);