<!doctype refentry PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
<REFENTRY ID="RE-1007-UNMANAGECHILDREN-1">

<REFMETA>
<REFENTRYTITLE>XtUnmanageChildren</REFENTRYTITLE>
<MANVOLNUM>3
<REFMISCINFO>Xt - Geometry Management</REFMISCINFO>
</REFMETA>


<REFNAMEDIV>
<REFNAME>XtUnmanageChildren
</REFNAME>
<REFPURPOSE>remove a list of children from a parent widget's managed list.
</REFPURPOSE>
<INDEXTERM ID="IX-1007-UNMANAGECHILDREN-1"><PRIMARY>widgets</PRIMARY><SECONDARY>removing</SECONDARY></INDEXTERM>
<INDEXTERM ID="IX-1007-UNMANAGECHILDREN-2"><PRIMARY>XtUnmanageChildren</PRIMARY></INDEXTERM>
</REFNAMEDIV>


<REFSYNOPSISDIV>
<REFSYNOPSISDIVINFO>
<DATE>4 March 1996</DATE>
</REFSYNOPSISDIVINFO>
<SYNOPSIS>
void XtUnmanageChildren(<REPLACEABLE CLASS="PARAMETER">children</REPLACEABLE>, <REPLACEABLE CLASS="PARAMETER">num_children</REPLACEABLE>)
    WidgetList <REPLACEABLE CLASS="PARAMETER">children</REPLACEABLE>;
    Cardinal <REPLACEABLE CLASS="PARAMETER">num_children</REPLACEABLE>;</SYNOPSIS>

<REFSECT2 ID="R2-1007-UNMANAGECHILDREN-1">
<REFSECT2INFO>
<DATE>6 March 1996</DATE>
</REFSECT2INFO>
<TITLE>Inputs
</TITLE>
<VARIABLELIST>
<VARLISTENTRY>
<TERM><REPLACEABLE CLASS="PARAMETER">children</REPLACEABLE>
</TERM>
<LISTITEM>
<PARA>Specifies an array of child widgets.  Each child must be of
class RectObj or any subclass thereof.
</PARA>
</LISTITEM>
</VARLISTENTRY>
<VARLISTENTRY>
<TERM><REPLACEABLE CLASS="PARAMETER">num_children</REPLACEABLE>
</TERM>
<LISTITEM>
<PARA>Specifies the number of elements in <REPLACEABLE CLASS="PARAMETER">children</REPLACEABLE>.
</PARA>
</LISTITEM>
</VARLISTENTRY>
</VARIABLELIST>
<REFSECT3>
<TITLE>Subsidiary Inputs</TITLE>
<PARA>Inputs into unmanageable children may also include
food, drink, and discipline.
</PARA>
</REFSECT3>
</REFSECT2></REFSYNOPSISDIV>


<REFSECT1 ID="R1-1007-UNMANAGECHILDREN-1">
<REFSECT1INFO>
<DATE>5 March 1996</DATE>
</REFSECT1INFO>
<TITLE>Description
</TITLE>
<PARA><FUNCTION>XtUnmanageChildren()</FUNCTION> unmaps the specified widgets
and removes them from their parent's geometry management.
The widgets will disappear from the screen, and (depending
on its parent) may no longer have screen space allocated for
them.
</PARA>
<PARA>Each of the widgets in the <REPLACEABLE CLASS="PARAMETER">children</REPLACEABLE> array must have
the same parent.
</PARA>
<PARA>See the &ldquo;Algorithm&rdquo; section below for full details of the
widget unmanagement procedure.
</PARA>
</REFSECT1>
<REFSECT1 ID="R1-1007-UNMANAGECHILDREN-2">
<TITLE>Usage
</TITLE>
<PARA>Unmanaging widgets is the usual method for temporarily
making them invisible.  They can be re-managed with
<FUNCTION>XtManageChildren()</FUNCTION>.
</PARA>
<PARA>You can unmap a widget, but leave it under geometry
management by calling <FUNCTION>XtUnmapWidget()</FUNCTION>.  You can
destroy a widget's window without destroying the widget by
calling <FUNCTION>XtUnrealizeWidget()</FUNCTION>.  You can destroy a
widget completely with <FUNCTION>XtDestroyWidget()</FUNCTION>.
</PARA>
<PARA>If you are only going to unmanage a single widget, it is
more convenient to call <FUNCTION>XtUnmanageChild()</FUNCTION>.  It is
often more convenient to call <FUNCTION>XtUnmanageChild()</FUNCTION>
several times than it is to declare and initialize an array
of widgets to pass to <FUNCTION>XtUnmanageChildren()</FUNCTION>.  Calling
<FUNCTION>XtUnmanageChildren()</FUNCTION> is more efficient, however,
because it only calls the parent's <FUNCTION>change_managed()</FUNCTION>
method once.
</PARA>
</REFSECT1>
<REFSECT1 ID="R1-1007-UNMANAGECHILDREN-3">
<TITLE>Algorithm
</TITLE>
<PARA><FUNCTION>XtUnmanageChildren()</FUNCTION> performs the following:
</PARA>
<VARIABLELIST>
<VARLISTENTRY>
<TERM>&bull;
</TERM>
<LISTITEM>
<PARA>Issues an error if the children do not all have the same
parent or if the parent is not a subclass of
<CLASSNAME>compositeWidgetClass</CLASSNAME>.
</PARA>
</LISTITEM>
</VARLISTENTRY>
<VARLISTENTRY>
<TERM>&bull;
</TERM>
<LISTITEM>
<PARA>Returns immediately if the common parent is being destroyed;
otherwise, for each unique child on the list,
<FUNCTION>XtUnmanageChildren()</FUNCTION> performs the following:
</PARA>
</LISTITEM>
</VARLISTENTRY>
<VARLISTENTRY>
<TERM>-
</TERM>
<LISTITEM>
<PARA>Ignores the child if it already is unmanaged or is being
destroyed.
</PARA>
</LISTITEM>
</VARLISTENTRY>
<VARLISTENTRY>
<TERM>-
</TERM>
<LISTITEM>
<PARA>Otherwise, if the child is realized, it makes it nonvisible
by unmapping it.
</PARA>
</LISTITEM>
</VARLISTENTRY>
<VARLISTENTRY>
<TERM>&bull;
</TERM>
<LISTITEM>
<PARA>Calls the <FUNCTION>change_managed()</FUNCTION> method of the widgets'
parent if the parent is realized.
</PARA>
</LISTITEM>
</VARLISTENTRY>
</VARIABLELIST>
<PARA>
</PARA>
</REFSECT1>
<REFSECT1 ID="R1-1007-UNMANAGECHILDREN-4">
<TITLE>Structures
</TITLE>
<PARA>The <TYPE>WidgetList</TYPE> type is simply an array of widgets:
</PARA>
<SCREEN ID="SC-1007-UNMANAGECHILDREN-1">typedef Widget *WidgetList;
</SCREEN>
</REFSECT1></REFENTRY>