Fix hiding emoji panel with hover disabled

This commit is contained in:
Eric Kotato 2021-08-04 02:18:22 +03:00
parent 8031b6915a
commit 10d0710637
4 changed files with 11 additions and 7 deletions

View file

@ -409,7 +409,7 @@ void TabbedPanel::showStarted() {
} }
bool TabbedPanel::eventFilter(QObject *obj, QEvent *e) { bool TabbedPanel::eventFilter(QObject *obj, QEvent *e) {
if (e->type() == QEvent::Enter) { if (e->type() == QEvent::Enter && !_preventHover) {
otherEnter(); otherEnter();
} else if (e->type() == QEvent::Leave) { } else if (e->type() == QEvent::Leave) {
otherLeave(); otherLeave();

View file

@ -55,6 +55,10 @@ public:
void hideAnimated(); void hideAnimated();
void toggleAnimated(); void toggleAnimated();
void setPreventHover(bool value) {
_preventHover = value;
}
~TabbedPanel(); ~TabbedPanel();
protected: protected:
@ -118,6 +122,8 @@ private:
Ui::Animations::Simple _a_opacity; Ui::Animations::Simple _a_opacity;
base::Timer _hideTimer; base::Timer _hideTimer;
bool _preventHover = false;
}; };
} // namespace ChatHelpers } // namespace ChatHelpers

View file

@ -4271,9 +4271,8 @@ void HistoryWidget::createTabbedPanel() {
void HistoryWidget::setTabbedPanel(std::unique_ptr<TabbedPanel> panel) { void HistoryWidget::setTabbedPanel(std::unique_ptr<TabbedPanel> panel) {
_tabbedPanel = std::move(panel); _tabbedPanel = std::move(panel);
if (const auto raw = _tabbedPanel.get()) { if (const auto raw = _tabbedPanel.get()) {
if (HoverEmojiPanel()) { _tabbedPanel->setPreventHover(!HoverEmojiPanel());
_tabbedSelectorToggle->installEventFilter(raw); _tabbedSelectorToggle->installEventFilter(raw);
}
_tabbedSelectorToggle->setColorOverrides(nullptr, nullptr, nullptr); _tabbedSelectorToggle->setColorOverrides(nullptr, nullptr, nullptr);
} else { } else {
_tabbedSelectorToggle->setColorOverrides( _tabbedSelectorToggle->setColorOverrides(

View file

@ -1926,9 +1926,8 @@ void ComposeControls::setTabbedPanel(
std::unique_ptr<ChatHelpers::TabbedPanel> panel) { std::unique_ptr<ChatHelpers::TabbedPanel> panel) {
_tabbedPanel = std::move(panel); _tabbedPanel = std::move(panel);
if (const auto raw = _tabbedPanel.get()) { if (const auto raw = _tabbedPanel.get()) {
if (HoverEmojiPanel()) { _tabbedPanel->setPreventHover(!HoverEmojiPanel());
_tabbedSelectorToggle->installEventFilter(raw); _tabbedSelectorToggle->installEventFilter(raw);
}
_tabbedSelectorToggle->setColorOverrides(nullptr, nullptr, nullptr); _tabbedSelectorToggle->setColorOverrides(nullptr, nullptr, nullptr);
} else { } else {
_tabbedSelectorToggle->setColorOverrides( _tabbedSelectorToggle->setColorOverrides(