<refentry id="gobject-Signals">
<refmeta>
<refentrytitle>Signals</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GOBJECT Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Signals</refname><refpurpose>Signals provide a means for customization of object behaviour and are used
as general purpose notification mechanism.</refpurpose>
</refnamediv>

<refsynopsisdiv><title>Synopsis</title>
<synopsis>

#include &lt;gobject.h&gt;


struct      <link linkend="GSignalInvocationHint">GSignalInvocationHint</link>;
<link linkend="gboolean">gboolean</link>    (<link linkend="GSignalAccumulator">*GSignalAccumulator</link>)           (<link linkend="GSignalInvocationHint">GSignalInvocationHint</link> *ihint,
                                             <link linkend="GValue">GValue</link> *return_accu,
                                             const <link linkend="GValue">GValue</link> *handler_return,
                                             <link linkend="gpointer">gpointer</link> data);
typedef     <link linkend="GSignalCMarshaller">GSignalCMarshaller</link>;
<link linkend="gboolean">gboolean</link>    (<link linkend="GSignalEmissionHook">*GSignalEmissionHook</link>)          (<link linkend="GSignalInvocationHint">GSignalInvocationHint</link> *ihint,
                                             <link linkend="guint">guint</link> n_param_values,
                                             const <link linkend="GValue">GValue</link> *param_values,
                                             <link linkend="gpointer">gpointer</link> data);
