New upstream version 3.23.2
This commit is contained in:
@ -3,12 +3,12 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>GtkContainer: GTK+ 3 Reference Manual</title>
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
|
||||
<link rel="home" href="index.html" title="GTK+ 3 Reference Manual">
|
||||
<link rel="up" href="AbstractObjects.html" title="Abstract Base Classes">
|
||||
<link rel="prev" href="GtkWidget.html" title="GtkWidget">
|
||||
<link rel="next" href="GtkBin.html" title="GtkBin">
|
||||
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
|
||||
<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
@ -477,7 +477,7 @@
|
||||
<a name="GtkContainer.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
|
||||
<p>
|
||||
GtkContainer implements
|
||||
AtkImplementor and <a class="link" href="GtkBuildable.html" title="GtkBuildable">GtkBuildable</a>.</p>
|
||||
AtkImplementorIface and <a class="link" href="GtkBuildable.html" title="GtkBuildable">GtkBuildable</a>.</p>
|
||||
</div>
|
||||
<div class="refsect1">
|
||||
<a name="GtkContainer.includes"></a><h2>Includes</h2>
|
||||
@ -537,59 +537,119 @@ every widget request at least enough space to display all of its content at all
|
||||
<p>When <a class="link" href="GtkWidget.html#gtk-widget-get-preferred-height" title="gtk_widget_get_preferred_height ()"><code class="function">gtk_widget_get_preferred_height()</code></a> is called on a container that is height-for-width,
|
||||
the container must return the height for its minimum width. This is easily achieved by
|
||||
simply calling the reverse apis implemented for itself as follows:</p>
|
||||
<div class="informalexample"><pre class="programlisting">
|
||||
static void
|
||||
foo_container_get_preferred_height (GtkWidget *widget,
|
||||
gint *min_height,
|
||||
gint *nat_height)
|
||||
{
|
||||
if (i_am_in_height_for_width_mode)
|
||||
{
|
||||
gint min_width;
|
||||
<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</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="function">foo_container_get_preferred_height</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GtkWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">widget</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">min_height</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">nat_height</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i_am_in_height_for_width_mode</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> min_width</span><span class="symbol">;</span>
|
||||
|
||||
<span class="normal"> </span><span class="function">GTK_WIDGET_GET_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">)-></span><span class="function">get_preferred_width</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="symbol">&</span><span class="normal">min_width</span><span class="symbol">,</span>
|
||||
<span class="normal"> NULL</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="function">GTK_WIDGET_GET_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">)-></span><span class="normal">get_preferred_height_for_width</span>
|
||||
<span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">,</span>
|
||||
<span class="normal"> min_width</span><span class="symbol">,</span>
|
||||
<span class="normal"> min_height</span><span class="symbol">,</span>
|
||||
<span class="normal"> nat_height</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="cbracket">}</span>
|
||||
<span class="normal"> </span><span class="keyword">else</span>
|
||||
<span class="normal"> </span><span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="symbol">...</span><span class="normal"> many containers support both </span><span class="usertype">request</span><span class="normal"> modes</span><span class="symbol">,</span><span class="normal"> execute the</span>
|
||||
<span class="normal"> </span><span class="usertype">real</span><span class="normal"> width</span><span class="symbol">-</span><span class="keyword">for</span><span class="symbol">-</span><span class="normal">height request here by returning the</span>
|
||||
<span class="normal"> collective heights of all widgets that are stacked</span>
|
||||
<span class="normal"> </span><span class="function">vertically</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">or whatever is appropriate </span><span class="keyword">for</span><span class="normal"> </span><span class="usertype">this</span><span class="normal"> container</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="symbol">...</span>
|
||||
<span class="normal"> </span><span class="cbracket">}</span>
|
||||
<span class="cbracket">}</span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget,
|
||||
&min_width,
|
||||
NULL);
|
||||
GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width
|
||||
(widget,
|
||||
min_width,
|
||||
min_height,
|
||||
nat_height);
|
||||
}
|
||||
else
|
||||
{
|
||||
... many containers support both request modes, execute the
|
||||
real width-for-height request here by returning the
|
||||
collective heights of all widgets that are stacked
|
||||
vertically (or whatever is appropriate for this container)
|
||||
...
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
<p></p>
|
||||
<p>Similarly, when <a class="link" href="GtkWidget.html#gtk-widget-get-preferred-width-for-height" title="gtk_widget_get_preferred_width_for_height ()"><code class="function">gtk_widget_get_preferred_width_for_height()</code></a> is called for a container or widget
|
||||
that is height-for-width, it then only needs to return the base minimum width like so:</p>
|
||||
<div class="informalexample"><pre class="programlisting">
|
||||
static void
|
||||
foo_container_get_preferred_width_for_height (GtkWidget *widget,
|
||||
gint for_height,
|
||||
gint *min_width,
|
||||
gint *nat_width)
|
||||
{
|
||||
if (i_am_in_height_for_width_mode)
|
||||
{
|
||||
GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget,
|
||||
min_width,
|
||||
nat_width);
|
||||
}
|
||||
else
|
||||
{
|
||||
... execute the real width-for-height request here based on
|
||||
the required width of the children collectively if the
|
||||
container were to be allocated the said height ...
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
<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</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="function">foo_container_get_preferred_width_for_height</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GtkWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">widget</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> for_height</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">min_width</span><span class="symbol">,</span>
|
||||
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">nat_width</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i_am_in_height_for_width_mode</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="function">GTK_WIDGET_GET_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">)-></span><span class="function">get_preferred_width</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">widget</span><span class="symbol">,</span>
|
||||
<span class="normal"> min_width</span><span class="symbol">,</span>
|
||||
<span class="normal"> nat_width</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="cbracket">}</span>
|
||||
<span class="normal"> </span><span class="keyword">else</span>
|
||||
<span class="normal"> </span><span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="symbol">...</span><span class="normal"> execute the </span><span class="usertype">real</span><span class="normal"> width</span><span class="symbol">-</span><span class="keyword">for</span><span class="symbol">-</span><span class="normal">height request here based on</span>
|
||||
<span class="normal"> the required width of the children collectively </span><span class="keyword">if</span><span class="normal"> the</span>
|
||||
<span class="normal"> container were to be allocated the </span><span class="usertype">said</span><span class="normal"> height </span><span class="symbol">...</span>
|
||||
<span class="normal"> </span><span class="cbracket">}</span>
|
||||
<span class="cbracket">}</span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p></p>
|
||||
<p>Height for width requests are generally implemented in terms of a virtual allocation
|
||||
of widgets in the input orientation. Assuming an height-for-width request mode, a container
|
||||
@ -651,23 +711,45 @@ for regular properties.</p>
|
||||
<widget> elements, one for each child that should be added to the focus
|
||||
chain. The ”name” attribute gives the id of the widget.</p>
|
||||
<p>An example of these properties in UI definitions:</p>
|
||||
<div class="informalexample"><pre class="programlisting">
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry1"/>
|
||||
<packing>
|
||||
<property name="pack-type">start</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry2"/>
|
||||
</child>
|
||||
<focus-chain>
|
||||
<widget name="entry1"/>
|
||||
<widget name="entry2"/>
|
||||
</focus-chain>
|
||||
</object>
|
||||
</pre></div>
|
||||
<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</pre></td>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="symbol"><</span><span class="usertype">object</span><span class="normal"> class</span><span class="symbol">=</span><span class="string">"GtkBox"</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">child</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">object</span><span class="normal"> class</span><span class="symbol">=</span><span class="string">"GtkEntry"</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"entry1"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">packing</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">property</span><span class="normal"> name</span><span class="symbol">=</span><span class="string">"pack-type"</span><span class="symbol">></span><span class="normal">start</span><span class="symbol"></</span><span class="normal">property</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">packing</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">child</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">child</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">object</span><span class="normal"> class</span><span class="symbol">=</span><span class="string">"GtkEntry"</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"entry2"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">child</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">focus</span><span class="symbol">-</span><span class="normal">chain</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">widget</span><span class="normal"> name</span><span class="symbol">=</span><span class="string">"entry1"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">widget</span><span class="normal"> name</span><span class="symbol">=</span><span class="string">"entry2"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">focus</span><span class="symbol">-</span><span class="normal">chain</span><span class="symbol">></span>
|
||||
<span class="symbol"></</span><span class="normal">object</span><span class="symbol">></span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
@ -1818,7 +1900,7 @@ gtk_container_propagate_draw (<em class="parameter"><code><a class="link" href="
|
||||
<em class="parameter"><code><span class="type">cairo_t</span> *cr</code></em>);</pre>
|
||||
<p>When a container receives a call to the draw function, it must send
|
||||
synthetic <a class="link" href="GtkWidget.html#GtkWidget-draw" title="The “draw” signal"><span class="type">“draw”</span></a> calls to all children that don’t have their
|
||||
own <a href="../html/gdk3-Windows.html#GdkWindow-struct"><span class="type">GdkWindows</span></a>. This function provides a convenient way of doing this.
|
||||
own <span class="type">GdkWindows</span>. This function provides a convenient way of doing this.
|
||||
A container, when it receives a call to its <a class="link" href="GtkWidget.html#GtkWidget-draw" title="The “draw” signal"><span class="type">“draw”</span></a> function,
|
||||
calls <a class="link" href="GtkContainer.html#gtk-container-propagate-draw" title="gtk_container_propagate_draw ()"><code class="function">gtk_container_propagate_draw()</code></a> once for each child, passing in
|
||||
the <em class="parameter"><code>cr</code></em>
|
||||
@ -2358,6 +2440,6 @@ user_function (<a class="link" href="GtkContainer.html" title="GtkContainer"><sp
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<hr>Generated by GTK-Doc V1.27</div>
|
||||
<hr>Generated by GTK-Doc V1.28</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user