Support pasting image/svg+xml format straight from supporting applications

This commit is contained in:
Thulinma 2021-09-28 01:42:35 +02:00
parent c4b788917f
commit 94441e68fd
2 changed files with 20 additions and 2 deletions

View file

@ -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("");