7#include <QtCore/qmetaobject.h>
8#include <QtCore/qobject.h>
9#include <QtCore/private/qohoscommon_p.h>
10#include <QtCore/private/qohoslogger_p.h>
11#include <qohosclipboardobject.h>
12#include <qohosplugincore.h>
23 return QOhosClipboardObject::makeInstance(
std::move(pasteboardUpdatesNotifier));
31 return shareInAppOnly;
36 m_clipboardObject = makeClipboardObjectInstance(
37 [
this](QOhosOptional<QOhosClipboardObject::PasteboardDataSource> dataSource) {
38 if (dataSource == QOhosClipboardObject::PasteboardDataSource::OtherProcess
39 || (!dataSource.hasValue() && m_mimeData)) {
41 m_mimeDataIsOurs =
false;
43 emitChanged(QClipboard::Clipboard);
52 Q_ASSERT(supportsMode(mode));
58 if (!m_mimeDataIsOurs && (m_mimeData ==
nullptr || m_mimeData->formats().isEmpty()))
59 m_mimeData = m_clipboardObject->getPasteboardDataWithLazyFetch().lazyFetchingData;
61 return m_mimeData.get();
66 Q_ASSERT(supportsMode(mode));
68 if (supportsMode(mode)) {
69 bool callerReusedMimeDataPointer = mimeData == m_mimeData.get();
70 if (!callerReusedMimeDataPointer)
71 m_mimeData = std::shared_ptr<QMimeData>(mimeData);
72 m_mimeDataIsOurs =
true;
73 if (mimeData !=
nullptr) {
74 m_clipboardObject->setMimeDataSync(m_mimeData, shareInAppOnlyFlagRef());
76 shareInAppOnlyFlagRef() = makeEmptyQOhosOptional();
78 m_clipboardObject->setMimeDataSync(std::make_shared<QMimeData>(), {});
85 shareInAppOnlyFlagRef() = shareInAppOnly;
90 return mode == QClipboard::Clipboard;
101 auto pasteboardData = m_clipboardObject->getPasteboardDataWithLazyFetch();
103 if (!pasteboardData.dataSource.hasValue())
104 return std::make_shared<QMimeData>();
106 return pasteboardData.dataSource == QOhosClipboardObject::PasteboardDataSource::OtherProcess
107 ? std::move(pasteboardData.lazyFetchingData)
110 : std::make_shared<QMimeData>();
std::enable_if_t< qohosplugincore_h_detail::isQOhosOptional< QOhosInvokeResult< Func, T > >, QOhosInvokeResult< Func, T > > andThen(Func &&func) const
Combined button and popup list for selecting options.
std::shared_ptr< QOhosClipboardObject > makeClipboardObjectInstance(std::function< void(QOhosOptional< QOhosClipboardObject::PasteboardDataSource >)> &&pasteboardUpdatesNotifier)