]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
*** empty log message ***
authorvsr <vsr@opencascade.com>
Thu, 2 Aug 2007 13:55:29 +0000 (13:55 +0000)
committervsr <vsr@opencascade.com>
Thu, 2 Aug 2007 13:55:29 +0000 (13:55 +0000)
src/ObjBrowser/OB_Browser.cxx
src/ObjBrowser/OB_Browser.h

index b1b0505305ad2df33df552876beab89c3a497c44..0f944c30806cffb0fe4a204bb89065ee29f4069d 100755 (executable)
@@ -339,13 +339,18 @@ const QItemSelection OB_Browser::selection() const
   \brief Select/deselect specified model index.
   \param index model index to be selected/deselected
   \param on if \c true, the index will be selected, otherwise - deselected
+  \param keepSelection if \c true (default) the previous selection is kept, 
+  otherwise it is first cleared
 */
-void OB_Browser::select( const QModelIndex& index, const bool on )
+void OB_Browser::select( const QModelIndex& index, const bool on, const bool keepSelection )
 {
   if ( myView->selectionModel() ) {
-    myView->selectionModel()->select( index, on ? 
-                                     QItemSelectionModel::Select   | QItemSelectionModel::Rows :
-                                     QItemSelectionModel::Deselect | QItemSelectionModel::Rows );
+    QItemSelectionModel::SelectionFlags f = on ? QItemSelectionModel::Select : QItemSelectionModel::Deselect;
+    f = f | QItemSelectionModel::Rows;
+    if ( !keepSelection )
+      f = f | QItemSelectionModel::Clear;
+
+    myView->selectionModel()->select( index, f );
   }
 }
 
@@ -354,14 +359,18 @@ void OB_Browser::select( const QModelIndex& index, const bool on )
   \param indexes model indices to be selected/deselected
   \param on if \c true, the indices will be selected, otherwise - deselected
 */
-void OB_Browser::select( const QModelIndexList& indexes, const bool on )
+void OB_Browser::select( const QModelIndexList& indexes, const bool on, const bool keepSelection )
 {
   bool blocked = myView->signalsBlocked();
   myView->blockSignals( true );
 
   QModelIndex idx;
-  foreach( idx, indexes )
-    select( idx, on );
+  bool first = true;
+
+  foreach( idx, indexes ) {
+    select( idx, on, first ? keepSelection : true );
+    first = false;
+  }
 
   myView->blockSignals( blocked );
   emit( selectionChanged() );
index 592830ba41362122959123467bd34d5bd20a37ce..cc4fbe36535c1182011ac85463f19654b1d30d62 100755 (executable)
@@ -76,8 +76,8 @@ public:
   QModelIndexList        selectedIndexes() const;
   const QItemSelection   selection() const;
 
-  virtual void           select( const QModelIndex&, const bool = false );
-  virtual void           select( const QModelIndexList&, const bool = false );
+  virtual void           select( const QModelIndex&, const bool, const bool = true );
+  virtual void           select( const QModelIndexList&, const bool, const bool = true );
 
   bool                   isOpen( const QModelIndex& ) const;
   virtual void           setOpen( const QModelIndex& theObject, const bool theOpen = true );