[Libreoffice-commits] core.git: include/svx svx/source

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Thu Feb 11 11:54:36 UTC 2021


 include/svx/devtools/DevelopmentToolDockingWindow.hxx |    2 +
 svx/source/devtools/DevelopmentToolDockingWindow.cxx  |   29 ++++++++++++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)

New commits:
commit 9afdfc80a39f85b440bf753daa52832532ee1e8c
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Feb 8 11:49:03 2021 +0900
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Thu Feb 11 12:53:48 2021 +0100

    devtools: inspect selected object when DevTools are started
    
    When DevTools window is started, we check if there is a selected
    object and inspect that one automatically, else use the root
    document object.
    
    Change-Id: I1b8b5031c4ac67300bcc15d176b86bac0a4c5d4f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110732
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/include/svx/devtools/DevelopmentToolDockingWindow.hxx b/include/svx/devtools/DevelopmentToolDockingWindow.hxx
index b6fe26e67ea4..cdb20c081ba4 100644
--- a/include/svx/devtools/DevelopmentToolDockingWindow.hxx
+++ b/include/svx/devtools/DevelopmentToolDockingWindow.hxx
@@ -18,6 +18,7 @@
 #include <com/sun/star/uno/XInterface.hpp>
 #include <com/sun/star/uno/Reference.hxx>
 #include <com/sun/star/view/XSelectionChangeListener.hpp>
+#include <com/sun/star/frame/XController.hpp>
 
 #include <svx/devtools/DocumentModelTreeHandler.hxx>
 
@@ -44,6 +45,7 @@ private:
 
     void inspectDocument();
     void updateSelection();
+    void inspectSelectionOrRoot(css::uno::Reference<css::frame::XController> const& xController);
 
     void clearObjectInspectorChildren(weld::TreeIter const& rParent);
 
diff --git a/svx/source/devtools/DevelopmentToolDockingWindow.cxx b/svx/source/devtools/DevelopmentToolDockingWindow.cxx
index 1ab3ab997808..bcb554a2668e 100644
--- a/svx/source/devtools/DevelopmentToolDockingWindow.cxx
+++ b/svx/source/devtools/DevelopmentToolDockingWindow.cxx
@@ -30,6 +30,8 @@
 #include <com/sun/star/script/XInvocation.hpp>
 #include <com/sun/star/script/Invocation.hpp>
 
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+
 #include <comphelper/processfactory.hxx>
 
 #include <sfx2/dispatch.hxx>
@@ -40,8 +42,6 @@
 
 #include <sfx2/viewfrm.hxx>
 
-#include <com/sun/star/frame/XController.hpp>
-
 #include <cppuhelper/compbase.hxx>
 #include <cppuhelper/basemutex.hxx>
 
@@ -465,9 +465,32 @@ DevelopmentToolDockingWindow::DevelopmentToolDockingWindow(SfxBindings* pInputBi
 
     mxRoot = pInputBindings->GetDispatcher()->GetFrame()->GetObjectShell()->GetBaseModel();
 
-    introspect(mxRoot);
     maDocumentModelTreeHandler.inspectDocument();
     mxSelectionListener.set(new SelectionChangeHandler(xController, this));
+
+    inspectSelectionOrRoot(xController);
+}
+
+void DevelopmentToolDockingWindow::inspectSelectionOrRoot(
+    uno::Reference<frame::XController> const& xController)
+{
+    css::uno::Reference<css::view::XSelectionSupplier> xSupplier(xController, css::uno::UNO_QUERY);
+    if (xSupplier.is())
+    {
+        css::uno::Any aAny = xSupplier->getSelection();
+        if (aAny.hasValue())
+        {
+            auto xInterface = aAny.get<css::uno::Reference<css::uno::XInterface>>();
+            if (xInterface.is())
+            {
+                introspect(xInterface);
+                mpSelectionToggle->set_state(TRISTATE_TRUE);
+                return;
+            }
+        }
+    }
+    mpSelectionToggle->set_state(TRISTATE_FALSE);
+    introspect(mxRoot);
 }
 
 IMPL_LINK(DevelopmentToolDockingWindow, DocumentModelTreeViewSelectionHandler, weld::TreeView&,


More information about the Libreoffice-commits mailing list