Blob Blame History Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ClutterLayoutManager: Clutter Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="Clutter Reference Manual">
<link rel="up" href="ch01.html" title="Abstract classes and interfaces">
<link rel="prev" href="ClutterMedia.html" title="ClutterMedia">
<link rel="next" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta">
<meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#ClutterLayoutManager.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                  <a href="#ClutterLayoutManager.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_signals">  <span class="dim">|</span> 
                  <a href="#ClutterLayoutManager.signals" class="shortcut">Signals</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ClutterMedia.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="ClutterLayoutMeta.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="ClutterLayoutManager"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="ClutterLayoutManager.top_of_page"></a>ClutterLayoutManager</span></h2>
<p>ClutterLayoutManager — Layout managers base class</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="ClutterLayoutManager.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-width" title="clutter_layout_manager_get_preferred_width ()">clutter_layout_manager_get_preferred_width</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-height" title="clutter_layout_manager_get_preferred_height ()">clutter_layout_manager_get_preferred_height</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-allocate" title="clutter_layout_manager_allocate ()">clutter_layout_manager_allocate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()">clutter_layout_manager_layout_changed</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-set-container" title="clutter_layout_manager_set_container ()">clutter_layout_manager_set_container</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="returnvalue">ClutterLayoutMeta</span></a> *
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-child-meta" title="clutter_layout_manager_get_child_meta ()">clutter_layout_manager_get_child_meta</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set" title="clutter_layout_manager_child_set ()">clutter_layout_manager_child_set</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set-property" title="clutter_layout_manager_child_set_property ()">clutter_layout_manager_child_set_property</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-get" title="clutter_layout_manager_child_get ()">clutter_layout_manager_child_get</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-get-property" title="clutter_layout_manager_child_get_property ()">clutter_layout_manager_child_get_property</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">GParamSpec</span> *
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-find-child-property" title="clutter_layout_manager_find_child_property ()">clutter_layout_manager_find_child_property</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">GParamSpec</span> **
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-list-child-properties" title="clutter_layout_manager_list_child_properties ()">clutter_layout_manager_list_child_properties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="returnvalue">ClutterAlpha</span></a> *
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()">clutter_layout_manager_begin_animation</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-end-animation" title="clutter_layout_manager_end_animation ()">clutter_layout_manager_end_animation</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-animation-progress" title="clutter_layout_manager_get_animation_progress ()">clutter_layout_manager_get_animation_progress</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.signals"></a><h2>Signals</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="signals_return">
<col width="300px" class="signals_name">
<col width="200px" class="signals_flags">
</colgroup>
<tbody><tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title="The “layout-changed” signal">layout-changed</a></td>
<td class="signal_flags">Run Last</td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-struct" title="ClutterLayoutManager">ClutterLayoutManager</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass" title="struct ClutterLayoutManagerClass">ClutterLayoutManagerClass</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen">    GObject
    <span class="lineart">╰──</span> GInitiallyUnowned
        <span class="lineart">╰──</span> ClutterLayoutManager
            <span class="lineart">├──</span> <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout">ClutterBinLayout</a>
            <span class="lineart">├──</span> <a class="link" href="ClutterBoxLayout.html" title="ClutterBoxLayout">ClutterBoxLayout</a>
            <span class="lineart">├──</span> <a class="link" href="ClutterFixedLayout.html" title="ClutterFixedLayout">ClutterFixedLayout</a>
            <span class="lineart">├──</span> <a class="link" href="ClutterFlowLayout.html" title="ClutterFlowLayout">ClutterFlowLayout</a>
            <span class="lineart">├──</span> <a class="link" href="ClutterGridLayout.html" title="ClutterGridLayout">ClutterGridLayout</a>
            <span class="lineart">╰──</span> <a class="link" href="ClutterTableLayout.html" title="ClutterTableLayout">ClutterTableLayout</a>
