]> Pileus Git - ~andy/gtk/blob - docs/reference/gtk/tmpl/gtksignal.sgml
ec510317dc262005ec3fddde16c07603f4093a3d
[~andy/gtk] / docs / reference / gtk / tmpl / gtksignal.sgml
1 <!-- ##### SECTION Title ##### -->
2 Signals
3
4 <!-- ##### SECTION Short_Description ##### -->
5 Object methods and callbacks.
6
7 <!-- ##### SECTION Long_Description ##### -->
8 <para>
9 The GTK+ signal system merely proxies the GLib signal system now. For future 
10 usage, direct use of the <link linkend="gobject-Signals">GSignal</link> API is recommended, this avoids significant 
11 performance hits where #GtkArg structures have to be converted into #GValue<!>s.
12 </para>
13
14 <refsect2>
15 <title>What are signals?</title>
16 <para>
17 Signals are a way to get notification when something happens
18 and to customize object behavior according to the
19 user's needs.
20 Every <WordAsWord>signal</WordAsWord> is uniquely identified by a name,
21 "class_name::signal_name", where signal_name might be something like
22 "clicked" and class_name might be "GtkButton".  Note that some other class
23 may also define a "clicked" callback, so long as it doesn't derive from
24 #GtkButton.
25 </para>
26 <para>
27 When they are created, they are also assigned a unique positive integer,
28 the signal id (1 is the first signal id- 0 is used to flag an error).
29 Each is also tied to an array of types that describes
30 the prototype of the function pointer(s) (handlers) you may
31 connect to the signal.  Finally, every signal has
32 a default handler that is given by a function pointer
33 in its class structure:  it is run by default whenever the
34 signal is emitted.  (It is possible that a signal will
35 be emitted and a user-defined handler will prevent the default handler
36 from being run.)
37 </para>
38 <para>
39 Signals are used by everyone, but they are only
40 created on a per class basis -- so you should not call
41 call gtk_signal_new() unless you are writing
42 a new #GtkObject type.  However, if you want to make a new signal
43 for an existing type, you may use gtk_object_class_user_signal_new()
44 to create a signal that doesn't correspond to a class's builtin
45 methods.
46 </para>
47 </refsect2>
48 <refsect2>
49 <title>How are signals used?</title>
50 <para>
51 There are two basic actions in the signal handling game.
52 If you want notification of an event, you must <emphasis>connect</emphasis>
53 a function pointer and a data pointer to that signal;  the data pointer
54 will be passed as the last argument to the function (so long as you
55 are using the default marshalling functions).
56 You will receive a connection id, a unique positive integer
57 corresponding to that attachment.
58 </para>
59 <para>
60 Functions that want to notify the user of certain actions,
61 <Emphasis>emit</Emphasis> signals.
62 </para>
63 </refsect2>
64 <refsect2>
65 <title>Basic Terminology</title>
66 <variablelist>
67
68 <varlistentry>
69 <term>signal</term>
70 <listitem><para>A class method, e.g. GtkButton::clicked.
71 More precisely it is a unique class-branch/signal-name pair.
72 This means you may not define a signal handler for a class which
73 derives from #GtkButton that is called clicked,
74 but it is okay to share signals names if they are separate in
75 the class tree.
76 </para></listitem>
77 </varlistentry>
78
79 <varlistentry>
80 <term>default handler</term>
81 <listitem><para>The object's internal method which is invoked
82 when the signal is emitted.</para>
83 </listitem>
84 </varlistentry>
85
86 <varlistentry>
87 <term>user-defined handler</term>
88 <listitem><para>A function pointer and data connected
89 to a signal (for a particular object).</para>
90 <para>There are really two types: those which are connected
91 normally, and those which are connected by one 
92 of the connect_after functions.  The connect_after handlers
93 are always run after the default handler.</para>
94 <para>Many toolkits refer to these as <wordasword>callbacks</wordasword>.</para>
95 </listitem>
96 </varlistentry>
97
98 <varlistentry>
99 <term>emission</term>
100 <listitem><para>the whole process of emitting a signal,
101 including the invocation of all
102 the different handler types mentioned above.</para>
103 </listitem>
104 </varlistentry>
105
106 <varlistentry>
107 <term>signal id</term>
108 <listitem><para>The unique positive (nonzero) integer
109 used to identify a signal.  It can be used instead of 
110 a name to many functions for a slight performance
111 improvement.</para>
112 </listitem>
113 </varlistentry>
114
115 <varlistentry>
116 <term>connection id</term>
117 <listitem><para>The unique positive (nonzero) integer
118 used to identify the connection of a user-defined handler
119 to a signal.  Notice that it is allowed to connect the
120 same function-pointer/user-data pair twice, so
121 there is no guarantee that a function-pointer/user-data
122 maps to a unique connection id.
123 </para>
124 </listitem>
125 </varlistentry>
126
127 </variablelist>
128 </refsect2>
129
130 <refsect2><title>A brief note on how they work.</title>
131 <para>
132 The functions responsible for translating an array of #GtkArgs
133 to your C compiler's normal semantics are called Marshallers.
134 They are identified by
135 gtk_marshal_<replaceable>return_value</replaceable>__<replaceable>parameter_list</replaceable>()
136 for example a C function returning a gboolean and taking a gint
137 can be invoked by using gtk_marshal_BOOL__INT().
138 Not all possibly combinations of return/params are available,
139 of course, so if you are writing a #GtkObject with parameters
140 you might have to write a marshaller.
141 </para>
142 </refsect2>
143
144 <!-- ##### SECTION See_Also ##### -->
145 <para>
146 <variablelist>
147
148 <varlistentry>
149 <term>#GtkObject</term>
150 <listitem><para>The base class for things which emit signals.</para></listitem>
151 </varlistentry>
152
153 <varlistentry>
154 <term><link linkend="gobject-Signals">GSignal</link></term>
155 <listitem><para>The GLib signal system.</para></listitem>
156 </varlistentry>
157 </variablelist>
158 </para>
159
160 <!-- ##### MACRO GTK_SIGNAL_OFFSET ##### -->
161 <para>
162 Use in place of <function>offsetof()</function>, which is used if it exists.
163 </para>
164
165 <!-- # Unused Parameters # -->
166 @struct: 
167 @field: 
168
169
170 <!-- ##### ENUM GtkSignalRunType ##### -->
171 <para>
172 These configure the signal's emission.  They control
173 whether the signal can be emitted recursively on an object
174 and
175 whether to run the default method before or after the user-defined handlers.
176 </para>
177
178 <variablelist>
179
180 <varlistentry>
181 <term>GTK_RUN_FIRST</term>
182 <listitem><para>Run the default handler before the connected user-defined
183 handlers.
184 </para></listitem>
185 </varlistentry>
186
187 <varlistentry>
188 <term>GTK_RUN_LAST</term>
189 <listitem><para>Run the default handler after the connected
190 user-defined handlers.
191 (Handlers registered as "after" always run after the default handler though)
192 </para></listitem>
193 </varlistentry>
194
195 <varlistentry>
196 <term>GTK_RUN_BOTH</term>
197 <listitem><para>Run the default handler twice,
198 once before the user-defined handlers,
199 and
200 once after.
201 </para></listitem>
202 </varlistentry>
203
204 <varlistentry>
205 <term>GTK_RUN_NO_RECURSE</term>
206 <listitem><para>Whether to prevent a handler or hook
207 from reemitting the signal from within itself.
208 Attempts to
209 emit the signal while it is running will result in the signal
210 emission being restarted once it is done with the current processing.
211 </para><para>
212 You must be
213 careful to avoid having two handlers endlessly reemitting signals,
214 gtk_signal_n_emissions() can be helpful.
215 </para></listitem>
216 </varlistentry>
217
218 <varlistentry>
219 <term>GTK_RUN_ACTION</term>
220 <listitem><para>The signal is an action you can 
221 invoke without any particular setup or cleanup.
222 The signal is treated no differently, but some
223 other code can determine if the signal is appropriate to
224 delegate to user control.  For example, key binding sets
225 only allow bindings of ACTION signals to keystrokes.
226 </para></listitem>
227 </varlistentry>
228
229 <varlistentry>
230 <term>GTK_RUN_NO_HOOKS</term>
231 <listitem><para>This prevents the connection of emission hooks
232 to the signal.
233 </para></listitem>
234 </varlistentry>
235
236 </variablelist>
237
238 @GTK_RUN_FIRST: 
239 @GTK_RUN_LAST: 
240 @GTK_RUN_BOTH: 
241 @GTK_RUN_NO_RECURSE: 
242 @GTK_RUN_ACTION: 
243 @GTK_RUN_NO_HOOKS: 
244
245 <!-- ##### FUNCTION gtk_signal_new ##### -->
246 <para>
247 Creates a new signal type.  (This is usually done in the
248 class initializer.)
249 </para>
250
251 @name: the event name for the signal, e.g. "clicked".
252 @signal_flags: a combination of #GTK_RUN flags
253 specifying detail of when the default handler is to be invoked.
254 You should at least specify #GTK_RUN_FIRST
255 or #GTK_RUN_LAST.
256 @object_type: the type of object this signal pertains to.
257 It will also pertain to derivers of this type automatically.
258 @function_offset: How many bytes the function pointer is in
259 the class structure for this type.  Used to invoke a class
260 method generically.
261 @marshaller: the function to translate between an array
262 of GtkArgs and the native calling convention.  Usually they
263 are identified just by the type of arguments they take:
264 for example, gtk_marshal_BOOL__STRING() describes a marshaller
265 which takes a string and returns a boolean value.
266 @return_val: the type of return value, or #GTK_TYPE_NONE for a signal
267 without a return value.
268 @n_args: 
269 @Varargs: a list of #GTK_TYPE_*, one for each parameter.
270 @Returns: the signal id.
271 <!-- # Unused Parameters # -->
272 @nparams: the number of parameter the handlers may take.
273
274
275 <!-- ##### FUNCTION gtk_signal_newv ##### -->
276 <para>
277 Creates a new signal type.  (This is usually done in a
278 class initializer.)
279 </para>
280 <para>
281 This function take the types as an array, instead of a list
282 following the arguments.  Otherwise the same as gtk_signal_new().
283 </para>
284
285 @name: the name of the signal to create.
286 @signal_flags: see gtk_signal_new().
287 @object_type: the type of #GtkObject to associate the signal with.
288 @function_offset: how many bytes the function pointer is in
289 the class structure for this type.
290 @marshaller: 
291 @return_val: the type of the return value, or #GTK_TYPE_NONE if
292 you don't want a return value.
293 @n_args: 
294 @args: 
295 @Returns: the signal id.
296 <!-- # Unused Parameters # -->
297 @nparams: the number of parameters to the user-defined handlers.
298 @params: an array of GtkTypes, describing the prototype to
299 the callbacks.
300
301
302 <!-- ##### MACRO gtk_signal_lookup ##### -->
303 <para>
304 Given the name of the signal and the type of object it connects
305 to, get the signal's identifying integer.  Emitting the signal
306 by number is somewhat faster than using the name each time.
307 </para>
308 <para>
309 It also tries the ancestors of the given type.
310 </para>
311
312 @name: the signal's name, e.g. clicked.
313 @object_type: the type that the signal operates on, e.g. #GTK_TYPE_BUTTON.
314 @Returns: the signal's identifying number, or 0 if no signal was found.
315
316
317 <!-- ##### MACRO gtk_signal_name ##### -->
318 <para>
319 Given the signal's identifier, finds its name.
320 </para>
321 <para>
322 Two different signals may have the same name, if they have differing types.
323 </para>
324
325 @signal_id: the signal's identifying number.
326 @Returns: the signal name, or %NULL if the signal number was invalid.
327
328
329 <!-- ##### FUNCTION gtk_signal_emit ##### -->
330 <para>
331 Emits a signal.  This causes the default handler and user-defined
332 handlers to be run.
333 </para>
334 <para>
335 Here is what gtk_signal_emit() does:
336 </para>
337 <para>
338 1.  Calls the default handler and the user-connected handlers.
339 The default handler will be called first if
340 #GTK_RUN_FIRST is set, and last if #GTK_RUN_LAST is set.
341 </para>
342 <para>
343 2.  Calls all handlers connected with the "after" flag set.
344 </para>
345
346 @object: the object that emits the signal.
347 @signal_id: the signal identifier.
348 @Varargs: the parameters to the function, followed
349 by a pointer to the return type, if any.
350
351
352 <!-- ##### FUNCTION gtk_signal_emit_by_name ##### -->
353 <para>
354 Emits a signal.  This causes the default handler and user-connected
355 handlers to be run.
356 </para>
357
358 @object: the object that emits the signal.
359 @name: the name of the signal.
360 @Varargs: the parameters to the function, followed
361 by a pointer to the return type, if any.
362
363
364 <!-- ##### FUNCTION gtk_signal_emitv ##### -->
365 <para>
366 Emits a signal.  This causes the default handler and user-connected
367 handlers to be run.  This differs from gtk_signal_emit() by taking
368 an array of GtkArgs instead of using C's varargs mechanism.
369 </para>
370
371 @object: the object to emit the signal to.
372 @signal_id: the signal identifier.
373 @args: 
374 <!-- # Unused Parameters # -->
375 @params: an array of GtkArgs, one for each parameter,
376 followed by one which is a pointer to the return type.
377
378
379 <!-- ##### FUNCTION gtk_signal_emitv_by_name ##### -->
380 <para>
381 Emits a signal by name.  This causes the default handler and user-connected
382 handlers to be run.  This differs from gtk_signal_emit() by taking
383 an array of GtkArgs instead of using C's varargs mechanism.
384 </para>
385
386 @object: the object to emit the signal to.
387 @name: the name of the signal.
388 @args: 
389 <!-- # Unused Parameters # -->
390 @params: an array of GtkArgs, one for each parameter,
391 followed by one which is a pointer to the return type.
392
393
394 <!-- ##### MACRO gtk_signal_emit_stop ##### -->
395 <para>
396 This function aborts a signal's current emission.
397 </para>
398 <para>
399 It will prevent the default method from running,
400 if the signal was #GTK_RUN_LAST and you connected
401 normally (i.e. without the "after" flag).
402 </para>
403 <para>
404 It will print a warning if used on a signal which
405 isn't being emitted.
406 </para>
407
408 @object: the object whose signal handlers you wish to stop.
409 @signal_id: the signal identifier, as returned by g_signal_lookup().
410 <!-- # Unused Parameters # -->
411 @i: 
412 @s: 
413
414
415 <!-- ##### FUNCTION gtk_signal_emit_stop_by_name ##### -->
416 <para>
417 This function aborts a signal's current emission.
418 </para>
419 <para>It is just like
420 gtk_signal_emit_stop()
421 except it will lookup the signal id for you.
422 </para>
423
424 @object: the object whose signal handlers you wish to stop.
425 @name: the name of the signal you wish to stop.
426
427
428 <!-- ##### MACRO gtk_signal_connect ##### -->
429 <para>
430 Attaches a function pointer and user data to a signal for
431 a particular object.
432 </para>
433 <para>
434 The #GtkSignalFunction takes a #GtkObject as its first parameter.
435 It will be the same object as the one you're connecting
436 the hook to.  The @func_data will be passed as the last parameter
437 to the hook.
438 </para>
439 <para>
440 All else being equal, signal handlers are invoked in the order 
441 connected (see gtk_signal_emit() for the other details of
442 which order things are called in).
443 </para>
444 <para>
445 Here is how one passes an integer as user data,
446 for when you just want to specify a constant int
447 as parameter to your function:
448 </para>
449 <informalexample>
450 <programlisting>
451 static void button_clicked_int (GtkButton* button, gpointer func_data)
452 {
453         g_print ("button pressed: %d\n", GPOINTER_TO_INT (func_data));
454 }
455
456 /* By calling this function, you will make the g_print above
457  * execute, printing the number passed as `to_print'. */
458 static void attach_print_signal (GtkButton* button, gint to_print)
459 {
460         gtk_signal_connect (GTK_OBJECT (button), "clicked",
461                 GTK_SIGNAL_FUNC (button_clicked_int),
462                 GINT_TO_POINTER (to_print));
463 }
464 </programlisting>
465 </informalexample>
466
467 @object: the object associated with the signal, e.g. if a button
468 is getting pressed, this is that button.
469 @name: name of the signal.
470 @func: function pointer to attach to the signal.
471 @func_data: value to pass as to your function (through the marshaller).
472 @Returns: the connection id.
473 <!-- # Unused Parameters # -->
474 @o: 
475 @s: 
476 @f: 
477 @d: 
478
479
480 <!-- ##### MACRO gtk_signal_connect_after ##### -->
481 <para>
482 Attaches a function pointer and user data to a signal
483 so that this handler will be called after the other handlers.
484 </para>
485
486 @object: the object associated with the signal.
487 @name: name of the signal.
488 @func: function pointer to attach to the signal.
489 @func_data: value to pass as to your function (through the marshaller).
490 @Returns: the unique identifier for this attachment:  the connection id.
491 <!-- # Unused Parameters # -->
492 @o: 
493 @s: 
494 @f: 
495 @d: 
496
497
498 <!-- ##### MACRO gtk_signal_connect_object ##### -->
499 <para>
500 This function is for registering a callback that will
501 call another object's callback.  That is,
502 instead of passing the object which is responsible
503 for the event as the first parameter of the callback,
504 it is switched with the user data (so the object which emits
505 the signal will be the last parameter, which is where the
506 user data usually is).
507 </para>
508 <para>
509 This is useful for passing a standard function in as a callback.
510 For example, if you wanted a button's press to gtk_widget_show()
511 some widget, you could write:
512 </para>
513 <informalexample>
514 <programlisting>
515 gtk_signal_connect_object (button, "clicked", gtk_widget_show, window);
516 </programlisting>
517 </informalexample>
518
519 @object: the object which emits the signal.
520 @name: the name of the signal.
521 @func: the function to callback.
522 @slot_object: the object to pass as the first parameter to func.
523 (Though it pretends to take an object, you can
524 really pass any gpointer as the #slot_object .)
525 @Returns: the connection id.
526 <!-- # Unused Parameters # -->
527 @o: 
528 @s: 
529 @f: 
530 @d: 
531
532
533 <!-- ##### MACRO gtk_signal_connect_object_after ##### -->
534 <para>
535 Attaches a signal hook to a signal, passing in an alternate
536 object as the first parameter, and guaranteeing 
537 that the default handler and all normal
538 handlers are called first.
539 </para>
540
541 @object: the object associated with the signal.
542 @name: name of the signal.
543 @func: function pointer to attach to the signal.
544 @slot_object: the object to pass as the first parameter to #func.
545 @Returns: the connection id.
546 <!-- # Unused Parameters # -->
547 @o: 
548 @s: 
549 @f: 
550 @d: 
551
552
553 <!-- ##### FUNCTION gtk_signal_connect_full ##### -->
554 <para>
555 Attaches a function pointer and user data to a signal with
556 more control.
557 </para>
558
559 @object: the object which emits the signal.  For example, a button
560 in the button press signal.
561 @name: the name of the signal.
562 @func: function pointer to attach to the signal.
563 @unsupported: 
564 @data: the user data associated with the function.
565 @destroy_func: function to call when this particular hook is 
566 disconnected.
567 @object_signal: whether this is an object signal-- basically an "object
568 signal" is one that wants its user_data and object fields switched,
569 which is useful for calling functions which operate on another
570 object primarily.
571 @after: whether to invoke the user-defined handler after the signal, or to let 
572 the signal's default behavior preside (i.e. depending on #GTK_RUN_FIRST
573 and #GTK_RUN_LAST).
574 @Returns: the connection id.
575 <!-- # Unused Parameters # -->
576 @marshal: the function marshal, see the gtkmarshall documentation for
577 more details, but briefly: the marshaller is a function which takes
578 the #GtkObject which emits the signal, the user data, the number of the
579 arguments, and the array of arguments.  It is responsible for
580 calling the function in the appropriate calling convention.
581 gtk_signal_default_marshaller is usually fine.
582 (This shows up, for example, when worrying about matching
583 c++ or other languages' calling conventions.)
584
585
586 <!-- ##### FUNCTION gtk_signal_connect_while_alive ##### -->
587 <para>
588 Attaches a function pointer and another #GtkObject to a signal.
589 </para>
590 <para>
591 This function takes an object whose "destroy" signal
592 should be trapped.
593 That way, you don't have to clean up the
594 signal handler when you destroy the object.
595 It is a little less efficient though.
596 </para>
597 <para>
598 (Instead you may call gtk_signal_disconnect_by_data(), if you want
599 to explicitly delete all attachments to this object.  This
600 is perhaps not recommended since it could be confused
601 with an integer masquerading as a pointer (through GINT_TO_POINTER()).)
602 </para>
603
604 @object: the object that emits the signal.
605 @signal: 
606 @func: function pointer to attach to the signal.
607 @func_data: pointer to pass to func.
608 @alive_object: object whose death should cause the handler connection
609 to be destroyed.
610 <!-- # Unused Parameters # -->
611 @name: name of the signal.
612
613
614 <!-- ##### FUNCTION gtk_signal_connect_object_while_alive ##### -->
615 <para>
616 These signal connectors are for signals which refer to objects,
617 so they must not be called after the object is deleted.
618 </para>
619 <para>
620 Unlike gtk_signal_connect_while_alive(),
621 this swaps the object and user data, making it suitable for
622 use with functions which primarily operate on the user data.
623 </para>
624 <para>
625 This function acts just like gtk_signal_connect_object() except
626 it traps the "destroy" signal to prevent you from having to
627 clean up the handler.
628 </para>
629
630 @object: the object associated with the signal.
631 @signal: 
632 @func: function pointer to attach to the signal.
633 @alive_object: the user data, which must be an object, whose destruction
634 should signal the removal of this signal.
635 <!-- # Unused Parameters # -->
636 @name: name of the signal.
637
638
639 <!-- ##### MACRO gtk_signal_disconnect ##### -->
640 <para>
641 Destroys a user-defined handler connection.
642 </para>
643
644 @object: the object which the handler pertains to.
645 @handler_id: the connection id.
646
647
648 <!-- ##### MACRO gtk_signal_disconnect_by_func ##### -->
649 <para>
650 Destroys all connections for a particular object, with
651 the given function-pointer and user-data.
652 </para>
653
654 @object: the object which emits the signal.
655 @func: the function pointer to search for.
656 @data: the user data to search for.
657 <!-- # Unused Parameters # -->
658 @o: 
659 @f: 
660 @d: 
661
662
663 <!-- ##### MACRO gtk_signal_disconnect_by_data ##### -->
664 <para>
665 Destroys all connections for a particular object, with
666 the given user-data.
667 </para>
668
669 @object: the object which emits the signal.
670 @data: the user data to search for.
671 <!-- # Unused Parameters # -->
672 @o: 
673 @d: 
674
675
676 <!-- ##### MACRO gtk_signal_handler_block ##### -->
677 <para>
678 Prevents a user-defined handler from being invoked.  All other
679 signal processing will go on as normal, but this particular
680 handler will ignore it.
681 </para>
682
683 @object: the object which emits the signal to block.
684 @handler_id: the connection id.
685
686
687 <!-- ##### MACRO gtk_signal_handler_block_by_func ##### -->
688 <para>
689 Prevents a user-defined handler from being invoked, by reference to
690 the user-defined handler's function pointer and user data.  (It may result in
691 multiple hooks being blocked, if you've called connect multiple times.)
692 </para>
693
694 @object: the object which emits the signal to block.
695 @func: the function pointer of the handler to block.
696 @data: the user data of the handler to block.
697 <!-- # Unused Parameters # -->
698 @o: 
699 @f: 
700 @d: 
701
702
703 <!-- ##### MACRO gtk_signal_handler_block_by_data ##### -->
704 <para>
705 Prevents all user-defined handlers with a certain user data from being invoked.
706 </para>
707
708 @object: the object which emits the signal we want to block.
709 @data: the user data of the handlers to block.
710 <!-- # Unused Parameters # -->
711 @o: 
712 @d: 
713
714
715 <!-- ##### MACRO gtk_signal_handler_unblock ##### -->
716 <para>
717 Undoes a block, by connection id.  Note that undoing a block doesn't
718 necessarily make the hook callable, because if you block a
719 hook twice, you must unblock it twice.
720 </para>
721
722 @object: the object which emits the signal we want to unblock.
723 @handler_id: the emission handler identifier, as returned by
724 gtk_signal_connect(), etc.
725
726
727 <!-- ##### MACRO gtk_signal_handler_unblock_by_func ##### -->
728 <para>
729 Undoes a block, by function pointer and data.
730 Note that undoing a block doesn't
731 necessarily make the hook callable, because if you block a
732 hook twice, you must unblock it twice.
733 </para>
734
735 @object: the object which emits the signal we want to unblock.
736 @func: the function pointer to search for.
737 @data: the user data to search for.
738 <!-- # Unused Parameters # -->
739 @o: 
740 @f: 
741 @d: 
742
743
744 <!-- ##### MACRO gtk_signal_handler_unblock_by_data ##### -->
745 <para>
746 Undoes block(s), to all signals for a particular object
747 with a particular user-data pointer
748 </para>
749
750 @object: the object which emits the signal we want to unblock.
751 @data: the user data to search for.
752 <!-- # Unused Parameters # -->
753 @o: 
754 @d: 
755
756
757 <!-- ##### MACRO gtk_signal_handler_pending ##### -->
758 <para>
759 Returns a connection id corresponding to a given signal id and object.
760 </para>
761 <para>
762 One example of when you might use this is when the arguments
763 to the signal are difficult to compute.  A class implementor
764 may opt to not emit the signal if no one is attached anyway,
765 thus saving the cost of building the arguments.
766 </para>
767
768 @object: the object to search for the desired user-defined handler.
769 @signal_id: the number of the signal to search for.
770 @may_be_blocked: whether it is acceptable to return a blocked
771 handler.
772 @Returns: the connection id, if a connection was found.  0 otherwise.
773 <!-- # Unused Parameters # -->
774 @i: 
775 @s: 
776 @b: 
777
778
779 <!-- ##### MACRO gtk_signal_handler_pending_by_func ##### -->
780 <para>
781 Returns a connection id corresponding to a given signal id, object, function
782 pointer and user data.
783 </para>
784
785 @object: the object to search for the desired handler.
786 @signal_id: the number of the signal to search for.
787 @may_be_blocked: whether it is acceptable to return a blocked
788 handler.
789 @func: the function pointer to search for.
790 @data: the user data to search for.
791 @Returns: the connection id, if a handler was found.  0 otherwise.
792 <!-- # Unused Parameters # -->
793 @o: 
794 @s: 
795 @b: 
796 @f: 
797 @d: 
798
799
800 <!-- ##### MACRO gtk_signal_default_marshaller ##### -->
801 <para>
802 A marshaller that returns void and takes no extra parameters.
803 </para>
804
805
806