gtkmm  4.8.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Related Functions | List of all members
Gtk::LayoutManager Class Reference

Base class for layout manager. More...

#include <gtkmm/layoutmanager.h>

Inheritance diagram for Gtk::LayoutManager:
Inheritance graph
[legend]

Public Member Functions

 LayoutManager (LayoutManager && src) noexcept
 
LayoutManageroperator= (LayoutManager && src) noexcept
 
 ~LayoutManager () noexcept override
 
GtkLayoutManager * gobj ()
 Provides access to the underlying C GObject. More...
 
const GtkLayoutManager * gobj () const
 Provides access to the underlying C GObject. More...
 
GtkLayoutManager * gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
void measure (Widget & widget, Orientation orientation, int for_size, int & minimum, int & natural, int & minimum_baseline, int & natural_baseline) const
 Measures the size of the widget using manager, for the given orientation and size. More...
 
void allocate (Widget & widget, int width, int height, int baseline)
 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. More...
 
SizeRequestMode get_request_mode () const
 Retrieves the request mode of manager. More...
 
Widgetget_widget ()
 Retrieves the Gtk::Widget using the given Gtk::LayoutManager. More...
 
const Widgetget_widget () const
 Retrieves the Gtk::Widget using the given Gtk::LayoutManager. More...
 
void layout_changed ()
 Queues a resize on the Gtk::Widget using manager, if any. More...
 
Glib::RefPtr< LayoutChildget_layout_child (Widget & child)
 Retrieves a Gtk::LayoutChild instance for the Gtk::LayoutManager, creating one if necessary. More...
 
Glib::RefPtr< const LayoutChildget_layout_child (Widget & child) const
 Retrieves a Gtk::LayoutChild instance for the Gtk::LayoutManager, creating one if necessary. More...
 

Static Public Member Functions

static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...
 

Protected Member Functions

 LayoutManager ()
 There is no create() method that corresponds to this constructor, because only derived classes shall be created. More...
 
virtual SizeRequestMode get_request_mode_vfunc (const Widget & widget) const
 
virtual void measure_vfunc (const Widget & widget, Orientation orientation, int for_size, int & minimum, int & natural, int & minimum_baseline, int & natural_baseline) const
 
virtual void allocate_vfunc (const Widget & widget, int width, int height, int baseline)
 
virtual Glib::RefPtr< LayoutChildcreate_layout_child_vfunc (const Widget & widget, const Widget & for_child)
 
virtual void root_vfunc ()
 
virtual void unroot_vfunc ()
 

Related Functions

(Note that these are not member functions.)

Glib::RefPtr< Gtk::LayoutManagerwrap (GtkLayoutManager * object, bool take_copy=false)
 A Glib::wrap() method for this object. More...
 

Detailed Description

Base class for layout manager.

Layout managers are delegate classes that handle the preferred size and the allocation of a container 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 one Gtk::LayoutManager instance associated to it at any given time; it is possible, though, to replace the layout manager instance using 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 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 get_layout_child() method; a Gtk::LayoutManager controls the creation of its Gtk::LayoutChild instances by overriding the create_layout_child_vfunc() virtual function.

Gtk::LayoutChild::property_layout_manager() and Gtk::LayoutChild::property_child_widget() 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 get_layout_child() every time it needs to query the layout properties; each Gtk::LayoutChild instance should call layout_changed() every time a property is updated, in order to queue a new size measuring and allocation.

Since gtkmm 3.96:

Constructor & Destructor Documentation

◆ LayoutManager() [1/2]

Gtk::LayoutManager::LayoutManager ( LayoutManager &&  src)
noexcept

◆ ~LayoutManager()

Gtk::LayoutManager::~LayoutManager ( )
overridenoexcept

◆ LayoutManager() [2/2]

Gtk::LayoutManager::LayoutManager ( )
protected

There is no create() method that corresponds to this constructor, because only derived classes shall be created.

Member Function Documentation

◆ allocate()

void Gtk::LayoutManager::allocate ( Widget widget,
int  width,
int  height,
int  baseline 
)

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.

Parameters
widgetThe Gtk::Widget using manager.
widthThe new width of the widget.
heightThe new height of the widget.
baselineThe baseline position of the widget, or -1.

◆ allocate_vfunc()

virtual void Gtk::LayoutManager::allocate_vfunc ( const Widget widget,
int  width,
int  height,
int  baseline 
)
protectedvirtual

◆ create_layout_child_vfunc()

virtual Glib::RefPtr<LayoutChild> Gtk::LayoutManager::create_layout_child_vfunc ( const Widget widget,
const Widget for_child 
)
protectedvirtual

◆ get_layout_child() [1/2]

Glib::RefPtr<LayoutChild> Gtk::LayoutManager::get_layout_child ( Widget child)

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.

Parameters
childA Gtk::Widget.
Returns
A Gtk::LayoutChild.

◆ get_layout_child() [2/2]

Glib::RefPtr<const LayoutChild> Gtk::LayoutManager::get_layout_child ( Widget child) const

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.

Parameters
childA Gtk::Widget.
Returns
A Gtk::LayoutChild.

◆ get_request_mode()

SizeRequestMode Gtk::LayoutManager::get_request_mode ( ) const

Retrieves the request mode of manager.

Returns
A Gtk::SizeRequestMode.

◆ get_request_mode_vfunc()

virtual SizeRequestMode Gtk::LayoutManager::get_request_mode_vfunc ( const Widget widget) const
protectedvirtual

◆ get_type()

static GType Gtk::LayoutManager::get_type ( )
static

Get the GType for this class, for use with the underlying GObject type system.

◆ get_widget() [1/2]

Widget* Gtk::LayoutManager::get_widget ( )

Retrieves the Gtk::Widget using the given Gtk::LayoutManager.

Returns
A Gtk::Widget.

◆ get_widget() [2/2]

const Widget* Gtk::LayoutManager::get_widget ( ) const

Retrieves the Gtk::Widget using the given Gtk::LayoutManager.

Returns
A Gtk::Widget.

◆ gobj() [1/2]

GtkLayoutManager* Gtk::LayoutManager::gobj ( )
inline

Provides access to the underlying C GObject.

◆ gobj() [2/2]

const GtkLayoutManager* Gtk::LayoutManager::gobj ( ) const
inline

Provides access to the underlying C GObject.

◆ gobj_copy()

GtkLayoutManager* Gtk::LayoutManager::gobj_copy ( )

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

◆ layout_changed()

void Gtk::LayoutManager::layout_changed ( )

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.

◆ measure()

void Gtk::LayoutManager::measure ( Widget widget,
Orientation  orientation,
int  for_size,
int &  minimum,
int &  natural,
int &  minimum_baseline,
int &  natural_baseline 
) const

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.

Parameters
widgetThe Gtk::Widget using manager.
orientationThe orientation to measure.
for_sizeSize 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.
minimumThe minimum size for the given size and orientation.
naturalThe natural, or preferred size for the given size and orientation.
minimum_baselineThe baseline position for the minimum size.
natural_baselineThe baseline position for the natural size.

◆ measure_vfunc()

virtual void Gtk::LayoutManager::measure_vfunc ( const Widget widget,
Orientation  orientation,
int  for_size,
int &  minimum,
int &  natural,
int &  minimum_baseline,
int &  natural_baseline 
) const
protectedvirtual

◆ operator=()

LayoutManager& Gtk::LayoutManager::operator= ( LayoutManager &&  src)
noexcept

◆ root_vfunc()

virtual void Gtk::LayoutManager::root_vfunc ( )
protectedvirtual

◆ unroot_vfunc()

virtual void Gtk::LayoutManager::unroot_vfunc ( )
protectedvirtual

Friends And Related Function Documentation

◆ wrap()

Glib::RefPtr< Gtk::LayoutManager > wrap ( GtkLayoutManager *  object,
bool  take_copy = false 
)
related

A Glib::wrap() method for this object.

Parameters
objectThe C instance.
take_copyFalse if the result should take ownership of the C instance. True if it should take a new copy or ref.
Returns
A C++ instance that wraps this C instance.