Gui: Fix dragger update when moving to target object and make flip independent of selected components.

This commit is contained in:
Max Wilfinger
2025-06-11 19:48:04 +02:00
committed by Kacper Donat
parent a95d782ab0
commit 9d1360fc8d
3 changed files with 11 additions and 3 deletions

View File

@@ -515,7 +515,7 @@ void TaskTransform::onSelectionChanged(const SelectionChanges& msg)
vp->setDraggerPlacement(vp->getObjectPlacement() * selectedObjectPlacement);
if (msg.Type == SelectionChanges::AddSelection) {
moveObjectToDragger();
moveObjectToDragger(getRelevantComponents());
setSelectionMode(SelectionMode::None);
}
@@ -545,10 +545,11 @@ void TaskTransform::onAlignToOtherObject()
setSelectionMode(SelectionMode::SelectAlignTarget);
}
void TaskTransform::moveObjectToDragger()
ViewProviderDragger::DraggerComponents TaskTransform::getRelevantComponents()
{
// Check which dragger components should be considered
ViewProviderDragger::DraggerComponents components;
if (ui->matchXcheckbox->isChecked()) {
components |= ViewProviderDragger::DraggerComponent::XPos;
}
@@ -578,6 +579,11 @@ void TaskTransform::moveObjectToDragger()
components &= ~ViewProviderDragger::DraggerComponent::ZRot;
}
return components;
}
void TaskTransform::moveObjectToDragger(ViewProviderDragger::DraggerComponents components)
{
vp->updateTransformFromDragger();
vp->updatePlacementFromDragger(components);

View File

@@ -125,7 +125,8 @@ private:
void resetReferencePlacement();
void resetReferenceRotation();
void moveObjectToDragger();
ViewProviderDragger::DraggerComponents getRelevantComponents();
void moveObjectToDragger(ViewProviderDragger::DraggerComponents components = ViewProviderDragger::DraggerComponent::All);
bool isDraggerAlignedToCoordinateSystem() const;

View File

@@ -313,6 +313,7 @@ void ViewProviderDragger::updatePlacementFromDragger(DraggerComponents component
}
placement->setValue((finalDraggerPlacement * getTransformOrigin().inverse()));
updateDraggerPosition();
}
Base::Rotation Gui::ViewProviderDragger::orthonormalize(Base::Vector3d x,