1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-27 03:35:27 +00:00

Fixed problem in the idtable.

This commit is contained in:
Marek Kochanowicz 2014-07-07 12:07:29 +02:00
parent 3262f8d774
commit d221486a14
2 changed files with 28 additions and 15 deletions

View File

@ -1,4 +1,5 @@
#include "idtable.hpp" #include "idtable.hpp"
#include <QDebug>
#include <cassert> #include <cassert>
@ -93,23 +94,34 @@ QVariant CSMWorld::IdTable::nestedHeaderData(int section, int subSection, Qt::Or
bool CSMWorld::IdTable::setData (const QModelIndex &index, const QVariant &value, int role) bool CSMWorld::IdTable::setData (const QModelIndex &index, const QVariant &value, int role)
{ {
if (mIdCollection->getColumn (index.column()).isEditable() && role==Qt::EditRole) if (index.internalId() != 0)
{ {
if (index.internalId() == 0) if (mIdCollection->getColumn(parent(index).column()).isEditable() && role==Qt::EditRole)
{
mIdCollection->setData (index.row(), index.column(), value);
emit dataChanged (CSMWorld::IdTable::index (index.row(), 0),
CSMWorld::IdTable::index (index.row(), mIdCollection->getColumns()-1));
} else
{ {
const std::pair<int, int>& parentAdress(unfoldIndexAdress(index.internalId())); const std::pair<int, int>& parentAdress(unfoldIndexAdress(index.internalId()));
mIdCollection->setNestedData(parentAdress.first, parentAdress.second, value, index.row(), index.column()); mIdCollection->setNestedData(parentAdress.first, parentAdress.second, value, index.row(), index.column());
}
return true; emit dataChanged (CSMWorld::IdTable::index (parentAdress.first, 0),
} CSMWorld::IdTable::index (parentAdress.second, mIdCollection->getColumns()-1));
return true;
} else
{
return false;
}
}
if (mIdCollection->getColumn (index.column()).isEditable() && role==Qt::EditRole)
{
mIdCollection->setData (index.row(), index.column(), value);
emit dataChanged (CSMWorld::IdTable::index (index.row(), 0),
CSMWorld::IdTable::index (index.row(), mIdCollection->getColumns()-1));
return true;
}
return false; return false;
} }
@ -131,9 +143,9 @@ bool CSMWorld::IdTable::removeRows (int row, int count, const QModelIndex& paren
{ {
for (int i = 0; i < count; ++i) for (int i = 0; i < count; ++i)
{ {
mIdCollection->removeNestedRows(parent.row(), parent.column(), row+i); mIdCollection->removeNestedRows(parent.row(), parent.column(), row+i);
} }
} else } else
{ {
beginRemoveRows (parent, row, row+count-1); beginRemoveRows (parent, row, row+count-1);
@ -157,7 +169,7 @@ void CSMWorld::IdTable::addNestedRow(const QModelIndex& parent, int position)
emit dataChanged (CSMWorld::IdTable::index (row, 0), emit dataChanged (CSMWorld::IdTable::index (row, 0),
CSMWorld::IdTable::index (row, mIdCollection->getColumns()-1)); CSMWorld::IdTable::index (row, mIdCollection->getColumns()-1));
endInsertRows(); endInsertRows();
} }

View File

@ -7,6 +7,7 @@
#include <QHeaderView> #include <QHeaderView>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QMenu> #include <QMenu>
#include <QDebug>
CSVWorld::NestedTable::NestedTable(QUndoStack& undoStack, CSVWorld::NestedTable::NestedTable(QUndoStack& undoStack,
CSMWorld::NestedTableModel* model, CSMWorld::NestedTableModel* model,
@ -32,7 +33,7 @@ CSVWorld::NestedTable::NestedTable(QUndoStack& undoStack,
CommandDelegate *delegate = CommandDelegateFactoryCollection::get().makeDelegate(display, CommandDelegate *delegate = CommandDelegateFactoryCollection::get().makeDelegate(display,
undoStack, undoStack,
this); this);
setItemDelegateForColumn(i, delegate); setItemDelegateForColumn(i, delegate);
} }