QWindowsMimeImage: Revert image format handling back to Qt 4.
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Mon, 24 Aug 2015 09:57:31 +0000 (11:57 +0200)
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Tue, 25 Aug 2015 10:56:46 +0000 (10:56 +0000)
Effectively revert 9150563940f61be9fb17510be49c0734244866a5 for
QTBUG-11463 (offering only CF_DIB5 for images of format ARGB32) and
4018cd3529ded32f3434095a2da2568d52dfe16a for QTBUG-46848 adding support
for "PNG".

The changes broke pasting images into MS Office since it can only handle
plain CF_DIB and gets confused if "PNG" is returned as available format.

Task-number: QTBUG-47656
Task-number: QTBUG-11463
Task-number: QTBUG-46848
Change-Id: I9b641b4b912b7b16a2f58bc84fa09c28a64e91c8
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
src/plugins/platforms/windows/qwindowsmime.cpp

index f86ab9fee3d34bda5f5e5098464d6dfcd6e1d669..622352e98759a3b0012e916027b28e67be539275 100644 (file)
@@ -990,12 +990,11 @@ QVector<FORMATETC> QWindowsMimeImage::formatsForMime(const QString &mimeType, co
 {
     QVector<FORMATETC> formatetcs;
     if (mimeData->hasImage() && mimeType == QLatin1String("application/x-qt-image")) {
-        //add DIBV5 if image has alpha channel
+        //add DIBV5 if image has alpha channel. Do not add CF_PNG here as it will confuse MS Office (QTBUG47656).
         QImage image = qvariant_cast<QImage>(mimeData->imageData());
         if (!image.isNull() && image.hasAlphaChannel())
             formatetcs += setCf(CF_DIBV5);
         formatetcs += setCf(CF_DIB);
-        formatetcs += setCf(CF_PNG); // QTBUG-86848, Paste into GIMP queries for PNG.
     }
     return formatetcs;
 }
@@ -1024,11 +1023,7 @@ bool QWindowsMimeImage::canConvertFromMime(const FORMATETC &formatetc, const QMi
     const QImage image = qvariant_cast<QImage>(mimeData->imageData());
     if (image.isNull())
         return false;
-    // QTBUG-11463, deny CF_DIB support for images with alpha to prevent loss of
-    // transparency in conversion.
-    return cf == CF_DIBV5
-        || (cf == CF_DIB && !image.hasAlphaChannel())
-        || cf == int(CF_PNG);
+    return cf == CF_DIBV5 || (cf == CF_DIB) || cf == int(CF_PNG);
 }
 
 bool QWindowsMimeImage::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM * pmedium) const