diff options
-rw-r--r-- | include/svx/devtools/DocumentModelTreeHandler.hxx | 1 | ||||
-rw-r--r-- | svx/source/devtools/DevelopmentToolDockingWindow.cxx | 3 | ||||
-rw-r--r-- | svx/source/devtools/DocumentModelTreeHandler.cxx | 17 |
3 files changed, 19 insertions, 2 deletions
diff --git a/include/svx/devtools/DocumentModelTreeHandler.hxx b/include/svx/devtools/DocumentModelTreeHandler.hxx index 3b57ec1aca34..fad725726cfb 100644 --- a/include/svx/devtools/DocumentModelTreeHandler.hxx +++ b/include/svx/devtools/DocumentModelTreeHandler.hxx @@ -43,6 +43,7 @@ public: static css::uno::Reference<css::uno::XInterface> getObjectByID(OUString const& rID); void dispose(); + void selectObject(css::uno::Reference<css::uno::XInterface> const& xInterface); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/devtools/DevelopmentToolDockingWindow.cxx b/svx/source/devtools/DevelopmentToolDockingWindow.cxx index 9ba52a5d5751..1ab3ab997808 100644 --- a/svx/source/devtools/DevelopmentToolDockingWindow.cxx +++ b/svx/source/devtools/DevelopmentToolDockingWindow.cxx @@ -544,12 +544,11 @@ void DevelopmentToolDockingWindow::updateSelection() if (eTriState == TRISTATE_TRUE) { introspect(mxCurrentSelection); - mpDocumentModelTreeView->set_sensitive(false); + maDocumentModelTreeHandler.selectObject(mxCurrentSelection); } else { mpDocumentModelTreeView->set_sensitive(true); - DocumentModelTreeViewSelectionHandler(*mpDocumentModelTreeView); } } diff --git a/svx/source/devtools/DocumentModelTreeHandler.cxx b/svx/source/devtools/DocumentModelTreeHandler.cxx index 12237bd6af7a..5cc293c7fe44 100644 --- a/svx/source/devtools/DocumentModelTreeHandler.cxx +++ b/svx/source/devtools/DocumentModelTreeHandler.cxx @@ -620,6 +620,23 @@ IMPL_LINK(DocumentModelTreeHandler, ExpandingHandler, weld::TreeIter const&, rPa return true; } +void DocumentModelTreeHandler::selectObject( + css::uno::Reference<css::uno::XInterface> const& xInterface) +{ + mpDocumentModelTree->unselect_all(); + + mpDocumentModelTree->all_foreach([this, xInterface](weld::TreeIter& rEntry) { + OUString sID = mpDocumentModelTree->get_id(rEntry); + auto* pEntry = reinterpret_cast<DocumentModelTreeEntry*>(sID.toInt64()); + if (xInterface == pEntry->getMainObject()) + { + mpDocumentModelTree->select(rEntry); + return true; + } + return false; + }); +} + void DocumentModelTreeHandler::inspectDocument() { uno::Reference<lang::XServiceInfo> xDocumentServiceInfo(mxDocument, uno::UNO_QUERY_THROW); |