mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-23 03:18:49 +03:00
Fix scrolling the room list using touch
This commit is contained in:
parent
97688763f6
commit
b8ce9d543d
2 changed files with 32 additions and 30 deletions
|
@ -484,37 +484,37 @@ RoomInfoListItem::mousePressEvent(QMouseEvent *event)
|
||||||
if (event->buttons() == Qt::RightButton) {
|
if (event->buttons() == Qt::RightButton) {
|
||||||
QWidget::mousePressEvent(event);
|
QWidget::mousePressEvent(event);
|
||||||
return;
|
return;
|
||||||
|
} else if (event->buttons() == Qt::LeftButton) {
|
||||||
|
if (roomType_ == RoomType::Invited) {
|
||||||
|
const auto point = event->pos();
|
||||||
|
|
||||||
|
if (acceptBtnRegion_.contains(point))
|
||||||
|
emit acceptInvite(roomId_);
|
||||||
|
|
||||||
|
if (declineBtnRegion_.contains(point))
|
||||||
|
emit declineInvite(roomId_);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit clicked(roomId_);
|
||||||
|
|
||||||
|
setPressedState(true);
|
||||||
|
|
||||||
|
// Ripple on mouse position by default.
|
||||||
|
QPoint pos = event->pos();
|
||||||
|
qreal radiusEndValue = static_cast<qreal>(width()) / 3;
|
||||||
|
|
||||||
|
Ripple *ripple = new Ripple(pos);
|
||||||
|
|
||||||
|
ripple->setRadiusEndValue(radiusEndValue);
|
||||||
|
ripple->setOpacityStartValue(0.15);
|
||||||
|
ripple->setColor(QColor("white"));
|
||||||
|
ripple->radiusAnimation()->setDuration(200);
|
||||||
|
ripple->opacityAnimation()->setDuration(400);
|
||||||
|
|
||||||
|
ripple_overlay_->addRipple(ripple);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roomType_ == RoomType::Invited) {
|
|
||||||
const auto point = event->pos();
|
|
||||||
|
|
||||||
if (acceptBtnRegion_.contains(point))
|
|
||||||
emit acceptInvite(roomId_);
|
|
||||||
|
|
||||||
if (declineBtnRegion_.contains(point))
|
|
||||||
emit declineInvite(roomId_);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit clicked(roomId_);
|
|
||||||
|
|
||||||
setPressedState(true);
|
|
||||||
|
|
||||||
// Ripple on mouse position by default.
|
|
||||||
QPoint pos = event->pos();
|
|
||||||
qreal radiusEndValue = static_cast<qreal>(width()) / 3;
|
|
||||||
|
|
||||||
Ripple *ripple = new Ripple(pos);
|
|
||||||
|
|
||||||
ripple->setRadiusEndValue(radiusEndValue);
|
|
||||||
ripple->setOpacityStartValue(0.15);
|
|
||||||
ripple->setColor(QColor("white"));
|
|
||||||
ripple->radiusAnimation()->setDuration(200);
|
|
||||||
ripple->opacityAnimation()->setDuration(400);
|
|
||||||
|
|
||||||
ripple_overlay_->addRipple(ripple);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -45,8 +45,10 @@ RoomList::RoomList(QSharedPointer<UserSettings> userSettings, QWidget *parent)
|
||||||
scrollArea_->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
|
scrollArea_->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
|
||||||
scrollArea_->setWidgetResizable(true);
|
scrollArea_->setWidgetResizable(true);
|
||||||
scrollArea_->setAlignment(Qt::AlignLeading | Qt::AlignTop | Qt::AlignVCenter);
|
scrollArea_->setAlignment(Qt::AlignLeading | Qt::AlignTop | Qt::AlignVCenter);
|
||||||
|
scrollArea_->setAttribute(Qt::WA_AcceptTouchEvents);
|
||||||
|
|
||||||
QScroller::grabGesture(scrollArea_, QScroller::TouchGesture);
|
QScroller::grabGesture(scrollArea_, QScroller::TouchGesture);
|
||||||
|
QScroller::grabGesture(scrollArea_, QScroller::LeftMouseButtonGesture);
|
||||||
|
|
||||||
// The scrollbar on macOS will hide itself when not active so it won't interfere
|
// The scrollbar on macOS will hide itself when not active so it won't interfere
|
||||||
// with the content.
|
// with the content.
|
||||||
|
|
Loading…
Reference in a new issue