Fix tooltip hiding when window is hidden by Cmd+H.

For some reason deleteLater() called for the tooltip from the main
window deactivation signal is really handled only on app quit :/
So now we use InvokeQueued(p, [p] { delete p; }); there instead.

Fixes #3461
This commit is contained in:
John Preston 2017-06-28 19:02:42 +03:00
parent 843d63c221
commit 58b4798b79
1 changed files with 4 additions and 3 deletions

View File

@ -69,7 +69,7 @@ void Tooltip::performShow() {
void Tooltip::onWndActiveChanged() {
if (!App::wnd() || !App::wnd()->windowHandle() || !App::wnd()->windowHandle()->isActive()) {
Tooltip::Hide();
Hide();
}
}
@ -88,12 +88,13 @@ bool Tooltip::eventFilter(QObject *o, QEvent *e) {
Tooltip::~Tooltip() {
if (TooltipInstance == this) {
TooltipInstance = 0;
TooltipInstance = nullptr;
}
}
void Tooltip::popup(const QPoint &m, const QString &text, const style::Tooltip *st) {
if (!_isEventFilter) {
_isEventFilter = true;
QCoreApplication::instance()->installEventFilter(this);
}
@ -196,7 +197,7 @@ void Tooltip::Hide() {
instance->_showTimer.cancel();
instance->_hideByLeaveTimer.cancel();
instance->hide();
instance->deleteLater();
InvokeQueued(instance, [instance] { instance->deleteLater(); });
}
}