|
Packit |
98cdb6 |
|
|
Packit |
98cdb6 |
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Signal Emission and Propagation
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
NAME="GENERATOR"
|
|
Packit |
98cdb6 |
CONTENT="Modular DocBook HTML Stylesheet Version 1.79">
|
|
Packit |
98cdb6 |
REL="HOME"
|
|
Packit |
98cdb6 |
TITLE="GTK+ 2.0 Tutorial"
|
|
Packit |
98cdb6 |
HREF="book1.html">
|
|
Packit |
98cdb6 |
REL="UP"
|
|
Packit |
98cdb6 |
TITLE="Advanced Event and Signal Handling"
|
|
Packit |
98cdb6 |
HREF="c1797.html">
|
|
Packit |
98cdb6 |
REL="PREVIOUS"
|
|
Packit |
98cdb6 |
TITLE="Advanced Event and Signal Handling"
|
|
Packit |
98cdb6 |
HREF="c1797.html">
|
|
Packit |
98cdb6 |
REL="NEXT"
|
|
Packit |
98cdb6 |
TITLE="Managing Selections"
|
|
Packit |
98cdb6 |
HREF="c1834.html">
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
CLASS="SECT1"
|
|
Packit |
98cdb6 |
BGCOLOR="#FFFFFF"
|
|
Packit |
98cdb6 |
TEXT="#000000"
|
|
Packit |
98cdb6 |
LINK="#0000FF"
|
|
Packit |
98cdb6 |
VLINK="#840084"
|
|
Packit |
98cdb6 |
ALINK="#0000FF"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
CLASS="NAVHEADER"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
SUMMARY="Header navigation table"
|
|
Packit |
98cdb6 |
WIDTH="100%"
|
|
Packit |
98cdb6 |
BORDER="0"
|
|
Packit |
98cdb6 |
CELLPADDING="0"
|
|
Packit |
98cdb6 |
CELLSPACING="0"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
COLSPAN="3"
|
|
Packit |
98cdb6 |
ALIGN="center"
|
|
Packit |
98cdb6 |
>GTK+ 2.0 Tutorial
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="10%"
|
|
Packit |
98cdb6 |
ALIGN="left"
|
|
Packit |
98cdb6 |
VALIGN="bottom"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="c1797.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="P"
|
|
Packit |
98cdb6 |
><<< Previous
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="80%"
|
|
Packit |
98cdb6 |
ALIGN="center"
|
|
Packit |
98cdb6 |
VALIGN="bottom"
|
|
Packit |
98cdb6 |
>Advanced Event and Signal Handling
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="10%"
|
|
Packit |
98cdb6 |
ALIGN="right"
|
|
Packit |
98cdb6 |
VALIGN="bottom"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="c1834.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="N"
|
|
Packit |
98cdb6 |
>Next >>>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
ALIGN="LEFT"
|
|
Packit |
98cdb6 |
WIDTH="100%">
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
CLASS="SECT1"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
CLASS="SECT1"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
NAME="SEC-SIGNALEMISSIONANDPROPAGATION"
|
|
Packit |
98cdb6 |
>Signal Emission and Propagation
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Signal emission is the process whereby GTK runs all handlers for a
|
|
Packit |
98cdb6 |
specific object and signal.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>First, note that the return value from a signal emission is the return
|
|
Packit |
98cdb6 |
value of the
|
|
Packit |
98cdb6 |
CLASS="EMPHASIS"
|
|
Packit |
98cdb6 |
>last
|
|
Packit |
98cdb6 |
> handler executed. Since event signals are
|
|
Packit |
98cdb6 |
all of type
|
|
Packit |
98cdb6 |
CLASS="LITERAL"
|
|
Packit |
98cdb6 |
>GTK_RUN_LAST
|
|
Packit |
98cdb6 |
>, this will be the default (GTK supplied)
|
|
Packit |
98cdb6 |
handler, unless you connect with gtk_signal_connect_after().
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>The way an event (say "button_press_event") is handled, is:
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Start with the widget where the event occured.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Emit the generic "event" signal. If that signal handler returns
|
|
Packit |
98cdb6 |
a value of TRUE, stop all processing.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Otherwise, emit a specific, "button_press_event" signal. If that
|
|
Packit |
98cdb6 |
returns TRUE, stop all processing.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Otherwise, go to the widget's parent, and repeat the above two
|
|
Packit |
98cdb6 |
steps.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Continue until some signal handler returns TRUE, or until the
|
|
Packit |
98cdb6 |
top-level widget is reached.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Some consequences of the above are:
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>Your handler's return value will have no effect if there is a
|
|
Packit |
98cdb6 |
default handler, unless you connect with gtk_signal_connect_after().
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>To prevent the default handler from being run, you need to
|
|
Packit |
98cdb6 |
connect with gtk_signal_connect() and use
|
|
Packit |
98cdb6 |
gtk_signal_emit_stop_by_name() - the return value only affects whether
|
|
Packit |
98cdb6 |
the signal is propagated, not the current emission.
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
CLASS="NAVFOOTER"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
ALIGN="LEFT"
|
|
Packit |
98cdb6 |
WIDTH="100%">
|
|
Packit |
98cdb6 |
SUMMARY="Footer navigation table"
|
|
Packit |
98cdb6 |
WIDTH="100%"
|
|
Packit |
98cdb6 |
BORDER="0"
|
|
Packit |
98cdb6 |
CELLPADDING="0"
|
|
Packit |
98cdb6 |
CELLSPACING="0"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="33%"
|
|
Packit |
98cdb6 |
ALIGN="left"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="c1797.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="P"
|
|
Packit |
98cdb6 |
><<< Previous
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="34%"
|
|
Packit |
98cdb6 |
ALIGN="center"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="book1.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="H"
|
|
Packit |
98cdb6 |
>Home
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="33%"
|
|
Packit |
98cdb6 |
ALIGN="right"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="c1834.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="N"
|
|
Packit |
98cdb6 |
>Next >>>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="33%"
|
|
Packit |
98cdb6 |
ALIGN="left"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>Advanced Event and Signal Handling
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="34%"
|
|
Packit |
98cdb6 |
ALIGN="center"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
HREF="c1797.html"
|
|
Packit |
98cdb6 |
ACCESSKEY="U"
|
|
Packit |
98cdb6 |
>Up
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
WIDTH="33%"
|
|
Packit |
98cdb6 |
ALIGN="right"
|
|
Packit |
98cdb6 |
VALIGN="top"
|
|
Packit |
98cdb6 |
>Managing Selections
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|
|
Packit |
98cdb6 |
>
|