mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-10-30 09:30:47 +03:00
parent
3fb57ac049
commit
43a4676282
3 changed files with 22 additions and 9 deletions
|
@ -501,6 +501,7 @@ TextInputWidget::TextInputWidget(QWidget *parent)
|
|||
sendMessageBtn_->setIconSize(QSize(ButtonHeight, ButtonHeight));
|
||||
|
||||
emojiBtn_ = new emoji::PickButton(this);
|
||||
emojiBtn_->setToolTip(tr("Emoji"));
|
||||
|
||||
QIcon emoji_icon;
|
||||
emoji_icon.addFile(":/icons/icons/ui/smile.png");
|
||||
|
|
|
@ -24,25 +24,35 @@ using namespace emoji;
|
|||
|
||||
// Number of milliseconds after which the panel will be hidden
|
||||
// if the mouse cursor is not on top of the widget.
|
||||
constexpr int TimeoutDuration = 300;
|
||||
constexpr int HIDE_TIMEOUT = 300;
|
||||
|
||||
PickButton::PickButton(QWidget *parent)
|
||||
: FlatButton(parent)
|
||||
, panel_{nullptr}
|
||||
{
|
||||
connect(&hideTimer_, &QTimer::timeout, this, [this]() {
|
||||
if (panel_ && !panel_->underMouse()) {
|
||||
hideTimer_.stop();
|
||||
panel_->hide();
|
||||
connect(&hideTimer_, &QTimer::timeout, this, &PickButton::hidePanel);
|
||||
connect(this, &QPushButton::clicked, this, [this]() {
|
||||
if (panel_ && panel_->isVisible()) {
|
||||
hidePanel();
|
||||
return;
|
||||
}
|
||||
|
||||
showPanel();
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
PickButton::enterEvent(QEvent *e)
|
||||
PickButton::hidePanel()
|
||||
{
|
||||
Q_UNUSED(e);
|
||||
if (panel_ && !panel_->underMouse()) {
|
||||
hideTimer_.stop();
|
||||
panel_->hide();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PickButton::showPanel()
|
||||
{
|
||||
if (panel_.isNull()) {
|
||||
panel_ = QSharedPointer<Panel>(new Panel(this));
|
||||
connect(panel_.data(), &Panel::emojiSelected, this, &PickButton::emojiSelected);
|
||||
|
@ -67,6 +77,6 @@ PickButton::enterEvent(QEvent *e)
|
|||
void
|
||||
PickButton::leaveEvent(QEvent *e)
|
||||
{
|
||||
hideTimer_.start(TimeoutDuration);
|
||||
hideTimer_.start(HIDE_TIMEOUT);
|
||||
FlatButton::leaveEvent(e);
|
||||
}
|
||||
|
|
|
@ -37,10 +37,12 @@ signals:
|
|||
void emojiSelected(const QString &emoji);
|
||||
|
||||
protected:
|
||||
void enterEvent(QEvent *e) override;
|
||||
void leaveEvent(QEvent *e) override;
|
||||
|
||||
private:
|
||||
void showPanel();
|
||||
void hidePanel();
|
||||
|
||||
// Vertical distance from panel's bottom.
|
||||
int vertical_distance_ = 10;
|
||||
|
||||
|
|
Loading…
Reference in a new issue