diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp
index 1ae26c2d..f723c01a 100644
--- a/src/TextInputWidget.cpp
+++ b/src/TextInputWidget.cpp
@@ -306,8 +306,9 @@ FilteredTextEdit::insertFromMimeData(const QMimeData *source)
const auto audio = formats.filter("audio/", Qt::CaseInsensitive);
const auto video = formats.filter("video/", Qt::CaseInsensitive);
- if (!image.empty()) {
- showPreview(source, image);
+ if (source->hasImage()) {
+ QImage img = qvariant_cast<QImage>(source->imageData());
+ previewDialog_.setPreview(img, image.front());
} else if (!audio.empty()) {
showPreview(source, audio);
} else if (!video.empty()) {
diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h
index 4a726364..71f794d1 100644
--- a/src/TextInputWidget.h
+++ b/src/TextInputWidget.h
@@ -34,10 +34,6 @@
#include "popups/ReplyPopup.h"
#include "popups/SuggestionsPopup.h"
-namespace dialogs {
-class PreviewUploadOverlay;
-}
-
struct SearchResult;
class FlatButton;
diff --git a/src/dialogs/PreviewUploadOverlay.cpp b/src/dialogs/PreviewUploadOverlay.cpp
index c404799e..31d01214 100644
--- a/src/dialogs/PreviewUploadOverlay.cpp
+++ b/src/dialogs/PreviewUploadOverlay.cpp
@@ -135,6 +135,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)
{
auto const &split = mime.split('/');
diff --git a/src/dialogs/PreviewUploadOverlay.h b/src/dialogs/PreviewUploadOverlay.h
index 8099d9c2..11cd49bc 100644
--- a/src/dialogs/PreviewUploadOverlay.h
+++ b/src/dialogs/PreviewUploadOverlay.h
@@ -17,6 +17,7 @@
#pragma once
+#include <QImage>
#include <QLabel>
#include <QLineEdit>
#include <QPixmap>
@@ -33,6 +34,7 @@ class PreviewUploadOverlay : public QWidget
public:
PreviewUploadOverlay(QWidget *parent = nullptr);
+ void setPreview(const QImage &src, const QString &mime);
void setPreview(const QByteArray data, const QString &mime);
void setPreview(const QString &path);
diff --git a/src/main.cpp b/src/main.cpp
index bd7560da..60bb6c76 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -118,12 +118,12 @@ main(int argc, char *argv[])
}
#endif
- QApplication app(argc, argv);
QCoreApplication::setApplicationName("nheko");
QCoreApplication::setApplicationVersion(nheko::version);
QCoreApplication::setOrganizationName("nheko");
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QApplication app(argc, argv);
QCommandLineParser parser;
parser.addHelpOption();
|