Fix drag starting item.

This commit is contained in:
John Preston 2023-09-25 21:37:00 +04:00
parent 013c8ebeb4
commit 26e84dbab2
1 changed files with 12 additions and 16 deletions

View File

@ -1733,16 +1733,16 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
return nullptr;
}
const auto mouseActionView = viewByItem(_mouseActionItem);
const auto pressedView = viewByItem(_mouseActionItem);
bool uponSelected = false;
if (mouseActionView) {
if (pressedView) {
if (!_selected.empty() && _selected.cbegin()->second == FullSelection) {
uponSelected = _dragStateItem
&& (_selected.find(_dragStateItem) != _selected.cend());
uponSelected = _mouseActionItem
&& (_selected.find(_mouseActionItem) != _selected.cend());
} else {
StateRequest request;
request.flags |= Ui::Text::StateRequest::Flag::LookupSymbol;
auto dragState = mouseActionView->textState(_dragStartPosition, request);
auto dragState = pressedView->textState(_dragStartPosition, request);
uponSelected = (dragState.cursor == CursorState::Text);
if (uponSelected) {
if (_selected.empty()
@ -1783,19 +1783,15 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
}
}
return mimeData;
} else if (_dragStateItem) {
const auto view = viewByItem(_dragStateItem);
if (!view) {
return nullptr;
}
} else if (pressedView) {
auto forwardIds = MessageIdsList();
if (_mouseCursorState == CursorState::Date) {
forwardIds = session().data().itemOrItsGroup(_dragStateItem);
} else if (view->isHiddenByGroup() && pressedHandler) {
forwardIds = MessageIdsList(1, _dragStateItem->fullId());
} else if (const auto media = view->media()) {
forwardIds = session().data().itemOrItsGroup(_mouseActionItem);
} else if (pressedView->isHiddenByGroup() && pressedHandler) {
forwardIds = MessageIdsList(1, _mouseActionItem->fullId());
} else if (const auto media = pressedView->media()) {
if (media->dragItemByHandler(pressedHandler)) {
forwardIds = MessageIdsList(1, _dragStateItem->fullId());
forwardIds = MessageIdsList(1, _mouseActionItem->fullId());
}
}
if (forwardIds.empty()) {
@ -1804,7 +1800,7 @@ std::unique_ptr<QMimeData> HistoryInner::prepareDrag() {
session().data().setMimeForwardIds(std::move(forwardIds));
auto result = std::make_unique<QMimeData>();
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()) {
const auto filepath = document->filepath(true);
if (!filepath.isEmpty()) {