<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
<!ENTITY pi "&#960;">
<!ENTITY solidus "&#8260;">
]>
<refentry id="GtkFixedLayout">
<refmeta>
<refentrytitle role="top_of_page" id="GtkFixedLayout.top_of_page">GtkFixedLayout</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GtkFixedLayout</refname>
<refpurpose>A layout manager that allows positioning at fixed
coordinates</refpurpose>
</refnamediv>

<refsect1 id="GtkFixedLayout.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="GtkLayoutManager"><returnvalue>GtkLayoutManager</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-fixed-layout-new">gtk_fixed_layout_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-fixed-layout-child-set-transform">gtk_fixed_layout_child_set_transform</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GskTransform"><returnvalue>GskTransform</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-fixed-layout-child-get-transform">gtk_fixed_layout_child_get_transform</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<anchor id="GtkFixedLayoutChild"/><refsect1 id="GtkFixedLayout.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkFixedLayout-struct">GtkFixedLayout</link></entry></row>

<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkFixedLayoutChild-struct">GtkFixedLayoutChild</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkFixedLayout.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> <link linkend="GtkLayoutChild">GtkLayoutChild</link>
    <phrase role="lineart">&#9474;</phrase>   <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GtkFixedLayoutChild
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> <link linkend="GtkLayoutManager">GtkLayoutManager</link>
        <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GtkFixedLayout
</screen>
</refsect1>

<refsect1 id="GtkFixedLayout.includes"><title>Includes</title><synopsis>#include &lt;gtk/gtk.h&gt;
</synopsis></refsect1>

<refsect1 id="GtkFixedLayout.description" role="desc">
<title role="desc.title">Description</title>
<para><link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link> is a layout manager which can place child widgets
at fixed positions, and with fixed sizes.</para>
<para>Most applications should never use this layout manager; fixed positioning
and sizing requires constant recalculations on where children need to be
positioned and sized. Other layout managers perform this kind of work
internally so that application developers don't need to do it. Specifically,
widgets positioned in a fixed layout manager will need to take into account:</para>
<itemizedlist>
<listitem>
<para>Themes, which may change widget sizes.</para>
</listitem>
<listitem>
<para>Fonts other than the one you used to write the app will of course
change the size of widgets containing text; keep in mind that
users may use a larger font because of difficulty reading the
default, or they may be using a different OS that provides different
fonts.</para>
</listitem>
<listitem>
<para>Translation of text into other languages changes its size. Also,
display of non-English text will use a different font in many
cases.</para>
</listitem>
</itemizedlist>
<para>In addition, <link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link> does not pay attention to text direction and
thus may produce unwanted results if your app is run under right-to-left
languages such as Hebrew or Arabic. That is: normally GTK will order
containers appropriately depending on the text direction, e.g. to put labels
to the right of the thing they label when using an RTL language;
<link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link> won't be able to do that for you.</para>
<para>Finally, fixed positioning makes it kind of annoying to add/remove GUI
elements, since you have to reposition all the other  elements. This is a
long-term maintenance problem for your application.</para>

</refsect1>
<refsect1 id="GtkFixedLayout.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="gtk-fixed-layout-new" role="function">
<title>gtk_fixed_layout_new&#160;()</title>
<indexterm zone="gtk-fixed-layout-new"><primary>gtk_fixed_layout_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkLayoutManager"><returnvalue>GtkLayoutManager</returnvalue></link>&#160;*
gtk_fixed_layout_new (<parameter><type>void</type></parameter>);</programlisting>
<para>Creates a new <link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link>.</para>
<refsect3 id="gtk-fixed-layout-new.returns" role="returns">
<title>Returns</title>
<para> the newly created <link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-fixed-layout-child-set-transform" role="function">
<title>gtk_fixed_layout_child_set_transform&#160;()</title>
<indexterm zone="gtk-fixed-layout-child-set-transform"><primary>gtk_fixed_layout_child_set_transform</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_fixed_layout_child_set_transform (<parameter><link linkend="GtkFixedLayoutChild"><type>GtkFixedLayoutChild</type></link> *child</parameter>,
                                      <parameter><link linkend="GskTransform"><type>GskTransform</type></link> *transform</parameter>);</programlisting>
<para>Sets the transformation of the child of a <link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link>.</para>
<refsect3 id="gtk-fixed-layout-child-set-transform.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFixedLayoutChild"><type>GtkFixedLayoutChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>transform</para></entry>
<entry role="parameter_description"><para>a <link linkend="GskTransform"><type>GskTransform</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-fixed-layout-child-get-transform" role="function">
<title>gtk_fixed_layout_child_get_transform&#160;()</title>
<indexterm zone="gtk-fixed-layout-child-get-transform"><primary>gtk_fixed_layout_child_get_transform</primary></indexterm>
<programlisting language="C"><link linkend="GskTransform"><returnvalue>GskTransform</returnvalue></link>&#160;*
gtk_fixed_layout_child_get_transform (<parameter><link linkend="GtkFixedLayoutChild"><type>GtkFixedLayoutChild</type></link> *child</parameter>);</programlisting>
<para>Retrieves the transformation of the child of a <link linkend="GtkFixedLayout"><type>GtkFixedLayout</type></link>.</para>
<refsect3 id="gtk-fixed-layout-child-get-transform.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFixedLayoutChild"><type>GtkFixedLayoutChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-fixed-layout-child-get-transform.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GskTransform"><type>GskTransform</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GtkFixedLayout.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GtkFixedLayout-struct" role="struct">
<title>GtkFixedLayout</title>
<indexterm zone="GtkFixedLayout-struct"><primary>GtkFixedLayout</primary></indexterm>
<programlisting language="C">typedef struct _GtkFixedLayout GtkFixedLayout;</programlisting>
</refsect2>
<refsect2 id="GtkFixedLayoutChild-struct" role="struct">
<title>GtkFixedLayoutChild</title>
<indexterm zone="GtkFixedLayoutChild-struct"><primary>GtkFixedLayoutChild</primary></indexterm>
<programlisting language="C">typedef struct _GtkFixedLayoutChild GtkFixedLayoutChild;</programlisting>
</refsect2>

</refsect1>

</refentry>
