Implement :set_children() sanely everywhere
This makes the code use the existing functions for setting widgets. That way, all the sanity checks that the existing functions have are applied for this code as well. I just spent half an hour tracking down a bug where a boolean ended up as a "widget" in a fixed layout. The symptom was that while drawing the widget, an error happened. Via this change, the error would instead be flagged while constructing the widget. Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
a2301ae8f3
commit
cf3c81fa9e
|
@ -175,11 +175,9 @@ end
|
||||||
-- This layout only accept three children, all others will be ignored
|
-- This layout only accept three children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function align:set_children(children)
|
function align:set_children(children)
|
||||||
if not children then return self:reset() end
|
self:set_first(children[1])
|
||||||
self.first = children[1]
|
self:set_second(children[2])
|
||||||
self.second = children[2]
|
self:set_third(children[3])
|
||||||
self.third = children[3]
|
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Fit the align layout into the given space. The align layout will
|
--- Fit the align layout into the given space. The align layout will
|
||||||
|
|
|
@ -54,8 +54,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function constraint:set_children(children)
|
function constraint:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set the strategy to use for the constraining. Valid values are 'max',
|
--- Set the strategy to use for the constraining. Valid values are 'max',
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
-- @classmod wibox.layout.fixed
|
-- @classmod wibox.layout.fixed
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local unpack = unpack or table.unpack -- luacheck: globals unpack (compatibility with Lua 5.1)
|
||||||
local base = require("wibox.widget.base")
|
local base = require("wibox.widget.base")
|
||||||
local table = table
|
local table = table
|
||||||
local pairs = pairs
|
local pairs = pairs
|
||||||
|
@ -110,9 +111,10 @@ end
|
||||||
--- Replace the layout children
|
--- Replace the layout children
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function fixed:set_children(children)
|
function fixed:set_children(children)
|
||||||
if not children then return self:reset() end
|
self:reset()
|
||||||
self.widgets = children
|
if #children > 0 then
|
||||||
self:emit_signal("widget::layout_changed")
|
self:add(unpack(children))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Replace the first instance of `widget` in the layout with `widget2`
|
--- Replace the first instance of `widget` in the layout with `widget2`
|
||||||
|
|
|
@ -82,8 +82,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function margin:set_children(children)
|
function margin:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set all the margins to val.
|
--- Set all the margins to val.
|
||||||
|
|
|
@ -68,8 +68,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function mirror:set_children(children)
|
function mirror:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Reset this layout. The widget will be removed and the axes reset.
|
--- Reset this layout. The widget will be removed and the axes reset.
|
||||||
|
|
|
@ -76,8 +76,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function rotate:set_children(children)
|
function rotate:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Reset this layout. The widget will be removed and the rotation reset.
|
--- Reset this layout. The widget will be removed and the rotation reset.
|
||||||
|
|
|
@ -267,8 +267,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function scroll:set_children(children)
|
function scroll:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Specify the expand mode that is used for extra space.
|
--- Specify the expand mode that is used for extra space.
|
||||||
|
|
|
@ -109,8 +109,7 @@ end
|
||||||
-- This layout only accept one children, all others will be ignored
|
-- This layout only accept one children, all others will be ignored
|
||||||
-- @tparam table children A table composed of valid widgets
|
-- @tparam table children A table composed of valid widgets
|
||||||
function background:set_children(children)
|
function background:set_children(children)
|
||||||
self.widget = children and children[1]
|
self:set_widget(children[1])
|
||||||
self:emit_signal("widget::layout_changed")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set the background to use
|
--- Set the background to use
|
||||||
|
|
Loading…
Reference in New Issue