Fix copy and pasting image from clipboard

If the QMimeData contains an image, it actually has a mime type of
application/x-qt-image. At least in some cases accessing the image/*
data returns a 0 length array. Accessing the data via ->imageData works
however. So we use that as our accessor and pass it to the preview
dialog.
This commit is contained in:
Nicolas Werner 2019-07-22 02:38:44 +02:00
parent 512db8c6ff
commit cefe5fe719
4 changed files with 27 additions and 6 deletions

View file

@ -134,6 +134,28 @@ PreviewUploadOverlay::setLabels(const QString &type, const QString &mime, uint64
}
}
void
PreviewUploadOverlay::setPreview(const QImage &src, const QString &mime)
{
auto const &split = mime.split('/');
auto const &type = split[1];
QBuffer buffer(&data_);
buffer.open(QIODevice::WriteOnly);
if (src.save(&buffer, type.toStdString().c_str()))
titleLabel_.setText(QString{tr(DEFAULT)}.arg("image"));
else
titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type));
mediaType_ = split[0];
filePath_ = "clipboard." + type;
image_.convertFromImage(src);
isImage_ = true;
titleLabel_.setText(QString{tr(DEFAULT)}.arg("image"));
init();
}
void
PreviewUploadOverlay::setPreview(const QByteArray data, const QString &mime)
{