summaryrefslogtreecommitdiff
path: root/offapi
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-08-20 17:03:13 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-08-23 15:11:27 +0200
commitec940941e0bd7db15c5cf7d43df82226e0d849dc (patch)
treea876a500dfa6a32bc8b284b3b07525480ba60765 /offapi
parent1d524bc7a331e8381e88cfd1b6dea4678ad32514 (diff)
tdf#119388 add new UNO listener/broadcaster
so that we only need to fire each event to the exact shape that wants it, instead of spamming all the shapes. Takes deleting a column from 20s to 10s for me. Note that none of the broadcasters are calling disposing(EventObject), so I did not make XShapeEventListener extend lang::XEventListener. If a memory leak regression points at this commit, possibly I missed something. Change-Id: I2b8db08247d3e0203d41faf77491368168994e4d Reviewed-on: https://gerrit.libreoffice.org/77857 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'offapi')
-rw-r--r--offapi/UnoApi_offapi.mk2
-rw-r--r--offapi/com/sun/star/document/XShapeEventBroadcaster.idl55
-rw-r--r--offapi/com/sun/star/document/XShapeEventListener.idl49
3 files changed, 106 insertions, 0 deletions
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 59d7e16772c8..474fc58160fa 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -2246,6 +2246,8 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/document,\
XOOXMLDocumentPropertiesImporter \
XRedlinesSupplier \
XScriptInvocationContext \
+ XShapeEventBroadcaster \
+ XShapeEventListener \
XStorageBasedDocument \
XStorageChangeListener \
XTypeDetection \
diff --git a/offapi/com/sun/star/document/XShapeEventBroadcaster.idl b/offapi/com/sun/star/document/XShapeEventBroadcaster.idl
new file mode 100644
index 000000000000..52e49ec8e96b
--- /dev/null
+++ b/offapi/com/sun/star/document/XShapeEventBroadcaster.idl
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef __com_sun_star_document_XShapeEventBroadcaster_idl__
+#define __com_sun_star_document_XShapeEventBroadcaster_idl__
+
+#include <com/sun/star/document/XShapeEventListener.idl>
+#include <com/sun/star/drawing/XShape.idl>
+
+
+module com { module sun { module star { module document {
+
+/**
+ Used to link a listener to a specific shape
+
+ @since LibreOffice 6.4
+ */
+interface XShapeEventBroadcaster : com::sun::star::document::XEventBroadcaster
+{
+ /** registers the given listener
+
+ @param Listener
+ listener which is interested on such events
+ */
+ void addShapeEventListener( [in] com::sun::star::drawing::XShape Shape, [in] XShapeEventListener Listener );
+
+ /** unregisters the given listener
+
+ @param Listener
+ listener which isn't interested on such events any longer
+ */
+ void removeShapeEventListener( [in] com::sun::star::drawing::XShape Shape, [in] XShapeEventListener Listener );
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/document/XShapeEventListener.idl b/offapi/com/sun/star/document/XShapeEventListener.idl
new file mode 100644
index 000000000000..56634d171845
--- /dev/null
+++ b/offapi/com/sun/star/document/XShapeEventListener.idl
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef __com_sun_star_document_XShapeEventListener_idl__
+#define __com_sun_star_document_XShapeEventListener_idl__
+
+#include <com/sun/star/document/EventObject.idl>
+
+
+module com { module sun { module star { module document {
+
+/** makes it possible to register listeners, which are called whenever
+ a document or document content event occurs
+
+ <p>Such events will be broadcasted by a XShapeEventBroadcaster.</p>
+
+ @since LibreOffice 6.4
+ */
+interface XShapeEventListener
+{
+ /** is called whenever a document event (see EventObject) occurs
+
+ @param Event
+ specifies the event type
+ */
+ void notifyShapeEvent( [in] EventObject Event );
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */