diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2021-02-05 18:29:32 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2021-02-11 00:33:03 +0100 |
commit | e0843b1fe6e39d3e5f14c8f13476008f17c8ed2e (patch) | |
tree | 13feb025ab894d996ddace4c2696c8f5bac66458 /svx | |
parent | 187305951fc76805198cd63cbb955aa1576690ac (diff) |
devtools: when selection changes, select obj. in DOM tree view
When we inspect the current selected object, we search and select
the object in the document model tree view if the object is in
the tree view, or just unselect everything.
Change-Id: I5dc5e323067bfb4aa3d2cd904d3f810719e45fad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110467
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/devtools/DevelopmentToolDockingWindow.cxx | 3 | ||||
-rw-r--r-- | svx/source/devtools/DocumentModelTreeHandler.cxx | 17 |
2 files changed, 18 insertions, 2 deletions
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); |