diff --git a/common/lc_model.cpp b/common/lc_model.cpp index d67908aa..25e002d5 100644 --- a/common/lc_model.cpp +++ b/common/lc_model.cpp @@ -3876,16 +3876,13 @@ void lcModel::SetCameraProjection(lcCamera* Camera, lcCameraProjection CameraPro gMainWindow->UpdateSelectedObjects(false); } -void lcModel::SetObjectsProperty(const std::vector& Objects, lcObjectPropertyId PropertyId, QVariant Value, bool AddUndo) +void lcModel::SetObjectsProperty(const std::vector& Objects, lcObjectPropertyId PropertyId, QVariant Value) { + BeginActionSequence(); + BeginObjectEditAction(static_cast(static_cast(lcModelActionEditMerge::PropertiesEdit) | static_cast(PropertyId))); + bool Modified = false; - if (AddUndo) - { - BeginActionSequence(); - BeginObjectEditAction(lcModelActionEditMerge::None); - } - for (lcObject* Object : Objects) { bool ObjectModified = Object->SetPropertyValue(PropertyId, mCurrentStep, gMainWindow->GetAddKeys(), Value); @@ -3904,14 +3901,10 @@ void lcModel::SetObjectsProperty(const std::vector& Objects, lcObject return; } - if (AddUndo) - { - EndObjectEditAction(); - EndActionSequence(lcObject::GetCheckpointString(PropertyId)); - } + EndObjectEditAction(); + EndActionSequence(lcObject::GetCheckpointString(PropertyId)); gMainWindow->UpdateSelectedObjects(false); - UpdateAllViews(); // todo: fix hacky timeline update if (PropertyId == lcObjectPropertyId::PieceId || PropertyId == lcObjectPropertyId::PieceColor) diff --git a/common/lc_model.h b/common/lc_model.h index ea8ebb15..151a9f61 100644 --- a/common/lc_model.h +++ b/common/lc_model.h @@ -379,7 +379,7 @@ public: void SetSelectedPiecesStepShow(lcStep Step); void SetSelectedPiecesStepHide(lcStep Step); - void SetObjectsProperty(const std::vector& Objects, lcObjectPropertyId PropertyId, QVariant Value, bool AddUndo); + void SetObjectsProperty(const std::vector& Objects, lcObjectPropertyId PropertyId, QVariant Value); void EndPropertyEdit(lcObjectPropertyId PropertyId, bool Accept); void SetCameraProjection(lcCamera* Camera, lcCameraProjection CameraProjection); diff --git a/common/lc_modelaction.h b/common/lc_modelaction.h index c39b4f7e..9cf10ca8 100644 --- a/common/lc_modelaction.h +++ b/common/lc_modelaction.h @@ -87,7 +87,8 @@ enum class lcModelActionEditMerge KeyboardMove, KeyboardRotate, PropertiesMove, - PropertiesRotate + PropertiesRotate, + PropertiesEdit = 0x40000000 }; class lcModelActionObjectEdit: public lcModelAction diff --git a/common/lc_propertieswidget.cpp b/common/lc_propertieswidget.cpp index 4eab31ed..558ee4ea 100644 --- a/common/lc_propertieswidget.cpp +++ b/common/lc_propertieswidget.cpp @@ -204,7 +204,7 @@ void lcPropertiesWidget::BoolChanged() return; const bool Value = Widget->isChecked(); - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value); } void lcPropertiesWidget::UpdateBool(lcObjectPropertyId PropertyId) @@ -286,10 +286,10 @@ void lcPropertiesWidget::FloatChanged(double Value) lcDoubleSpinBox* Widget = qobject_cast(sender()); lcObjectPropertyId PropertyId = GetEditorWidgetPropertyId(Widget); - ChangeFloatValue(PropertyId, Value, true); + ChangeFloatValue(PropertyId, Value); } -void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float Value, bool Dragging) +void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float Value) { if (PropertyId == lcObjectPropertyId::Count) return; @@ -347,12 +347,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V mLastRotation = Rotation; } - else if (Piece || Light) - { - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, !Dragging); - } - - if (PropertyId == lcObjectPropertyId::CameraPositionX || PropertyId == lcObjectPropertyId::CameraPositionY || PropertyId == lcObjectPropertyId::CameraPositionZ) + else if (PropertyId == lcObjectPropertyId::CameraPositionX || PropertyId == lcObjectPropertyId::CameraPositionY || PropertyId == lcObjectPropertyId::CameraPositionZ) { quint32 FocusSection = LC_CAMERA_SECTION_INVALID; lcVector3 Start; @@ -463,12 +458,9 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V Camera->SetFocused(FocusSection, true); } } - else if (Camera) + else { - if (PropertyId == lcObjectPropertyId::CameraFOV || PropertyId == lcObjectPropertyId::CameraNear || PropertyId == lcObjectPropertyId::CameraFar) - { - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, !Dragging); - } + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value); } mDisableUpdates = false; @@ -608,7 +600,7 @@ void lcPropertiesWidget::IntegerChanged() return; const int Value = LineEdit->text().toInt(); - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value); } void lcPropertiesWidget::UpdateInteger(lcObjectPropertyId PropertyId) @@ -741,7 +733,7 @@ void lcPropertiesWidget::StringChanged() return; QString Value = LineEdit->text(); - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value); } void lcPropertiesWidget::UpdateString(lcObjectPropertyId PropertyId) @@ -805,7 +797,7 @@ void lcPropertiesWidget::StringListChanged(int Value) if (!Model) return; - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value, true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, Value); } void lcPropertiesWidget::UpdateStringList(lcObjectPropertyId PropertyId) @@ -907,7 +899,7 @@ void lcPropertiesWidget::ColorChanged(QColor Color) return; const lcVector3 FloatColor = lcVector3FromQColor(Color); - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, QVariant::fromValue(FloatColor), true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, QVariant::fromValue(FloatColor)); } void lcPropertiesWidget::UpdateColor(lcObjectPropertyId PropertyId) @@ -973,7 +965,7 @@ void lcPropertiesWidget::PieceColorChanged(int ColorIndex) if (!Model) return; - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, ColorIndex, true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, ColorIndex); } void lcPropertiesWidget::PieceColorButtonClicked() @@ -1104,7 +1096,7 @@ void lcPropertiesWidget::PieceIdButtonClicked() if (!Model || !Info) return; - Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, QVariant::fromValue(Info), true); + Model->SetObjectsProperty(mFocusObject ? std::vector{ mFocusObject } : mSelection, PropertyId, QVariant::fromValue(Info)); } } diff --git a/common/lc_propertieswidget.h b/common/lc_propertieswidget.h index 82ca61fe..2c24447e 100644 --- a/common/lc_propertieswidget.h +++ b/common/lc_propertieswidget.h @@ -115,7 +115,7 @@ protected: void UpdatePieceColor(lcObjectPropertyId PropertyId); void UpdatePieceId(lcObjectPropertyId PropertyId); - void ChangeFloatValue(lcObjectPropertyId PropertyId, float Value, bool Dragging); + void ChangeFloatValue(lcObjectPropertyId PropertyId, float Value); void SetEmpty(); void SetPiece(const std::vector& Selection, lcObject* Focus);