fix(editor): properties view setting/unsetting anchored and locked properties erroneously

This commit is contained in:
maelstrom 2025-04-28 01:27:12 +02:00
parent f6f7a5f151
commit 30d00a7de2
2 changed files with 6 additions and 1 deletions

View file

@ -9,7 +9,6 @@
#include <QStyledItemDelegate>
#include <QPainter>
#include <QTime>
#include <chrono>
#include <functional>
#include <qnamespace.h>
#include <qtreewidget.h>
@ -340,6 +339,8 @@ void PropertiesView::setSelected(std::optional<InstanceRef> instance) {
}
void PropertiesView::propertyChanged(QTreeWidgetItem *item, int column) {
// Necessary because otherwise this will catch setCheckState from onPropertyUpdated
if (ignorePropertyUpdates) return;
if (!item->parent() || (item->parent() && item->parent()->parent()) || currentInstance.expired()) return;
InstanceRef inst = currentInstance.lock();
@ -396,7 +397,10 @@ void PropertiesView::onPropertyUpdated(InstanceRef inst, std::string property, D
if (item->data(0, Qt::DisplayRole).toString().toStdString() != property) continue;
if (meta.type == &Data::Bool::TYPE) {
// This is done because otherwise propertyChanged will catch this change erroneously
ignorePropertyUpdates = true;
item->setCheckState(1, (bool)currentValue.get<Data::Bool>() ? Qt::CheckState::Checked : Qt::CheckState::Unchecked);
ignorePropertyUpdates = false;
} else if (meta.type == &Color3::TYPE) {
Color3 color = currentValue.get<Color3>();
item->setData(1, Qt::DecorationRole, QColor::fromRgbF(color.R(), color.G(), color.B()));

View file

@ -11,6 +11,7 @@ namespace Data { class Variant; };
class PropertiesView : public QTreeWidget {
Q_DECLARE_PRIVATE(QTreeView)
bool ignorePropertyUpdates = false;
InstanceRefWeak currentInstance;
void propertyChanged(QTreeWidgetItem *item, int column);
void activateProperty(QTreeWidgetItem *item, int column);