mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Don't allow forwarding local items by drag.
This commit is contained in:
parent
715dff0a3e
commit
e54204b136
2 changed files with 38 additions and 19 deletions
|
@ -1731,7 +1731,9 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
updateDragSelection(nullptr, nullptr, false);
|
updateDragSelection(nullptr, nullptr, false);
|
||||||
_selectScroll.cancel();
|
_selectScroll.cancel();
|
||||||
|
|
||||||
if (!urls.isEmpty()) mimeData->setUrls(urls);
|
if (!urls.isEmpty()) {
|
||||||
|
mimeData->setUrls(urls);
|
||||||
|
}
|
||||||
if (uponSelected && !_controller->adaptive().isOneColumn()) {
|
if (uponSelected && !_controller->adaptive().isOneColumn()) {
|
||||||
auto selectedState = getSelectionState();
|
auto selectedState = getSelectionState();
|
||||||
if (selectedState.count > 0 && selectedState.count == selectedState.canForwardCount) {
|
if (selectedState.count > 0 && selectedState.count == selectedState.canForwardCount) {
|
||||||
|
@ -1752,21 +1754,21 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
== forwardSelectionState.canForwardCount)) {
|
== forwardSelectionState.canForwardCount)) {
|
||||||
forwardIds = getSelectedItems();
|
forwardIds = getSelectedItems();
|
||||||
} else if (_mouseCursorState == CursorState::Date) {
|
} else if (_mouseCursorState == CursorState::Date) {
|
||||||
forwardIds = session().data().itemOrItsGroup(_mouseActionItem);
|
const auto item = _mouseActionItem;
|
||||||
|
if (item && item->allowsForward()) {
|
||||||
|
forwardIds = session().data().itemOrItsGroup(item);
|
||||||
|
}
|
||||||
} else if ((pressedView->isHiddenByGroup() && pressedHandler)
|
} else if ((pressedView->isHiddenByGroup() && pressedHandler)
|
||||||
|| (pressedView->media()
|
|| (pressedView->media()
|
||||||
&& pressedView->media()->dragItemByHandler(pressedHandler))) {
|
&& pressedView->media()->dragItemByHandler(pressedHandler))) {
|
||||||
const auto item = _dragStateItem
|
const auto item = _dragStateItem
|
||||||
? _dragStateItem
|
? _dragStateItem
|
||||||
: _mouseActionItem;
|
: _mouseActionItem;
|
||||||
forwardIds = MessageIdsList(1, item->fullId());
|
if (item && item->allowsForward()) {
|
||||||
|
forwardIds = MessageIdsList(1, item->fullId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (forwardIds.empty()) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
session().data().setMimeForwardIds(std::move(forwardIds));
|
|
||||||
auto result = std::make_unique<QMimeData>();
|
|
||||||
result->setData(u"application/x-td-forward"_q, "1");
|
|
||||||
if (pressedHandler) {
|
if (pressedHandler) {
|
||||||
const auto lnkDocument = reinterpret_cast<DocumentData*>(
|
const auto lnkDocument = reinterpret_cast<DocumentData*>(
|
||||||
pressedHandler->property(
|
pressedHandler->property(
|
||||||
|
@ -1774,12 +1776,23 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
if (lnkDocument) {
|
if (lnkDocument) {
|
||||||
const auto filepath = lnkDocument->filepath(true);
|
const auto filepath = lnkDocument->filepath(true);
|
||||||
if (!filepath.isEmpty()) {
|
if (!filepath.isEmpty()) {
|
||||||
QList<QUrl> urls;
|
|
||||||
urls.push_back(QUrl::fromLocalFile(filepath));
|
urls.push_back(QUrl::fromLocalFile(filepath));
|
||||||
result->setUrls(urls);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forwardIds.empty() && urls.isEmpty()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = std::make_unique<QMimeData>();
|
||||||
|
if (!forwardIds.empty()) {
|
||||||
|
session().data().setMimeForwardIds(std::move(forwardIds));
|
||||||
|
result->setData(u"application/x-td-forward"_q, "1");
|
||||||
|
}
|
||||||
|
if (!urls.isEmpty()) {
|
||||||
|
result->setUrls(urls);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -3778,12 +3778,7 @@ std::unique_ptr<QMimeData> ListWidget::prepareDrag() {
|
||||||
forwardIds = MessageIdsList(1, exactItem->fullId());
|
forwardIds = MessageIdsList(1, exactItem->fullId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (forwardIds.empty()) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
session().data().setMimeForwardIds(std::move(forwardIds));
|
|
||||||
auto result = std::make_unique<QMimeData>();
|
|
||||||
result->setData(u"application/x-td-forward"_q, "1");
|
|
||||||
if (pressedHandler) {
|
if (pressedHandler) {
|
||||||
const auto lnkDocument = reinterpret_cast<DocumentData*>(
|
const auto lnkDocument = reinterpret_cast<DocumentData*>(
|
||||||
pressedHandler->property(
|
pressedHandler->property(
|
||||||
|
@ -3791,12 +3786,23 @@ std::unique_ptr<QMimeData> ListWidget::prepareDrag() {
|
||||||
if (lnkDocument) {
|
if (lnkDocument) {
|
||||||
const auto filepath = lnkDocument->filepath(true);
|
const auto filepath = lnkDocument->filepath(true);
|
||||||
if (!filepath.isEmpty()) {
|
if (!filepath.isEmpty()) {
|
||||||
QList<QUrl> urls;
|
|
||||||
urls.push_back(QUrl::fromLocalFile(filepath));
|
urls.push_back(QUrl::fromLocalFile(filepath));
|
||||||
result->setUrls(urls);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forwardIds.empty() && urls.isEmpty()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = std::make_unique<QMimeData>();
|
||||||
|
if (!forwardIds.empty()) {
|
||||||
|
session().data().setMimeForwardIds(std::move(forwardIds));
|
||||||
|
result->setData(u"application/x-td-forward"_q, "1");
|
||||||
|
}
|
||||||
|
if (!urls.isEmpty()) {
|
||||||
|
result->setUrls(urls);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Add table
Reference in a new issue