From 05433f71485a37ee51c8c0cb65df07e2f3e513a5 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 7 Aug 2019 13:18:43 +0800 Subject: [PATCH] Gui: fix crash on editing PropertyLinkList --- src/Gui/DlgPropertyLink.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Gui/DlgPropertyLink.cpp b/src/Gui/DlgPropertyLink.cpp index b43d688a2e0d..d415149bf94a 100644 --- a/src/Gui/DlgPropertyLink.cpp +++ b/src/Gui/DlgPropertyLink.cpp @@ -132,12 +132,10 @@ void DlgPropertyLink::setSelectionMode(QAbstractItemView::SelectionMode mode) void DlgPropertyLink::accept() { - if (ui->treeWidget->selectionMode() == QAbstractItemView::SingleSelection) { - QList items = ui->treeWidget->selectedItems(); - if (items.isEmpty()) { - QMessageBox::warning(this, tr("No selection"), tr("Please select an object from the list")); - return; - } + QList 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 items = ui->treeWidget->selectedItems(); - for (QList::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::iterator it = items.begin(); it != items.end(); ++it) + varList << getLinkFromItem(link,*it); + } return varList; } @@ -210,12 +215,13 @@ void DlgPropertyLink::findObjects() std::set 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());