forked from mirror/openmw-tes3mp
Allow non-empty mOriginalCell (case where a moved ref is moved again)
This commit is contained in:
parent
b54e5714c9
commit
889749a493
3 changed files with 15 additions and 10 deletions
|
@ -238,8 +238,19 @@ void CSMDoc::CollectionReferencesStage::perform (int stage, Messages& messages)
|
|||
mState.getSubRecords()[Misc::StringUtils::lowerCase (cellId)];
|
||||
|
||||
// collect moved references at the end of the container
|
||||
if (!record.get().mOriginalCell.empty() &&
|
||||
record.get().mOriginalCell!=record.get().mCell)
|
||||
bool interior = cellId.substr (0, 1)!="#";
|
||||
std::ostringstream stream;
|
||||
if (!interior)
|
||||
{
|
||||
// recalculate the ref's cell location
|
||||
std::pair<int, int> index = record.get().getCellIndex();
|
||||
stream << "#" << index.first << " " << index.second;
|
||||
}
|
||||
|
||||
// An empty mOriginalCell is meant to indicate that it is the same as
|
||||
// the current cell. It is possible that a moved ref is moved again.
|
||||
if ((record.get().mOriginalCell.empty() ?
|
||||
record.get().mCell : record.get().mOriginalCell) != stream.str() && !interior)
|
||||
indices.push_back (i);
|
||||
else
|
||||
indices.push_front (i);
|
||||
|
@ -314,7 +325,7 @@ void CSMDoc::WriteCellCollectionStage::perform (int stage, Messages& messages)
|
|||
// An empty mOriginalCell is meant to indicate that it is the same as
|
||||
// the current cell. It is possible that a moved ref is moved again.
|
||||
if ((ref.get().mOriginalCell.empty() ? ref.get().mCell : ref.get().mOriginalCell)
|
||||
!= stream.str())
|
||||
!= stream.str() && !interior)
|
||||
{
|
||||
ESM::MovedCellRef moved;
|
||||
moved.mRefNum = ref.get().mRefNum;
|
||||
|
|
|
@ -8,11 +8,10 @@
|
|||
#include <QAbstractItemModel>
|
||||
#include <QAbstractProxyModel>
|
||||
|
||||
#include "idtable.hpp"
|
||||
#include "idtree.hpp"
|
||||
#include "nestedtablewrapper.hpp"
|
||||
|
||||
#include "idtable.hpp"
|
||||
|
||||
CSMWorld::ModifyCommand::ModifyCommand (QAbstractItemModel& model, const QModelIndex& index,
|
||||
const QVariant& new_, QUndoCommand* parent)
|
||||
: QUndoCommand (parent), mModel (&model), mIndex (index), mNew (new_)
|
||||
|
@ -227,10 +226,6 @@ void CSMWorld::UpdateCellCommand::undo()
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CSMWorld::DeleteNestedCommand::DeleteNestedCommand (IdTree& model,
|
||||
const std::string& id,
|
||||
int nestedRow,
|
||||
|
|
|
@ -20,7 +20,6 @@ class QAbstractItemModel;
|
|||
namespace CSMWorld
|
||||
{
|
||||
class IdTable;
|
||||
class RecordBase;
|
||||
class IdTree;
|
||||
struct RecordBase;
|
||||
struct NestedTableWrapperBase;
|
||||
|
|
Loading…
Reference in a new issue