diff --git a/docs/common/cursor_c.ldoc b/docs/common/cursor_c.ldoc index 6b595973d..55ac684cc 100644 --- a/docs/common/cursor_c.ldoc +++ b/docs/common/cursor_c.ldoc @@ -1,80 +1,80 @@ - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
num_glyphs
cursor
arrow
based_arrow_down
based_arrow_up
boat
bogosity
bottom_left_corner
bottom_right_corner
bottom_side
bottom_tee
box_spiral
center_ptr
circle
clock
coffee_mug
cross
cross_reverse
crosshair
diamond_cross
dot
dotbox
double_arrow
draft_large
draft_small
draped_box
exchange
fleur
gobbler
gumby
hand
hand
heart
icon
iron_cross
left_ptr
left_side
left_tee
leftbutton
ll_angle
lr_angle
man
middlebutton
mouse
pencil
pirate
plus
question_arrow
right_ptr
right_side
right_tee
rightbutton
rtl_logo
sailboat
sb_down_arrow
sb_h_double_arrow
sb_left_arrow
sb_right_arrow
sb_up_arrow
sb_v_double_arrow
shuttle
sizing
spider
spraycan
star
target
tcross
top_left_arrow
top_left_corner
top_right_corner
top_side
top_tee
trek
ul_angle
umbrella
ur_angle
watch
xterm
+
+ *
num_glyphs
+ *
arrow
+ *
based_arrow_down
+ *
based_arrow_up
+ *
boat
+ *
bogosity
+ *
bottom_left_corner
+ *
bottom_right_corner
+ *
bottom_side
+ *
bottom_tee
+ *
box_spiral
+ *
center_ptr
+ *
circle
+ *
clock
+ *
coffee_mug
+ *
cross
+ *
crosshair
+ *
cross_reverse
+ *
cursor
+ *
diamond_cross
+ *
dotbox
+ *
dot
+ *
double_arrow
+ *
draft_large
+ *
draft_small
+ *
draped_box
+ *
exchange
+ *
fleur
+ *
gobbler
+ *
gumby
+ *
hand
+ *
hand
+ *
heart
+ *
icon
+ *
iron_cross
+ *
leftbutton
+ *
left_ptr
+ *
left_side
+ *
left_tee
+ *
ll_angle
+ *
lr_angle
+ *
man
+ *
middlebutton
+ *
mouse
+ *
pencil
+ *
pirate
+ *
plus
+ *
question_arrow
+ *
rightbutton
+ *
right_ptr
+ *
right_side
+ *
right_tee
+ *
rtl_logo
+ *
sailboat
+ *
sb_down_arrow
+ *
sb_h_double_arrow
+ *
sb_left_arrow
+ *
sb_right_arrow
+ *
sb_up_arrow
+ *
sb_v_double_arrow
+ *
shuttle
+ *
sizing
+ *
spider
+ *
spraycan
+ *
star
+ *
target
+ *
tcross
+ *
top_left_arrow
+ *
top_left_corner
+ *
top_right_corner
+ *
top_side
+ *
top_tee
+ *
trek
+ *
ul_angle
+ *
umbrella
+ *
ur_angle
+ *
watch
+ *
xterm
+ *
diff --git a/docs/common/fixed.ldoc b/docs/common/fixed.ldoc index d25dafe9f..359fd2ad7 100644 --- a/docs/common/fixed.ldoc +++ b/docs/common/fixed.ldoc @@ -1,24 +1,25 @@ ---- Set a widget at a specific index, replace the current one. +--- Set a widget at a specific index, replacing the current one. -- -- @tparam number index A widget or a widget index --- @tparam widget widget2 The widget to take the place of the first one --- @treturn boolean If the operation is successful +-- @tparam widget widget2 The widget to replace the previous one with +-- @treturn boolean Returns `true` if the widget was replaced successfully, +-- `false` otherwise. -- @method set -- @emits widget::replaced -- @emitstparam widget::replaced widget self The layout. --- @emitstparam widget::replaced widget widget index The inserted widget. +-- @emitstparam widget::replaced widget widget The inserted widget. -- @emitstparam widget::replaced widget previous The previous widget. -- @emitstparam widget::replaced number index The replaced index. -- @interface layout --- Replace the first instance of `widget` in the layout with `widget2`. -- --- **Signal:** widget::replaced The argument is the new widget and the old one --- and the index. -- @tparam widget widget The widget to replace -- @tparam widget widget2 The widget to replace `widget` with --- @tparam[opt=false] boolean recursive Dig in all compatible layouts to find the widget. --- @treturn boolean If the operation is successful +-- @tparam[opt=false] boolean recursive Recurse into all compatible layouts to +-- find the widget. +-- @treturn boolean Returns `true` if the widget was replaced successfully, +-- `false` otherwise. -- @method replace_widget -- @emits widget::replaced -- @emitstparam widget::replaced widget self The layout. @@ -31,35 +32,44 @@ -- -- @tparam number index1 The first widget index -- @tparam number index2 The second widget index --- @treturn boolean If the operation is successful +-- @treturn boolean Returns `true` if the widget was replaced successfully, +-- `false` otherwise. -- @method swap -- @emits widget::swapped -- @emitstparam widget::swapped widget self The layout. --- @emitstparam widget::swapped widget widget1 index The first widget. --- @emitstparam widget::swapped widget widget2 index The second widget. +-- @emitstparam widget::swapped widget widget1 The first widget. +-- @emitstparam widget::swapped widget widget2 The second widget. -- @emitstparam widget::swapped number index1 The first index. -- @emitstparam widget::swapped number index1 The second index. -- @interface layout --- Swap 2 widgets in a layout. --- If widget1 is present multiple time, only the first instance is swapped --- **Signal:** widget::swapped The arguments are both widgets and both (new) indexes. --- if the layouts not the same, then only `widget::replaced` will be emitted. +-- +-- If `widget1` is present multiple time, only the first instance is swapped. +-- +-- Calls `set` internally, so the signal `widget::replaced` is emitted for both +-- widgets as well. +-- -- @tparam widget widget1 The first widget -- @tparam widget widget2 The second widget --- @tparam[opt=false] boolean recursive Dig in all compatible layouts to find the widget. --- @treturn boolean If the operation is successful +-- @tparam[opt=false] boolean recursive Recurse into all compatible layouts to +-- find the widget. +-- @treturn boolean Returns `true` if the widget was replaced successfully, +-- `false` otherwise. -- @method swap_widgets -- @emits widget::swapped -- @emitstparam widget::swapped widget self The layout. --- @emitstparam widget::swapped widget widget1 index The first widget. --- @emitstparam widget::swapped widget widget2 index The second widget. +-- @emitstparam widget::swapped widget widget1 The first widget. +-- @emitstparam widget::swapped widget widget2 The second widget. -- @emitstparam widget::swapped number index1 The first index. -- @emitstparam widget::swapped number index1 The second index. -- @interface layout +-- @see set --- Reset the layout. This removes all widgets from the layout. -- @method reset -- @emits widget::reset -- @emitstparam widget::reset widget self The layout. -- @interface layout + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/docs/ldoc.css b/docs/ldoc.css index f429dcdd7..845abaf83 100644 --- a/docs/ldoc.css +++ b/docs/ldoc.css @@ -257,6 +257,23 @@ table th, table td { border-bottom-width: 1px; } +.flex-list { + display: flex; + flex-wrap: wrap; +} + +.flex-list > div { + flex-grow: 1; + /* Use base width based on font size + to make sure text fits when zooming */ + width: 9em; + + text-align: center; + padding: 10px; + margin: 5px; + border: 1px solid rgb(193, 204, 228); +} + #about { padding: 15px; padding-left: 16em; diff --git a/lib/wibox/layout/align.lua b/lib/wibox/layout/align.lua index fdf50307e..58f341794 100644 --- a/lib/wibox/layout/align.lua +++ b/lib/wibox/layout/align.lua @@ -1,6 +1,25 @@ --------------------------------------------------------------------------- +-- The `align` layout has three slots for child widgets. On its main axis, it +-- will use as much space as is available to it and distribute that to its child +-- widgets by stretching or shrinking them based on the chosen @{expand} +-- strategy. +-- On its secondary axis, the biggest child widget determines the size of the +-- layout, but smaller widgets will not be stretched to match it. +-- +-- In its default configuration, the layout will give the first and third +-- widgets only the minimum space they ask for and it aligns them to the outer +-- edges. The remaining space between them is made available to the widget in +-- slot two. +-- +-- This layout is most commonly used to split content into left/top, center and +-- right/bottom sections. As such, it is usually seen as the root layout in +-- @{awful.wibar}. +-- +-- You may also fill just one or two of the widget slots, the @{expand} algorithm +-- will adjust accordingly. -- --@DOC_wibox_layout_defaults_align_EXAMPLE@ +-- -- @author Uli Schlachter -- @copyright 2010 Uli Schlachter -- @layoutmod wibox.layout.align @@ -140,8 +159,10 @@ function align:layout(context, width, height) return result end ---- Set the layout's first widget. --- This is the widget that is at the left/top +--- The widget in slot one. +-- +-- This is the widget that is at the left/top. +-- -- @property first -- @tparam widget first -- @propemits true false @@ -155,7 +176,10 @@ function align:set_first(widget) self:emit_signal("property::first", widget) end ---- Set the layout's second widget. This is the centered one. +--- The widget in slot two. +-- +-- This is the centered one. +-- -- @property second -- @tparam widget second -- @propemits true false @@ -169,8 +193,10 @@ function align:set_second(widget) self:emit_signal("property::second", widget) end ---- Set the layout's third widget. --- This is the widget that is at the right/bottom +--- The widget in slot three. +-- +-- This is the widget that is at the right/bottom. +-- -- @property third -- @tparam widget third -- @propemits true false @@ -227,23 +253,27 @@ function align:fit(context, orig_width, orig_height) return used_in_dir, used_in_other end ---- Set the expand mode which determines how sub widgets expand to take up +--- Set the expand mode, which determines how child widgets expand to take up -- unused space. -- -- The following values are valid: -- --- * "inside" - Default option. Size of outside widgets is determined using --- their fit function. Second, middle, or center widget expands to fill --- remaining space. --- * "outside" - Center widget is sized using its fit function and placed in --- the center of the allowed space. Outside widgets expand (or contract) to --- fill remaining space on their side. --- * "none" - All widgets are sized using their fit function, drawn to only the --- returned space, or remaining space, whichever is smaller. Center widget --- gets priority. +-- * `"inside"`: The widgets in slot one and three are set to their minimal +-- required size. The widget in slot two is then given the remaining space. +-- This is the default behaviour. +-- * `"outside"`: The widget in slot two is set to its minimal required size and +-- placed in the center of the space available to the layout. The other +-- widgets are then given the remaining space on either side. +-- If the center widget requires all available space, the outer widgets are +-- not drawn at all. +-- * `"none"`: All widgets are given their minimal required size or the +-- remaining space, whichever is smaller. The center widget gets priority. +-- +-- Attempting to set any other value than one of those three will fall back to +-- `"inside"`. -- -- @property expand --- @tparam[opt=inside] string mode How to use unused space. +-- @tparam[opt="inside"] string mode How to use unused space. function align:set_expand(mode) if mode == "none" or mode == "outside" then @@ -283,14 +313,16 @@ local function get_layout(dir, first, second, third) return ret end ---- Returns a new horizontal align layout. An align layout can display up to --- three widgets. The widget set via :set_left() is left-aligned. :set_right() --- sets a widget which will be right-aligned. The remaining space between those --- two will be given to the widget set via :set_middle(). +--- Returns a new horizontal align layout. +-- +-- The three widget slots are aligned left, center and right. +-- +-- Additionally, this creates the aliases `set_left`, `set_middle` and +-- `set_right` to assign @{first}, @{second} and @{third} respectively. -- @constructorfct wibox.layout.align.horizontal --- @tparam[opt] widget left Widget to be put to the left. --- @tparam[opt] widget middle Widget to be put to the middle. --- @tparam[opt] widget right Widget to be put to the right. +-- @tparam[opt] widget left Widget to be put in slot one. +-- @tparam[opt] widget middle Widget to be put in slot two. +-- @tparam[opt] widget right Widget to be put in slot three. function align.horizontal(left, middle, right) local ret = get_layout("x", left, middle, right) @@ -301,14 +333,16 @@ function align.horizontal(left, middle, right) return ret end ---- Returns a new vertical align layout. An align layout can display up to --- three widgets. The widget set via :set_top() is top-aligned. :set_bottom() --- sets a widget which will be bottom-aligned. The remaining space between those --- two will be given to the widget set via :set_middle(). +--- Returns a new vertical align layout. +-- +-- The three widget slots are aligned top, center and bottom. +-- +-- Additionally, this creates the aliases `set_top`, `set_middle` and +-- `set_bottom` to assign @{first}, @{second} and @{third} respectively. -- @constructorfct wibox.layout.align.vertical --- @tparam[opt] widget top Widget to be put to the top. --- @tparam[opt] widget middle Widget to be put to the middle. --- @tparam[opt] widget bottom Widget to be put to the right. +-- @tparam[opt] widget top Widget to be put in slot one. +-- @tparam[opt] widget middle Widget to be put in slot two. +-- @tparam[opt] widget bottom Widget to be put in slot three. function align.vertical(top, middle, bottom) local ret = get_layout("y", top, middle, bottom) diff --git a/lib/wibox/layout/fixed.lua b/lib/wibox/layout/fixed.lua index 58779174d..bd76c3207 100644 --- a/lib/wibox/layout/fixed.lua +++ b/lib/wibox/layout/fixed.lua @@ -1,6 +1,22 @@ --------------------------------------------------------------------------- +-- A `fixed` layout may be initialized with any number of child widgets, and +-- during runtime widgets may be added and removed dynamically. +-- +-- On the main axis, child widgets are given a fixed size of exactly as much +-- space as they ask for. The layout will then resize according to the sum of +-- all child widgets. If the space available to the layout is not enough to +-- include all child widgets, the excessive ones are not drawn at all. +-- +-- Additionally, the layout allows adding empty spacing or even placing a custom +-- spacing widget between the child widget. +-- +-- On its secondary axis, the layout's size is determined by the largest child +-- widget. Smaller child widgets are then placed with the same size. +-- Therefore, child widgets may ignore their `forced_width` or `forced_height` +-- properties for vertical and horizontal layouts respectively. -- --@DOC_wibox_layout_defaults_fixed_EXAMPLE@ +-- -- @author Uli Schlachter -- @copyright 2010 Uli Schlachter -- @layoutmod wibox.layout.fixed @@ -32,7 +48,7 @@ function fixed:layout(context, width, height) spacing_widget = spacing ~= 0 and self._private.spacing_widget or nil - for k, v in pairs(self._private.widgets) do + for index, widget in pairs(self._private.widgets) do local w, h, local_spacing = width - x, height - y, spacing -- Some widget might be zero sized either because this is their @@ -43,8 +59,8 @@ function fixed:layout(context, width, height) local zero = false if is_y then - if k ~= widgets_nr or not self._private.fill_space then - h = select(2, base.fit_widget(self, context, v, w, h)) + if index ~= widgets_nr or not self._private.fill_space then + h = select(2, base.fit_widget(self, context, widget, w, h)) zero = h == 0 end @@ -65,8 +81,8 @@ function fixed:layout(context, width, height) end end else - if k ~= widgets_nr or not self._private.fill_space then - w = select(1, base.fit_widget(self, context, v, w, h)) + if index ~= widgets_nr or not self._private.fill_space then + w = select(1, base.fit_widget(self, context, widget, w, h)) zero = w == 0 end @@ -94,16 +110,19 @@ function fixed:layout(context, width, height) -- Place widget, even if it has zero width/height. Otherwise -- any layout change for zero-sized widget would become invisible. - table.insert(result, base.place_widget_at(v, x, y, w, h)) + table.insert(result, base.place_widget_at(widget, x, y, w, h)) x = is_x and x + w + local_spacing or x y = is_y and y + h + local_spacing or y -- Add the spacing widget (if needed) - if k < widgets_nr and spacing_widget then + if index < widgets_nr and spacing_widget then table.insert(result, base.place_widget_at( - spacing_widget, is_x and (x - spoffset) or x, is_y and (y - spoffset) or y, - is_x and abspace or w, is_y and abspace or h + spacing_widget, + is_x and (x - spoffset) or x, + is_y and (y - spoffset) or y, + is_x and abspace or w, + is_y and abspace or h )) end end @@ -266,9 +285,13 @@ function fixed:set(index, widget2) return true end ---- The widget used to fill the spacing between the layout elements. +--- A widget to insert as a separator between child widgets. -- --- By default, no widget is used. +-- If this property is a valid widget and `spacing` is greater than `0`, a +-- copy of this widget is inserted between each child widget, with its size in +-- the layout's main direction determined by `spacing`. +-- +-- By default no widget is used and any `spacing` is applied as an empty offset. -- --@DOC_wibox_layout_fixed_spacing_widget_EXAMPLE@ -- @@ -406,29 +429,25 @@ local function get_layout(dir, widget1, ...) return ret end ---- Returns a new horizontal fixed layout. Each widget will get as much space as it --- asks for and each widget will be drawn next to its neighboring widget. --- Widgets can be added via :add() or as arguments to this function. --- Note that widgets ignore `forced_height`. They will use the preferred/minimum width --- on the horizontal axis, and a stretched height on the vertical axis. +--- Creates and returns a new horizontal fixed layout. +-- -- @tparam widget ... Widgets that should be added to the layout. -- @constructorfct wibox.layout.fixed.horizontal function fixed.horizontal(...) return get_layout("x", ...) end ---- Returns a new vertical fixed layout. Each widget will get as much space as it --- asks for and each widget will be drawn next to its neighboring widget. --- Widgets can be added via :add() or as arguments to this function. --- Note that widgets ignore `forced_width`. They will use the preferred/minimum height --- on the vertical axis, and a stretched width on the horizontal axis. +--- Creates and returns a new vertical fixed layout. +-- -- @tparam widget ... Widgets that should be added to the layout. -- @constructorfct wibox.layout.fixed.vertical function fixed.vertical(...) return get_layout("y", ...) end ---- Add spacing between each layout widgets. +--- The amount of space inserted between the child widgets. +-- +-- If a `spacing_widget` is defined, this value is used for its size. -- --@DOC_wibox_layout_fixed_spacing_EXAMPLE@ -- diff --git a/lib/wibox/layout/flex.lua b/lib/wibox/layout/flex.lua index 2a4322a35..9fceef375 100644 --- a/lib/wibox/layout/flex.lua +++ b/lib/wibox/layout/flex.lua @@ -1,4 +1,19 @@ --------------------------------------------------------------------------- +-- A `flex` layout may be initialized with any number of child widgets, and +-- during runtime widgets may be added and removed dynamically. +-- +-- On the main axis, the layout will divide the available space evenly between +-- all child widgets, without any regard to how much space these widgets might +-- be asking for. +-- +-- Just like @{wibox.layout.fixed}, `flex` allows adding spacing between the +-- widgets, either as an ofset via @{spacing} or with a +-- @{spacing_widget}. +-- +-- On its secondary axis, the layout's size is determined by the largest child +-- widget. Smaller child widgets are then placed with the same size. +-- Therefore, child widgets may ignore their `forced_width` or `forced_height` +-- properties for vertical and horizontal layouts respectively. -- --@DOC_wibox_layout_defaults_flex_EXAMPLE@ -- @author Uli Schlachter @@ -56,14 +71,18 @@ local flex = {} -- @treturn boolean If the operation is successful -- @method insert -- @emits widget::inserted --- @emitstparam widget::inserted widget self The fixed layout. --- @emitstparam widget::inserted widget widget index The inserted widget. +-- @emitstparam widget::inserted widget self The layout. +-- @emitstparam widget::inserted widget widget The inserted widget. -- @emitstparam widget::inserted number count The widget count. -- @interface layout ---- The widget used to fill the spacing between the layout elements. +--- A widget to insert as a separator between child widgets. -- --- By default, no widget is used. +-- If this property is a valid widget and @{spacing} is greater than `0`, a +-- copy of this widget is inserted between each child widget, with its size in +-- the layout's main direction determined by @{spacing}. +-- +-- By default no widget is used and any @{spacing} is applied as an empty offset. -- --@DOC_wibox_layout_flex_spacing_widget_EXAMPLE@ -- @@ -72,13 +91,16 @@ local flex = {} -- @propemits true false -- @interface layout ---- Add spacing between each layout widgets. +--- The amount of space inserted between the child widgets. +-- +-- If a @{spacing_widget} is defined, this value is used for its size. -- --@DOC_wibox_layout_flex_spacing_EXAMPLE@ -- -- @property spacing -- @tparam number spacing Spacing between widgets. -- @propemits true false +-- @interface layout function flex:layout(_, width, height) local result = {} @@ -195,10 +217,7 @@ local function get_layout(dir, widget1, ...) return ret end ---- Returns a new horizontal flex layout. --- --- A flex layout shares the available space. --- equally among all widgets. Widgets can be added via `:add(widget)`. +--- Creates and returns a new horizontal flex layout. -- -- @tparam widget ... Widgets that should be added to the layout. -- @constructorfct wibox.layout.flex.horizontal @@ -206,10 +225,7 @@ function flex.horizontal(...) return get_layout("horizontal", ...) end ---- Returns a new vertical flex layout. --- --- A flex layout shares the available space --- equally among all widgets. Widgets can be added via `:add(widget)`. +--- Creates and returns a new vertical flex layout. -- -- @tparam widget ... Widgets that should be added to the layout. -- @constructorfct wibox.layout.flex.vertical diff --git a/lib/wibox/widget/imagebox.lua b/lib/wibox/widget/imagebox.lua index 8ade9c6ba..060d8c42e 100644 --- a/lib/wibox/widget/imagebox.lua +++ b/lib/wibox/widget/imagebox.lua @@ -1,20 +1,20 @@ --------------------------------------------------------------------------- --- A widget to display image. +-- A widget to display an image. -- --- The `wibox.widget.imagebox` is part of the Awesome WM's wiboxes system +-- The `wibox.widget.imagebox` is part of the Awesome WM's widget system -- (see @{03-declarative-layout.md}). -- -- This widget displays an image. The image can be a file, -- a cairo image surface, or an rsvg handle object (see the -- [image property](#image)). -- --- Use a `wibox.widget.imagebox` +-- Examples using a `wibox.widget.imagebox`: -- --- -- -- @DOC_wibox_widget_defaults_imagebox_EXAMPLE@ -- -- Alternatively, you can declare the `imagebox` widget using the --- declarative pattern (Both codes are strictly equivalent): +-- declarative pattern (both variants are strictly equivalent): -- -- @DOC_wibox_widget_declarative-pattern_imagebox_EXAMPLE@ -- @@ -219,15 +219,14 @@ end -- -- It can can be any of the following: -- --- * A `string` : Interpreted as the path to an image file, --- * A cairo image surface : Directly used as is, --- * An rsvg handle object : Directly used as is, --- * `nil` : Unset the image. +-- * A `string`: Interpreted as a path to an image file +-- * A cairo image surface: Directly used as-is +-- * A librsvg handle object: Directly used as-is +-- * `nil`: Unset the image. -- -- @property image -- @tparam image image The image to render. -- @propemits false false --- @see set_image --- Set the `imagebox` image. -- @@ -281,8 +280,9 @@ function imagebox:set_image(image) end --- Set a clip shape for this imagebox. --- A clip shape define an area where the content is displayed and one where it --- is trimmed. +-- +-- A clip shape defines an area and dimension to which the content should be +-- trimmed. -- -- @DOC_wibox_widget_imagebox_clip_shape_EXAMPLE@ -- @@ -290,13 +290,13 @@ end -- @tparam function|gears.shape clip_shape A `gears.shape` compatible shape function. -- @propemits true false -- @see gears.shape --- @see set_clip_shape --- Set a clip shape for this imagebox. --- A clip shape define an area where the content is displayed and one where it --- is trimmed. -- --- Any other parameters will be passed to the clip shape function. +-- A clip shape defines an area and dimensions to which the content should be +-- trimmed. +-- +-- Additional parameters will be passed to the clip shape function. -- -- @tparam function|gears.shape clip_shape A `gears_shape` compatible shape function. -- @method set_clip_shape @@ -330,35 +330,38 @@ end --- Set the horizontal fit policy. -- --- Values are: +-- Valid values are: -- --- * **auto**: Honor the `resize` varible and preserve the aspect ratio (default). --- * **none**: Do not resize at all. --- * **fit**: Resize to the widget width. +-- * `"auto"`: Honor the `resize` variable and preserve the aspect ratio. +-- This is the default behaviour. +-- * `"none"`: Do not resize at all. +-- * `"fit"`: Resize to the widget width. -- -- Here is the result for a 22x32 image: -- -- @DOC_wibox_widget_imagebox_horizontal_fit_policy_EXAMPLE@ -- --- @property horizontal_fit_policy --- @tparam[opt=auto] string horizontal_fit_policy --- @propemits true false --- @see vertical_fit_policy --- @see resize +-- @property horizontal_fit_policy +-- @tparam[opt="auto"] string horizontal_fit_policy +-- @propemits true false +-- @see vertical_fit_policy +-- @see resize --- Set the vertical fit policy. --- Values are: -- --- * **auto**: Honor the `resize` varible and preserve the aspect ratio (default). --- * **none**: Do not resize at all. --- * **fit**: Resize to the widget height. +-- Valid values are: +-- +-- * `"auto"`: Honor the `resize` varible and preserve the aspect ratio. +-- This is the default behaviour. +-- * `"none"`: Do not resize at all. +-- * `"fit"`: Resize to the widget height. -- -- Here is the result for a 32x22 image: -- -- @DOC_wibox_widget_imagebox_vertical_fit_policy_EXAMPLE@ -- -- @property vertical_fit_policy --- @tparam[opt=auto] string horizontal_fit_policy +-- @tparam[opt="auto"] string horizontal_fit_policy -- @propemits true false -- @see horizontal_fit_policy -- @see resize @@ -368,14 +371,14 @@ end -- -- Possible values are: -- --- * *top* --- * *center* (default) --- * *bottom* +-- * `"top"` +-- * `"center"` (default) +-- * `"bottom"` -- -- @DOC_wibox_widget_imagebox_valign_EXAMPLE@ -- -- @property valign --- @tparam string avlign +-- @tparam[opt="center"] string valign -- @propemits true false -- @see wibox.container.place -- @see halign @@ -384,14 +387,14 @@ end -- -- Possible values are: -- --- * *left* --- * *center* (default) --- * *right* +-- * `"left"` +-- * `"center"` (default) +-- * `"right"` -- -- @DOC_wibox_widget_imagebox_halign_EXAMPLE@ -- -- @property halign --- @tparam string halign +-- @tparam[opt="center"] string halign -- @propemits true false -- @see wibox.container.place -- @see valign @@ -399,8 +402,9 @@ end --- The maximum scaling factor. -- -- If an image is scaled too much, it gets very blurry. This --- property allows to limit the scaling. Use the `valign` and --- `halign` to control how the image will be aligned. +-- property allows to limit the scaling. +-- Use the properties `valign` and `halign` to control how the image will be +-- aligned. -- -- In the example below, the original size is 22x22 -- @@ -432,13 +436,15 @@ end -- bilinearLinear interpolation in two dimensions -- -- --- The image used in the example below has a resolution of 32x22 and is intentionally --- blocky to highlight the difference. It is zoomed by a factor of 3. +-- The image used in the example below has a resolution of 32x22 and is +-- intentionally blocky to highlight the difference. +-- It is zoomed by a factor of 3. -- -- @DOC_wibox_widget_imagebox_scaling_quality_EXAMPLE@ -- -- @property scaling_quality --- @tparam string scaling_quality Either `fast`, `good`, `best`, `nearest` or `bilinear`. +-- @tparam string scaling_quality Either `"fast"`, `"good"`, `"best"`, +-- `"nearest"` or `"bilinear"`. -- @propemits true false -- @see resize -- @see horizontal_fit_policy diff --git a/lib/wibox/widget/textbox.lua b/lib/wibox/widget/textbox.lua index b4019381f..f51810879 100644 --- a/lib/wibox/widget/textbox.lua +++ b/lib/wibox/widget/textbox.lua @@ -222,17 +222,22 @@ function textbox:get_text() return self._private.layout.text end ---- Set a textbox ellipsize mode. +--- Set the text ellipsize mode. -- -- Valid values are: -- --- * **start** --- * **middle** --- * **end** +-- * `"start"` +-- * `"middle"` +-- * `"end"` +-- * `"none"` +-- +-- See Pango for additional details: +-- [Layout.set_ellipsize](https://docs.gtk.org/Pango/method.Layout.set_ellipsize.html) +-- +--@DOC_wibox_widget_textbox_ellipsize_EXAMPLE@ -- -- @property ellipsize --- @tparam string mode Where should long lines be shortened? "start", "middle" --- or "end". +-- @tparam string mode The ellipsize mode. -- @propemits true false function textbox:set_ellipsize(mode) diff --git a/mousegrabber.c b/mousegrabber.c index cc7be5857..31e0c3457 100644 --- a/mousegrabber.c +++ b/mousegrabber.c @@ -82,7 +82,7 @@ mousegrabber_handleevent(lua_State *L, int x, int y, uint16_t mask) * The function is called with one argument: * a table containing modifiers pointer coordinates. * - * The list of valid cusrors are: + * The list of valid cursors is: * *@DOC_cursor_c_COMMON@ * diff --git a/tests/examples/wibox/container/defaults/radialprogressbar.lua b/tests/examples/wibox/container/defaults/radialprogressbar.lua index 6d59a8914..a9f3c476d 100644 --- a/tests/examples/wibox/container/defaults/radialprogressbar.lua +++ b/tests/examples/wibox/container/defaults/radialprogressbar.lua @@ -1,6 +1,6 @@ ---DOC_HIDE_ALL +--DOC_HIDE_START --DOC_GEN_IMAGE -local wibox = require("wibox") +local wibox = require("wibox") return { text = "Before", @@ -9,6 +9,7 @@ return { widget = wibox.widget.textbox, }, { +--DOC_HIDE_END { { text = "After", @@ -16,13 +17,14 @@ return { valign = "center", widget = wibox.widget.textbox, }, - value = 0.5, - max_value = 1, - min_value = 0, - widget = wibox.container.radialprogressbar + value = 0.5, + max_value = 1, + min_value = 0, + widget = wibox.container.radialprogressbar }, +--DOC_HIDE_START margins = 5, layout = wibox.container.margin } ---DOC_HIDE vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/tests/examples/wibox/widget/textbox/ellipsize.lua b/tests/examples/wibox/widget/textbox/ellipsize.lua new file mode 100644 index 000000000..f684a59e9 --- /dev/null +++ b/tests/examples/wibox/widget/textbox/ellipsize.lua @@ -0,0 +1,59 @@ +--DOC_GEN_IMAGE --DOC_HIDE + +--DOC_HIDE_START +local parent = ... +local wibox = require("wibox") + +local widget = function(inner) + return wibox.widget { + { + { + inner, + margins = 5, + widget = wibox.container.margin, + }, + border_width = 2, + widget = wibox.container.background, + }, + strategy = "max", + height = 25, + widget = wibox.container.constraint, + } +end + +local widgets = { +--DOC_HIDE_END + +widget{ + text = "This is a very long text, that cannot be displayed fully.", + ellipsize = "start", + widget = wibox.widget.textbox, +}, + +widget{ + text = "This is a very long text, that cannot be displayed fully.", + ellipsize = "end", + widget = wibox.widget.textbox, +}, + +widget{ + text = "This is a very long text, that cannot be displayed fully.", + ellipsize = "middle", + widget = wibox.widget.textbox, +}, + +widget{ + text = "This is a very long text, that cannot be displayed fully.", + ellipsize = "none", + valign = "top", + widget = wibox.widget.textbox, +} + +--DOC_HIDE_START +} + +parent:set_children(widgets) + +return parent:fit({ dpi = 96 }, 150, 200) + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80