Gui: fix crash on editing PropertyLinkList

This commit is contained in:
Zheng, Lei
2019-08-07 13:18:43 +08:00
committed by wmayer
parent fe0548cad5
commit ac6e94d1c8

View File

@@ -132,12 +132,10 @@ void DlgPropertyLink::setSelectionMode(QAbstractItemView::SelectionMode mode)
void DlgPropertyLink::accept()
{
if (ui->treeWidget->selectionMode() == QAbstractItemView::SingleSelection) {
QList<QTreeWidgetItem*> items = ui->treeWidget->selectedItems();
if (items.isEmpty()) {
QMessageBox::warning(this, tr("No selection"), tr("Please select an object from the list"));
return;
}
QList<QTreeWidgetItem*> items = ui->treeWidget->selectedItems();
if (items.isEmpty()) {
QMessageBox::warning(this, tr("No selection"), tr("Please select an object from the list"));
return;
}
QDialog::accept();
@@ -190,8 +188,15 @@ QVariantList DlgPropertyLink::propertyLinkList() const
{
QVariantList varList;
QList<QTreeWidgetItem*> items = ui->treeWidget->selectedItems();
for (QList<QTreeWidgetItem*>::iterator it = items.begin(); it != items.end(); ++it)
varList << getLinkFromItem(link,*it);
if (items.isEmpty()) {
QStringList l = link;
l[1] = QString();
l[2] = QString();
varList << l;
} else {
for (QList<QTreeWidgetItem*>::iterator it = items.begin(); it != items.end(); ++it)
varList << getLinkFromItem(link,*it);
}
return varList;
}
@@ -210,12 +215,13 @@ void DlgPropertyLink::findObjects()
std::set<std::string> selectedNames;
// Add a "None" entry on top
if (isSingleSelection) {
auto* item = new QTreeWidgetItem(ui->treeWidget);
item->setText(0,tr("None (Remove link)"));
QByteArray ba("");
item->setData(0,Qt::UserRole, ba);
}else {
auto* item = new QTreeWidgetItem(ui->treeWidget);
item->setText(0,tr("None (Remove link)"));
QByteArray ba("");
item->setData(0,Qt::UserRole, ba);
if (!isSingleSelection) {
QString ownerName = link[3];
QString proName = link[4];
auto owner = doc->getObject(ownerName.toLatin1());