tooltip: delay_show: stop timer, handle (non-)stopped timers
This splits the logic for `delay_show` out of `show`/`hide`, and handles an already stopped timer. The timer gets also stopped after the tooltip has been displayed. Ref: https://github.com/awesomeWM/awesome/issues/371.
This commit is contained in:
parent
9bcd87c727
commit
6880835c26
|
@ -202,21 +202,34 @@ tooltip.new = function(args)
|
||||||
}
|
}
|
||||||
|
|
||||||
-- private data
|
-- private data
|
||||||
local delay_timeout
|
|
||||||
if args.delay_show then
|
if args.delay_show then
|
||||||
|
local delay_timeout
|
||||||
|
|
||||||
delay_timeout = timer { timeout = args.delay_show }
|
delay_timeout = timer { timeout = args.delay_show }
|
||||||
delay_timeout:connect_signal("timeout", function () show(self) end)
|
delay_timeout:connect_signal("timeout", function ()
|
||||||
|
show(self)
|
||||||
|
delay_timeout:stop()
|
||||||
|
end)
|
||||||
|
|
||||||
|
data[self] = {
|
||||||
|
show = function()
|
||||||
|
if not delay_timeout.started then
|
||||||
|
delay_timeout:start()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
hide = function()
|
||||||
|
if delay_timeout.started then
|
||||||
|
delay_timeout:stop()
|
||||||
|
end
|
||||||
|
hide(self)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
data[self] = {
|
||||||
|
show = function() show(self) end,
|
||||||
|
hide = function() hide(self) end,
|
||||||
|
}
|
||||||
end
|
end
|
||||||
data[self] = {
|
|
||||||
show = function()
|
|
||||||
if delay_timeout then delay_timeout:start()
|
|
||||||
else show(self) end
|
|
||||||
end,
|
|
||||||
hide = function()
|
|
||||||
if delay_timeout then delay_timeout:stop() end
|
|
||||||
hide(self)
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- export functions
|
-- export functions
|
||||||
self.set_text = tooltip.set_text
|
self.set_text = tooltip.set_text
|
||||||
|
|
Loading…
Reference in New Issue