Prevent stacked bar tooltips
This commit is contained in:
@@ -34,6 +34,10 @@ Item {
|
|||||||
root.pressed(button)
|
root.pressed(button)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hideOwnTooltip() {
|
||||||
|
if (root.bar) root.bar.hideTooltip(root)
|
||||||
|
}
|
||||||
|
|
||||||
function syncClickRegistration() {
|
function syncClickRegistration() {
|
||||||
if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(root)
|
if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(root)
|
||||||
registeredBar = root.bar
|
registeredBar = root.bar
|
||||||
@@ -41,6 +45,9 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onBarChanged: syncClickRegistration()
|
onBarChanged: syncClickRegistration()
|
||||||
|
onVisibleChanged: if (!visible) hideOwnTooltip()
|
||||||
|
onInteractiveChanged: if (!interactive) hideOwnTooltip()
|
||||||
|
onConcealedChanged: if (concealed) hideOwnTooltip()
|
||||||
Component.onCompleted: syncClickRegistration()
|
Component.onCompleted: syncClickRegistration()
|
||||||
Component.onDestruction: if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(root)
|
Component.onDestruction: if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(root)
|
||||||
|
|
||||||
|
|||||||
@@ -58,8 +58,11 @@ Item {
|
|||||||
property bool updateAvailable: false
|
property bool updateAvailable: false
|
||||||
property bool clockAlt: false
|
property bool clockAlt: false
|
||||||
property var tooltipTarget: null
|
property var tooltipTarget: null
|
||||||
|
property var pendingTooltipTarget: null
|
||||||
property string tooltipText: ""
|
property string tooltipText: ""
|
||||||
|
property string pendingTooltipText: ""
|
||||||
property bool tooltipShown: false
|
property bool tooltipShown: false
|
||||||
|
property int tooltipRequest: 0
|
||||||
property var activePopout: null
|
property var activePopout: null
|
||||||
property var clickTargets: []
|
property var clickTargets: []
|
||||||
property bool indicatorAreaHovered: false
|
property bool indicatorAreaHovered: false
|
||||||
@@ -385,18 +388,40 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function showTooltip(target, text) {
|
function showTooltip(target, text) {
|
||||||
if (!text) return
|
tooltipTimer.stop()
|
||||||
|
tooltipTarget = null
|
||||||
tooltipTarget = target
|
tooltipText = ""
|
||||||
tooltipText = text
|
|
||||||
tooltipShown = false
|
tooltipShown = false
|
||||||
tooltipTimer.restart()
|
|
||||||
|
if (!target || !text) {
|
||||||
|
pendingTooltipTarget = null
|
||||||
|
pendingTooltipText = ""
|
||||||
|
tooltipRequest += 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var request = tooltipRequest + 1
|
||||||
|
tooltipRequest = request
|
||||||
|
pendingTooltipTarget = target
|
||||||
|
pendingTooltipText = text
|
||||||
|
|
||||||
|
Qt.callLater(function() {
|
||||||
|
if (request !== tooltipRequest) return
|
||||||
|
tooltipTarget = pendingTooltipTarget
|
||||||
|
tooltipText = pendingTooltipText
|
||||||
|
pendingTooltipTarget = null
|
||||||
|
pendingTooltipText = ""
|
||||||
|
tooltipTimer.restart()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideTooltip(target) {
|
function hideTooltip(target) {
|
||||||
if (tooltipTarget !== target) return
|
if (tooltipTarget !== target && pendingTooltipTarget !== target) return
|
||||||
|
|
||||||
tooltipTimer.stop()
|
tooltipTimer.stop()
|
||||||
|
tooltipRequest += 1
|
||||||
|
pendingTooltipTarget = null
|
||||||
|
pendingTooltipText = ""
|
||||||
tooltipTarget = null
|
tooltipTarget = null
|
||||||
tooltipText = ""
|
tooltipText = ""
|
||||||
tooltipShown = false
|
tooltipShown = false
|
||||||
|
|||||||
Reference in New Issue
Block a user