From 66d10d5c5aa7e1bb06964d6d7c30a2d50a880aaa Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Mon, 10 Feb 2014 13:27:14 +0100 Subject: [PATCH] Add a property to tooltip to enable/disable tooltips This is useful to be able to disable tooltips when a dialog exists. We don't use the QQuickItem::enabled property as this propagates onto children and has side effects. REVIEW: 115623 --- src/declarativeimports/core/tooltip.cpp | 20 +++++++++++++++++++- src/declarativeimports/core/tooltip.h | 6 ++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/declarativeimports/core/tooltip.cpp b/src/declarativeimports/core/tooltip.cpp index 25b2f6dbe..9de9c0c32 100644 --- a/src/declarativeimports/core/tooltip.cpp +++ b/src/declarativeimports/core/tooltip.cpp @@ -32,7 +32,8 @@ ToolTip::ToolTip(QQuickItem *parent) : QQuickItem(parent), m_containsMouse(false), - m_location(Plasma::Types::Floating) + m_location(Plasma::Types::Floating), + m_active(true) { m_showTimer = new QTimer(this); m_showTimer->setSingleShot(true); @@ -64,6 +65,10 @@ void ToolTip::setMainItem(QQuickItem *mainItem) void ToolTip::showToolTip() { + if (!m_active) { + return; + } + ToolTipDialog *dlg = ToolTipDialog::instance(); if (!mainItem()) { @@ -166,6 +171,19 @@ void ToolTip::setLocation(Plasma::Types::Location location) emit locationChanged(); } +void ToolTip::setActive(bool active) +{ + if (m_active == active) { + return; + } + + m_active = active; + if (!active) { + ToolTipDialog::instance()->dismiss(); + } + emit activeChanged(); +} + QVariant ToolTip::icon() const { if (m_icon.isValid()) { diff --git a/src/declarativeimports/core/tooltip.h b/src/declarativeimports/core/tooltip.h index a51c287db..3f126eb90 100644 --- a/src/declarativeimports/core/tooltip.h +++ b/src/declarativeimports/core/tooltip.h @@ -101,6 +101,8 @@ class ToolTip : public QQuickItem */ Q_PROPERTY(QVariant image READ image WRITE setImage NOTIFY imageChanged) + Q_PROPERTY(bool active MEMBER m_active WRITE setActive NOTIFY activeChanged) + public: ToolTip(QQuickItem *parent = 0); ~ToolTip(); @@ -128,6 +130,8 @@ public: bool containsMouse() const; void setContainsMouse(bool contains); + void setActive(bool active); + protected: bool childMouseEventFilter(QQuickItem *item, QEvent *event); void hoverEnterEvent(QHoverEvent *event); @@ -142,6 +146,7 @@ Q_SIGNALS: void imageChanged(); void containsMouseChanged(); void locationChanged(); + void activeChanged(); private: bool m_containsMouse; @@ -152,6 +157,7 @@ private: QString m_subText; QVariant m_image; QVariant m_icon; + bool m_active; }; #endif