]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Updates Copy/Paste buttons state on selection change.
authornds <nds@opencascade.com>
Tue, 9 Apr 2013 05:07:43 +0000 (05:07 +0000)
committernds <nds@opencascade.com>
Tue, 9 Apr 2013 05:07:43 +0000 (05:07 +0000)
The performance should be checked on ACHERON/POSEIDON GUI.

src/TableViewer/TableViewer_ViewWindow.cxx

index dd9dec8b6b54703cf707b53974464d803bac2417..2ee34b46e009ef4a3cb80339d001173c26c8d8d0 100755 (executable)
@@ -289,9 +289,20 @@ QtxAction* TableViewer_ViewWindow::createAction( const int id, const QString& me
 
 void TableViewer_ViewWindow::selectionChanged()
 {
-  bool anEnable = myTable->getSelectedIndexes().count() > 0;
-  myActionsMap[CopyId]->setEnabled( anEnable );
-  myActionsMap[PasteId]->setEnabled( anEnable && myCopyLst.count() > 0 );
+  QModelIndexList anItems = myTable->getSelectedIndexes();
+  bool anEnable = anItems.count() > 0;
+  bool aCopyEnable = anEnable && myCopyLst.count() > 0,
+       aPasteEnable = anEnable;
+  QModelIndexList::const_iterator anIt = anItems.begin(), aLast = anItems.end();
+  int aRow, aCol;
+  for ( anIt = anItems.begin(); anIt != aLast; ++anIt ) {
+    aRow = (*anIt).row();
+    aCol = (*anIt).column();
+    aCopyEnable = aCopyEnable || canCopy( aRow, aCol );
+    aPasteEnable = aPasteEnable && canPaste( aRow, aCol, "" ); // this should be the cell value
+  }
+  myActionsMap[CopyId]->setEnabled( aCopyEnable );
+  myActionsMap[PasteId]->setEnabled( aPasteEnable );
 }
 
 void TableViewer_ViewWindow::onActivated()
@@ -376,7 +387,7 @@ void TableViewer_ViewWindow::copyData()
   for ( ; anIt != aLast; ++anIt ) {
     aRow = (*anIt).row();
     aCol = (*anIt).column();
-    if ( !canPaste( aRow, aCol, "" ) )
+    if ( !canCopy( aRow, aCol ) )
       continue;
     if ( aCol < aLeftCol )
       aLeftCol = aCol;