class Gtk::LayoutManager
- Gtk::LayoutManager
- GObject::Object
- Reference
- Object
Overview
Layout managers are delegate classes that handle the preferred size and the allocation of a widget.
You typically subclass Gtk::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 Gtk::Widget
can only have a Gtk::LayoutManager
instance associated
to it at any given time; it is possible, though, to replace the layout
manager instance using Gtk::Widget#layout_manager=
.
Layout properties
A layout manager can expose properties for controlling the layout of
each child, by creating an object type derived from Gtk::LayoutChild
and installing the properties on it as normal GObject
properties.
Each Gtk::LayoutChild
instance storing the layout properties for a
specific child is created through the Gtk::LayoutManager#layout_child
method; a Gtk::LayoutManager
controls the creation of its Gtk::LayoutChild
instances by overriding the Gtk::LayoutManagerClass.create_layout_child()
virtual function. The typical implementation should look like:
WARNING ⚠️ The following code is in c ⚠️
static Gtk::LayoutChild *
create_layout_child (Gtk::LayoutManager *manager,
Gtk::Widget *container,
Gtk::Widget *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 Gtk::LayoutChild
instance are mandatory. The
Gtk::LayoutManager
will cache the newly created Gtk::LayoutChild
instance
until the widget is removed from its parent, or the parent removes the
layout manager.
Each Gtk::LayoutManager
instance creating a Gtk::LayoutChild
should use
Gtk::LayoutManager#layout_child
every time it needs to query
the layout properties; each Gtk::LayoutChild
instance should call
Gtk::LayoutManager#layout_changed
every time a property is
updated, in order to queue a new size measuring and allocation.
Direct Known Subclasses
- Adw::ClampLayout
- Gtk::BinLayout
- Gtk::BoxLayout
- Gtk::CenterLayout
- Gtk::ConstraintLayout
- Gtk::CustomLayout
- Gtk::FixedLayout
- Gtk::GridLayout
- Gtk::OverlayLayout
Defined in:
lib/gi-crystal/src/auto/gtk-4.0/layout_manager.crConstructors
-
.new
Initialize a new
LayoutManager
.
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#allocate(widget : Gtk::Widget, width : Int32, height : Int32, baseline : Int32) : Nil
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.
-
#layout_changed : Nil
Queues a resize on the
Gtk::Widget
using @manager, if any. -
#layout_child(child : Gtk::Widget) : Gtk::LayoutChild
Retrieves a
Gtk::LayoutChild
instance for theGtk::LayoutManager
, creating one if necessary. -
#measure(widget : Gtk::Widget, orientation : Gtk::Orientation, for_size : Int32) : Nil
Measures the size of the @widget using @manager, for the given @orientation and size.
-
#request_mode : Gtk::SizeRequestMode
Retrieves the request mode of @manager.
-
#widget : Gtk::Widget?
Retrieves the
Gtk::Widget
using the givenGtk::LayoutManager
.
Instance methods inherited from class GObject::Object
bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding
bind_property,
bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding
bind_property_full,
data(key : String) : Pointer(Void)?
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
notify(property_name : String) : Nil
notify,
notify_by_pspec(pspec : GObject::ParamSpec) : Nil
notify_by_pspec,
notify_signal
notify_signal,
property(property_name : String, value : _) : Nil
property,
qdata(quark : UInt32) : Pointer(Void)?
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void)?) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void)?
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void)?
steal_qdata,
thaw_notify : Nil
thaw_notify,
to_unsafe : Pointer(Void)
to_unsafe,
watch_closure(closure : GObject::Closure) : Nil
watch_closure
Constructor methods inherited from class GObject::Object
cast(obj : GObject::Object) : self
cast,
cast?(obj : GObject::Object) : self?
cast?,
new(pointer : Pointer(Void), transfer : GICrystal::Transfer)new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv
Class methods inherited from class GObject::Object
compat_control(what : UInt64, data : Pointer(Void)?) : UInt64
compat_control,
g_type : UInt64
g_type,
interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec
interface_find_property,
interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec)
interface_list_properties
Constructor Detail
Class Method Detail
Instance Method Detail
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.
Queues a resize on the Gtk::Widget
using @manager, if any.
This function should be called by subclasses of Gtk::LayoutManager
in response to changes to their layout management policies.
Retrieves a Gtk::LayoutChild
instance for the Gtk::LayoutManager
,
creating one if necessary.
The @child widget must be a child of the widget using @manager.
The Gtk::LayoutChild
instance is owned by the Gtk::LayoutManager
,
and is guaranteed to exist as long as @child is a child of the
Gtk::Widget
using the given Gtk::LayoutManager
.
Measures the size of the @widget using @manager, for the given @orientation and size.
See the Gtk::Widget
documentation on layout management for
more details.