</pre>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.description"></a><h2>Description</h2>
<p><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> is a base abstract class for layout managers. A
layout manager implements the layouting policy for a composite or a
container actor: it controls the preferred size of the actor to which
it has been paired, and it controls the allocation of its children.</p>
<p>Any composite or container <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> subclass can delegate the
layouting of its children to a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>. Clutter provides
a generic container using <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> called <a class="link" href="ClutterBox.html" title="ClutterBox"><span class="type">ClutterBox</span></a>.</p>
<p>Clutter provides some simple <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-classes, like
<a class="link" href="ClutterFlowLayout.html" title="ClutterFlowLayout"><span class="type">ClutterFlowLayout</span></a> and <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a>.</p>
<div class="refsect3">
<a name="id-1.5.2.6.7.5"></a><h4>Implementing a ClutterLayoutManager</h4>
<p>The implementation of a layout manager does not differ from  the
implementation of the size requisition and allocation bits of
<a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, so you should read the relative documentation
forr subclassing <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>.</p>
<p>The layout manager implementation can hold a back pointer to the
<a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> by implementing the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass.set-container"><code class="function">ClutterLayoutManagerClass.set_container()</code></a>
virtual function. The layout manager should not hold a real reference (i.e.
call <code class="function">g_object_ref()</code>) on the container actor, to avoid reference cycles.</p>
<p>If a layout manager has properties affecting the layout policies then it should
emit the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title="The “layout-changed” signal"><span class="type">“layout-changed”</span></a> signal on itself by using the
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()"><code class="function">clutter_layout_manager_layout_changed()</code></a> function whenever one of these properties
changes.</p>
</div>
<div class="refsect3">
<a name="id-1.5.2.6.7.6"></a><h4>Layout Properties</h4>
<p>If a layout manager has layout properties, that is properties that
should exist only as the result of the presence of a specific (layout
manager, container actor, child actor) combination, and it wishes to store
those properties inside a <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>, then it should override the
<a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass.get-child-meta-type"><code class="function">ClutterLayoutManagerClass.get_child_meta_type()</code></a> virtual function to return
the <span class="type">GType</span> of the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used to store the layout
properties; optionally, the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class might also
override the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass.create-child-meta"><code class="function">ClutterLayoutManagerClass.create_child_meta()</code></a> virtual function
to control how the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> instance is created, otherwise the
default implementation will be equivalent to:</p>
<div class="informalexample">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="usertype">ClutterLayoutManagerClass</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">klass</span><span class="symbol">;</span>
<span class="usertype">GType</span><span class="normal"> meta_type</span><span class="symbol">;</span>

<span class="normal">klass </span><span class="symbol">=</span><span class="normal"> </span><span class="function">CLUTTER_LAYOUT_MANAGER_GET_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
<span class="normal">meta_type </span><span class="symbol">=</span><span class="normal"> klass</span><span class="symbol">-&gt;</span><span class="function">get_child_meta_type</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>

<span class="keyword">return</span><span class="normal"> </span><span class="function">g_object_new</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">meta_type</span><span class="symbol">,</span>
<span class="normal">                     </span><span class="string">"manager"</span><span class="symbol">,</span><span class="normal"> manager</span><span class="symbol">,</span>
<span class="normal">                     </span><span class="string">"container"</span><span class="symbol">,</span><span class="normal"> container</span><span class="symbol">,</span>
<span class="normal">                     </span><span class="string">"actor"</span><span class="symbol">,</span><span class="normal"> actor</span><span class="symbol">,</span>
<span class="normal">                     NULL</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

<p></p>
<p>Where <code class="literal">manager</code> is the  <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>, <code class="literal">container</code> is the
<a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>, and <code class="literal">actor</code> is
the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a>.</p>
</div>
<div class="refsect3">
<a name="id-1.5.2.6.7.7"></a><h4>Using ClutterLayoutManager with ClutterScript</h4>
<p><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> instances can be created in the same way
as other objects in <a class="link" href="ClutterScript.html" title="ClutterScript"><span class="type">ClutterScript</span></a>; properties can be set using the
common syntax.</p>
<p>Layout properties can be set on children of a container with
a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> using the <code class="literal">layout::</code> modifier on the property
name, for instance:</p>
<div class="informalexample">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="cbracket">{</span>
<span class="normal">  </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterBox"</span><span class="symbol">,</span>
<span class="normal">  </span><span class="string">"layout-manager"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTableLayout"</span><span class="normal"> </span><span class="cbracket">}</span><span class="symbol">,</span>
<span class="normal">  </span><span class="string">"children"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="symbol">[</span>
<span class="normal">    </span><span class="cbracket">{</span>
<span class="normal">      </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTexture"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"filename"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"image-00.png"</span><span class="symbol">,</span>

<span class="normal">      </span><span class="string">"layout::row"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::column"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::x-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"left"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::y-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"center"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::x-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::y-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span>
<span class="normal">    </span><span class="cbracket">}</span><span class="symbol">,</span>
<span class="normal">    </span><span class="cbracket">{</span>
<span class="normal">      </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTexture"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"filename"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"image-01.png"</span><span class="symbol">,</span>

<span class="normal">      </span><span class="string">"layout::row"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::column"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::x-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"right"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::y-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"center"</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::x-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span><span class="symbol">,</span>
<span class="normal">      </span><span class="string">"layout::y-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="symbol">]</span>
<span class="cbracket">}</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

<p></p>
<p><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> is available since Clutter 1.2</p>
</div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="clutter-layout-manager-get-preferred-width"></a><h3>clutter_layout_manager_get_preferred_width ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_get_preferred_width
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> for_height</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> *min_width_p</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> *nat_width_p</code></em>);</pre>
<p>Computes the minimum and natural widths of the <em class="parameter"><code>container</code></em>
 according
to <em class="parameter"><code>manager</code></em>
.</p>
<p>See also <a class="link" href="ClutterActor.html#clutter-actor-get-preferred-width" title="clutter_actor_get_preferred_width ()"><code class="function">clutter_actor_get_preferred_width()</code></a></p>
<div class="refsect3">
<a name="clutter-layout-manager-get-preferred-width.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>for_height</p></td>
<td class="parameter_description"><p>the height for which the width should be computed, or -1</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>min_width_p</p></td>
<td class="parameter_description"><p> return location for the minimum width
of the layout, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>nat_width_p</p></td>
<td class="parameter_description"><p> return location for the natural width
of the layout, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-get-preferred-height"></a><h3>clutter_layout_manager_get_preferred_height ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_get_preferred_height
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> for_width</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> *min_height_p</code></em>,
                                <em class="parameter"><code><span class="type">gfloat</span> *nat_height_p</code></em>);</pre>
<p>Computes the minimum and natural heights of the <em class="parameter"><code>container</code></em>
 according
to <em class="parameter"><code>manager</code></em>
.</p>
<p>See also <a class="link" href="ClutterActor.html#clutter-actor-get-preferred-height" title="clutter_actor_get_preferred_height ()"><code class="function">clutter_actor_get_preferred_height()</code></a></p>
<div class="refsect3">
<a name="clutter-layout-manager-get-preferred-height.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>for_width</p></td>
<td class="parameter_description"><p>the width for which the height should be computed, or -1</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>min_height_p</p></td>
<td class="parameter_description"><p> return location for the minimum height
of the layout, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>nat_height_p</p></td>
<td class="parameter_description"><p> return location for the natural height
of the layout, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-allocate"></a><h3>clutter_layout_manager_allocate ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_allocate (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                 <em class="parameter"><code>const <a class="link" href="clutter-Base-geometric-types.html#ClutterActorBox"><span class="type">ClutterActorBox</span></a> *allocation</code></em>,
                                 <em class="parameter"><code><a class="link" href="ClutterActor.html#ClutterAllocationFlags" title="enum ClutterAllocationFlags"><span class="type">ClutterAllocationFlags</span></a> flags</code></em>);</pre>
<p>Allocates the children of <em class="parameter"><code>container</code></em>
 given an area</p>
<p>See also <a class="link" href="ClutterActor.html#clutter-actor-allocate" title="clutter_actor_allocate ()"><code class="function">clutter_actor_allocate()</code></a></p>
<div class="refsect3">
<a name="clutter-layout-manager-allocate.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>allocation</p></td>
<td class="parameter_description"><p>the <a class="link" href="clutter-Base-geometric-types.html#ClutterActorBox"><span class="type">ClutterActorBox</span></a> containing the allocated area
of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>flags</p></td>
<td class="parameter_description"><p>the allocation flags</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-layout-changed"></a><h3>clutter_layout_manager_layout_changed ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_layout_changed (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
<p>Emits the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title="The “layout-changed” signal"><span class="type">“layout-changed”</span></a> signal on <em class="parameter"><code>manager</code></em>
</p>
<p>This function should only be called by implementations of the
<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> class</p>
<div class="refsect3">
<a name="clutter-layout-manager-layout-changed.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-set-container"></a><h3>clutter_layout_manager_set_container ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_set_container (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                      <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>);</pre>
<p>If the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class allows it, allow
adding a weak reference of the <em class="parameter"><code>container</code></em>
 using <em class="parameter"><code>manager</code></em>

from within the layout manager</p>
<p>The layout manager should not increase the reference
count of the <em class="parameter"><code>container</code></em>
</p>
<div class="refsect3">
<a name="clutter-layout-manager-set-container.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p> a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-get-child-meta"></a><h3>clutter_layout_manager_get_child_meta ()</h3>
<pre class="programlisting"><a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="returnvalue">ClutterLayoutMeta</span></a> *
clutter_layout_manager_get_child_meta (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                       <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                       <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>);</pre>
<p>Retrieves the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> that the layout <em class="parameter"><code>manager</code></em>
 associated
to the <em class="parameter"><code>actor</code></em>
 child of <em class="parameter"><code>container</code></em>
, eventually by creating one if the
<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> supports layout properties</p>
<div class="refsect3">
<a name="clutter-layout-manager-get-child-meta.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>actor</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-layout-manager-get-child-meta.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>, or <code class="literal">NULL</code> if the
<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> does not have layout properties. The returned
layout meta instance is owned by the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> and it
should not be unreferenced. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-child-set"></a><h3>clutter_layout_manager_child_set ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_child_set (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                  <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                  <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
                                  <em class="parameter"><code>const <span class="type">gchar</span> *first_property</code></em>,
                                  <em class="parameter"><code>...</code></em>);</pre>
<p>Sets a list of properties and their values on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>
associated by <em class="parameter"><code>manager</code></em>
 to a child of <em class="parameter"><code>container</code></em>
</p>
<p>Languages bindings should use <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set-property" title="clutter_layout_manager_child_set_property ()"><code class="function">clutter_layout_manager_child_set_property()</code></a>
instead</p>
<div class="refsect3">
<a name="clutter-layout-manager-child-set.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>actor</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>first_property</p></td>
<td class="parameter_description"><p>the first property name</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>...</p></td>
<td class="parameter_description"><p>a list of property name and value pairs</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-child-set-property"></a><h3>clutter_layout_manager_child_set_property ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_child_set_property
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
                                <em class="parameter"><code>const <span class="type">gchar</span> *property_name</code></em>,
                                <em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>);</pre>
<p>Sets a property on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em>
 and
attached to a child of <em class="parameter"><code>container</code></em>
</p>
<div class="refsect3">
<a name="clutter-layout-manager-child-set-property.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>actor</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>property_name</p></td>
<td class="parameter_description"><p>the name of the property to set</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span> with the value of the property to set</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-child-get"></a><h3>clutter_layout_manager_child_get ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_child_get (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                  <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                  <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
                                  <em class="parameter"><code>const <span class="type">gchar</span> *first_property</code></em>,
                                  <em class="parameter"><code>...</code></em>);</pre>
<p>Retrieves the values for a list of properties out of the
<a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em>
 and attached to the
child of a <em class="parameter"><code>container</code></em>
</p>
<div class="refsect3">
<a name="clutter-layout-manager-child-get.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>actor</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>first_property</p></td>
<td class="parameter_description"><p>the name of the first property</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>...</p></td>
<td class="parameter_description"><p>a list of property name and return location for the value pairs</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-child-get-property"></a><h3>clutter_layout_manager_child_get_property ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_child_get_property
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
                                <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
                                <em class="parameter"><code>const <span class="type">gchar</span> *property_name</code></em>,
                                <em class="parameter"><code><span class="type">GValue</span> *value</code></em>);</pre>
<p>Gets a property on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em>
 and
attached to a child of <em class="parameter"><code>container</code></em>
</p>
<p>The <span class="type">GValue</span> must already be initialized to the type of the property
and has to be unset with <code class="function">g_value_unset()</code> after extracting the real
value out of it</p>
<div class="refsect3">
<a name="clutter-layout-manager-child-get-property.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>container</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>actor</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>property_name</p></td>
<td class="parameter_description"><p>the name of the property to get</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span> with the value of the property to get</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-find-child-property"></a><h3>clutter_layout_manager_find_child_property ()</h3>
<pre class="programlisting"><span class="returnvalue">GParamSpec</span> *
clutter_layout_manager_find_child_property
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);</pre>
<p>Retrieves the <span class="type">GParamSpec</span> for the layout property <em class="parameter"><code>name</code></em>
 inside
the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by <em class="parameter"><code>manager</code></em>
</p>
<div class="refsect3">
<a name="clutter-layout-manager-find-child-property.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>name</p></td>
<td class="parameter_description"><p>the name of the property</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-layout-manager-find-child-property.returns"></a><h4>Returns</h4>
<p> a <span class="type">GParamSpec</span> describing the property,
or <code class="literal">NULL</code> if no property with that name exists. The returned
<span class="type">GParamSpec</span> is owned by the layout manager and should not be
modified or freed. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-list-child-properties"></a><h3>clutter_layout_manager_list_child_properties ()</h3>
<pre class="programlisting"><span class="returnvalue">GParamSpec</span> **
clutter_layout_manager_list_child_properties
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><span class="type">guint</span> *n_pspecs</code></em>);</pre>
<p>Retrieves all the <span class="type">GParamSpec</span>s for the layout properties
stored inside the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by <em class="parameter"><code>manager</code></em>
</p>
<div class="refsect3">
<a name="clutter-layout-manager-list-child-properties.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>n_pspecs</p></td>
<td class="parameter_description"><p> return location for the number of returned
<span class="type">GParamSpec</span>s. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-layout-manager-list-child-properties.returns"></a><h4>Returns</h4>
<p> the newly-allocated,
<code class="literal">NULL</code>-terminated array of <span class="type">GParamSpec</span>s. Use <code class="function">g_free()</code> to free the
resources allocated for the array. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=n_pspecs]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-begin-animation"></a><h3>clutter_layout_manager_begin_animation ()</h3>
<pre class="programlisting"><a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="returnvalue">ClutterAlpha</span></a> *
clutter_layout_manager_begin_animation
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
                                <em class="parameter"><code><span class="type">guint</span> duration</code></em>,
                                <em class="parameter"><code><span class="type">gulong</span> mode</code></em>);</pre>
<div class="warning"><p><code class="literal">clutter_layout_manager_begin_animation</code> has been deprecated since version 1.12 and should not be used in newly-written code.</p></div>
<p>Begins an animation of <em class="parameter"><code>duration</code></em>
 milliseconds, using the provided
easing <em class="parameter"><code>mode</code></em>
</p>
<p>The easing mode can be specified either as a <a class="link" href="ClutterTimeline.html#ClutterAnimationMode" title="enum ClutterAnimationMode"><span class="type">ClutterAnimationMode</span></a>
or as a logical id returned by <a class="link" href="ClutterAlpha.html#clutter-alpha-register-func" title="clutter_alpha_register_func ()"><code class="function">clutter_alpha_register_func()</code></a></p>
<p>The result of this function depends on the <em class="parameter"><code>manager</code></em>
 implementation</p>
<div class="refsect3">
<a name="clutter-layout-manager-begin-animation.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>duration</p></td>
<td class="parameter_description"><p>the duration of the animation, in milliseconds</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>mode</p></td>
<td class="parameter_description"><p>the easing mode of the animation</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-layout-manager-begin-animation.returns"></a><h4>Returns</h4>
<p> The <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="type">ClutterAlpha</span></a> created by the
layout manager; the returned instance is owned by the layout
manager and should not be unreferenced. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-end-animation"></a><h3>clutter_layout_manager_end_animation ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_layout_manager_end_animation (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
<div class="warning"><p><code class="literal">clutter_layout_manager_end_animation</code> has been deprecated since version 1.12 and should not be used in newly-written code.</p></div>
<p>Ends an animation started by <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a></p>
<p>The result of this call depends on the <em class="parameter"><code>manager</code></em>
 implementation</p>
<div class="refsect3">
<a name="clutter-layout-manager-end-animation.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-layout-manager-get-animation-progress"></a><h3>clutter_layout_manager_get_animation_progress ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
clutter_layout_manager_get_animation_progress
                               (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
<div class="warning"><p><code class="literal">clutter_layout_manager_get_animation_progress</code> has been deprecated since version 1.12 and should not be used in newly-written code.</p></div>
<p>Retrieves the progress of the animation, if one has been started by
<a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a></p>
<p>The returned value has the same semantics of the <a class="link" href="ClutterAlpha.html#ClutterAlpha--alpha" title="The “alpha” property"><span class="type">“alpha”</span></a>
value</p>
<div class="refsect3">
<a name="clutter-layout-manager-get-animation-progress.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-layout-manager-get-animation-progress.returns"></a><h4>Returns</h4>
<p> the progress of the animation</p>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="ClutterLayoutManager-struct"></a><h3>ClutterLayoutManager</h3>
<pre class="programlisting">typedef struct _ClutterLayoutManager ClutterLayoutManager;</pre>
<p>The <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> structure contains only private data
and should be accessed using the provided API</p>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterLayoutManagerClass"></a><h3>struct ClutterLayoutManagerClass</h3>
<pre class="programlisting">struct ClutterLayoutManagerClass {
  void               (* get_preferred_width)    (ClutterLayoutManager   *manager,
                                                 ClutterContainer       *container,
                                                 gfloat                  for_height,
                                                 gfloat                 *min_width_p,
                                                 gfloat                 *nat_width_p);
  void               (* get_preferred_height)   (ClutterLayoutManager   *manager,
                                                 ClutterContainer       *container,
                                                 gfloat                  for_width,
                                                 gfloat                 *min_height_p,
                                                 gfloat                 *nat_height_p);
  void               (* allocate)               (ClutterLayoutManager   *manager,
                                                 ClutterContainer       *container,
                                                 const ClutterActorBox  *allocation,
                                                 ClutterAllocationFlags  flags);

  void               (* set_container)          (ClutterLayoutManager   *manager,
                                                 ClutterContainer       *container);

  GType              (* get_child_meta_type)    (ClutterLayoutManager   *manager);
  ClutterLayoutMeta *(* create_child_meta)      (ClutterLayoutManager   *manager,
                                                 ClutterContainer       *container,
                                                 ClutterActor           *actor);

  /* deprecated */
  ClutterAlpha *     (* begin_animation)        (ClutterLayoutManager   *manager,
                                                 guint                   duration,
                                                 gulong                  mode);
  /* deprecated */
  gdouble            (* get_animation_progress) (ClutterLayoutManager   *manager);
  /* deprecated */
  void               (* end_animation)          (ClutterLayoutManager   *manager);

  void               (* layout_changed)         (ClutterLayoutManager   *manager);
};
</pre>
<p>The <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass" title="struct ClutterLayoutManagerClass"><span class="type">ClutterLayoutManagerClass</span></a> structure contains only private
data and should be accessed using the provided API</p>
<div class="refsect3">
<a name="ClutterLayoutManagerClass.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-preferred-width"></a>get_preferred_width</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to provide a preferred
width for the layout manager. See also the <code class="function">get_preferred_width()</code>
virtual function in <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a></p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-preferred-height"></a>get_preferred_height</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to provide a preferred
height for the layout manager. See also the <code class="function">get_preferred_height()</code>
virtual function in <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a></p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.allocate"></a>allocate</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to allocate the children of the
layout manager. See also the <code class="function">allocate()</code> virtual function in
<a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a></p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.set-container"></a>set_container</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to set a back pointer
on the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using the layout manager. The implementation
should not take a reference on the container, but just take a weak
reference, to avoid potential leaks due to reference cycles</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-child-meta-type"></a>get_child_meta_type</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to return the <span class="type">GType</span>
of the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a></p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.create-child-meta"></a>create_child_meta</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to create a
<a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> instance associated to a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> and a
child <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, used to maintain layout manager specific properties</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.begin-animation"></a>begin_animation</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to control the animation
of a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> with the given duration and easing mode.
This virtual function is deprecated, and it should not be overridden
in newly written code.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-animation-progress"></a>get_animation_progress</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to control the
progress of the animation of a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>. This virtual
function is deprecated, and it should not be overridden in newly written
code.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.end-animation"></a>end_animation</code></em> ()</p></td>
<td class="struct_member_description"><p>virtual function; override to end an animation started
by <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a>. This virtual function is
deprecated, and it should not be overriden in newly written code.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="ClutterLayoutManagerClass.layout-changed"></a>layout_changed</code></em> ()</p></td>
<td class="struct_member_description"><p>class handler for the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title="The “layout-changed” signal"><span class="type">“layout-changed”</span></a>
signal</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
</div>
<div class="refsect1">
<a name="ClutterLayoutManager.signal-details"></a><h2>Signal Details</h2>
<div class="refsect2">
<a name="ClutterLayoutManager-layout-changed"></a><h3>The <code class="literal">“layout-changed”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager,
               <span class="type">gpointer</span>              user_data)</pre>
<p>The ::layout-changed signal is emitted each time a layout manager
has been changed. Every <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> using the <em class="parameter"><code>manager</code></em>
 instance
as a layout manager should connect a handler to the ::layout-changed
signal and queue a relayout on themselves:</p>
<div class="informalexample">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="type">void</span><span class="normal"> </span><span class="function">layout_changed</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterLayoutManager</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">manager</span><span class="symbol">,</span>
<span class="normal">                            </span><span class="usertype">ClutterActor</span><span class="normal">         </span><span class="symbol">*</span><span class="normal">self</span><span class="symbol">)</span>
<span class="cbracket">{</span>
<span class="normal">  </span><span class="function"><a href="ClutterActor.html#clutter-actor-queue-relayout">clutter_actor_queue_relayout</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">);</span>
<span class="cbracket">}</span>
<span class="symbol">...</span>
<span class="normal">  self</span><span class="symbol">-&gt;</span><span class="normal">manager </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_object_ref_sink</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
<span class="normal">  </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-&gt;</span><span class="normal">manager</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"layout-changed"</span><span class="symbol">,</span>
<span class="normal">                    </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">layout_changed</span><span class="symbol">),</span>
<span class="normal">                    self</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

<p></p>
<p>Sub-classes of <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> 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 <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()"><code class="function">clutter_layout_manager_layout_changed()</code></a>.</p>
<div class="refsect3">
<a name="ClutterLayoutManager-layout-changed.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>manager</p></td>
<td class="parameter_description"><p>the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> that emitted the signal</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: Run Last</p>
<p class="since">Since: <a class="link" href="ix08.html#api-index-1.2">1.2</a></p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25.1</div>
</body>
</html>