mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix drag starting item.
This commit is contained in:
parent
013c8ebeb4
commit
26e84dbab2
1 changed files with 12 additions and 16 deletions
|
@ -1733,16 +1733,16 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto mouseActionView = viewByItem(_mouseActionItem);
|
const auto pressedView = viewByItem(_mouseActionItem);
|
||||||
bool uponSelected = false;
|
bool uponSelected = false;
|
||||||
if (mouseActionView) {
|
if (pressedView) {
|
||||||
if (!_selected.empty() && _selected.cbegin()->second == FullSelection) {
|
if (!_selected.empty() && _selected.cbegin()->second == FullSelection) {
|
||||||
uponSelected = _dragStateItem
|
uponSelected = _mouseActionItem
|
||||||
&& (_selected.find(_dragStateItem) != _selected.cend());
|
&& (_selected.find(_mouseActionItem) != _selected.cend());
|
||||||
} else {
|
} else {
|
||||||
StateRequest request;
|
StateRequest request;
|
||||||
request.flags |= Ui::Text::StateRequest::Flag::LookupSymbol;
|
request.flags |= Ui::Text::StateRequest::Flag::LookupSymbol;
|
||||||
auto dragState = mouseActionView->textState(_dragStartPosition, request);
|
auto dragState = pressedView->textState(_dragStartPosition, request);
|
||||||
uponSelected = (dragState.cursor == CursorState::Text);
|
uponSelected = (dragState.cursor == CursorState::Text);
|
||||||
if (uponSelected) {
|
if (uponSelected) {
|
||||||
if (_selected.empty()
|
if (_selected.empty()
|
||||||
|
@ -1783,19 +1783,15 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return mimeData;
|
return mimeData;
|
||||||
} else if (_dragStateItem) {
|
} else if (pressedView) {
|
||||||
const auto view = viewByItem(_dragStateItem);
|
|
||||||
if (!view) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
auto forwardIds = MessageIdsList();
|
auto forwardIds = MessageIdsList();
|
||||||
if (_mouseCursorState == CursorState::Date) {
|
if (_mouseCursorState == CursorState::Date) {
|
||||||
forwardIds = session().data().itemOrItsGroup(_dragStateItem);
|
forwardIds = session().data().itemOrItsGroup(_mouseActionItem);
|
||||||
} else if (view->isHiddenByGroup() && pressedHandler) {
|
} else if (pressedView->isHiddenByGroup() && pressedHandler) {
|
||||||
forwardIds = MessageIdsList(1, _dragStateItem->fullId());
|
forwardIds = MessageIdsList(1, _mouseActionItem->fullId());
|
||||||
} else if (const auto media = view->media()) {
|
} else if (const auto media = pressedView->media()) {
|
||||||
if (media->dragItemByHandler(pressedHandler)) {
|
if (media->dragItemByHandler(pressedHandler)) {
|
||||||
forwardIds = MessageIdsList(1, _dragStateItem->fullId());
|
forwardIds = MessageIdsList(1, _mouseActionItem->fullId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (forwardIds.empty()) {
|
if (forwardIds.empty()) {
|
||||||
|
@ -1804,7 +1800,7 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
|
||||||
session().data().setMimeForwardIds(std::move(forwardIds));
|
session().data().setMimeForwardIds(std::move(forwardIds));
|
||||||
auto result = std::make_unique<QMimeData>();
|
auto result = std::make_unique<QMimeData>();
|
||||||
result->setData(u"application/x-td-forward"_q, "1");
|
result->setData(u"application/x-td-forward"_q, "1");
|
||||||
if (const auto media = view->media()) {
|
if (const auto media = pressedView->media()) {
|
||||||
if (const auto document = media->getDocument()) {
|
if (const auto document = media->getDocument()) {
|
||||||
const auto filepath = document->filepath(true);
|
const auto filepath = document->filepath(true);
|
||||||
if (!filepath.isEmpty()) {
|
if (!filepath.isEmpty()) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue