diff --git a/config/qt.m4 b/config/qt.m4 index 99f43a215b..70a722fbbf 100644 --- a/config/qt.m4 +++ b/config/qt.m4 @@ -442,6 +442,7 @@ qtHaveModule(gui): QT += gui qtHaveModule(svg): QT += svg qtHaveModule(svgwidgets): QT += svgwidgets qtHaveModule(widgets): QT += widgets +QT += gui-private percent.target = % percent.commands = @echo -n "\$(\$(@))\ " QMAKE_EXTRA_TARGETS += percent diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp index f4110881be..54c8910990 100644 --- a/src/frontends/qt/GuiApplication.cpp +++ b/src/frontends/qt/GuiApplication.cpp @@ -137,14 +137,22 @@ #if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) -#if (QT_VERSION < 0x060000) #if (QT_VERSION < 0x050000) #include #define QWINDOWSMIME QWindowsMime +#define QVARIANTTYPE QVariant::Type +#elif (QT_VERSION >= 0x060000) +#include +#include +#include +#define QWINDOWSMIME QWindowsMime +#define QVARIANTTYPE QMetaType +using QWindowsMime = QNativeInterface::Private::QWindowsMime; +using QWindowsApplication = QNativeInterface::Private::QWindowsApplication; #else #include #define QWINDOWSMIME QWinMime -#endif +#define QVARIANTTYPE QVariant::Type #endif #ifdef Q_CC_GNU #include @@ -812,7 +820,7 @@ public: //////////////////////////////////////////////////////////////////////// // Windows specific stuff goes here... -#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400 && QT_VERSION < 0x060000) +#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) // QWindowsMimeMetafile can only be compiled on Windows. @@ -859,7 +867,7 @@ public: } QVariant convertToMime(QString const & mimetype, IDataObject * pDataObj, - QVariant::Type /*preferredType*/) const override + QVARIANTTYPE /*preferredType*/) const override { QByteArray data; if (!canConvertToMime(mimetype, pDataObj)) @@ -978,15 +986,29 @@ struct GuiApplication::Private , last_state_(Qt::ApplicationInactive) #endif { - #if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400 && QT_VERSION < 0x060000) + #if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) /// WMF Mime handler for Windows clipboard. wmf_mime_ = new QWindowsMimeMetafile; + #if (QT_VERSION >= 0x060000) + win_app_ = dynamic_cast + (QGuiApplicationPrivate::platformIntegration()); + win_app_->registerMime(wmf_mime_); + #endif #endif #endif initKeySequences(&theTopLevelKeymap()); } + #if (QT_VERSION >= 0x060000) + #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) + ~Private() + { + win_app_->unregisterMime(wmf_mime_); + } + #endif + #endif + void initKeySequences(KeyMap * kb) { keyseq = KeySequence(kb, kb); @@ -1053,10 +1075,13 @@ struct GuiApplication::Private QMacPasteboardMimeGraphics mac_pasteboard_mime_; #endif -#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400 && QT_VERSION < 0x060000) +#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) /// WMF Mime handler for Windows clipboard. QWindowsMimeMetafile * wmf_mime_; +#if (QT_VERSION >= 0x060000) + QWindowsApplication * win_app_; +#endif #endif #endif