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); return (Element::Hovered() == view);
} }
HistoryView::SelectionModeResult InnerWidget::elementInSelectionMode() { HistoryView::SelectionModeResult InnerWidget::elementInSelectionMode(
const HistoryView::Element *) {
return {}; return {};
} }

View file

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

View file

@ -155,7 +155,11 @@ public:
not_null<const Element*> view) override { not_null<const Element*> view) override {
return (Element::Moused() == view); 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 return _widget
? _widget->inSelectionMode() ? _widget->inSelectionMode()
: HistoryView::SelectionModeResult(); : HistoryView::SelectionModeResult();

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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