Decrease the amount of clipboard data retrievation

This commit is contained in:
Ilya Fedin 2022-09-26 02:52:59 +04:00 committed by John Preston
parent 073c1a4d0f
commit 16669402cf
3 changed files with 17 additions and 18 deletions

View File

@ -805,13 +805,13 @@ void SendFilesBox::captionResized() {
} }
bool SendFilesBox::canAddFiles(not_null<const QMimeData*> data) const { bool SendFilesBox::canAddFiles(not_null<const QMimeData*> data) const {
return (data->hasUrls() && CanAddUrls(base::GetMimeUrls(data))) || data->hasImage(); return CanAddUrls(base::GetMimeUrls(data)) || data->hasImage();
} }
bool SendFilesBox::addFiles(not_null<const QMimeData*> data) { bool SendFilesBox::addFiles(not_null<const QMimeData*> data) {
const auto premium = _controller->session().premium(); const auto premium = _controller->session().premium();
auto list = [&] { auto list = [&] {
const auto urls = data->hasUrls() ? base::GetMimeUrls(data) : QList<QUrl>(); const auto urls = base::GetMimeUrls(data);
auto result = CanAddUrls(urls) auto result = CanAddUrls(urls)
? Storage::PrepareMediaList( ? Storage::PrepareMediaList(
urls, urls,

View File

@ -39,15 +39,17 @@ inline bool in_range(Value &&value, From &&from, Till &&till) {
return (value >= from) && (value < till); return (value >= from) && (value < till);
} }
inline auto GetMimeUrls(const QMimeData *data) {
#if __has_include(<KUrlMimeData>) #if __has_include(<KUrlMimeData>)
inline QList<QUrl> GetMimeUrls(const QMimeData *data) {
if (!data->hasUrls()) {
return {};
}
return KUrlMimeData::urlsFromMimeData( return KUrlMimeData::urlsFromMimeData(
data, data,
KUrlMimeData::PreferLocalUrls); KUrlMimeData::PreferLocalUrls);
#else
return data->urls();
#endif
} }
#endif
#if __has_include(<KSandbox>) && defined DeclareReadSetting #if __has_include(<KSandbox>) && defined DeclareReadSetting
inline QString FlatpakID() { inline QString FlatpakID() {

View File

@ -88,14 +88,15 @@ void PrepareDetailsInParallel(PreparedList &result, int previewWidth) {
} // namespace } // namespace
bool ValidatePhotoEditorMediaDragData(not_null<const QMimeData*> data) { bool ValidatePhotoEditorMediaDragData(not_null<const QMimeData*> data) {
if (base::GetMimeUrls(data).size() > 1) { const auto urls = base::GetMimeUrls(data);
if (urls.size() > 1) {
return false; return false;
} else if (data->hasImage()) { } else if (data->hasImage()) {
return true; return true;
} }
if (data->hasUrls()) { if (!urls.isEmpty()) {
const auto url = base::GetMimeUrls(data).front(); const auto url = urls.front();
if (url.isLocalFile()) { if (url.isLocalFile()) {
using namespace Core; using namespace Core;
const auto info = QFileInfo(Platform::File::UrlToLocal(url)); const auto info = QFileInfo(Platform::File::UrlToLocal(url));
@ -111,14 +112,15 @@ bool ValidatePhotoEditorMediaDragData(not_null<const QMimeData*> data) {
bool ValidateEditMediaDragData( bool ValidateEditMediaDragData(
not_null<const QMimeData*> data, not_null<const QMimeData*> data,
Ui::AlbumType albumType) { Ui::AlbumType albumType) {
if (base::GetMimeUrls(data).size() > 1) { const auto urls = base::GetMimeUrls(data);
if (urls.size() > 1) {
return false; return false;
} else if (data->hasImage()) { } else if (data->hasImage()) {
return (albumType != Ui::AlbumType::Music); return (albumType != Ui::AlbumType::Music);
} }
if (albumType == Ui::AlbumType::PhotoVideo && data->hasUrls()) { if (albumType == Ui::AlbumType::PhotoVideo && !urls.isEmpty()) {
const auto url = base::GetMimeUrls(data).front(); const auto url = urls.front();
if (url.isLocalFile()) { if (url.isLocalFile()) {
using namespace Core; using namespace Core;
const auto info = QFileInfo(Platform::File::UrlToLocal(url)); const auto info = QFileInfo(Platform::File::UrlToLocal(url));
@ -138,12 +140,7 @@ MimeDataState ComputeMimeDataState(const QMimeData *data) {
return MimeDataState::Image; return MimeDataState::Image;
} }
const auto uriListFormat = qsl("text/uri-list"); const auto urls = base::GetMimeUrls(data);
if (!data->hasFormat(uriListFormat)) {
return MimeDataState::None;
}
const auto &urls = base::GetMimeUrls(data);
if (urls.isEmpty()) { if (urls.isEmpty()) {
return MimeDataState::None; return MimeDataState::None;
} }