diff --git a/Telegram/SourceFiles/boxes/send_files_box.cpp b/Telegram/SourceFiles/boxes/send_files_box.cpp index 922c7cb89a..b5b69d4b40 100644 --- a/Telegram/SourceFiles/boxes/send_files_box.cpp +++ b/Telegram/SourceFiles/boxes/send_files_box.cpp @@ -805,13 +805,13 @@ void SendFilesBox::captionResized() { } bool SendFilesBox::canAddFiles(not_null data) const { - return (data->hasUrls() && CanAddUrls(base::GetMimeUrls(data))) || data->hasImage(); + return CanAddUrls(base::GetMimeUrls(data)) || data->hasImage(); } bool SendFilesBox::addFiles(not_null data) { const auto premium = _controller->session().premium(); auto list = [&] { - const auto urls = data->hasUrls() ? base::GetMimeUrls(data) : QList(); + const auto urls = base::GetMimeUrls(data); auto result = CanAddUrls(urls) ? Storage::PrepareMediaList( urls, diff --git a/Telegram/SourceFiles/core/utils.h b/Telegram/SourceFiles/core/utils.h index 5218112094..7424889c0a 100644 --- a/Telegram/SourceFiles/core/utils.h +++ b/Telegram/SourceFiles/core/utils.h @@ -39,15 +39,17 @@ inline bool in_range(Value &&value, From &&from, Till &&till) { return (value >= from) && (value < till); } -inline auto GetMimeUrls(const QMimeData *data) { #if __has_include() +inline QList GetMimeUrls(const QMimeData *data) { + if (!data->hasUrls()) { + return {}; + } + return KUrlMimeData::urlsFromMimeData( data, KUrlMimeData::PreferLocalUrls); -#else - return data->urls(); -#endif } +#endif #if __has_include() && defined DeclareReadSetting inline QString FlatpakID() { diff --git a/Telegram/SourceFiles/storage/storage_media_prepare.cpp b/Telegram/SourceFiles/storage/storage_media_prepare.cpp index 76e6c608ee..eedc25746b 100644 --- a/Telegram/SourceFiles/storage/storage_media_prepare.cpp +++ b/Telegram/SourceFiles/storage/storage_media_prepare.cpp @@ -88,14 +88,15 @@ void PrepareDetailsInParallel(PreparedList &result, int previewWidth) { } // namespace bool ValidatePhotoEditorMediaDragData(not_null data) { - if (base::GetMimeUrls(data).size() > 1) { + const auto urls = base::GetMimeUrls(data); + if (urls.size() > 1) { return false; } else if (data->hasImage()) { return true; } - if (data->hasUrls()) { - const auto url = base::GetMimeUrls(data).front(); + if (!urls.isEmpty()) { + const auto url = urls.front(); if (url.isLocalFile()) { using namespace Core; const auto info = QFileInfo(Platform::File::UrlToLocal(url)); @@ -111,14 +112,15 @@ bool ValidatePhotoEditorMediaDragData(not_null data) { bool ValidateEditMediaDragData( not_null data, Ui::AlbumType albumType) { - if (base::GetMimeUrls(data).size() > 1) { + const auto urls = base::GetMimeUrls(data); + if (urls.size() > 1) { return false; } else if (data->hasImage()) { return (albumType != Ui::AlbumType::Music); } - if (albumType == Ui::AlbumType::PhotoVideo && data->hasUrls()) { - const auto url = base::GetMimeUrls(data).front(); + if (albumType == Ui::AlbumType::PhotoVideo && !urls.isEmpty()) { + const auto url = urls.front(); if (url.isLocalFile()) { using namespace Core; const auto info = QFileInfo(Platform::File::UrlToLocal(url)); @@ -138,12 +140,7 @@ MimeDataState ComputeMimeDataState(const QMimeData *data) { return MimeDataState::Image; } - const auto uriListFormat = qsl("text/uri-list"); - if (!data->hasFormat(uriListFormat)) { - return MimeDataState::None; - } - - const auto &urls = base::GetMimeUrls(data); + const auto urls = base::GetMimeUrls(data); if (urls.isEmpty()) { return MimeDataState::None; }