--- Get a widex index. -- @param widget The widget to look for -- @param[opt] recursive Also check sub-widgets -- @param[opt] ... Aditional widgets to add at the end of the "path" -- @return The index -- @return The parent layout -- @return The path between "self" and "widget" -- @function index --- Get all direct and indirect children widgets. -- This will scan all containers recursively to find widgets -- Warning: This method it prone to stack overflow id the widget, or any of its -- children, contain (directly or indirectly) itself. -- @treturn table The children -- @function get_all_children --- Set a declarative widget hierarchy description. -- See [The declarative layout system](../documentation/03-declarative-layout.md.html) -- @param args An array containing the widgets disposition -- @function setup --- Force a widget height. -- @property forced_height -- @tparam number|nil height The height (`nil` for automatic) --- Force a widget width. -- @property forced_width -- @tparam number|nil width The width (`nil` for automatic) --- The widget opacity (transparency). -- @property opacity -- @tparam[opt=1] number opacity The opacity (between 0 and 1) --- The widget visibility. -- @property visible -- @param boolean --- Set/get a widget's buttons. -- @param _buttons The table of buttons that should bind to the widget. -- @function buttons --- Emit a signal and ensure all parent widgets in the hierarchies also -- forward the signal. This is useful to track signals when there is a dynamic -- set of containers and layouts wrapping the widget. -- @tparam string signal_name -- @param ... Other arguments -- @function emit_signal_recursive --- When the layout (size) change. -- This signal is emitted when the previous results of `:layout()` and `:fit()` -- are no longer valid. Unless this signal is emitted, `:layout()` and `:fit()` -- must return the same result when called with the same arguments. -- @signal widget::layout_changed -- @see widget::redraw_needed --- When the widget content changed. -- This signal is emitted when the content of the widget changes. The widget will -- be redrawn, it is not re-layouted. Put differently, it is assumed that -- `:layout()` and `:fit()` would still return the same results as before. -- @signal widget::redraw_needed -- @see widget::layout_changed --- When a mouse button is pressed over the widget. -- The position of the mouse press relative to the widget while geometry -- contains the geometry of the widget relative to the wibox. -- @signal button::press -- @tparam table widget The widget -- @tparam number lx The relative horizontal position. -- @tparam number ly The relative vertical position. -- @tparam number button The button number. -- @tparam table mods The modifiers (mod4, mod1 (alt), Control, Shift) -- @tparam table geometry -- @tparam number geometry.x The vertical position -- @tparam number geometry.y The horizontal position -- @tparam number geometry.width The widget -- @tparam number geometry.height The height -- @tparam drawable geometry.drawable The `drawable` -- @tparam table geometry.matrix_to_parent The relative `gears.matrix` -- @tparam table geometry.matrix_to_device The absolute `gears.matrix` -- @see mouse --- When a mouse button is released over the widget. -- The position of the mouse press relative to the widget while geometry -- contains the geometry of the widget relative to the wibox. -- @signal button::release -- @tparam table widget The widget -- @tparam number lx The relative horizontal position. -- @tparam number ly The relative vertical position. -- @tparam number button The button number. -- @tparam table mods The modifiers (mod4, mod1 (alt), Control, Shift) -- @tparam table geometry -- @tparam number geometry.x The vertical position -- @tparam number geometry.y The horizontal position -- @tparam number geometry.width The widget -- @tparam number geometry.height The height -- @tparam drawable geometry.drawable The `drawable` -- @tparam table geometry.matrix_to_parent The relative `gears.matrix` -- @tparam table geometry.matrix_to_device The absolute `gears.matrix` -- @see mouse --- When the mouse enter a widget. -- @signal mouse::enter -- @tparam table widget The widget -- @tparam table geometry -- @tparam number geometry.x The vertical position -- @tparam number geometry.y The horizontal position -- @tparam number geometry.width The widget -- @tparam number geometry.height The height -- @tparam drawable geometry.drawable The `drawable` -- @tparam table geometry.matrix_to_parent The relative `gears.matrix` -- @tparam table geometry.matrix_to_device The absolute `gears.matrix` -- @see mouse --- When the mouse leave a widget. -- @signal mouse::leave -- @tparam table widget The widget -- @tparam table geometry -- @tparam number geometry.x The vertical position -- @tparam number geometry.y The horizontal position -- @tparam number geometry.width The widget -- @tparam number geometry.height The height -- @tparam drawable geometry.drawable The `drawable` -- @tparam table geometry.matrix_to_parent The relative `gears.matrix` -- @tparam table geometry.matrix_to_device The absolute `gears.matrix` -- @see mouse