pub trait LayoutManagerExt: 'static {
// Required methods
fn allocate<P: IsA<Container>>(
&self,
container: &P,
allocation: &ActorBox,
flags: AllocationFlags,
);
fn child_get_property<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
property_name: &str,
value: &mut Value,
);
fn child_set_property<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
property_name: &str,
value: &Value,
);
fn find_child_property(&self, name: &str) -> Option<ParamSpec>;
fn get_child_meta<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
) -> Option<LayoutMeta>;
fn get_preferred_height<P: IsA<Container>>(
&self,
container: &P,
for_width: f32,
) -> (f32, f32);
fn get_preferred_width<P: IsA<Container>>(
&self,
container: &P,
for_height: f32,
) -> (f32, f32);
fn layout_changed(&self);
fn list_child_properties(&self) -> Vec<ParamSpec>;
fn set_container<P: IsA<Container>>(&self, container: Option<&P>);
fn connect_layout_changed<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId;
}
Expand description
Trait containing all LayoutManager
methods.
§Implementors
BinLayout
, BoxLayout
, FixedLayout
, FlowLayout
, GridLayout
, LayoutManager
Required Methods§
Sourcefn allocate<P: IsA<Container>>(
&self,
container: &P,
allocation: &ActorBox,
flags: AllocationFlags,
)
fn allocate<P: IsA<Container>>( &self, container: &P, allocation: &ActorBox, flags: AllocationFlags, )
Sourcefn child_get_property<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
property_name: &str,
value: &mut Value,
)
fn child_get_property<P: IsA<Container>, Q: IsA<Actor>>( &self, container: &P, actor: &Q, property_name: &str, value: &mut Value, )
Gets a property on the LayoutMeta
created by self
and
attached to a child of container
The gobject::Value
must already be initialized to the type of the property
and has to be unset with gobject::Value::unset
after extracting the real
value out of it
§container
a Container
using self
§actor
a Actor
child of container
§property_name
the name of the property to get
§value
a gobject::Value
with the value of the property to get
Sourcefn child_set_property<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
property_name: &str,
value: &Value,
)
fn child_set_property<P: IsA<Container>, Q: IsA<Actor>>( &self, container: &P, actor: &Q, property_name: &str, value: &Value, )
Sourcefn find_child_property(&self, name: &str) -> Option<ParamSpec>
fn find_child_property(&self, name: &str) -> Option<ParamSpec>
Retrieves the gobject::ParamSpec
for the layout property name
inside
the LayoutMeta
sub-class used by self
§name
the name of the property
§Returns
a gobject::ParamSpec
describing the property,
or None
if no property with that name exists. The returned
gobject::ParamSpec
is owned by the layout manager and should not be
modified or freed
Sourcefn get_child_meta<P: IsA<Container>, Q: IsA<Actor>>(
&self,
container: &P,
actor: &Q,
) -> Option<LayoutMeta>
fn get_child_meta<P: IsA<Container>, Q: IsA<Actor>>( &self, container: &P, actor: &Q, ) -> Option<LayoutMeta>
Retrieves the LayoutMeta
that the layout self
associated
to the actor
child of container
, eventually by creating one if the
LayoutManager
supports layout properties
§container
a Container
using self
§actor
a Actor
child of container
§Returns
a LayoutMeta
, or None
if the
LayoutManager
does not have layout properties. The returned
layout meta instance is owned by the LayoutManager
and it
should not be unreferenced
Sourcefn get_preferred_height<P: IsA<Container>>(
&self,
container: &P,
for_width: f32,
) -> (f32, f32)
fn get_preferred_height<P: IsA<Container>>( &self, container: &P, for_width: f32, ) -> (f32, f32)
Computes the minimum and natural heights of the container
according
to self
.
See also ActorExt::get_preferred_height
§container
the Container
using self
§for_width
the width for which the height should be computed, or -1
§min_height_p
return location for the minimum height
of the layout, or None
§nat_height_p
return location for the natural height
of the layout, or None
Sourcefn get_preferred_width<P: IsA<Container>>(
&self,
container: &P,
for_height: f32,
) -> (f32, f32)
fn get_preferred_width<P: IsA<Container>>( &self, container: &P, for_height: f32, ) -> (f32, f32)
Computes the minimum and natural widths of the container
according
to self
.
See also ActorExt::get_preferred_width
§container
the Container
using self
§for_height
the height for which the width should be computed, or -1
§min_width_p
return location for the minimum width
of the layout, or None
§nat_width_p
return location for the natural width
of the layout, or None
Sourcefn layout_changed(&self)
fn layout_changed(&self)
Emits the LayoutManager::layout-changed
signal on self
This function should only be called by implementations of the
LayoutManager
class
Sourcefn list_child_properties(&self) -> Vec<ParamSpec>
fn list_child_properties(&self) -> Vec<ParamSpec>
Retrieves all the gobject::ParamSpec
s for the layout properties
stored inside the LayoutMeta
sub-class used by self
§n_pspecs
return location for the number of returned
gobject::ParamSpec
s
§Returns
the newly-allocated,
None
-terminated array of gobject::ParamSpec
s. Use g_free
to free the
resources allocated for the array
Sourcefn set_container<P: IsA<Container>>(&self, container: Option<&P>)
fn set_container<P: IsA<Container>>(&self, container: Option<&P>)
If the LayoutManager
sub-class allows it, allow
adding a weak reference of the container
using self
from within the layout manager
The layout manager should not increase the reference
count of the container
§container
a Container
using self
Sourcefn connect_layout_changed<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_layout_changed<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
The ::layout-changed signal is emitted each time a layout manager
has been changed. Every Actor
using the manager
instance
as a layout manager should connect a handler to the ::layout-changed
signal and queue a relayout on themselves:
static void layout_changed (ClutterLayoutManager *manager,
ClutterActor *self)
{
clutter_actor_queue_relayout (self);
}
...
self->manager = g_object_ref_sink (manager);
g_signal_connect (self->manager, "layout-changed",
G_CALLBACK (layout_changed),
self);
Sub-classes of LayoutManager
that implement a layout that
can be controlled or changed using parameters should emit the
::layout-changed signal whenever one of the parameters changes,
by using LayoutManagerExt::layout_changed
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.