Object Hierarchy:

Object hierarchy for LayoutManager


[ CCode ( type_id = "gtk_layout_manager_get_type ()" ) ]
public abstract class LayoutManager : Object

Layout managers are delegate classes that handle the preferred size and the allocation of a widget.

You typically subclass `GtkLayoutManager` 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 `GtkWidget` can only have a `GtkLayoutManager` instance associated to it at any given time; it is possible, though, to replace the layout manager instance using [method@Gtk.Widget.set_layout_manager].

Layout properties

A layout manager can expose properties for controlling the layout of each child, by creating an object type derived from [class@Gtk.LayoutChild ] and installing the properties on it as normal `GObject` properties.

Each `GtkLayoutChild` instance storing the layout properties for a specific child is created through the [ method@Gtk.LayoutManager.get_layout_child] method; a `GtkLayoutManager` controls the creation of its `GtkLayoutChild` instances by overriding the GtkLayoutManagerClass.create_layout_child() virtual function. The typical implementation should look like:

```c static GtkLayoutChild * create_layout_child (GtkLayoutManager *manager, GtkWidget *container, GtkWidget *child) { return g_object_new ( your_layout_child_get_type (), "layout-manager", manager, "child-widget", child, NULL); } ```

The [property@Gtk.LayoutChild:layout-manager] and [property@Gtk.LayoutChild:child-widget] properties on the newly created `GtkLayoutChild` instance are mandatory. The `GtkLayoutManager` will cache the newly created `GtkLayoutChild` instance until the widget is removed from its parent, or the parent removes the layout manager.

Each `GtkLayoutManager` instance creating a `GtkLayoutChild` should use [method@Gtk.LayoutManager.get_layout_child] every time it needs to query the layout properties; each `GtkLayoutChild` instance should call [method@Gtk.LayoutManager.layout_changed] every time a property is updated, in order to queue a new size measuring and allocation.

Namespace: Gtk
Package: gtk4


Creation methods:


Inherited Members: