diff --git a/src/model/xqsectionmanager.cpp b/src/model/xqsectionmanager.cpp index 7da2fec..86b04a0 100644 --- a/src/model/xqsectionmanager.cpp +++ b/src/model/xqsectionmanager.cpp @@ -128,14 +128,21 @@ const XQModelSection& XQSectionManager::sectionByKey( const QString& sectionKey const XQModelSection& XQSectionManager::sectionByRow(int itemRow ) const { - // wir gehen rückwärts, weil wir da nur einen vergleich brauchen - // und uns den test mit lastRow() sparen können. - - int i = _sections.size() - 1; - for (; i >= 0; --i) + if( _sections.size() > 0) { - if ( _sections.at(i).startIndex().row() <= itemRow ) - return _sections.at(i); + + // shortcut für die erste position + + // wir gehen rückwärts, weil wir da nur einen vergleich brauchen + // und uns den test mit lastRow() sparen können. + + int i = _sections.size() - 1; + for (; i >= 0; --i) + { + if ( _sections.at(i).startIndex().row() < itemRow ) + return _sections.at(i); + } + } throw XQException( "No section for item row: ", QString::number(itemRow)); diff --git a/src/model/xqviewmodel.cpp b/src/model/xqviewmodel.cpp index 9c089ac..68830e6 100644 --- a/src/model/xqviewmodel.cpp +++ b/src/model/xqviewmodel.cpp @@ -259,8 +259,6 @@ void XQViewModel::onActionTriggered(QAction* action) QModelIndex currentIndex = treeTable()->currentIndex(); command->setOriginIndex(currentIndex); // store the row positions of the selected indices - - qDebug() << " --- Before saveNode: " << selectionList.isEmpty(); showSelectionList(selectionList); command->saveNodes( selectionList ); @@ -336,9 +334,16 @@ void XQViewModel::onCommandUndo( const XQCommand& command ) void XQViewModel::cmdCut( const XQCommand& command ) { + + int itmPos = command.first().itemPos; + const XQModelSection& section = _sections.sectionByRow( itmPos ); + qDebug() << " --- HEADSHOT I: " << itmPos << "->" << section.contentType(); + // wir gehen rückwärts über alle gemerkten knoten ... for (auto it = command.rbegin(); it != command.rend(); ++it) { + + // ... holen das erste item, das auch den content node enthält //const XQNodeBackup& entry = *it; // jetzt löschen, dabei wird die parent-verbindung entfernt @@ -364,7 +369,7 @@ void XQViewModel::cmdCutUndo( const XQCommand& command ) // die 'zuständige' section rausfinden const XQModelSection& section = _sections.sectionByRow( itmPos ); - qDebug() << " --- HEADSHOT: " << itmPos << "->" << section.contentType(); + qDebug() << " --- HEADSHOT II: " << itmPos << "->" << section.contentType(); // über alle einträge ... for (auto& entry : command )