diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-10-31 17:01:43 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-11-03 17:29:08 +0100 |
commit | d5300a6d2a7a67a27717ceef07c9113a0afe10c2 (patch) | |
tree | 2a3968f6aae9f0bf073e74b2097ac788bfa3e719 /src/plugins/platforms/cocoa | |
parent | c5d4de1557d6e34a84aa6b3f289605630a3c0bdb (diff) |
Refactor: split QMacMime registry and virtual interface
The logic for registration of converter implementations is only used
internally through static functions. Move those, and related global
functions, to a QMacMimeRegistry namespace.
Reduce the QMacInternalPasteboardMime to the abstract interface for
converting between native and Qt clipboard data.
Historically, mime converters can have different "types"; make that API
type-safe.
Task-number: QTBUG-93632
Change-Id: I0e16fefa350398b693486199fe10357fd84abcd6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaclipboard.mm | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoadrag.mm | 1 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaintegration.mm | 5 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.mm | 3 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.h | 3 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.mm | 12 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview.mm | 1 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview_dragging.mm | 2 |
8 files changed, 19 insertions, 10 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.mm b/src/plugins/platforms/cocoa/qcocoaclipboard.mm index 7363b011bf..8c48f282c9 100644 --- a/src/plugins/platforms/cocoa/qcocoaclipboard.mm +++ b/src/plugins/platforms/cocoa/qcocoaclipboard.mm @@ -3,6 +3,8 @@ #include "qcocoaclipboard.h" +#include <QtGui/private/qmacmime_p.h> + #ifndef QT_NO_CLIPBOARD QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index 7a73344480..dc1f68bd23 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -7,6 +7,7 @@ #include "qmacclipboard.h" #include "qcocoahelpers.h" #include <QtGui/private/qcoregraphics_p.h> +#include <QtGui/private/qmacmime_p.h> #include <QtCore/qsysinfo.h> #include <QtCore/private/qcore_mac_p.h> diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm index 2d2a7890d0..b17ab38b10 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.mm +++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm @@ -32,6 +32,7 @@ #include <QtCore/private/qcore_mac_p.h> #include <QtGui/private/qcoregraphics_p.h> +#include <QtGui/private/qmacmimeregistry_p.h> #include <QtGui/private/qopenglcontext_p.h> #include <QtGui/private/qrhibackingstore_p.h> #include <QtGui/private/qfontengine_coretext_p.h> @@ -164,7 +165,7 @@ QCocoaIntegration::QCocoaIntegration(const QStringList ¶mList) QCocoaScreen::initializeScreens(); - QMacInternalPasteboardMime::initializeMimeTypes(); + QMacMimeRegistry::initializeMimeTypes(); QCocoaMimeTypes::initializeMimeTypes(); QWindowSystemInterfacePrivate::TabletEvent::setPlatformSynthesizesMouse(false); QWindowSystemInterface::registerInputDevice(new QInputDevice(QString("keyboard"), 0, @@ -194,7 +195,7 @@ QCocoaIntegration::~QCocoaIntegration() // Deleting the clipboard integration flushes promised pastes using // the mime converters - the ordering here is important. delete mCocoaClipboard; - QMacInternalPasteboardMime::destroyMimeTypes(); + QMacMimeRegistry::destroyMimeTypes(); #endif QCocoaScreen::cleanupScreens(); diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm index 38a6060256..fd7e1c07b7 100644 --- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm +++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm @@ -26,6 +26,7 @@ #include <QtGui/qguiapplication.h> #include <qdebug.h> +#include <QtGui/private/qmacmimeregistry_p.h> #include <QtGui/private/qcoregraphics_p.h> #if QT_CONFIG(vulkan) @@ -120,7 +121,7 @@ void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window) void QCocoaNativeInterface::registerDraggedTypes(const QStringList &types) { - qt_mac_registerDraggedTypes(types); + QMacMimeRegistry::registerDraggedTypes(types); } void QCocoaNativeInterface::setEmbeddedInForeignView(QPlatformWindow *window, bool embedded) diff --git a/src/plugins/platforms/cocoa/qmacclipboard.h b/src/plugins/platforms/cocoa/qmacclipboard.h index 925e816831..3cd33f9591 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.h +++ b/src/plugins/platforms/cocoa/qmacclipboard.h @@ -5,13 +5,14 @@ #define QMACCLIPBOARD_H #include <QtGui> -#include <QtGui/private/qmacmime_p.h> #include <ApplicationServices/ApplicationServices.h> QT_BEGIN_NAMESPACE class QMacMimeData; +class QMacInternalPasteboardMime; + class QMacPasteboard { public: diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm index b298a47bef..5287638d80 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.mm +++ b/src/plugins/platforms/cocoa/qmacclipboard.mm @@ -4,6 +4,8 @@ #include <AppKit/AppKit.h> #include "qmacclipboard.h" +#include <QtGui/private/qmacmimeregistry_p.h> +#include <QtGui/private/qmacmime_p.h> #include <QtGui/qclipboard.h> #include <QtGui/qguiapplication.h> #include <QtGui/qbitmap.h> @@ -130,7 +132,7 @@ OSStatus QMacPasteboard::promiseKeeper(PasteboardRef paste, PasteboardItemID id, // Find the kept promise QList<QMacInternalPasteboardMime*> availableConverters - = QMacInternalPasteboardMime::all(QMacInternalPasteboardMime::MIME_ALL); + = QMacMimeRegistry::all(QMacInternalPasteboardMime::MIME_ALL); const QString flavorAsQString = QString::fromCFString(flavor); QMacPasteboard::Promise promise; for (int i = 0; i < qpaste->promises.size(); i++){ @@ -297,7 +299,7 @@ QMacPasteboard::setMimeData(QMimeData *mime_src, DataRequestType dataRequestType delete mime; mime = mime_src; - QList<QMacInternalPasteboardMime*> availableConverters = QMacInternalPasteboardMime::all(mime_type); + QList<QMacInternalPasteboardMime*> availableConverters = QMacMimeRegistry::all(mime_type); if (mime != nullptr) { clear_helper(); QStringList formats = mime_src->formats(); @@ -372,7 +374,7 @@ QMacPasteboard::formats() const for (int i = 0; i < type_count; ++i) { const QString flavor = QString::fromCFString((CFStringRef)CFArrayGetValueAtIndex(types, i)); qCDebug(lcQpaClipboard, " -%s", qPrintable(QString(flavor))); - QString mimeType = QMacInternalPasteboardMime::flavorToMime(mime_type, flavor); + QString mimeType = QMacMimeRegistry::flavorToMime(mime_type, flavor); if (!mimeType.isEmpty() && !ret.contains(mimeType)) { qCDebug(lcQpaClipboard, " -<%lld> %s [%s]", ret.size(), qPrintable(mimeType), qPrintable(QString(flavor))); ret << mimeType; @@ -409,7 +411,7 @@ QMacPasteboard::hasFormat(const QString &format) const for (int i = 0; i < type_count; ++i) { const QString flavor = QString::fromCFString((CFStringRef)CFArrayGetValueAtIndex(types, i)); qCDebug(lcQpaClipboard, " -%s [0x%x]", qPrintable(QString(flavor)), mime_type); - QString mimeType = QMacInternalPasteboardMime::flavorToMime(mime_type, flavor); + QString mimeType = QMacMimeRegistry::flavorToMime(mime_type, flavor); if (!mimeType.isEmpty()) qCDebug(lcQpaClipboard, " - %s", qPrintable(mimeType)); if (mimeType == format) @@ -432,7 +434,7 @@ QMacPasteboard::retrieveData(const QString &format, QMetaType) const return QByteArray(); qCDebug(lcQpaClipboard, "Pasteboard: retrieveData [%s]", qPrintable(format)); - const QList<QMacInternalPasteboardMime *> mimes = QMacInternalPasteboardMime::all(mime_type); + const QList<QMacInternalPasteboardMime *> mimes = QMacMimeRegistry::all(mime_type); for (int mime = 0; mime < mimes.size(); ++mime) { QMacInternalPasteboardMime *c = mimes.at(mime); QString c_flavor = c->flavorFor(format); diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index b73d186612..eb4405ccd0 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -34,6 +34,7 @@ #include "qcocoaglcontext.h" #endif #include "qcocoaintegration.h" +#include <QtGui/private/qmacmimeregistry_p.h> // Private interface @interface QNSView () diff --git a/src/plugins/platforms/cocoa/qnsview_dragging.mm b/src/plugins/platforms/cocoa/qnsview_dragging.mm index c88e5d502f..06b917945a 100644 --- a/src/plugins/platforms/cocoa/qnsview_dragging.mm +++ b/src/plugins/platforms/cocoa/qnsview_dragging.mm @@ -21,7 +21,7 @@ NSPasteboardTypeMultipleTextSelection, mimeTypeGeneric]]; // Add custom types supported by the application - for (const QString &customType : qt_mac_enabledDraggedTypes()) + for (const QString &customType : QMacMimeRegistry::enabledDraggedTypes()) [supportedTypes addObject:customType.toNSString()]; [self registerForDraggedTypes:supportedTypes]; |