Updates to Section 5

Wed Jan 14 13:07:30 GMT 2004  Tony Gale <gale@gtk.org>

        * docs/faq/gtk-faq.sgml: Updates to Section 5
This commit is contained in:
GMT 2004 Tony Gale
2004-01-14 13:08:55 +00:00
committed by Tony Gale
parent ecb75e12b5
commit 051d7caf9f
6 changed files with 50 additions and 25 deletions

View File

@ -1,3 +1,7 @@
Wed Jan 14 13:07:30 GMT 2004 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: Updates to Section 5
Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de> Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkradioaction.c: Add a writable group property to align * gtk/gtkradioaction.c: Add a writable group property to align

View File

@ -1,3 +1,7 @@
Wed Jan 14 13:07:30 GMT 2004 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: Updates to Section 5
Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de> Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkradioaction.c: Add a writable group property to align * gtk/gtkradioaction.c: Add a writable group property to align

View File

@ -1,3 +1,7 @@
Wed Jan 14 13:07:30 GMT 2004 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: Updates to Section 5
Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de> Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkradioaction.c: Add a writable group property to align * gtk/gtkradioaction.c: Add a writable group property to align

View File

@ -1,3 +1,7 @@
Wed Jan 14 13:07:30 GMT 2004 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: Updates to Section 5
Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de> Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkradioaction.c: Add a writable group property to align * gtk/gtkradioaction.c: Add a writable group property to align

View File

@ -1,3 +1,7 @@
Wed Jan 14 13:07:30 GMT 2004 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: Updates to Section 5
Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de> Wed Jan 14 02:34:57 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkradioaction.c: Add a writable group property to align * gtk/gtkradioaction.c: Add a writable group property to align

View File

