Fix "Copy Selected Text" appearing outside of selection.

This commit is contained in:
John Preston 2021-10-15 16:42:09 +04:00
parent 3d8899b9dc
commit 1f95e00793

View file

@ -1568,19 +1568,19 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
} else { } else {
isUponSelected = -2; isUponSelected = -2;
} }
} else { } else if (App::mousedItem()
&& App::mousedItem() == App::hoveredItem()
&& _selected.cbegin()->first == App::mousedItem()->data()) {
uint16 selFrom = _selected.cbegin()->second.from, selTo = _selected.cbegin()->second.to; uint16 selFrom = _selected.cbegin()->second.from, selTo = _selected.cbegin()->second.to;
hasSelected = (selTo > selFrom) ? 1 : 0; hasSelected = (selTo > selFrom) ? 1 : 0;
if (App::mousedItem() && App::mousedItem() == App::hoveredItem()) { auto mousePos = mapPointToItem(mapFromGlobal(_mousePosition), App::mousedItem());
auto mousePos = mapPointToItem(mapFromGlobal(_mousePosition), App::mousedItem()); StateRequest request;
StateRequest request; request.flags |= Ui::Text::StateRequest::Flag::LookupSymbol;
request.flags |= Ui::Text::StateRequest::Flag::LookupSymbol; auto dragState = App::mousedItem()->textState(mousePos, request);
auto dragState = App::mousedItem()->textState(mousePos, request); if (dragState.cursor == CursorState::Text
if (dragState.cursor == CursorState::Text && dragState.symbol >= selFrom
&& dragState.symbol >= selFrom && dragState.symbol < selTo) {
&& dragState.symbol < selTo) { isUponSelected = 1;
isUponSelected = 1;
}
} }
} }
} }