fix: hide tooltip on window leave event (#5309)

This commit is contained in:
nerix 2024-04-09 14:25:08 +02:00 committed by GitHub
parent 25a69fd10e
commit dd62707d53
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 18 additions and 0 deletions

View file

@ -2,6 +2,8 @@
## Unversioned
- Bugfix: Fixed split tooltip getting stuck in some cases. (#5309)
## 2.5.0-beta.1
- Major: Twitch follower emotes can now be correctly tabbed in other channels when you are subscribed to the channel the emote is from. (#4922)

View file

@ -527,6 +527,7 @@ void BaseWindow::changeEvent(QEvent *)
void BaseWindow::leaveEvent(QEvent *)
{
this->leaving.invoke();
}
void BaseWindow::moveTo(QPoint point, widgets::BoundsChecking mode)

View file

@ -85,6 +85,7 @@ public:
void setTopMost(bool topMost);
pajlada::Signals::NoArgSignal closing;
pajlada::Signals::NoArgSignal leaving;
static bool supportsCustomWindowFrame();

View file

@ -257,6 +257,20 @@ SplitHeader::SplitHeader(Split *split)
getSettings()->headerStreamTitle.connect(_, this->managedConnections_);
getSettings()->headerGame.connect(_, this->managedConnections_);
getSettings()->headerUptime.connect(_, this->managedConnections_);
auto *window = dynamic_cast<BaseWindow *>(this->window());
if (window)
{
// Hack: In some cases Qt doesn't send the leaveEvent the "actual" last mouse receiver.
// This can happen when quickly moving the mouse out of the window and right clicking.
// To prevent the tooltip from getting stuck, we use the window's leaveEvent.
this->managedConnections_.managedConnect(window->leaving, [this] {
if (this->tooltipWidget_->isVisible())
{
this->tooltipWidget_->hide();
}
});
}
}
void SplitHeader::initializeLayout()