Removed selection marks from unselectable messages.

This commit is contained in:
23rd 2024-11-09 15:18:29 +03:00
parent 059a4cf0d8
commit ccb41f778e
9 changed files with 24 additions and 12 deletions

View file

@ -666,7 +666,8 @@ bool InnerWidget::elementUnderCursor(
return (Element::Hovered() == view);
}
HistoryView::SelectionModeResult InnerWidget::elementInSelectionMode() {
HistoryView::SelectionModeResult InnerWidget::elementInSelectionMode(
const HistoryView::Element *) {
return {};
}

View file

@ -94,7 +94,8 @@ public:
HistoryView::Context elementContext() override;
bool elementUnderCursor(
not_null<const HistoryView::Element*> view) override;
HistoryView::SelectionModeResult elementInSelectionMode() override;
HistoryView::SelectionModeResult elementInSelectionMode(
const HistoryView::Element *view) override;
bool elementIntersectsRange(
not_null<const HistoryView::Element*> view,
int from,

View file

@ -155,7 +155,11 @@ public:
not_null<const Element*> view) override {
return (Element::Moused() == view);
}
HistoryView::SelectionModeResult elementInSelectionMode() override {
HistoryView::SelectionModeResult elementInSelectionMode(
const Element *view) override {
if (view && view->data()->isSponsored()) {
return HistoryView::SelectionModeResult();
}
return _widget
? _widget->inSelectionMode()
: HistoryView::SelectionModeResult();

View file

@ -111,7 +111,8 @@ bool DefaultElementDelegate::elementUnderCursor(
return false;
}
SelectionModeResult DefaultElementDelegate::elementInSelectionMode() {
SelectionModeResult DefaultElementDelegate::elementInSelectionMode(
const Element *view) {
return {};
}

View file

@ -80,7 +80,8 @@ class ElementDelegate {
public:
virtual Context elementContext() = 0;
virtual bool elementUnderCursor(not_null<const Element*> view) = 0;
virtual SelectionModeResult elementInSelectionMode() = 0;
virtual SelectionModeResult elementInSelectionMode(
const Element *view) = 0;
virtual bool elementIntersectsRange(
not_null<const Element*> view,
int from,
@ -136,7 +137,7 @@ public:
class DefaultElementDelegate : public ElementDelegate {
public:
bool elementUnderCursor(not_null<const Element*> view) override;
SelectionModeResult elementInSelectionMode() override;
SelectionModeResult elementInSelectionMode(const Element *view) override;
bool elementIntersectsRange(
not_null<const Element*> view,
int from,

View file

@ -1782,7 +1782,11 @@ bool ListWidget::elementUnderCursor(
return (_overElement == view);
}
SelectionModeResult ListWidget::elementInSelectionMode() {
SelectionModeResult ListWidget::elementInSelectionMode(
const HistoryView::Element *view) {
if (view && !_delegate->listIsItemGoodForSelection(view->data())) {
return {};
}
return inSelectionMode();
}

View file

@ -391,7 +391,7 @@ public:
// ElementDelegate interface.
Context elementContext() override;
bool elementUnderCursor(not_null<const Element*> view) override;
SelectionModeResult elementInSelectionMode() override;
SelectionModeResult elementInSelectionMode(const Element *view) override;
bool elementIntersectsRange(
not_null<const Element*> view,
int from,

View file

@ -1100,7 +1100,7 @@ void Message::draw(Painter &p, const PaintContext &context) const {
if (hasGesture) {
p.translate(context.gestureHorizontal.translation, 0);
}
const auto selectionModeResult = delegate()->elementInSelectionMode();
const auto selectionModeResult = delegate()->elementInSelectionMode(this);
const auto selectionTranslation = (selectionModeResult.progress > 0)
? (selectionModeResult.progress
* AdditionalSpaceForSelectionCheckbox(this, g))
@ -3868,7 +3868,7 @@ bool Message::displayFastReply() const {
return hasFastReply()
&& data()->isRegular()
&& canSendAnything()
&& !delegate()->elementInSelectionMode().inSelectionMode;
&& !delegate()->elementInSelectionMode(this).inSelectionMode;
}
bool Message::displayRightActionComments() const {
@ -4032,7 +4032,7 @@ void Message::drawRightAction(
ClickHandlerPtr Message::rightActionLink(
std::optional<QPoint> pressPoint) const {
if (delegate()->elementInSelectionMode().progress > 0) {
if (delegate()->elementInSelectionMode(this).progress > 0) {
return nullptr;
}
ensureRightAction();

View file

@ -898,7 +898,7 @@ void RepliesWidget::setupSwipeReply() {
}
}, [=, show = controller()->uiShow()](int cursorTop) {
auto result = HistoryView::SwipeHandlerFinishData();
if (_inner->elementInSelectionMode().inSelectionMode) {
if (_inner->elementInSelectionMode(nullptr).inSelectionMode) {
return result;
}
const auto view = _inner->lookupItemByY(cursorTop);