[MeasureGui] Use temporary measure object creation (#15122)

* MeasureGui: Store measure type in TaskMeasure

* MeasureGui: Avoid adding measurement to document during command interaction

* [Gui] Add check for document in VPDocumentObject::getActiveView

* MeasureGui: Track the document when adding objects

* MeasureGui: Cleanup python measurement creation

* [Gui] Add isAnnotationViewProvider method

* [Gui] Check if viewprovider is added as an annotation in getActiveView

* [Gui] Add takeAnnotationViewprovider method to Gui::Document

* [Gui] Make addViewProvider public

* [MeasureGui] Add existing view provider to document when storing measurement

* [MeasureGui] Fix invocation of initial label placement

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
hlorus
2024-09-02 17:54:05 +02:00
committed by GitHub
parent 7b0a23337c
commit 979ca3bbd1
5 changed files with 156 additions and 50 deletions

View File

@@ -401,6 +401,18 @@ Gui::MDIView* ViewProviderDocumentObject::getActiveView() const
{
if(!pcObject)
throw Base::RuntimeError("View provider detached");
if (!pcObject->isAttachedToDocument()) {
// Check if view provider is attached to a document as an annotation
for (auto doc : App::GetApplication().getDocuments()) {
auto guiDoc = Gui::Application::Instance->getDocument(doc);
if (guiDoc->isAnnotationViewProvider(this)) {
return guiDoc->getActiveView();
}
}
return nullptr;
}
App::Document* pAppDoc = pcObject->getDocument();
Gui::Document* pGuiDoc = Gui::Application::Instance->getDocument(pAppDoc);
return pGuiDoc->getActiveView();