Gui: Use proper placement property for Link
Links require different placement property (LinkPlacement) to be used, otherwise it breaks the transform. Fixes: #20776
This commit is contained in:
committed by
Chris Hennes
parent
dff2127bc3
commit
d35b638039
@@ -170,6 +170,20 @@ bool ViewProviderDragger::forwardToLink()
|
||||
|
||||
return forwardedViewProvider != nullptr;
|
||||
}
|
||||
App::PropertyPlacement* ViewProviderDragger::getPlacementProperty() const
|
||||
{
|
||||
auto object = getObject();
|
||||
|
||||
if (auto linkExtension = object->getExtensionByType<App::LinkBaseExtension>()) {
|
||||
if (auto linkPlacementProp = linkExtension->getLinkPlacementProperty()) {
|
||||
return linkPlacementProp;
|
||||
}
|
||||
|
||||
return linkExtension->getPlacementProperty();
|
||||
}
|
||||
|
||||
return getObject()->getPropertyByName<App::PropertyPlacement>("Placement");
|
||||
}
|
||||
|
||||
bool ViewProviderDragger::setEdit(int ModNum)
|
||||
{
|
||||
@@ -254,7 +268,7 @@ void ViewProviderDragger::dragMotionCallback(void* data, [[maybe_unused]] SoDrag
|
||||
|
||||
void ViewProviderDragger::updatePlacementFromDragger(DraggerComponents components)
|
||||
{
|
||||
const auto placement = getObject()->getPropertyByName<App::PropertyPlacement>("Placement");
|
||||
const auto placement = getPlacementProperty();
|
||||
|
||||
if (!placement) {
|
||||
return;
|
||||
@@ -379,7 +393,7 @@ void ViewProviderDragger::updateTransformFromDragger()
|
||||
|
||||
Base::Placement ViewProviderDragger::getObjectPlacement() const
|
||||
{
|
||||
if (auto placement = getObject()->getPropertyByName<App::PropertyPlacement>("Placement")) {
|
||||
if (auto placement = getPlacementProperty()) {
|
||||
return placement->getValue();
|
||||
}
|
||||
|
||||
|
||||
@@ -120,6 +120,9 @@ protected:
|
||||
|
||||
bool forwardToLink();
|
||||
|
||||
/// Gets placement property of the object
|
||||
App::PropertyPlacement* getPlacementProperty() const;
|
||||
|
||||
/**
|
||||
* Returns a newly create dialog for the part to be placed in the task view
|
||||
* Must be reimplemented in subclasses.
|
||||
|
||||
Reference in New Issue
Block a user