enum        <link linkend="GSignalFlags">GSignalFlags</link>;
enum        <link linkend="GSignalMatchType">GSignalMatchType</link>;
struct      <link linkend="GSignalQuery">GSignalQuery</link>;
#define     <link linkend="G-SIGNAL-TYPE-STATIC-SCOPE-CAPS">G_SIGNAL_TYPE_STATIC_SCOPE</link>
#define     <link linkend="G-SIGNAL-MATCH-MASK-CAPS">G_SIGNAL_MATCH_MASK</link>
#define     <link linkend="G-SIGNAL-FLAGS-MASK-CAPS">G_SIGNAL_FLAGS_MASK</link>
<link linkend="guint">guint</link>       <link linkend="g-signal-new">g_signal_new</link>                    (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="guint">guint</link> class_offset,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             ...);
<link linkend="guint">guint</link>       <link linkend="g-signal-newv">g_signal_newv</link>                   (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="GClosure">GClosure</link> *class_closure,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             <link linkend="GType">GType</link> *param_types);
<link linkend="guint">guint</link>       <link linkend="g-signal-new-valist">g_signal_new_valist</link>             (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="GClosure">GClosure</link> *class_closure,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             va_list args);
void        <link linkend="g-signal-query">g_signal_query</link>                  (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GSignalQuery">GSignalQuery</link> *query);
<link linkend="guint">guint</link>       <link linkend="g-signal-lookup">g_signal_lookup</link>                 (const <link linkend="gchar">gchar</link> *name,
                                             <link linkend="GType">GType</link> itype);
G_CONST_RETURN <link linkend="gchar">gchar</link>* <link linkend="g-signal-name">g_signal_name</link>         (<link linkend="guint">guint</link> signal_id);
<link linkend="guint">guint</link>*      <link linkend="g-signal-list-ids">g_signal_list_ids</link>               (<link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> *n_ids);
void        <link linkend="g-signal-emit">g_signal_emit</link>                   (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             ...);
void        <link linkend="g-signal-emit-by-name">g_signal_emit_by_name</link>           (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             ...);
void        <link linkend="g-signal-emitv">g_signal_emitv</link>                  (const <link linkend="GValue">GValue</link> *instance_and_params,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GValue">GValue</link> *return_value);
void        <link linkend="g-signal-emit-valist">g_signal_emit_valist</link>            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             va_list var_args);
#define     <link linkend="g-signal-connect">g_signal_connect</link>                (instance, detailed_signal, c_handler, data)
#define     <link linkend="g-signal-connect-after">g_signal_connect_after</link>          (instance, detailed_signal, c_handler, data)
#define     <link linkend="g-signal-connect-swapped">g_signal_connect_swapped</link>        (instance, detailed_signal, c_handler, data)
<link linkend="gulong">gulong</link>      <link linkend="g-signal-connect-object">g_signal_connect_object</link>         (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GCallback">GCallback</link> c_handler,
                                             <link linkend="gpointer">gpointer</link> gobject,
                                             <link linkend="GConnectFlags">GConnectFlags</link> connect_flags);
enum        <link linkend="GConnectFlags">GConnectFlags</link>;
<link linkend="gulong">gulong</link>      <link linkend="g-signal-connect-data">g_signal_connect_data</link>           (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GCallback">GCallback</link> c_handler,
                                             <link linkend="gpointer">gpointer</link> data,
                                             <link linkend="GClosureNotify">GClosureNotify</link> destroy_data,
                                             <link linkend="GConnectFlags">GConnectFlags</link> connect_flags);
<link linkend="gulong">gulong</link>      <link linkend="g-signal-connect-closure">g_signal_connect_closure</link>        (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gboolean">gboolean</link> after);
<link linkend="gulong">gulong</link>      <link linkend="g-signal-connect-closure-by-id">g_signal_connect_closure_by_id</link>  (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gboolean">gboolean</link> after);
void        <link linkend="g-signal-handler-block">g_signal_handler_block</link>          (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);
void        <link linkend="g-signal-handler-unblock">g_signal_handler_unblock</link>        (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);
void        <link linkend="g-signal-handler-disconnect">g_signal_handler_disconnect</link>     (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);
<link linkend="gulong">gulong</link>      <link linkend="g-signal-handler-find">g_signal_handler_find</link>           (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="guint">guint</link>       <link linkend="g-signal-handlers-block-matched">g_signal_handlers_block_matched</link> (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="guint">guint</link>       <link linkend="g-signal-handlers-unblock-matched">g_signal_handlers_unblock_matched</link>
                                            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="guint">guint</link>       <link linkend="g-signal-handlers-disconnect-matched">g_signal_handlers_disconnect_matched</link>
                                            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="gboolean">gboolean</link>    <link linkend="g-signal-handler-is-connected">g_signal_handler_is_connected</link>   (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);
#define     <link linkend="g-signal-handlers-block-by-func">g_signal_handlers_block_by_func</link> (instance, func, data)
#define     <link linkend="g-signal-handlers-unblock-by-func">g_signal_handlers_unblock_by_func</link>(instance, func, data)
#define     <link linkend="g-signal-handlers-disconnect-by-func">g_signal_handlers_disconnect_by_func</link>(instance, func, data)
<link linkend="gboolean">gboolean</link>    <link linkend="g-signal-has-handler-pending">g_signal_has_handler_pending</link>    (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="gboolean">gboolean</link> may_be_blocked);
void        <link linkend="g-signal-stop-emission">g_signal_stop_emission</link>          (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail);
void        <link linkend="g-signal-stop-emission-by-name">g_signal_stop_emission_by_name</link>  (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal);
void        <link linkend="g-signal-override-class-closure">g_signal_override_class_closure</link> (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GType">GType</link> instance_type,
                                             <link linkend="GClosure">GClosure</link> *class_closure);
void        <link linkend="g-signal-chain-from-overridden">g_signal_chain_from_overridden</link>  (const <link linkend="GValue">GValue</link> *instance_and_params,
                                             <link linkend="GValue">GValue</link> *return_value);
<link linkend="gulong">gulong</link>      <link linkend="g-signal-add-emission-hook">g_signal_add_emission_hook</link>      (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> quark,
                                             <link linkend="GSignalEmissionHook">GSignalEmissionHook</link> hook_func,
                                             <link linkend="gpointer">gpointer</link> hook_data,
                                             <link linkend="GDestroyNotify">GDestroyNotify</link> data_destroy);
void        <link linkend="g-signal-remove-emission-hook">g_signal_remove_emission_hook</link>   (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="gulong">gulong</link> hook_id);
<link linkend="gboolean">gboolean</link>    <link linkend="g-signal-parse-name">g_signal_parse_name</link>             (const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> *signal_id_p,
                                             <link linkend="GQuark">GQuark</link> *detail_p,
                                             <link linkend="gboolean">gboolean</link> force_detail_quark);
<link linkend="GSignalInvocationHint">GSignalInvocationHint</link>* <link linkend="g-signal-get-invocation-hint">g_signal_get_invocation_hint</link>
                                            (<link linkend="gpointer">gpointer</link> instance);
void        <link linkend="g-signal-handlers-destroy">g_signal_handlers_destroy</link>       (<link linkend="gpointer">gpointer</link> instance);
<link linkend="GClosure">GClosure</link>*   <link linkend="g-signal-type-cclosure-new">g_signal_type_cclosure_new</link>      (<link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> struct_offset);
</synopsis>
</refsynopsisdiv>





<refsect1>
<title>Description</title>
<para>
The basic concept of the signal system is that of the <emphasis>emission</emphasis>
of a signal.
Signals are introduced per-type and are identified through strings.
Signals introduced for a parent type are available in derived types as well,
so basically they are a per-type facility that is inherited.
A signal emission mainly involves invocation of a certain set of callbacks in
precisely defined manner. There are two main categories of such callbacks,
per-object
	<footnote><para>Although signals can deal with any kind of instantiatable type,
	i'm referring to those types as "object types" in the following, simply
	because that is the context most users will encounter signals in.
	</para></footnote>
ones and user provided ones.
The per-object callbacks are most often referred to as "object method
handler" or "default (signal) handler", while user provided callbacks are
usually just called "signal handler".
The object method handler is provided at signal creation time (this most
frequently happens at the end of an object class' creation), while user
provided handlers are frequently connected and disconnected to/from a certain
signal on certain object instances.
</para>
<para>
A signal emission consists of five stages, unless prematurely stopped:
<variablelist>
  <varlistentry><term></term><listitem><para>
	1 - Invocation of the object method handler for <literal>G_SIGNAL_RUN_FIRST</literal> signals
  </para></listitem></varlistentry>
  <varlistentry><term></term><listitem><para>
	2 - Invocation of normal user-provided signal handlers (<emphasis>after</emphasis> flag <literal>FALSE</literal>)
  </para></listitem></varlistentry>
  <varlistentry><term></term><listitem><para>
	3 - Invocation of the object method handler for <literal>G_SIGNAL_RUN_LAST</literal> signals
  </para></listitem></varlistentry>
  <varlistentry><term></term><listitem><para>
	4 - Invocation of user provided signal handlers, connected with an <emphasis>after</emphasis> flag of <literal>TRUE</literal>
  </para></listitem></varlistentry>
  <varlistentry><term></term><listitem><para>
	5 - Invocation of the object method handler for <literal>G_SIGNAL_RUN_CLEANUP</literal> signals
  </para></listitem></varlistentry>
</variablelist>
The user provided signal handlers are called in the order they were
connected in.
All handlers may prematurely stop a signal emission, and any number of
handlers may be connected, disconnected, blocked or unblocked during
a signal emission.
There are certain criteria for skipping user handlers in stages 2 and 4
of a signal emission.
First, user handlers may be <emphasis>blocked</emphasis>, blocked handlers are omitted
during callback invocation, to return from the "blocked" state, a
handler has to get unblocked exactly the same amount of times
it has been blocked before.
Second, upon emission of a <literal>G_SIGNAL_DETAILED</literal> signal, an additional
"detail" argument passed in to <link linkend="g-signal-emit">g_signal_emit</link>() has to match the detail
argument of the signal handler currently subject to invocation.
Specification of no detail argument for signal handlers (omission of the
detail part of the signal specification upon connection) serves as a
wildcard and matches any detail argument passed in to emission.
</para>
</refsect1>

<refsect1>
<title>Details</title>
<refsect2>
<title><anchor id="GSignalInvocationHint">struct GSignalInvocationHint</title>
<programlisting>struct GSignalInvocationHint
{
  guint		signal_id;
  GQuark	detail;
  GSignalFlags	run_type;
};
</programlisting>
<para>
The <link linkend="GSignalInvocationHint">GSignalInvocationHint</link> structure is used to pass on additional information
to callbacks during a signal emission.
</para><informaltable pgwide="1" frame="none" role="struct">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row>
<entry><link linkend="guint">guint</link> <structfield>signal_id</structfield></entry>
<entry>	The signal id of the signal invoking the callback
</entry>
</row>
<row>
<entry><link linkend="GQuark">GQuark</link> <structfield>detail</structfield></entry>
<entry>	The detail passed on for this emission
</entry>
</row>
<row>
<entry><link linkend="GSignalFlags">GSignalFlags</link> <structfield>run_type</structfield></entry>
<entry>	The stage the signal emission is currently in, this
		field will contain one of <literal>G_SIGNAL_RUN_FIRST</literal>,
		<literal>G_SIGNAL_RUN_LAST</literal> or <literal>G_SIGNAL_RUN_CLEANUP</literal>.

</entry>
</row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GSignalAccumulator">GSignalAccumulator ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    (*GSignalAccumulator)           (<link linkend="GSignalInvocationHint">GSignalInvocationHint</link> *ihint,
                                             <link linkend="GValue">GValue</link> *return_accu,
                                             const <link linkend="GValue">GValue</link> *handler_return,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
The signal accumulator is a special callback function that can be used
to collect return values of the various callbacks that are called
during a signal emission. The signal accumulator is specified at signal
creation time, if it is left NULL, no accumulation of callback return
values is performed. The return value of signal emissions is then the
value returned by the last callback.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>ihint</parameter>&nbsp;:</entry>
<entry>	Signal invocation hint, see <link linkend="GSignalInvocationHint">GSignalInvocationHint</link>.
</entry></row>
<row><entry align="right"><parameter>return_accu</parameter>&nbsp;:</entry>
<entry>	Accumulator to collect callback return values in, this
		is the return value of the current signal emission.
</entry></row>
<row><entry align="right"><parameter>handler_return</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	The accumulator function returns whether the signal emission
		should be aborted. Returning <literal>FALSE</literal> means to abort the
		current emission and <literal>TRUE</literal> is returned for continuation.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GSignalCMarshaller">GSignalCMarshaller</title>
<programlisting>typedef GClosureMarshal			 GSignalCMarshaller;
</programlisting>
<para>
This is the signature of marshaller functions, required to marshall
arrays of parameter values to signal emissions into C language callback
invocations. It is merely an alias to <link linkend="GClosureMarshal">GClosureMarshal</link> since the <link linkend="GClosure">GClosure</link>
mechanism takes over responsibility of actual function invocation for the
signal system.
</para></refsect2>
<refsect2>
<title><anchor id="GSignalEmissionHook">GSignalEmissionHook ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    (*GSignalEmissionHook)          (<link linkend="GSignalInvocationHint">GSignalInvocationHint</link> *ihint,
                                             <link linkend="guint">guint</link> n_param_values,
                                             const <link linkend="GValue">GValue</link> *param_values,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>ihint</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>n_param_values</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>param_values</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GSignalFlags">enum GSignalFlags</title>
<programlisting>typedef enum
{
  G_SIGNAL_RUN_FIRST	= 1 &lt;&lt; 0,
  G_SIGNAL_RUN_LAST	= 1 &lt;&lt; 1,
  G_SIGNAL_RUN_CLEANUP	= 1 &lt;&lt; 2,
  G_SIGNAL_NO_RECURSE	= 1 &lt;&lt; 3,
  G_SIGNAL_DETAILED	= 1 &lt;&lt; 4,
  G_SIGNAL_ACTION	= 1 &lt;&lt; 5,
  G_SIGNAL_NO_HOOKS	= 1 &lt;&lt; 6
} GSignalFlags;
</programlisting>
<para>
The signal flags are used to specify a signal's behaviour, the overall
signal description outlines how especially the RUN flags control the
stages of a signal emission.
</para><informaltable pgwide="1" frame="none" role="enum">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row>
<entry><literal>G_SIGNAL_RUN_FIRST</literal></entry>
<entry>  Invoke the object method handler in the first emission stage.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_RUN_LAST</literal></entry>
<entry>   Invoke the object method handler in the third emission stage.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_RUN_CLEANUP</literal></entry>
<entry>Invoke the object method handler in the last emission stage.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_NO_RECURSE</literal></entry>
<entry> Signals being emitted for an object while currently being in
                       emission for this very object will not be emitted recursively,
                       but instead cause the first emission to be restarted.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_DETAILED</literal></entry>
<entry>   This signal supports "::detail" appendixes to the signal name
                       upon handler connections and emissions.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_ACTION</literal></entry>
<entry>     Action signals are signals that may freely be emitted on alive
                       objects from user code via <link linkend="g-signal-emit">g_signal_emit</link>() and friends, without
                       the need of being embedded into extra code that performs pre or
                       post emission adjustments on the object. They can also be thought
                       of as by third-party code generically callable object methods.
</entry>
</row>
<row>
<entry><literal>G_SIGNAL_NO_HOOKS</literal></entry>
<entry>   No emissions hooks are supported for this signal.

</entry>
</row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GSignalMatchType">enum GSignalMatchType</title>
<programlisting>typedef enum
{
  G_SIGNAL_MATCH_ID	   = 1 &lt;&lt; 0,
  G_SIGNAL_MATCH_DETAIL	   = 1 &lt;&lt; 1,
  G_SIGNAL_MATCH_CLOSURE   = 1 &lt;&lt; 2,
  G_SIGNAL_MATCH_FUNC	   = 1 &lt;&lt; 3,
  G_SIGNAL_MATCH_DATA	   = 1 &lt;&lt; 4,
  G_SIGNAL_MATCH_UNBLOCKED = 1 &lt;&lt; 5
} GSignalMatchType;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GSignalQuery">struct GSignalQuery</title>
<programlisting>struct GSignalQuery
{
  guint		signal_id;
  const gchar  *signal_name;
  GType		itype;
  GSignalFlags	signal_flags;
  GType		return_type; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
  guint		n_params;
  const GType  *param_types; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
};
</programlisting>
<para>
A structure holding in-depth information for a specific signal. It is
filled in by the <link linkend="g-signal-query">g_signal_query</link>() function.
</para><informaltable pgwide="1" frame="none" role="struct">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row>
<entry><link linkend="guint">guint</link> <structfield>signal_id</structfield></entry>
<entry>	The signal id of the signal being queried, or 0 if the
		signal to be queried was unknown.
</entry>
</row>
<row>
<entry>const <link linkend="gchar">gchar</link> *<structfield>signal_name</structfield></entry>
<entry>	The signal name.
</entry>
</row>
<row>
<entry><link linkend="GType">GType</link> <structfield>itype</structfield></entry>
<entry>	The interface/instance type that this signal can be emitted for.
</entry>
</row>
<row>
<entry><link linkend="GSignalFlags">GSignalFlags</link> <structfield>signal_flags</structfield></entry>
<entry>	The signal flags as passed in to <link linkend="g-signal-new">g_signal_new</link>().
</entry>
</row>
<row>
<entry><link linkend="GType">GType</link> <structfield>return_type</structfield></entry>
<entry>	The return type for user callbacks.
</entry>
</row>
<row>
<entry><link linkend="guint">guint</link> <structfield>n_params</structfield></entry>
<entry>	The number of parameters that user callbacks take.
</entry>
</row>
<row>
<entry>const <link linkend="GType">GType</link> *<structfield>param_types</structfield></entry>
<entry>	The individual parameter types for user callbacks, note that the
		effective callback signature is:
<msgtext><programlisting>
<parameter>return_type</parameter> callback (<link linkend="gpointer">gpointer</link>     data1,
                      [<link linkend="param-types">param_types</link> param_names,]
                       <link linkend="gpointer">gpointer</link>     data2);
</programlisting></msgtext>

</entry>
</row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="G-SIGNAL-TYPE-STATIC-SCOPE-CAPS">G_SIGNAL_TYPE_STATIC_SCOPE</title>
<programlisting>#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="G-SIGNAL-MATCH-MASK-CAPS">G_SIGNAL_MATCH_MASK</title>
<programlisting>#define G_SIGNAL_MATCH_MASK  0x3f
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="G-SIGNAL-FLAGS-MASK-CAPS">G_SIGNAL_FLAGS_MASK</title>
<programlisting>#define G_SIGNAL_FLAGS_MASK  0x7f
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="g-signal-new">g_signal_new ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_new                    (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="guint">guint</link> class_offset,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             ...);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_name</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_flags</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>class_offset</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accumulator</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accu_data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_marshaller</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>return_type</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>n_params</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>...</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-newv">g_signal_newv ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_newv                   (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="GClosure">GClosure</link> *class_closure,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             <link linkend="GType">GType</link> *param_types);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_name</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_flags</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>class_closure</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accumulator</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accu_data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_marshaller</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>return_type</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>n_params</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>param_types</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-new-valist">g_signal_new_valist ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_new_valist             (const <link linkend="gchar">gchar</link> *signal_name,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="GSignalFlags">GSignalFlags</link> signal_flags,
                                             <link linkend="GClosure">GClosure</link> *class_closure,
                                             <link linkend="GSignalAccumulator">GSignalAccumulator</link> accumulator,
                                             <link linkend="gpointer">gpointer</link> accu_data,
                                             <link linkend="GSignalCMarshaller">GSignalCMarshaller</link> c_marshaller,
                                             <link linkend="GType">GType</link> return_type,
                                             <link linkend="guint">guint</link> n_params,
                                             va_list args);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_name</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_flags</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>class_closure</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accumulator</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>accu_data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_marshaller</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>return_type</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>n_params</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>args</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-query">g_signal_query ()</title>
<programlisting>void        g_signal_query                  (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GSignalQuery">GSignalQuery</link> *query);</programlisting>
<para>
Query the signal system for in-depth information about a
specific signal. This function will fill in a user-provided
structure to hold signal-specific information. If an invalid
signal id is passed in, the <parameter>signal_id</parameter> member of the <link linkend="GSignalQuery">GSignalQuery</link>
is 0. All members filled into the <link linkend="GSignalQuery">GSignalQuery</link> structure should
be considered constant and have to be left untouched.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>	The signal id of the signal to query information for.
</entry></row>
<row><entry align="right"><parameter>query</parameter>&nbsp;:</entry>
<entry>	A user provided structure that is filled in with constant
		values upon success.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-lookup">g_signal_lookup ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_lookup                 (const <link linkend="gchar">gchar</link> *name,
                                             <link linkend="GType">GType</link> itype);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>name</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-name">g_signal_name ()</title>
<programlisting>G_CONST_RETURN <link linkend="gchar">gchar</link>* g_signal_name         (<link linkend="guint">guint</link> signal_id);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-list-ids">g_signal_list_ids ()</title>
<programlisting><link linkend="guint">guint</link>*      g_signal_list_ids               (<link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> *n_ids);</programlisting>
<para>
List the signals by id, that a certain instance or interface type
created. Further information about the signals can be acquired through
<link linkend="g-signal-query">g_signal_query</link>().
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>	Instance or interface type.
</entry></row>
<row><entry align="right"><parameter>n_ids</parameter>&nbsp;:</entry>
<entry>	Location to store the number of signal ids for <parameter>itype</parameter>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	Newly allocated array of signal IDs.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-emit">g_signal_emit ()</title>
<programlisting>void        g_signal_emit                   (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             ...);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>...</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-emit-by-name">g_signal_emit_by_name ()</title>
<programlisting>void        g_signal_emit_by_name           (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             ...);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>...</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-emitv">g_signal_emitv ()</title>
<programlisting>void        g_signal_emitv                  (const <link linkend="GValue">GValue</link> *instance_and_params,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GValue">GValue</link> *return_value);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance_and_params</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>return_value</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-emit-valist">g_signal_emit_valist ()</title>
<programlisting>void        g_signal_emit_valist            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             va_list var_args);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>var_args</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect">g_signal_connect()</title>
<programlisting>#define     g_signal_connect(instance, detailed_signal, c_handler, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_handler</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-after">g_signal_connect_after()</title>
<programlisting>#define     g_signal_connect_after(instance, detailed_signal, c_handler, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_handler</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-swapped">g_signal_connect_swapped()</title>
<programlisting>#define     g_signal_connect_swapped(instance, detailed_signal, c_handler, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_handler</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-object">g_signal_connect_object ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_connect_object         (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GCallback">GCallback</link> c_handler,
                                             <link linkend="gpointer">gpointer</link> gobject,
                                             <link linkend="GConnectFlags">GConnectFlags</link> connect_flags);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_handler</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>gobject</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>connect_flags</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GConnectFlags">enum GConnectFlags</title>
<programlisting>typedef enum
{
  G_CONNECT_AFTER	= 1 &lt;&lt; 0,
  G_CONNECT_SWAPPED	= 1 &lt;&lt; 1
} GConnectFlags;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-data">g_signal_connect_data ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_connect_data           (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GCallback">GCallback</link> c_handler,
                                             <link linkend="gpointer">gpointer</link> data,
                                             <link linkend="GClosureNotify">GClosureNotify</link> destroy_data,
                                             <link linkend="GConnectFlags">GConnectFlags</link> connect_flags);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>c_handler</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>destroy_data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>connect_flags</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-closure">g_signal_connect_closure ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_connect_closure        (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gboolean">gboolean</link> after);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>after</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-connect-closure-by-id">g_signal_connect_closure_by_id ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_connect_closure_by_id  (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gboolean">gboolean</link> after);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>after</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handler-block">g_signal_handler_block ()</title>
<programlisting>void        g_signal_handler_block          (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);</programlisting>
<para>
<link linkend="g-signal-handler-block">g_signal_handler_block</link>() blocks a handler of an
instance so it will not be called during any signal emissions
unless it is unblocked again. Thus "blocking" a signal handler
means to temporarily deactive it, a signal handler has to be
unblocked exactly the same amount of times it has been blocked
before to become active again.
The <parameter>handler_id</parameter> passed into <link linkend="g-signal-handler-block">g_signal_handler_block</link>() has
to be a valid signal handler id, connected to a signal of
<parameter>instance</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to block the signal handler of.
</entry></row>
<row><entry align="right"><parameter>handler_id</parameter>&nbsp;:</entry>
<entry>	Handler id of the handler to be blocked.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handler-unblock">g_signal_handler_unblock ()</title>
<programlisting>void        g_signal_handler_unblock        (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);</programlisting>
<para>
<link linkend="g-signal-handler-unblock">g_signal_handler_unblock</link>() undoes the effect of a previous
<link linkend="g-signal-handler-block">g_signal_handler_block</link>() call. A blocked handler is skipped
during signal emissions and will not be invoked, unblocking
it (for exactly the amount of times it has been blocked before)
reverts its "blocked" state, so the handler will be recognized
by the signal system and is called upon future or currently
ongoing signal emissions (since the order in which handlers are
called during signal emissions is deterministic, whether the
unblocked handler in question is called as part of a currently
ongoing emission depends on how far that emission has proceeded
yet).
The <parameter>handler_id</parameter> passed into <link linkend="g-signal-handler-unblock">g_signal_handler_unblock</link>() has
to be a valid id of a signal handler that is connected to a
signal of <parameter>instance</parameter> and is currently blocked.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to unblock the signal handler of.
</entry></row>
<row><entry align="right"><parameter>handler_id</parameter>&nbsp;:</entry>
<entry>	Handler id of the handler to be unblocked.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handler-disconnect">g_signal_handler_disconnect ()</title>
<programlisting>void        g_signal_handler_disconnect     (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);</programlisting>
<para>
<link linkend="g-signal-handler-disconnect">g_signal_handler_disconnect</link>() disconnects a handler from an
instance so it will not be called during any future or currently
ongoing emissions of the signal it has been connected to.
The <parameter>handler_id</parameter> becomes invalid and may be reused.
The <parameter>handler_id</parameter> passed into <link linkend="g-signal-handler-disconnect">g_signal_handler_disconnect</link>() has
to be a valid signal handler id, connected to a signal of
<parameter>instance</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to remove the signal handler from.
</entry></row>
<row><entry align="right"><parameter>handler_id</parameter>&nbsp;:</entry>
<entry>	Handler id of the handler to be disconnected.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handler-find">g_signal_handler_find ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_handler_find           (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
Find the first signal handler that matches certain selection criteria.
The criteria mask is passed as an OR-ed combination of <link linkend="GSignalMatchType">GSignalMatchType</link>
flags, and the criteria values are passed as arguments.
The match <parameter>mask</parameter> has to be non-0 for successful matches.
If no handler was found, 0 is returned.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance owning the signal handler to be found.
</entry></row>
<row><entry align="right"><parameter>mask</parameter>&nbsp;:</entry>
<entry>		Mask indicating which of <parameter>signal_id</parameter>, <parameter>detail</parameter>,
		<parameter>closure</parameter>, <parameter>func</parameter> and/or <parameter>data</parameter> the handler has to match.
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>	Signal the handler has to be connected to.
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>	Signal detail the handler has to be connected to.
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>	The closure the handler will invoke.
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>		The C closure callback of the handler (useless for non-C closures).
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>		The closure data of the handler's closure.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	A valid non-0 signal handler id for a successful match.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-block-matched">g_signal_handlers_block_matched ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_handlers_block_matched (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This function blocks all handlers on an instance that match a certain
selection criteria. The criteria mask is passed as an OR-ed combination of
<link linkend="GSignalMatchType">GSignalMatchType</link> flags, and the criteria values are passed as arguments.
Passing at least one of the <literal>G_SIGNAL_MATCH_CLOSURE</literal>, <literal>G_SIGNAL_MATCH_FUNC</literal>
or <literal>G_SIGNAL_MATCH_DATA</literal> match flags is required for successful matches.
If no handlers were found, 0 is returned, the number of blocked handlers
otherwise.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to block handlers from.
</entry></row>
<row><entry align="right"><parameter>mask</parameter>&nbsp;:</entry>
<entry>		Mask indicating which of <parameter>signal_id</parameter>, <parameter>detail</parameter>,
		<parameter>closure</parameter>, <parameter>func</parameter> and/or <parameter>data</parameter> the handlers have to match.
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>	Signal the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>	Signal detail the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>	The closure the handlers will invoke.
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>		The C closure callback of the handlers (useless for non-C closures).
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>		The closure data of the handlers' closures.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	The amount of handlers that got blocked.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-unblock-matched">g_signal_handlers_unblock_matched ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_handlers_unblock_matched
                                            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This function unblocks all handlers on an instance that match a certain
selection criteria. The criteria mask is passed as an OR-ed combination of
<link linkend="GSignalMatchType">GSignalMatchType</link> flags, and the criteria values are passed as arguments.
Passing at least one of the <literal>G_SIGNAL_MATCH_CLOSURE</literal>, <literal>G_SIGNAL_MATCH_FUNC</literal>
or <literal>G_SIGNAL_MATCH_DATA</literal> match flags is required for successful matches.
If no handlers were found, 0 is returned, the number of unblocked handlers
otherwise. The match criteria should not apply to any handlers that are
not currently blocked.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to unblock handlers from.
</entry></row>
<row><entry align="right"><parameter>mask</parameter>&nbsp;:</entry>
<entry>		Mask indicating which of <parameter>signal_id</parameter>, <parameter>detail</parameter>,
		<parameter>closure</parameter>, <parameter>func</parameter> and/or <parameter>data</parameter> the handlers have to match.
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>	Signal the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>	Signal detail the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>	The closure the handlers will invoke.
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>		The C closure callback of the handlers (useless for non-C closures).
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>		The closure data of the handlers' closures.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	The amount of handlers that got unblocked.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-disconnect-matched">g_signal_handlers_disconnect_matched ()</title>
<programlisting><link linkend="guint">guint</link>       g_signal_handlers_disconnect_matched
                                            (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="GSignalMatchType">GSignalMatchType</link> mask,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="GClosure">GClosure</link> *closure,
                                             <link linkend="gpointer">gpointer</link> func,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This function disconnects all handlers on an instance that match a certain
selection criteria. The criteria mask is passed as an OR-ed combination of
<link linkend="GSignalMatchType">GSignalMatchType</link> flags, and the criteria values are passed as arguments.
Passing at least one of the <literal>G_SIGNAL_MATCH_CLOSURE</literal>, <literal>G_SIGNAL_MATCH_FUNC</literal>
or <literal>G_SIGNAL_MATCH_DATA</literal> match flags is required for successful matches.
If no handlers were found, 0 is returned, the number of disconnected handlers
otherwise.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>	The instance to remove handlers from.
</entry></row>
<row><entry align="right"><parameter>mask</parameter>&nbsp;:</entry>
<entry>		Mask indicating which of <parameter>signal_id</parameter>, <parameter>detail</parameter>,
		<parameter>closure</parameter>, <parameter>func</parameter> and/or <parameter>data</parameter> the handlers have to match.
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>	Signal the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>	Signal detail the handlers have to be connected to.
</entry></row>
<row><entry align="right"><parameter>closure</parameter>&nbsp;:</entry>
<entry>	The closure the handlers will invoke.
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>		The C closure callback of the handlers (useless for non-C closures).
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>		The closure data of the handlers' closures.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>	The amount of handlers that got disconnected.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handler-is-connected">g_signal_handler_is_connected ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    g_signal_handler_is_connected   (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="gulong">gulong</link> handler_id);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>handler_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-block-by-func">g_signal_handlers_block_by_func()</title>
<programlisting>#define     g_signal_handlers_block_by_func(instance, func, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-unblock-by-func">g_signal_handlers_unblock_by_func()</title>
<programlisting>#define     g_signal_handlers_unblock_by_func(instance, func, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-disconnect-by-func">g_signal_handlers_disconnect_by_func()</title>
<programlisting>#define     g_signal_handlers_disconnect_by_func(instance, func, data)</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>func</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-has-handler-pending">g_signal_has_handler_pending ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    g_signal_has_handler_pending    (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail,
                                             <link linkend="gboolean">gboolean</link> may_be_blocked);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>may_be_blocked</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-stop-emission">g_signal_stop_emission ()</title>
<programlisting>void        g_signal_stop_emission          (<link linkend="gpointer">gpointer</link> instance,
                                             <link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> detail);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detail</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-stop-emission-by-name">g_signal_stop_emission_by_name ()</title>
<programlisting>void        g_signal_stop_emission_by_name  (<link linkend="gpointer">gpointer</link> instance,
                                             const <link linkend="gchar">gchar</link> *detailed_signal);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-override-class-closure">g_signal_override_class_closure ()</title>
<programlisting>void        g_signal_override_class_closure (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GType">GType</link> instance_type,
                                             <link linkend="GClosure">GClosure</link> *class_closure);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>instance_type</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>class_closure</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-chain-from-overridden">g_signal_chain_from_overridden ()</title>
<programlisting>void        g_signal_chain_from_overridden  (const <link linkend="GValue">GValue</link> *instance_and_params,
                                             <link linkend="GValue">GValue</link> *return_value);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance_and_params</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>return_value</parameter>&nbsp;:</entry>
<entry>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-add-emission-hook">g_signal_add_emission_hook ()</title>
<programlisting><link linkend="gulong">gulong</link>      g_signal_add_emission_hook      (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="GQuark">GQuark</link> quark,
                                             <link linkend="GSignalEmissionHook">GSignalEmissionHook</link> hook_func,
                                             <link linkend="gpointer">gpointer</link> hook_data,
                                             <link linkend="GDestroyNotify">GDestroyNotify</link> data_destroy);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>quark</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>hook_func</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>hook_data</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>data_destroy</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-remove-emission-hook">g_signal_remove_emission_hook ()</title>
<programlisting>void        g_signal_remove_emission_hook   (<link linkend="guint">guint</link> signal_id,
                                             <link linkend="gulong">gulong</link> hook_id);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>signal_id</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>hook_id</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-parse-name">g_signal_parse_name ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    g_signal_parse_name             (const <link linkend="gchar">gchar</link> *detailed_signal,
                                             <link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> *signal_id_p,
                                             <link linkend="GQuark">GQuark</link> *detail_p,
                                             <link linkend="gboolean">gboolean</link> force_detail_quark);</programlisting>
<para>
Internal function to parse a signal names into its <parameter>signal_id</parameter>
and <parameter>detail</parameter> quark.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>detailed_signal</parameter>&nbsp;:</entry>
<entry>	A string of the form "signal-name::detail".
</entry></row>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>		The interface/instance type that introduced "signal-name".
</entry></row>
<row><entry align="right"><parameter>signal_id_p</parameter>&nbsp;:</entry>
<entry>		Location to store the signal id.
</entry></row>
<row><entry align="right"><parameter>detail_p</parameter>&nbsp;:</entry>
<entry>		Location to stroe the detail quark.
</entry></row>
<row><entry align="right"><parameter>force_detail_quark</parameter>&nbsp;:</entry>
<entry>	<literal>TRUE</literal> forces creation of a GQuark for the detail.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>		Whether the signal name could successfully be parsed and
			<parameter>signal_id_p</parameter> and <parameter>detail_p</parameter> contain valid return values.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-get-invocation-hint">g_signal_get_invocation_hint ()</title>
<programlisting><link linkend="GSignalInvocationHint">GSignalInvocationHint</link>* g_signal_get_invocation_hint
                                            (<link linkend="gpointer">gpointer</link> instance);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-handlers-destroy">g_signal_handlers_destroy ()</title>
<programlisting>void        g_signal_handlers_destroy       (<link linkend="gpointer">gpointer</link> instance);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>instance</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="g-signal-type-cclosure-new">g_signal_type_cclosure_new ()</title>
<programlisting><link linkend="GClosure">GClosure</link>*   g_signal_type_cclosure_new      (<link linkend="GType">GType</link> itype,
                                             <link linkend="guint">guint</link> struct_offset);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>itype</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><parameter>struct_offset</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>

</refsect1>




</refentry>
