diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index 279153e5f..6a0f7c49c 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -81,15 +81,20 @@ void PropertyItem::reset() void PropertyItem::setPropertyData(const std::vector& items) { propertyItems = items; + updateData(); + this->initialize(); +} + +void PropertyItem::updateData() +{ bool ro = true; - for (std::vector::const_iterator it = items.begin(); - it != items.end(); ++it) { + for (std::vector::const_iterator it = propertyItems.begin(); + it != propertyItems.end(); ++it) { App::PropertyContainer* parent = (*it)->getContainer(); if (parent) ro &= (parent->isReadOnly(*it) || (*it)->StatusBits.test(2)); } this->setReadOnly(ro); - this->initialize(); } const std::vector& PropertyItem::getPropertyData() const @@ -1774,6 +1779,7 @@ void PropertyEnumItem::setEditorData(QWidget *editor, const QVariant& data) cons QComboBox *cb = qobject_cast(editor); if (!commonModes.isEmpty()) { + cb->clear(); cb->addItems(commonModes); cb->setCurrentIndex(cb->findText(data.toString())); } diff --git a/src/Gui/propertyeditor/PropertyItem.h b/src/Gui/propertyeditor/PropertyItem.h index 86a100d2d..a3c663de9 100644 --- a/src/Gui/propertyeditor/PropertyItem.h +++ b/src/Gui/propertyeditor/PropertyItem.h @@ -60,6 +60,7 @@ public: /** Sets the current property objects. */ void setPropertyData( const std::vector& ); + void updateData(); const std::vector& getPropertyData() const; bool hasProperty(const App::Property*) const; App::Property* getFirstProperty(); diff --git a/src/Gui/propertyeditor/PropertyModel.cpp b/src/Gui/propertyeditor/PropertyModel.cpp index f67aaebbb..04a89ba54 100644 --- a/src/Gui/propertyeditor/PropertyModel.cpp +++ b/src/Gui/propertyeditor/PropertyModel.cpp @@ -268,6 +268,7 @@ void PropertyModel::updateProperty(const App::Property& prop) for (int row=0; rowchild(row); if (child->hasProperty(&prop)) { + child->updateData(); QModelIndex data = this->index(row, column, QModelIndex()); if (data.isValid()) { dataChanged(data, data);