diff --git a/tooltipmanager.cpp b/tooltipmanager.cpp index 3d8713b64..1a1da4a7e 100644 --- a/tooltipmanager.cpp +++ b/tooltipmanager.cpp @@ -140,21 +140,18 @@ void ToolTipManager::show(QGraphicsWidget *widget) return; } - qreal delay = 0.0; - ToolTipContent content = d->tooltips[widget]; + d->delayedHide = false; + d->hideTimer->stop(); + d->showTimer->stop(); + const int defaultDelay = Theme::defaultTheme()->toolTipDelay(); - if (!content.isInstantPopup()) { - KConfig config("plasmarc"); - KConfigGroup cg(&config, "PlasmaToolTips"); - delay = cg.readEntry("Delay", qreal(0.7)); - if (delay < 0) { - return; - } + if (defaultDelay < 0) { + return; } - d->hideTimer->stop(); - d->delayedHide = false; - d->showTimer->stop(); + ToolTipContent content = d->tooltips[widget]; + qreal delay = content.isInstantPopup() ? 0.0 : defaultDelay; + d->currentWidget = widget; if (d->isShown) { @@ -214,6 +211,13 @@ void ToolTipManager::unregisterWidget(QGraphicsWidget *widget) return; } + if (widget == d->currentWidget) { + d->currentWidget = 0; + d->showTimer->stop(); // stop the timer to show the tooltip + d->delayedHide = false; + d->hideTipWidget(); + } + widget->removeEventFilter(this); d->removeWidget(widget); } @@ -350,14 +354,13 @@ void ToolTipManagerPrivate::clearTips() void ToolTipManagerPrivate::resetShownState() { - if (currentWidget) { - if (!tipWidget || !tipWidget->isVisible() || delayedHide) { - //One might have moused out and back in again - delayedHide = false; - isShown = false; - currentWidget = 0; - hideTipWidget(); - } + if (!tipWidget || !tipWidget->isVisible() || delayedHide) { + //One might have moused out and back in again + showTimer->stop(); + delayedHide = false; + isShown = false; + currentWidget = 0; + hideTipWidget(); } }