Added context menu process to chats filters tabs slider.

This commit is contained in:
23rd 2024-11-02 20:03:54 +03:00
parent 6f09e1699f
commit 607c7e7777
2 changed files with 35 additions and 0 deletions

View file

@ -185,4 +185,33 @@ void ChatsFiltersTabs::paintEvent(QPaintEvent *e) {
}
}
void ChatsFiltersTabs::mousePressEvent(QMouseEvent *e) {
const auto mouseButton = e->button();
if (mouseButton == Qt::MouseButton::LeftButton) {
Ui::SettingsSlider::mousePressEvent(e);
} else {
Ui::RpWidget::mousePressEvent(e);
}
}
void ChatsFiltersTabs::contextMenuEvent(QContextMenuEvent *e) {
const auto pos = e->pos();
auto left = 0;
auto index = 0;
enumerateSections([&](const Section &section) {
const auto currentRight = section.left + section.width;
if (pos.x() > left && pos.x() < currentRight) {
return false;
}
left = currentRight;
index++;
return true;
});
_contextMenuRequested.fire_copy(index);
}
rpl::producer<int> ChatsFiltersTabs::contextMenuRequested() const {
return _contextMenuRequested.events();
}
} // namespace Ui

View file

@ -29,8 +29,12 @@ public:
void fitWidthToSections();
void setUnreadCount(int index, int unreadCount);
[[nodiscard]] rpl::producer<int> contextMenuRequested() const;
protected:
void paintEvent(QPaintEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
void contextMenuEvent(QContextMenuEvent *e) override;
private:
[[nodiscard]] QImage cacheUnreadCount(int count) const;
@ -50,6 +54,8 @@ private:
std::optional<Ui::RoundRect> _bar;
std::optional<Ui::RoundRect> _barActive;
rpl::event_stream<int> _contextMenuRequested;
};
} // namespace Ui