|
|
|
@ -68,7 +68,11 @@ InputBar::insertMimeData(const QMimeData *md) |
|
|
|
|
const auto video = formats.filter("video/", Qt::CaseInsensitive); |
|
|
|
|
|
|
|
|
|
if (md->hasImage()) { |
|
|
|
|
showPreview(*md, "", image); |
|
|
|
|
if (formats.contains("image/svg+xml", Qt::CaseInsensitive)) { |
|
|
|
|
showPreview(*md, "", QStringList("image/svg+xml")); |
|
|
|
|
} else { |
|
|
|
|
showPreview(*md, "", image); |
|
|
|
|
} |
|
|
|
|
} else if (!audio.empty()) { |
|
|
|
|
showPreview(*md, "", audio); |
|
|
|
|
} else if (!video.empty()) { |
|
|
|
@ -651,7 +655,8 @@ InputBar::showPreview(const QMimeData &source, QString path, const QStringList & |
|
|
|
|
new dialogs::PreviewUploadOverlay(ChatPage::instance()); |
|
|
|
|
previewDialog_->setAttribute(Qt::WA_DeleteOnClose); |
|
|
|
|
|
|
|
|
|
if (source.hasImage()) { |
|
|
|
|
// Force SVG to _not_ be handled as an image, but as raw data
|
|
|
|
|
if (source.hasImage() && (!formats.size() || formats.front() != "image/svg+xml")) { |
|
|
|
|
if (formats.size() && formats.front().startsWith("image/")) { |
|
|
|
|
// known format, keep as-is
|
|
|
|
|
previewDialog_->setPreview(qvariant_cast<QImage>(source.imageData()), formats.front()); |
|
|
|
@ -679,6 +684,12 @@ InputBar::showPreview(const QMimeData &source, QString path, const QStringList & |
|
|
|
|
&dialogs::PreviewUploadOverlay::confirmUpload, |
|
|
|
|
this, |
|
|
|
|
[this](const QByteArray data, const QString &mime, const QString &fn) { |
|
|
|
|
if (!data.size()) { |
|
|
|
|
nhlog::ui()->warn("Attempted to upload zero-byte file?! Mimetype {}, filename {}", |
|
|
|
|
mime.toStdString(), |
|
|
|
|
fn.toStdString()); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
setUploading(true); |
|
|
|
|
|
|
|
|
|
setText(""); |
|
|
|
|