Skip to content
Snippets Groups Projects
Commit cefe5fe7 authored by Nicolas Werner's avatar Nicolas Werner
Browse files

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.
parent 512db8c6
No related branches found
No related tags found
No related merge requests found
...@@ -306,8 +306,9 @@ FilteredTextEdit::insertFromMimeData(const QMimeData *source) ...@@ -306,8 +306,9 @@ FilteredTextEdit::insertFromMimeData(const QMimeData *source)
const auto audio = formats.filter("audio/", Qt::CaseInsensitive); const auto audio = formats.filter("audio/", Qt::CaseInsensitive);
const auto video = formats.filter("video/", Qt::CaseInsensitive); const auto video = formats.filter("video/", Qt::CaseInsensitive);
if (!image.empty()) { if (source->hasImage()) {
showPreview(source, image); QImage img = qvariant_cast<QImage>(source->imageData());
previewDialog_.setPreview(img, image.front());
} else if (!audio.empty()) { } else if (!audio.empty()) {
showPreview(source, audio); showPreview(source, audio);
} else if (!video.empty()) { } else if (!video.empty()) {
......
...@@ -34,10 +34,6 @@ ...@@ -34,10 +34,6 @@
#include "popups/ReplyPopup.h" #include "popups/ReplyPopup.h"
#include "popups/SuggestionsPopup.h" #include "popups/SuggestionsPopup.h"
namespace dialogs {
class PreviewUploadOverlay;
}
struct SearchResult; struct SearchResult;
class FlatButton; class FlatButton;
......
...@@ -134,6 +134,28 @@ PreviewUploadOverlay::setLabels(const QString &type, const QString &mime, uint64 ...@@ -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 void
PreviewUploadOverlay::setPreview(const QByteArray data, const QString &mime) PreviewUploadOverlay::setPreview(const QByteArray data, const QString &mime)
{ {
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#pragma once #pragma once
#include <QImage>
#include <QLabel> #include <QLabel>
#include <QLineEdit> #include <QLineEdit>
#include <QPixmap> #include <QPixmap>
...@@ -33,6 +34,7 @@ class PreviewUploadOverlay : public QWidget ...@@ -33,6 +34,7 @@ class PreviewUploadOverlay : public QWidget
public: public:
PreviewUploadOverlay(QWidget *parent = nullptr); PreviewUploadOverlay(QWidget *parent = nullptr);
void setPreview(const QImage &src, const QString &mime);
void setPreview(const QByteArray data, const QString &mime); void setPreview(const QByteArray data, const QString &mime);
void setPreview(const QString &path); void setPreview(const QString &path);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment