Skip to content

Commit 53919be

Browse files
23rdjohn-preston
authored andcommitted
Slightly improved mouse processing for gift buttons.
1 parent 8dd7d04 commit 53919be

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.cpp

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -538,36 +538,45 @@ void GiftButton::contextMenuEvent(QContextMenuEvent *e) {
538538
}
539539

540540
void GiftButton::mousePressEvent(QMouseEvent *e) {
541-
if (e->button() != Qt::LeftButton) {
542-
return;
543-
}
544-
_mouseEvents.fire_copy(e);
545-
if (e->isAccepted()) {
546-
return;
541+
if (_mouseEventsAreListening) {
542+
if (e->button() != Qt::LeftButton) {
543+
return;
544+
}
545+
_mouseEvents.fire_copy(e);
546+
} else {
547+
AbstractButton::mousePressEvent(e);
547548
}
548-
AbstractButton::mousePressEvent(e);
549549
}
550550

551551
void GiftButton::mouseMoveEvent(QMouseEvent *e) {
552-
if (e->button() != Qt::LeftButton) {
553-
return;
554-
}
555-
_mouseEvents.fire_copy(e);
556-
if (e->isAccepted()) {
557-
return;
552+
if (_mouseEventsAreListening) {
553+
if (e->button() != Qt::LeftButton) {
554+
return;
555+
}
556+
_mouseEvents.fire_copy(e);
557+
} else {
558+
AbstractButton::mouseMoveEvent(e);
558559
}
559-
AbstractButton::mouseMoveEvent(e);
560560
}
561561

562562
void GiftButton::mouseReleaseEvent(QMouseEvent *e) {
563-
if (e->button() != Qt::LeftButton) {
564-
return;
565-
}
566-
_mouseEvents.fire_copy(e);
567-
if (e->isAccepted()) {
568-
return;
563+
if (_mouseEventsAreListening) {
564+
if (e->button() != Qt::LeftButton) {
565+
return;
566+
}
567+
_mouseEvents.fire_copy(e);
568+
} else {
569+
AbstractButton::mouseReleaseEvent(e);
569570
}
570-
AbstractButton::mouseReleaseEvent(e);
571+
}
572+
573+
rpl::producer<QPoint> GiftButton::contextMenuRequests() const {
574+
return _contextMenuRequests.events();
575+
}
576+
577+
rpl::producer<QMouseEvent*> GiftButton::mouseEvents() {
578+
_mouseEventsAreListening = true;
579+
return _mouseEvents.events();
571580
}
572581

573582
void GiftButton::cacheUniqueBackground(

Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,8 @@ class GiftButton final : public Ui::AbstractButton {
174174
GiftSelectionMode selectionMode = GiftSelectionMode::Border,
175175
anim::type animated = anim::type::normal);
176176

177-
[[nodiscard]] rpl::producer<QPoint> contextMenuRequests() const {
178-
return _contextMenuRequests.events();
179-
}
180-
181-
[[nodiscard]] rpl::producer<QMouseEvent*> mouseEvents() const {
182-
return _mouseEvents.events();
183-
}
177+
[[nodiscard]] rpl::producer<QPoint> contextMenuRequests() const;
178+
[[nodiscard]] rpl::producer<QMouseEvent*> mouseEvents();
184179

185180
private:
186181
void paintEvent(QPaintEvent *e) override;
@@ -228,6 +223,8 @@ class GiftButton final : public Ui::AbstractButton {
228223
bool _selected : 1 = false;
229224
bool _locked : 1 = false;
230225

226+
bool _mouseEventsAreListening = false;
227+
231228
base::Timer _lockedTimer;
232229
TimeId _lockedUntilDate = 0;
233230

Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_widget.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -747,21 +747,12 @@ std::unique_ptr<GiftButton> InnerWidget::createGiftButton() {
747747
case QEvent::MouseButtonPress:
748748
raw->raise();
749749
mousePressEvent(e);
750-
if (e->isAccepted()) {
751-
return;
752-
}
753750
break;
754751
case QEvent::MouseMove:
755752
mouseMoveEvent(e);
756-
if (e->isAccepted()) {
757-
return;
758-
}
759753
break;
760754
case QEvent::MouseButtonRelease:
761755
mouseReleaseEvent(e);
762-
if (e->isAccepted()) {
763-
return;
764-
}
765756
break;
766757
default:
767758
break;

0 commit comments

Comments
 (0)