diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2019-01-24 09:36:46 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-01-24 12:48:24 +0100 |
commit | e14fafaafb3500d65be9c1b69fcb86b31d36468c (patch) | |
tree | a308d8f2adf477aef41f25fbf9d0cb600627cf41 /offapi/com/sun/star | |
parent | b473896d31e4c198100fde582f5b4d12d8e2a1d7 (diff) |
sw: make it possible to listen to paste events
The use-case is that the user pastes content and custom postprocessing
is necessary for the pasted content. This is not easy by default, since
the cursor is at the end of the pasted content, so the start is not
known -- even if you intercept the paste UNO command.
Precisely tracking the start is possible when using the internal API,
SwReader::Read() does something similar already to track the undo range.
Only expose the text selection after paste (as a start), but design the
API in a way so that other pasted content type (e.g. image) can be
added in a backwards-compatible way later.
Change-Id: If35bda4244cc417e4858124fb75f7608b95fc556
Reviewed-on: https://gerrit.libreoffice.org/66807
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'offapi/com/sun/star')
-rw-r--r-- | offapi/com/sun/star/text/XPasteBroadcaster.idl | 42 | ||||
-rw-r--r-- | offapi/com/sun/star/text/XPasteListener.idl | 42 |
2 files changed, 84 insertions, 0 deletions
diff --git a/offapi/com/sun/star/text/XPasteBroadcaster.idl b/offapi/com/sun/star/text/XPasteBroadcaster.idl new file mode 100644 index 000000000000..faddd99b6c34 --- /dev/null +++ b/offapi/com/sun/star/text/XPasteBroadcaster.idl @@ -0,0 +1,42 @@ +/* -*- 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/. + */ +#ifndef __com_sun_star_text_XPasteBroadcaster_idl__ +#define __com_sun_star_text_XPasteBroadcaster_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/text/XPasteListener.idl> + +module com { module sun { module star { module text { + +/** allows for adding/removing of paste event listeners. + + @since LibreOffice 6.3 +*/ +interface XPasteBroadcaster : com::sun::star::uno::XInterface +{ + /** Adds an entry to the list of paste listeners. + + @param xListener + The listener to be added. + */ + void addPasteEventListener([in] com::sun::star::text::XPasteListener xListener); + + /** Removes an entry to the list of paste listeners. + + @param xListener + The listener to be removed. + */ + void removePasteEventListener( [in] com::sun::star::text::XPasteListener xListener ); +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/text/XPasteListener.idl b/offapi/com/sun/star/text/XPasteListener.idl new file mode 100644 index 000000000000..ce5d663f4ccd --- /dev/null +++ b/offapi/com/sun/star/text/XPasteListener.idl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + */ +#ifndef __com_sun_star_text_XPasteListener_idl__ +#define __com_sun_star_text_XPasteListener_idl__ + +#include <com/sun/star/beans/PropertyValue.idl> +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module text { + +/** used to notify listeners about paste events. + + @since LibreOffice 6.3 +*/ +interface XPasteListener : com::sun::star::uno::XInterface +{ + /** Notifies the listener about paste events. + + @param aEvent + The event containing details about the paste. + + <p>The following keys may be used: + <ul> + <li>TextRange</li> + </ul></p> + */ + void notifyPasteEvent([in] sequence< ::com::sun::star::beans::PropertyValue > aEvent); +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |