1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-23 15:40:42 +00:00

Show nested tables only when they are editable

This commit is contained in:
Rob Cutmore 2016-09-29 20:42:44 -04:00
parent b59694c4f0
commit 8f47ed17df

View File

@ -578,40 +578,31 @@ void CSVWorld::EditWidget::remake(int row)
fixedRows = true; fixedRows = true;
} }
NestedTable* table = // Create and display nested table only if it's editable.
new NestedTable(mDocument, id, mNestedModels.back(), this, editable, fixedRows); if (editable)
table->resizeColumnsToContents();
if (!editable)
{ {
// Disallow table editing, selection, and focus. NestedTable* table =
// This allows user to scroll through table but not edit items. new NestedTable(mDocument, id, mNestedModels.back(), this, editable, fixedRows);
// Disabling table doesn't allow user to scroll. table->resizeColumnsToContents();
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->setSelectionMode(QAbstractItemView::NoSelection); int rows = mTable->rowCount(mTable->index(row, i));
table->setFocusPolicy(Qt::NoFocus); int rowHeight = (rows == 0) ? table->horizontalHeader()->height() : table->rowHeight(0);
table->setToolTip("Currently read-only"); int headerHeight = table->horizontalHeader()->height();
int tableMaxHeight = (5 * rowHeight) + headerHeight + (2 * table->frameWidth());
table->setMinimumHeight(tableMaxHeight);
QString headerText = mTable->headerData (i, Qt::Horizontal, Qt::DisplayRole).toString();
QLabel* label = new QLabel (headerText, mMainWidget);
label->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
tablesLayout->addWidget(label);
tablesLayout->addWidget(table);
connect(table,
SIGNAL(editRequest(const CSMWorld::UniversalId &, const std::string &)),
this,
SIGNAL(editIdRequest(const CSMWorld::UniversalId &, const std::string &)));
} }
int rows = mTable->rowCount(mTable->index(row, i));
int rowHeight = (rows == 0) ? table->horizontalHeader()->height() : table->rowHeight(0);
int tableMaxHeight = (5 * rowHeight)
+ table->horizontalHeader()->height() + 2 * table->frameWidth();
table->setMinimumHeight(tableMaxHeight);
QLabel* label =
new QLabel (mTable->headerData (i, Qt::Horizontal, Qt::DisplayRole).toString(), mMainWidget);
label->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
if(!editable)
label->setEnabled(false);
tablesLayout->addWidget(label);
tablesLayout->addWidget(table);
connect(table,
SIGNAL(editRequest(const CSMWorld::UniversalId &, const std::string &)),
this,
SIGNAL(editIdRequest(const CSMWorld::UniversalId &, const std::string &)));
} }
else if (!(flags & CSMWorld::ColumnBase::Flag_Dialogue_List)) else if (!(flags & CSMWorld::ColumnBase::Flag_Dialogue_List))
{ {