From 151359d476b26cba143f93b0353a5d7af1f6e428 Mon Sep 17 00:00:00 2001 From: Leonardo Zide Date: Sun, 8 Mar 2026 15:37:37 -0700 Subject: [PATCH] Removed remaining SaveCheckpoint calls. --- common/lc_model.cpp | 150 ++++++++++++---------------------------- common/lc_model.h | 1 - common/lc_modelaction.h | 2 + 3 files changed, 48 insertions(+), 105 deletions(-) diff --git a/common/lc_model.cpp b/common/lc_model.cpp index f9437642..2d4dcf6f 100644 --- a/common/lc_model.cpp +++ b/common/lc_model.cpp @@ -1950,6 +1950,13 @@ void lcModel::EndActionSequence(const QString& Description) if (mActionSequence.empty()) return; + if (mIsPreview) + { + mActionSequence.clear(); + + return; + } + bool CanMerge = false; if (mActionSequence.size() == 1 && !mUndoHistory.empty() && mUndoHistory.front()->ModelActions.size() == 1) @@ -2044,29 +2051,6 @@ const lcModelHistoryEntry* lcModel::GetFirstUndoChange() const return nullptr; } -void lcModel::SaveCheckpoint(const QString& ) -{ - /* - lcModelHistoryEntry* ModelHistoryEntry = new lcModelHistoryEntry(); - - ModelHistoryEntry->Description = Description; - - QTextStream Stream(&ModelHistoryEntry->File); - SaveLDraw(Stream, false, 0); - - mUndoHistory.insert(mUndoHistory.begin(), ModelHistoryEntry); - for (lcModelHistoryEntry* Entry : mRedoHistory) - delete Entry; - mRedoHistory.clear(); - - if (!Description.isEmpty()) - { - gMainWindow->UpdateModified(IsModified()); - gMainWindow->UpdateUndoRedo(mUndoHistory.size() > 1 ? mUndoHistory[0]->Description : QString(), !mRedoHistory.empty() ? mRedoHistory[0]->Description : QString()); - } - */ -} - void lcModel::LoadCheckPoint(lcModelHistoryEntry* CheckPoint, bool Apply) { if (!CheckPoint->ModelActions.empty()) @@ -3236,7 +3220,10 @@ void lcModel::MoveSelectionToModel(lcModel* Model) { if (!Model) return; - + + BeginActionSequence(); + BeginObjectEditAction(lcModelActionEditMerge::None); + std::vector Pieces; lcPiece* ModelPiece = nullptr; lcStep FirstStep = LC_STEP_MAX; @@ -3266,7 +3253,14 @@ void lcModel::MoveSelectionToModel(lcModel* Model) else PieceIndex++; } + + if (Pieces.empty()) + { + DiscardActionSequence(); + return; + } + lcVector3 ModelCenter = (Min + Max) / 2.0f; ModelCenter.z += (Min.z - Max.z) / 2.0f; @@ -3285,11 +3279,14 @@ void lcModel::MoveSelectionToModel(lcModel* Model) ModelPiece->Initialize(lcMatrix44Translation(ModelCenter), FirstStep); ModelPiece->UpdatePosition(mCurrentStep); } - - SaveCheckpoint(tr("New Model")); + + EndObjectEditAction(); + gMainWindow->UpdateTimeline(false, false); RecordSetSelectionAndFocusAction(std::vector(), ModelPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); + + EndActionSequence(tr("Move to Model")); } void lcModel::InlineSelectedModels() @@ -3943,86 +3940,13 @@ void lcModel::SetObjectsProperty(const std::vector& Objects, lcObject void lcModel::EndPropertyEdit(lcObjectPropertyId PropertyId, bool Accept) { // todo: right clicking or pressing esc while dragging the spinbox doesn't cancel + // we need to handle the shortcut override and undo the last undo history if it matches the property if (!Accept) { RevertActionSequence(); return; } - - switch (PropertyId) - { - case lcObjectPropertyId::PieceId: - case lcObjectPropertyId::PieceColor: - case lcObjectPropertyId::PieceStepShow: - case lcObjectPropertyId::PieceStepHide: - case lcObjectPropertyId::CameraName: - case lcObjectPropertyId::CameraProjection: - break; - - case lcObjectPropertyId::CameraFOV: - case lcObjectPropertyId::CameraNear: - case lcObjectPropertyId::CameraFar: - SaveCheckpoint(lcObject::GetCheckpointString(PropertyId)); - break; - - case lcObjectPropertyId::CameraPositionX: - case lcObjectPropertyId::CameraPositionY: - case lcObjectPropertyId::CameraPositionZ: - case lcObjectPropertyId::CameraTargetX: - case lcObjectPropertyId::CameraTargetY: - case lcObjectPropertyId::CameraTargetZ: - case lcObjectPropertyId::CameraUpX: - case lcObjectPropertyId::CameraUpY: - case lcObjectPropertyId::CameraUpZ: - SaveCheckpoint(tr("Move")); - break; - - case lcObjectPropertyId::LightName: - case lcObjectPropertyId::LightType: - case lcObjectPropertyId::LightColor: - break; - - case lcObjectPropertyId::LightBlenderPower: - case lcObjectPropertyId::LightPOVRayPower: - SaveCheckpoint(lcObject::GetCheckpointString(PropertyId)); - break; - - case lcObjectPropertyId::LightCastShadow: - break; - - case lcObjectPropertyId::LightPOVRayFadeDistance: - case lcObjectPropertyId::LightPOVRayFadePower: - case lcObjectPropertyId::LightBlenderRadius: - case lcObjectPropertyId::LightBlenderAngle: - case lcObjectPropertyId::LightAreaSizeX: - case lcObjectPropertyId::LightAreaSizeY: - case lcObjectPropertyId::LightSpotConeAngle: - case lcObjectPropertyId::LightSpotPenumbraAngle: - case lcObjectPropertyId::LightPOVRaySpotTightness: - SaveCheckpoint(lcObject::GetCheckpointString(PropertyId)); - break; - - case lcObjectPropertyId::LightAreaShape: - case lcObjectPropertyId::LightPOVRayAreaGridX: - case lcObjectPropertyId::LightPOVRayAreaGridY: - break; - - case lcObjectPropertyId::ObjectPositionX: - case lcObjectPropertyId::ObjectPositionY: - case lcObjectPropertyId::ObjectPositionZ: - SaveCheckpoint(tr("Move")); - break; - - case lcObjectPropertyId::ObjectRotationX: - case lcObjectPropertyId::ObjectRotationY: - case lcObjectPropertyId::ObjectRotationZ: - SaveCheckpoint(tr("Rotate")); - break; - - case lcObjectPropertyId::Count: - break; - } } bool lcModel::AnyPiecesSelected() const @@ -5428,12 +5352,22 @@ void lcModel::LookAt(lcCamera* Camera) void lcModel::MoveCamera(lcCamera* Camera, const lcVector3& Direction) { + if (!Camera->IsSimple()) + { + BeginActionSequence(); + BeginObjectEditAction(lcModelActionEditMerge::KeyboardMoveCamera); + } + Camera->MoveRelative(Direction, mCurrentStep, gMainWindow->GetAddKeys()); + gMainWindow->UpdateSelectedObjects(false); UpdateAllViews(); if (!Camera->IsSimple()) - SaveCheckpoint(tr("Moving Camera")); + { + EndObjectEditAction(); + EndActionSequence(tr("Move")); + } } void lcModel::ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& WorldMatrix) @@ -5477,14 +5411,24 @@ void lcModel::ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& Worl void lcModel::Zoom(lcCamera* Camera, float Amount) { + if (!Camera->IsSimple()) + { + BeginActionSequence(); + BeginObjectEditAction(lcModelActionEditMerge::KeyboardZoom); + } + Camera->Zoom(Amount, mCurrentStep, gMainWindow->GetAddKeys()); if (!mIsPreview) gMainWindow->UpdateSelectedObjects(false); + UpdateAllViews(); if (!Camera->IsSimple()) - SaveCheckpoint(tr("Zoom")); + { + EndObjectEditAction(); + EndActionSequence(tr("Zoom")); + } } void lcModel::ShowPropertiesDialog() @@ -5684,8 +5628,6 @@ void lcModel::SetPreviewPieceInfo(PieceInfo* Info, int ColorIndex) mCurrentStep = LC_STEP_MAX; CalculateStep(LC_STEP_MAX); - - SaveCheckpoint(QString()); } void lcModel::UpdateInterface() diff --git a/common/lc_model.h b/common/lc_model.h index 03773979..9a9948ee 100644 --- a/common/lc_model.h +++ b/common/lc_model.h @@ -413,7 +413,6 @@ protected: void RemoveFirstUndoIfUnchanged(); const lcModelHistoryEntry* GetFirstUndoChange() const; - void SaveCheckpoint(const QString& Description); void LoadCheckPoint(lcModelHistoryEntry* CheckPoint, bool Apply); QString GetGroupName(const QString& Prefix); diff --git a/common/lc_modelaction.h b/common/lc_modelaction.h index 3c4eb54d..1d3624bd 100644 --- a/common/lc_modelaction.h +++ b/common/lc_modelaction.h @@ -86,6 +86,8 @@ enum class lcModelActionEditMerge None, KeyboardMove, KeyboardRotate, + KeyboardZoom, + KeyboardMoveCamera, PropertiesMove, PropertiesRotate, PropertiesEdit = 0x40000000