summaryrefslogtreecommitdiff
path: root/svx/source
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source')
-rw-r--r--svx/source/devtools/DevelopmentToolDockingWindow.cxx31
-rw-r--r--svx/source/devtools/DocumentModelTreeHandler.cxx24
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: */