Gnome::Gtk4::LayoutManager
Table of Contents
Description§
Layout managers are delegate classes that handle the preferred size and the allocation of a widget.
You typically subclass Gnome::Gtk4::LayoutManager if you want to implement a layout policy for the children of a widget, or if you want to determine the size of a widget depending on its contents.
Each Gnome::Gtk4::Widget can only have a Gnome::Gtk4::LayoutManager instance associated to it at any given time; it is possible, though, to replace the layout manager instance using .set-layout-manager() in class Widget.
Layout properties§
A layout manager can expose properties for controlling the layout of each child, by creating an object type derived from Gnome::Gtk4::LayoutChild and installing the properties on it as normal Gnome::GObject::Object properties.
Each Gnome::Gtk4::LayoutChild instance storing the layout properties for a specific child is created through the .get-layout-child() method; a Gnome::Gtk4::LayoutManager controls the creation of its Gnome::Gtk4::LayoutChild instances by overriding the GtkLayoutManagerClass.create_layout_child() virtual function. The typical implementation should look like:
The layout-manager defined in Gnome::Gtk4::LayoutChild and child-widget defined in Gnome::Gtk4::LayoutChild properties on the newly created Gnome::Gtk4::LayoutChild instance are mandatory. The Gnome::Gtk4::LayoutManager will cache the newly created Gnome::Gtk4::LayoutChild instance until the widget is removed from its parent, or the parent removes the layout manager.
Each Gnome::Gtk4::LayoutManager instance creating a Gnome::Gtk4::LayoutChild should use .get-layout-child() every time it needs to query the layout properties; each Gnome::Gtk4::LayoutChild instance should call .layout-changed() every time a property is updated, in order to queue a new size measuring and allocation.
Uml Diagram§
UNKNOWN image§
=for image :class<inline> :src<asset_files/images/plantuml/LayoutManager.png> :width<70\%>Class initialization§
new§
:native-object§
Create an object using a native object from an object of the same type found elsewhere. See also Gnome::N::TopLevelSupportClass.
multi method new ( N-Object() :$native-object! )
Methods§
allocate§
Assigns the given $width, $height, and $baseline to a $widget, and computes the position and sizes of the children of the $widget using the layout management policy of $manager.
method allocate ( N-Object() $widget, Int() $width, Int() $height, Int() $baseline )
- $widget; the Gnome::Gtk4::Widget using $manager.
- $width; the new width of the $widget.
- $height; the new height of the $widget.
- $baseline; the baseline position of the $widget, or -1.
get-layout-child§
Retrieves a Gnome::Gtk4::LayoutChild instance for the Gnome::Gtk4::LayoutManager, creating one if necessary.
The $child widget must be a child of the widget using $manager.
The Gnome::Gtk4::LayoutChild instance is owned by the Gnome::Gtk4::LayoutManager, and is guaranteed to exist as long as $child is a child of the Gnome::Gtk4::Widget using the given Gnome::Gtk4::LayoutManager.
method get-layout-child ( N-Object() $child --> N-Object )
- $child; a Gnome::Gtk4::Widget.
Return value; a Gnome::Gtk4::LayoutChild.
get-request-mode§
Retrieves the request mode of $manager.
method get-request-mode (--> GtkSizeRequestMode )
Return value; a enumeration GtkSizeRequestMode defined in Gnome::Gtk4::T-enums.
get-widget§
Retrieves the Gnome::Gtk4::Widget using the given Gnome::Gtk4::LayoutManager.
method get-widget (--> N-Object )
Return value; a Gnome::Gtk4::Widget.
layout-changed§
Queues a resize on the Gnome::Gtk4::Widget using $manager, if any.
This function should be called by subclasses of Gnome::Gtk4::LayoutManager in response to changes to their layout management policies.
method layout-changed ( )
measure§
Measures the size of the $widget using $manager, for the given $orientation and size.
See the Gnome::Gtk4::Widget documentation on layout management for more details.
method measure ( N-Object() $widget, GtkOrientation $orientation, Int() $for-size, Array[Int] $minimum, Array[Int] $natural, Array[Int] $minimum-baseline, Array[Int] $natural-baseline )
- $widget; the Gnome::Gtk4::Widget using $manager.
- $orientation; the orientation to measure.
- $for-size; Size for the opposite of $orientation; for instance, if the $orientation is GTK_ORIENTATION_HORIZONTAL, this is the height of the widget; if the $orientation is GTK_ORIENTATION_VERTICAL, this is the width of the widget. This allows to measure the height for the given width, and the width for the given height. Use -1 if the size is not known.
- $minimum; (transfer ownership: full) the minimum size for the given size and orientation.
- $natural; (transfer ownership: full) the natural, or preferred size for the given size and orientation.
- $minimum-baseline; (transfer ownership: full) the baseline position for the minimum size.
- $natural-baseline; (transfer ownership: full) the baseline position for the natural size.
About my projects, examples and tutorials