david-swift 4937c36b3b Improve updating performance
And update docs reflecting the changes in the latest commits
2024-01-27 08:07:05 +01:00

125 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**STRUCT**
# `Overlay`
`GtkOverlay` is a container which contains a single main child, on top
of which it can place “overlay” widgets.
![An example GtkOverlay](overlay.png)
The position of each overlay widget is determined by its
[property@Gtk.Widget:halign] and [property@Gtk.Widget:valign]
properties. E.g. a widget with both alignments set to %GTK_ALIGN_START
will be placed at the top left corner of the `GtkOverlay` container,
whereas an overlay with halign set to %GTK_ALIGN_CENTER and valign set
to %GTK_ALIGN_END will be placed a the bottom edge of the `GtkOverlay`,
horizontally centered. The position can be adjusted by setting the margin
properties of the child to non-zero values.
More complicated placement of overlays is possible by connecting
to the [signal@Gtk.Overlay::get-child-position] signal.
An overlays minimum and natural sizes are those of its main child.
The sizes of overlay children are not considered when measuring these
preferred sizes.
# GtkOverlay as GtkBuildable
The `GtkOverlay` implementation of the `GtkBuildable` interface
supports placing a child as an overlay by specifying “overlay” as
the “type” attribute of a `<child>` element.
# CSS nodes
`GtkOverlay` has a single CSS node with the name “overlay”. Overlay children
whose alignments cause them to be positioned at an edge get the style classes
“.left”, “.right”, “.top”, and/or “.bottom” according to their position.
## Properties
### `updateFunctions`
Additional update functions for type extensions.
### `appearFunctions`
Additional appear functions for type extensions.
### `child`
The main child widget.
### `getChildPosition`
Emitted to determine the position and size of any overlay
child widgets.
A handler for this signal should fill @allocation with
the desired position and size for @widget, relative to
the 'main' child of @overlay.
The default handler for this signal uses the @widget's
halign and valign properties to determine the position
and gives the widget its natural size (except that an
alignment of %GTK_ALIGN_FILL will cause the overlay to
be full-width/height). If the main child is a
`GtkScrolledWindow`, the overlays are placed relative
to its contents.
### `overlay`
The body for the widget "overlay".
### `app`
The application.
### `window`
The window.
## Methods
### `init()`
Initialize `Overlay`.
### `container(modifiers:)`
Get the widget's view storage.
- Parameter modifiers: The view modifiers.
- Returns: The view storage.
### `update(_:modifiers:updateProperties:)`
Update the widget's view storage.
- Parameters:
- storage: The view storage.
- modifiers: The view modifiers.
- updateProperties: Whether to update the view's properties.
### `child(_:)`
The main child widget.
### `getChildPosition(_:)`
Emitted to determine the position and size of any overlay
child widgets.
A handler for this signal should fill @allocation with
the desired position and size for @widget, relative to
the 'main' child of @overlay.
The default handler for this signal uses the @widget's
halign and valign properties to determine the position
and gives the widget its natural size (except that an
alignment of %GTK_ALIGN_FILL will cause the overlay to
be full-width/height). If the main child is a
`GtkScrolledWindow`, the overlays are placed relative
to its contents.
### `overlay(_:)`
Set the body for "overlay".
- Parameter body: The body.
- Returns: The widget.