emission mainly involves invocation of a certain set of callbacks
in precisely defined manner. There are two main categories of such
callbacks, per-object
-<sup>[<a name="id531387" href="#ftn.id531387" class="footnote">10</a>]</sup>
+<sup>[<a name="idp47832448" href="#ftn.idp47832448" class="footnote">10</a>]</sup>
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
<code class="literal">| G_SIGNAL_TYPE_STATIC_SCOPE</code> to the corresponding argument
of <a class="link" href="gobject-Signals.html#g-signal-new" title="g_signal_new ()"><code class="function">g_signal_new()</code></a>.
</p>
-<div class="informalexample">
- <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td class="listing_lines" align="right"><pre>1
-2
-3
-4
-5
-6
-7
-8</pre></td>
- <td class="listing_code"><pre class="programlisting"><span class="function"><a href="gobject-Signals.html#g-signal-new">g_signal_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"size_request"</span><span class="symbol">,</span>
-<span class="normal"> </span><span class="function"><a href="gobject-Type-Information.html#G-TYPE-FROM-CLASS:CAPS">G_TYPE_FROM_CLASS</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">gobject_class</span><span class="symbol">),</span>
-<span class="normal"> <a href="gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">G_SIGNAL_RUN_FIRST</a></span><span class="symbol">,</span>
-<span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Standard-Macros.html#G-STRUCT-OFFSET:CAPS">G_STRUCT_OFFSET</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="http://library.gnome.org/devel/gtk/GtkWidget.html#GtkWidgetClass">GtkWidgetClass</a></span><span class="symbol">,</span><span class="normal"> size_request</span><span class="symbol">),</span>
-<span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
-<span class="normal"> _gtk_marshal_VOID__BOXED</span><span class="symbol">,</span>
-<span class="normal"> <a href="gobject-Type-Information.html#G-TYPE-NONE:CAPS">G_TYPE_NONE</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span>
-<span class="normal"> GTK_TYPE_REQUISITION </span><span class="symbol">|</span><span class="normal"> <a href="gobject-Signals.html#G-SIGNAL-TYPE-STATIC-SCOPE:CAPS">G_SIGNAL_TYPE_STATIC_SCOPE</a></span><span class="symbol">);</span></pre></td>
- </tr>
- </tbody>
- </table>
-</div>
-
+<div class="informalexample"><pre class="programlisting">
+g_signal_new ("size_request",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GtkWidgetClass, size_request),
+ NULL, NULL,
+ _gtk_marshal_VOID__BOXED,
+ G_TYPE_NONE, 1,
+ GTK_TYPE_REQUISITION | G_SIGNAL_TYPE_STATIC_SCOPE);
+</pre></div>
<p>
</p>
</div>
continue to work with future versions of GObject by checking
that the signal handler is still connected before disconnected it:
</p>
-<div class="informalexample">
- <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td class="listing_lines" align="right"><pre>1
-2</pre></td>
- <td class="listing_code"><pre class="programlisting"><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="gobject-Signals.html#g-signal-handler-is-connected">g_signal_handler_is_connected</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">instance</span><span class="symbol">,</span><span class="normal"> id</span><span class="symbol">))</span>
-<span class="normal"> </span><span class="function"><a href="gobject-Signals.html#g-signal-handler-disconnect">g_signal_handler_disconnect</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">instance</span><span class="symbol">,</span><span class="normal"> id</span><span class="symbol">);</span></pre></td>
- </tr>
- </tbody>
- </table>
-</div>
-
+<div class="informalexample"><pre class="programlisting">
+ if (g_signal_handler_is_connected (instance, id))
+ g_signal_handler_disconnect (instance, id);
+</pre></div>
<p>
</p>
<div class="variablelist"><table border="0">
</div>
<div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a id="ftn.id531387" href="#id531387" class="para">10</a>] </sup>Although signals can deal with any kind of instantiatable
+<div class="footnote"><p><sup>[<a id="ftn.idp47832448" href="#idp47832448" class="para">10</a>] </sup>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.
</p></div>