diff options
Diffstat (limited to 'svx/source')
-rw-r--r-- | svx/source/devtools/DevelopmentToolDockingWindow.cxx | 31 | ||||
-rw-r--r-- | svx/source/devtools/DocumentModelTreeHandler.cxx | 24 |
2 files changed, 28 insertions, 27 deletions
diff --git a/svx/source/devtools/DevelopmentToolDockingWindow.cxx b/svx/source/devtools/DevelopmentToolDockingWindow.cxx index 407900704a3b..c6adf1f5f0a5 100644 --- a/svx/source/devtools/DevelopmentToolDockingWindow.cxx +++ b/svx/source/devtools/DevelopmentToolDockingWindow.cxx @@ -94,11 +94,13 @@ DevelopmentToolDockingWindow::DevelopmentToolDockingWindow(SfxBindings* pInputBi , mpClassNameLabel(m_xBuilder->weld_label("class_name_value_id")) , mpClassListBox(m_xBuilder->weld_tree_view("class_listbox_id")) , mpLeftSideTreeView(m_xBuilder->weld_tree_view("leftside_treeview_id")) + , mpSelectionToggle(m_xBuilder->weld_toggle_button("selection_toggle")) , maDocumentModelTreeHandler( mpLeftSideTreeView, pInputBindings->GetDispatcher()->GetFrame()->GetObjectShell()->GetBaseModel()) { mpLeftSideTreeView->connect_changed(LINK(this, DevelopmentToolDockingWindow, LeftSideSelected)); + mpSelectionToggle->connect_toggled(LINK(this, DevelopmentToolDockingWindow, SelectionToggled)); auto* pViewFrame = pInputBindings->GetDispatcher()->GetFrame(); @@ -120,24 +122,48 @@ DevelopmentToolDockingWindow::DevelopmentToolDockingWindow(SfxBindings* pInputBi IMPL_LINK(DevelopmentToolDockingWindow, LeftSideSelected, weld::TreeView&, rView, void) { + if (mpSelectionToggle->get_state() == TRISTATE_TRUE) + return; + OUString sID = rView.get_selected_id(); auto xObject = DocumentModelTreeHandler::getObjectByID(sID); if (xObject.is()) introspect(xObject); } +IMPL_LINK_NOARG(DevelopmentToolDockingWindow, SelectionToggled, weld::ToggleButton&, void) +{ + updateSelection(); +} + DevelopmentToolDockingWindow::~DevelopmentToolDockingWindow() { disposeOnce(); } void DevelopmentToolDockingWindow::dispose() { mpClassNameLabel.reset(); mpClassListBox.reset(); + mpSelectionToggle.reset(); maDocumentModelTreeHandler.dispose(); mpLeftSideTreeView.reset(); SfxDockingWindow::dispose(); } +void DevelopmentToolDockingWindow::updateSelection() +{ + TriState eTriState = mpSelectionToggle->get_state(); + if (eTriState == TRISTATE_TRUE) + { + introspect(mxCurrentSelection); + mpLeftSideTreeView->set_sensitive(false); + } + else + { + mpLeftSideTreeView->set_sensitive(true); + LeftSideSelected(*mpLeftSideTreeView); + } +} + void DevelopmentToolDockingWindow::ToggleFloatingMode() { SfxDockingWindow::ToggleFloatingMode(); @@ -151,9 +177,8 @@ void DevelopmentToolDockingWindow::ToggleFloatingMode() void DevelopmentToolDockingWindow::selectionChanged( uno::Reference<uno::XInterface> const& xInterface) { - maDocumentModelTreeHandler.setCurrentSelectedObject(xInterface); - // We need to update the introspection window - LeftSideSelected(*mpLeftSideTreeView); + mxCurrentSelection = xInterface; + updateSelection(); } void DevelopmentToolDockingWindow::introspect(uno::Reference<uno::XInterface> const& xInterface) diff --git a/svx/source/devtools/DocumentModelTreeHandler.cxx b/svx/source/devtools/DocumentModelTreeHandler.cxx index 4d36077a74e7..12237bd6af7a 100644 --- a/svx/source/devtools/DocumentModelTreeHandler.cxx +++ b/svx/source/devtools/DocumentModelTreeHandler.cxx @@ -122,15 +122,6 @@ public: } }; -class CurrentSelectionEntry : public DocumentModelTreeEntry -{ -public: - CurrentSelectionEntry(css::uno::Reference<css::uno::XInterface> const& xObject) - : DocumentModelTreeEntry(xObject) - { - } -}; - class ParagraphsEntry : public DocumentModelTreeEntry { public: @@ -633,8 +624,6 @@ void DocumentModelTreeHandler::inspectDocument() { uno::Reference<lang::XServiceInfo> xDocumentServiceInfo(mxDocument, uno::UNO_QUERY_THROW); - msCurrentSelectionID = lclAppend(mpDocumentModelTree, "Current Selection", - new CurrentSelectionEntry(mxDocument), false); lclAppend(mpDocumentModelTree, "Document", new DocumentRootEntry(mxDocument), false); if (xDocumentServiceInfo->supportsService("com.sun.star.sheet.SpreadsheetDocument")) @@ -669,17 +658,4 @@ void DocumentModelTreeHandler::inspectDocument() } } -void DocumentModelTreeHandler::setCurrentSelectedObject( - css::uno::Reference<css::uno::XInterface> xObject) -{ - if (msCurrentSelectionID.isEmpty()) - return; - - auto* pEntry = reinterpret_cast<DocumentModelTreeEntry*>(msCurrentSelectionID.toInt64()); - if (!pEntry) - return; - - pEntry->mxObject = xObject; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |