sfx2/source/devtools/ObjectInspectorTreeHandler.cxx |   29 ++++++++++----------
 1 file changed, 15 insertions(+), 14 deletions(-)

New commits:
commit 7aec678ff4f34bfe76ac64c8be8bae944ea508a8
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu Mar 4 22:36:55 2021 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Fri Mar 12 16:02:29 2021 +0100

    devtools: show expander for the sequence only if it has elements
    
    Change-Id: Ic94881df48da63b8662484faaddc004d83756529
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112115
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx 
b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
index f6a863b24aaf..5dbbb00a0844 100644
--- a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
+++ b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
@@ -425,28 +425,34 @@ public:
 
 class SequenceNode : public BasicValueNode
 {
+    uno::Reference<reflection::XIdlArray> mxIdlArray;
+
 public:
     SequenceNode(OUString const& rName, uno::Any const& rAny,
                  uno::Reference<uno::XComponentContext> const& xContext)
         : BasicValueNode(rName, rAny, xContext)
     {
+        auto xReflection = reflection::theCoreReflection::get(mxContext);
+        OUString aTypeName = maAny.getValueType().getTypeName();
+        auto xClass = xReflection->forName(aTypeName);
+        mxIdlArray = xClass->getArray();
     }
 
-    bool shouldShowExpander() override { return true; }
+    bool shouldShowExpander() override
+    {
+        // Show expnder only if the sequence has elements
+        int nLength = mxIdlArray->getLen(maAny);
+        return nLength > 0;
+    }
 
     void fillChildren(std::unique_ptr<weld::TreeView>& pTree,
                       const weld::TreeIter* pParent) override
     {
-        auto xReflection = reflection::theCoreReflection::get(mxContext);
-        uno::Reference<reflection::XIdlClass> xClass
-            = xReflection->forName(maAny.getValueType().getTypeName());
-        uno::Reference<reflection::XIdlArray> xIdlArray = xClass->getArray();
-
-        int nLength = xIdlArray->getLen(maAny);
+        int nLength = mxIdlArray->getLen(maAny);
 
         for (int i = 0; i < nLength; i++)
         {
-            uno::Any aArrayValue = xIdlArray->get(maAny, i);
+            uno::Any aArrayValue = mxIdlArray->get(maAny, i);
             uno::Reference<uno::XInterface> xCurrent;
 
             auto* pObjectInspectorNode = 
createNodeObjectForAny(OUString::number(i), aArrayValue);
@@ -457,12 +463,7 @@ public:
 
     std::vector<std::pair<sal_Int32, OUString>> getColumnValues() override
     {
-        auto xReflection = reflection::theCoreReflection::get(mxContext);
-        uno::Reference<reflection::XIdlClass> xClass
-            = xReflection->forName(maAny.getValueType().getTypeName());
-        uno::Reference<reflection::XIdlArray> xIdlArray = xClass->getArray();
-
-        int nLength = xIdlArray->getLen(maAny);
+        int nLength = mxIdlArray->getLen(maAny);
 
         OUString aValue = "<Sequence>";
         OUString aType = getAnyType(maAny).replaceAll(u"[]", u"");
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to