[Libreoffice-commits] core.git: sfx2/source
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Thu Mar 11 11:47:13 UTC 2021
sfx2/source/devtools/ObjectInspectorTreeHandler.cxx | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
New commits:
commit a443e4e3d96bf51313451e254a8aada2bad05c52
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Mar 3 21:28:32 2021 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Thu Mar 11 12:46:26 2021 +0100
devtools: also support XEnumerationAccess in object inspector
Similar like XIndexAccess is XEnumerationAccess, which is like
an iterator over elements, but unlike XIndexAccess the elements
can't be accessed direclty by an index.
In the object inspector the elements of a XEnumeration are
presented as @{number} at the top of the properties.
Change-Id: I61d71859ed065d4e72f8dff99b1aa0fda3546800
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112108
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
index c00ddc645a10..5d3d8049d467 100644
--- a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
+++ b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
@@ -32,6 +32,7 @@
#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/script/XInvocation.hpp>
#include <com/sun/star/script/Invocation.hpp>
@@ -517,6 +518,22 @@ void GenericPropertiesNode::fillChildren(std::unique_ptr<weld::TreeView>& pTree,
}
}
+ const auto xEnumAccess = uno::Reference<container::XEnumerationAccess>(maAny, uno::UNO_QUERY);
+ if (xEnumAccess.is())
+ {
+ uno::Reference<container::XEnumeration> xEnumeration = xEnumAccess->createEnumeration();
+ if (xEnumeration.is())
+ {
+ for (sal_Int32 nIndex = 0; xEnumeration->hasMoreElements(); nIndex++)
+ {
+ uno::Any aAny = xEnumeration->nextElement();
+ auto* pObjectInspectorNode
+ = createNodeObjectForAny("@{" + OUString::number(nIndex) + "}", aAny);
+ lclAppendNodeToParent(pTree, pParent, pObjectInspectorNode);
+ }
+ }
+ }
+
uno::Reference<beans::XIntrospection> xIntrospection = beans::theIntrospection::get(mxContext);
auto xIntrospectionAccess = xIntrospection->inspect(maAny);
auto xInvocationFactory = css::script::Invocation::create(mxContext);
More information about the Libreoffice-commits
mailing list