Add a property::visible signal to tooltips

As requested here:
b4224a651f (commitcomment-16402861)

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2016-03-02 20:04:19 +01:00
parent e347f7191c
commit 7739a6a7ed
1 changed files with 17 additions and 13 deletions

View File

@ -42,6 +42,7 @@
local mouse = mouse local mouse = mouse
local timer = require("gears.timer") local timer = require("gears.timer")
local object = require("gears.object")
local wibox = require("wibox") local wibox = require("wibox")
local a_placement = require("awful.placement") local a_placement = require("awful.placement")
local abutton = require("awful.button") local abutton = require("awful.button")
@ -101,6 +102,7 @@ local function show(self)
set_geometry(self) set_geometry(self)
self.wibox.visible = true self.wibox.visible = true
self.visible = true self.visible = true
self:emit_signal("property::visible")
end end
-- Hide a tooltip. -- Hide a tooltip.
@ -116,6 +118,7 @@ local function hide(self)
end end
self.wibox.visible = false self.wibox.visible = false
self.visible = false self.visible = false
self:emit_signal("property::visible")
end end
--- Change displayed text. --- Change displayed text.
@ -155,25 +158,26 @@ end
--- Add tooltip to an object. --- Add tooltip to an object.
-- --
-- @tparam tooltip self The tooltip. -- @tparam tooltip self The tooltip.
-- @tparam gears.object object An object with `mouse::enter` and -- @tparam gears.object obj An object with `mouse::enter` and
-- `mouse::leave` signals. -- `mouse::leave` signals.
tooltip.add_to_object = function(self, object) tooltip.add_to_object = function(self, obj)
object:connect_signal("mouse::enter", self.show) obj:connect_signal("mouse::enter", self.show)
object:connect_signal("mouse::leave", self.hide) obj:connect_signal("mouse::leave", self.hide)
end end
--- Remove tooltip from an object. --- Remove tooltip from an object.
-- --
-- @tparam tooltip self The tooltip. -- @tparam tooltip self The tooltip.
-- @tparam gears.object object An object with `mouse::enter` and -- @tparam gears.object obj An object with `mouse::enter` and
-- `mouse::leave` signals. -- `mouse::leave` signals.
tooltip.remove_from_object = function(self, object) tooltip.remove_from_object = function(self, obj)
object:disconnect_signal("mouse::enter", self.show) obj:disconnect_signal("mouse::enter", self.show)
object:disconnect_signal("mouse::leave", self.hide) obj:disconnect_signal("mouse::leave", self.hide)
end end
--- Create a new tooltip and link it to a widget. --- Create a new tooltip and link it to a widget.
-- Tooltips emit `property::visible` when their visibility changes.
-- @tparam table args Arguments for tooltip creation. -- @tparam table args Arguments for tooltip creation.
-- @tparam[opt=1] number args.timeout The timeout value for -- @tparam[opt=1] number args.timeout The timeout value for
-- `timer_function`. -- `timer_function`.
@ -191,9 +195,9 @@ end
-- @see set_text -- @see set_text
-- @see set_markup -- @see set_markup
tooltip.new = function(args) tooltip.new = function(args)
local self = setmetatable({ local self = setmetatable(object(), instance_mt)
visible = false, self:add_signal("property::visible")
}, instance_mt) self.visible = false
-- private data -- private data
if args.delay_show then if args.delay_show then
@ -265,8 +269,8 @@ tooltip.new = function(args)
-- Add tooltip to objects -- Add tooltip to objects
if args.objects then if args.objects then
for _, object in ipairs(args.objects) do for _, obj in ipairs(args.objects) do
self:add_to_object(object) self:add_to_object(obj)
end end
end end