taglist: Expose more properties.
They were passed in the constructor, but could not be changed.
This commit is contained in:
parent
df59f5bdd3
commit
a3b7532056
|
@ -391,10 +391,10 @@ local function create_callback(w, t)
|
||||||
common._set_common_property(w, "tag", t)
|
common._set_common_property(w, "tag", t)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function taglist_update(s, w, buttons, filter, data, style, update_function, args)
|
local function taglist_update(s, self, buttons, filter, data, style, update_function, args)
|
||||||
local tags = {}
|
local tags = {}
|
||||||
|
|
||||||
local source = args and args.source or taglist.source.for_screen or nil
|
local source = self._private.source or taglist.source.for_screen or nil
|
||||||
local list = source and source(s, args) or s.tags
|
local list = source and source(s, args) or s.tags
|
||||||
|
|
||||||
for _, t in ipairs(list) do
|
for _, t in ipairs(list) do
|
||||||
|
@ -405,12 +405,17 @@ local function taglist_update(s, w, buttons, filter, data, style, update_functio
|
||||||
|
|
||||||
local function label(c) return taglist.taglist_label(c, style) end
|
local function label(c) return taglist.taglist_label(c, style) end
|
||||||
|
|
||||||
update_function(w, buttons, label, data, tags, {
|
update_function(self._private.base_layout, buttons, label, data, tags, {
|
||||||
widget_template = args.widget_template,
|
widget_template = self._private.widget_template,
|
||||||
create_callback = create_callback,
|
create_callback = create_callback,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- The taglist screen.
|
||||||
|
--
|
||||||
|
-- @property screen
|
||||||
|
-- @tparam screen screen
|
||||||
|
|
||||||
--- Set the taglist layout.
|
--- Set the taglist layout.
|
||||||
--
|
--
|
||||||
-- @property base_layout
|
-- @property base_layout
|
||||||
|
@ -451,6 +456,54 @@ function taglist:fit(context, width, height)
|
||||||
return base.fit_widget(self, context, self._private.base_layout, width, height)
|
return base.fit_widget(self, context, self._private.base_layout, width, height)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- An alternative function to configure the content.
|
||||||
|
--
|
||||||
|
-- You should use `widget_template` if it fits your use case first. This
|
||||||
|
-- API is very low level.
|
||||||
|
--
|
||||||
|
-- @property update_function
|
||||||
|
-- @tparam function update_function.
|
||||||
|
|
||||||
|
--- A function to restrict the content of the taglist.
|
||||||
|
--
|
||||||
|
-- @property filter
|
||||||
|
-- @tparam function filter
|
||||||
|
-- @see source
|
||||||
|
-- @see awful.widget.taglist.filter.noempty
|
||||||
|
-- @see awful.widget.taglist.filter.selected
|
||||||
|
-- @see awful.widget.taglist.filter.all
|
||||||
|
-- @see awful.widget.taglist.source.for_screen
|
||||||
|
|
||||||
|
--- The function used to gather the group of tags.
|
||||||
|
--
|
||||||
|
-- @property source
|
||||||
|
-- @tparam function source
|
||||||
|
-- @see filter
|
||||||
|
-- @see awful.widget.taglist.source.for_screen
|
||||||
|
|
||||||
|
--- A templete used to genetate the individual tag widgets.
|
||||||
|
--
|
||||||
|
-- @property widget_template
|
||||||
|
-- @tparam table widget_template
|
||||||
|
|
||||||
|
for _, prop in ipairs { "filter", "update_function", "widget_template", "source", "screen" } do
|
||||||
|
taglist["set_"..prop] = function(self, value)
|
||||||
|
if value == self._private[prop] then return end
|
||||||
|
|
||||||
|
self._private[prop] = value
|
||||||
|
|
||||||
|
self._do_taglist_update()
|
||||||
|
|
||||||
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::redraw_needed")
|
||||||
|
self:emit_signal("property::"..prop, value)
|
||||||
|
end
|
||||||
|
|
||||||
|
taglist["get_"..prop] = function(self)
|
||||||
|
return self._private[prop]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--- Create a new taglist widget. The last two arguments (update_function
|
--- Create a new taglist widget. The last two arguments (update_function
|
||||||
-- and layout) serve to customize the layout of the taglist (eg. to
|
-- and layout) serve to customize the layout of the taglist (eg. to
|
||||||
-- make it vertical). For that, you will need to copy the
|
-- make it vertical). For that, you will need to copy the
|
||||||
|
@ -544,10 +597,13 @@ function taglist.new(args, filter, buttons, style, update_function, base_widget)
|
||||||
gtable.crush(w, taglist, true)
|
gtable.crush(w, taglist, true)
|
||||||
|
|
||||||
gtable.crush(w._private, {
|
gtable.crush(w._private, {
|
||||||
style = args.style or {},
|
style = args.style or {},
|
||||||
buttons = args.buttons,
|
buttons = args.buttons,
|
||||||
filter = args.filter,
|
filter = args.filter,
|
||||||
update_function = args.update_function,
|
update_function = args.update_function,
|
||||||
|
widget_template = args.widget_template,
|
||||||
|
source = args.source,
|
||||||
|
screen = screen
|
||||||
})
|
})
|
||||||
|
|
||||||
local data = setmetatable({}, { __mode = 'k' })
|
local data = setmetatable({}, { __mode = 'k' })
|
||||||
|
@ -560,14 +616,14 @@ function taglist.new(args, filter, buttons, style, update_function, base_widget)
|
||||||
w._private.screen, w, w._private.buttons, w._private.filter, data, args.style, uf, args
|
w._private.screen, w, w._private.buttons, w._private.filter, data, args.style, uf, args
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
queued_update[screen] = false
|
queued_update[w._private.screen] = false
|
||||||
end
|
end
|
||||||
|
|
||||||
function w._do_taglist_update()
|
function w._do_taglist_update()
|
||||||
-- Add a delayed callback for the first update.
|
-- Add a delayed callback for the first update.
|
||||||
if not queued_update[screen] then
|
if not queued_update[w._private.screen] then
|
||||||
timer.delayed_call(w._do_taglist_update_now)
|
timer.delayed_call(w._do_taglist_update_now)
|
||||||
queued_update[screen] = true
|
queued_update[w._private.screen] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if instances == nil then
|
if instances == nil then
|
||||||
|
|
Loading…
Reference in New Issue