@ -2,7 +2,7 @@
<book> <book>
<bookinfo> <bookinfo>
<date>January 13th 2004</date> <date>January 14th 2004</date>
<title>GTK+ FAQ</title> <title>GTK+ FAQ</title>
<authorgroup> <authorgroup>
<author> <author>
@ -1469,7 +1469,7 @@ in a priority of G_PRIORITY_HIGH.</para>
<sect1> <sect1>
<title>Why does this strange 'x io error' occur when I <title>Why does this strange 'x io error' occur when I
<literal>fork()</literal> in my GTK+ app?</title> <literal>fork()</literal> in my GTK+ app? <emphasis>[GTK 2.x]</emphasis></title>
<para>This is not really a GTK+ problem, and the problem is <para>This is not really a GTK+ problem, and the problem is
not related to <literal>fork()</literal> either. If the 'x io not related to <literal>fork()</literal> either. If the 'x io
@ -1490,13 +1490,15 @@ illustrate handling fork() and exit().</para>
<programlisting role="C"> <programlisting role="C">
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Filename: gtk-fork.c * Filename: gtk-fork.c
* Version: 0.99.1 * Version: 0.99.2
* Copyright: Copyright (C) 1999, Erik Mouw * Copyright: Copyright (C) 1999, Erik Mouw
* Author: Erik Mouw &lt;J.A.K.Mouw@its.tudelft.nl&gt; * Author: Erik Mouw &lt;J.A.K.Mouw@its.tudelft.nl&gt;
* Description: GTK+ fork example * Description: GTK+ fork example
* Created at: Thu Sep 23 21:37:55 1999 * Created at: Thu Sep 23 21:37:55 1999
* Modified by: Erik Mouw &lt;J.A.K.Mouw@its.tudelft.nl&gt; * Modified by: Erik Mouw &lt;J.A.K.Mouw@its.tudelft.nl&gt;
* Modified at: Thu Sep 23 22:39:39 1999 * Modified at: Thu Sep 23 22:39:39 1999
* Modified by: Tony Gale &lt;gale@gtk.org&gt;
* Modified at: Wed Jan 14 12:38:00 2004
*-----------------------------------------------------------------------*/ *-----------------------------------------------------------------------*/
/* /*
* Compile with: * Compile with:
@ -1525,7 +1527,7 @@ void sigchld_handler(int num)
sigprocmask(SIG_BLOCK, &amp;set, &amp;oldset); sigprocmask(SIG_BLOCK, &amp;set, &amp;oldset);
/* wait for child */ /* wait for child */
while((pid = waitpid((pid_t)-1, &amp;status, WNOHANG)) > 0) while((pid = waitpid((pid_t)-1, &amp;status, WNOHANG)) &gt; 0)
{ {
if(WIFEXITED(status)) if(WIFEXITED(status))
{ {
@ -1622,13 +1624,13 @@ int main(int argc, char *argv[])
*/ */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT (window), "delete_event", g_signal_connect(G_OBJECT (window), "delete_event",
GTK_SIGNAL_FUNC(delete_event), NULL); G_CALLBACK(delete_event), NULL);
gtk_signal_connect(GTK_OBJECT (window), "destroy", g_signal_connect(G_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC(destroy), NULL); G_CALLBACK(destroy), NULL);
#if (GTK_MAJOR_VERSION == 1) && (GTK_MINOR_VERSION == 0) #if (GTK_MAJOR_VERSION == 1) &amp;&amp; (GTK_MINOR_VERSION == 0)
gtk_container_border_width(GTK_CONTAINER (window), 10); gtk_container_border_width(GTK_CONTAINER (window), 10);
#else #else
gtk_container_set_border_width(GTK_CONTAINER (window), 10); gtk_container_set_border_width(GTK_CONTAINER (window), 10);
@ -1637,8 +1639,8 @@ int main(int argc, char *argv[])
/* add a button to do something usefull */ /* add a button to do something usefull */
button = gtk_button_new_with_label("Fork me!"); button = gtk_button_new_with_label("Fork me!");
gtk_signal_connect(GTK_OBJECT (button), "clicked", g_signal_connect(G_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC(fork_me), NULL); G_CALLBACK(fork_me), NULL);
gtk_container_add(GTK_CONTAINER(window), button); gtk_container_add(GTK_CONTAINER(window), button);
@ -1663,7 +1665,7 @@ int main(int argc, char *argv[])
<sect1> <sect1>
<title>Why don't the contents of a button move when the button <title>Why don't the contents of a button move when the button
is pressed? Here's a patch to make it work that way...</title> is pressed? Here's a patch to make it work that way... <emphasis>[GTK 2.x]</emphasis></title>
<para>From: Peter Mattis</para> <para>From: Peter Mattis</para>
@ -1689,12 +1691,12 @@ and determined it didn't look good and removed it.</quote></para>
<sect1> <sect1>
<title>How do I identifiy a widgets top level window or other <title>How do I identifiy a widgets top level window or other
ancestor?</title> ancestor? <emphasis>[GTK 2.x]</emphasis></title>
<para>There are a couple of ways to find the top level parent <para>There are a couple of ways to find the top level parent
of a widget. The easier way is to call the of a widget. The easiest way is to call the
<literal>gtk_widget_get_toplevel()</literal> function that <literal>gtk_widget_get_toplevel()</literal> function that
returns pointer to a GtkWidget that is the top level returns a pointer to a GtkWidget that is the top level
window.</para> window.</para>
<para>A more complicated way to do this (but less limited, as <para>A more complicated way to do this (but less limited, as
@ -1718,12 +1720,16 @@ widget (entry, label, etc. To find the master hbox using the
hbox = gtk_widget_get_ancestor(w, GTK_TYPE_HBOX); hbox = gtk_widget_get_ancestor(w, GTK_TYPE_HBOX);
</programlisting> </programlisting>
<para>You can also follow the a widgets ancestry by using the function
<literal>gtk_widget_get_parent()</literal> that returns a pointer
to a widgets parent widget.</para>
</sect1> </sect1>
<!-- ----------------------------------------------------------------- --> <!-- ----------------------------------------------------------------- -->
<sect1> <sect1>
<title>How do I get the Window ID of a GtkWindow?</title> <title>How do I get the Window ID of a GtkWindow? <emphasis>[GTK 2.x]</emphasis></title>
<para>The actual Gdk/X window will be created when the widget <para>The actual Gdk/X window will be created when the widget
gets realized. You can get the Window ID with:</para> gets realized. You can get the Window ID with:</para>
@ -1738,8 +1744,7 @@ Window xwin = GDK_WINDOW_XWINDOW (GTK_WIDGET (my_window)->window);
<!-- ----------------------------------------------------------------- --> <!-- ----------------------------------------------------------------- -->
<sect1> <sect1>
<title>How do I catch a double click event (in a list widget, <title>How do I catch a double click event? <emphasis>[GTK 2.x]</emphasis></title>
for example)?</title>
<para>Tim Janik wrote to gtk-list (slightly modified):</para> <para>Tim Janik wrote to gtk-list (slightly modified):</para>
@ -1749,10 +1754,10 @@ for example)?</title>
gint gint
signal_handler_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data) signal_handler_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data)
{ {
if (GTK_IS_LIST_ITEM(widget) && if (GTK_IS_BUTTON(widget) &&
(event->type==GDK_2BUTTON_PRESS || (event->type==GDK_2BUTTON_PRESS ||
event->type==GDK_3BUTTON_PRESS) ) { event->type==GDK_3BUTTON_PRESS) ) {
printf("I feel %s clicked on button %d\n", printf("I feel %s clicked with button %d\n",
event->type==GDK_2BUTTON_PRESS ? "double" : "triple", event->type==GDK_2BUTTON_PRESS ? "double" : "triple",
event->button); event->button);
} }
@ -1764,18 +1769,18 @@ signal_handler_event(GtkWidget *widget, GdkEventButton *event, gpointer func_dat
<programlisting role="C"> <programlisting role="C">
{ {
/* list, list item init stuff */ /* button init stuff */
gtk_signal_connect(GTK_OBJECT(list_item), g_signal_connect(G_OBJECT(button),
"button_press_event", "button_press_event",
GTK_SIGNAL_FUNC(signal_handler_event), G_CALLBACK(signal_handler_event),
NULL); NULL);
/* and/or */ /* and/or */
gtk_signal_connect(GTK_OBJECT(list_item), g_signal_connect(G_OBJECT(button),
"button_release_event", "button_release_event",
GTK_SIGNAL_FUNC(signal_handler_event), G_CALLBACK(signal_handler_event),
NULL); NULL);
/* something else */ /* something else */