]> Pileus Git - ~andy/gtk/commitdiff
FAQ Update
authorGMT 2000 Tony Gale <gale@gtk.org>
Tue, 22 Feb 2000 13:49:53 +0000 (13:49 +0000)
committerTony Gale <gale@src.gnome.org>
Tue, 22 Feb 2000 13:49:53 +0000 (13:49 +0000)
Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>

        * docs/gtkfaq.sgml: FAQ Update

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/faq/gtkfaq.sgml
docs/gtkfaq.sgml

index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 708b9ff575452b4858ba9cde5bd8773c1ed0fad5..0ff5f0636aee16a51fe616572a1d2d6c376d177f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Feb 22 13:54:12 GMT 2000  Tony Gale <gale@gtk.org>
+
+       * docs/gtkfaq.sgml: FAQ Update
+
 2000-02-19  Anders Carlsson  <andersca@gnu.org>
 
        * gtk/gtkrange.c (gtk_range_scroll_event): Return TRUE
index 1dea1a6c267b1c811fb7cd04f424f5f2743235b2..9ec3927ea39ac7a14384461bbe071ac38e36ceac 100644 (file)
@@ -9,7 +9,7 @@
 <!-- NOTE: Use only one author tag, otherwise sgml2txt barfs - TRG --> 
 <author>Tony Gale, Shawn T. Amundson, Emmanuel Deloget, Nathan Froyd
 
-<date>November 9th 1999
+<date>February 9th 2000
 
 <abstract> This document is intended to answer questions that are likely to be 
 frequently asked by programmers using GTK+ or people who are just looking at 
@@ -1477,6 +1477,19 @@ Moreover, Havoc posted this to the <tt/gtk-list/
   you click a button makes button clicking and signals related concepts.
 </quote>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>Data I pass to the <tt/delete_event/ (or other event) handler gets corrupted.
+<p>
+All event handlers take an additional argument which contains
+information about the event that triggered the handler. So, a
+<tt/delete_event/ handler must be declared as:
+
+<tscreen><verb>
+gint delete_event_handler (GtkWidget   *widget,
+                           GdkEventAny *event,
+                           gpointer     data);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>I have my signal connected to the the (whatever) event, but it seems I don't catch it. What's wrong?
 <p>
@@ -1544,7 +1557,7 @@ placed on a queue, which is processed within <tt/gtk_main()/. You can
 force the drawing queue to be processed using something like:
 
 <tscreen><verb>
-while (g_main_iteration(FALSE));
+while (gtk_main_iteration(FALSE));
 </verb></tscreen>
 
 inside you're function that changes the widget.
@@ -1606,6 +1619,36 @@ you:
 <item> replace the data with NULL (with the same key)
 </itemize>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I reparent a widget?
+<p>
+The normal way to reparent (ie change the owner) of a widget should be
+to use the function:
+
+<tscreen><verb>
+void gtk_widget_reparent (GtkWidget *widget, 
+                          GtkWidget *new_parent)
+</verb></tscreen>
+
+But this is only a "should be" since this function does not correctly
+do its job on some specific widgets. The main goal of
+gtk_widget_reparent() is to avoid unrealizing widget if both widget
+and new_parent are realized (in this case, widget->window is
+successfully reparented). The problem here is that some widgets in the
+GTK+ hierarchy have multiple attached X subwindows and this is notably
+the case for the GtkSpinButton widget. For those,
+gtk_widget_reparent() will fail by leaving an unrealized child window
+where it should not.
+
+To avoid this problem, simply use the following code snippet: 
+
+<tscreen><verb>
+     gtk_widget_ref(widget);
+     gtk_container_remove(GTK_CONTAINER(old_parent), widget);
+     gtk_container_add(GTK_CONTAINER(new_parent), widget);
+     gtk_widget_unref(widget);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How could I get any widgets position?
 <p>
@@ -1613,15 +1656,26 @@ As Tim Janik pointed out, there are different cases, and each case requires
 a different solution.
 
 <itemize>
-<item>  If you want the position of a widget relative to its parent, you should
-        use <tt/widget->allocation.x/ and <tt/widget->allocation.y/.
-<item>  If you want the position of a window relative to the X root window,
-        you should use <tt/gdk_window_get_geometry()/ or 
+<item> If you want the position of a widget relative to its parent,
+        you should use <tt/widget->allocation.x/ and
+        <tt/widget->allocation.y/.
+<item> If you want the position of a window relative to the X root
+        window, you should use <tt/gdk_window_get_geometry()/
+        <tt/gdk_window_get_position()/ or
         <tt/gdk_window_get_origin()/.
-<item>  Last but not least, if you want to get a Window Manager frame position,
-        you should use <tt/gdk_window_get_deskrelative_origin()/.
+<item> If you want to get the position of the window (including the WM
+        decorations), you should use
+        <tt/gdk_window_get_root_origin()/.
+<item> Last but not least, if you want to get a Window Manager frame
+        position, you should use
+        <tt/gdk_window_get_deskrelative_origin()/.
 </itemize>
 
+Your choice of Window Manager will have an effect of the results of
+the above functions. You should keep this in mind when writing your
+application. This is dependant upon how the Window Managers manage the
+decorations that they add around windows.
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I set the size of a widget/window? How do I prevent the user resizing my window?
 <p>
@@ -1632,17 +1686,17 @@ The <tt/gtk_widget_set_usize()/ function is used to set the
 size of a widget. In order to use all the features that are provided by
 this function when it acts on a window, you may want to use the
 <tt/gtk_window_set_policy/ function. The definition of these functions
-is:
+are:
 
 <tscreen><verb>
-void        gtk_widget_set_usize (GtkWidget *widget,
-                                  gint width,
-                                  gint height);
-
-void        gtk_window_set_policy (GtkWindow *window,
-                                   gint allow_shrink,
-                                   gint allow_grow,
-                                   gint auto_shrink);
+void gtk_widget_set_usize (GtkWidget *widget,
+                           gint width,
+                           gint height);
+
+void gtk_window_set_policy (GtkWindow *window,
+                            gint allow_shrink,
+                            gint allow_grow,
+                            gint auto_shrink);
 </verb></tscreen>
 
 <tt/Auto_shrink/ will automatically shrink the window when the
@@ -1658,6 +1712,20 @@ allow_grow   = TRUE
 auto_shrink  = FALSE
 </verb></tscreen>
 
+The <tt/gtk_widget_set_usize()/ functions is not the easiest way to
+set a window size since you cannot decrease this window size with
+another call to this function unless you call it twice, as in:
+
+     gtk_widget_set_usize(your_widget, -1, -1);
+     gtk_widget_set_usize(your_widget, new_x_size, new_y_size);
+
+Another way to set the size of and/or move a window is to use the
+<tt/gdk_window_move_resize()/ function which uses to work fine both to
+grow or to shrink the window:
+
+     gdk_window_move_resize(window->window, 
+                            x_pos, y_pos, 
+                            x_size, y_size);
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I add a popup menu to my GTK+ application?
 <p>
@@ -1694,8 +1762,8 @@ is a boolean value: when this value is TRUE, the widget is enabled.
 <p>
 For example:
 <verb>
-gint gtk_clist_prepend (GtkCList    *clist,
-                        gchar       *text[]);
+gint gtk_clist_prepend (GtkCList *clist,
+                        gchar    *text[]);
 </verb>
 
 Answer: No, while a type "gchar*" (pointer to char) can automatically
@@ -1730,6 +1798,34 @@ DirectMedia Layer library (SDL).
 You do NOT want to use <tt/gdk_draw_point()/, that will be extremely
 slow.
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I create a pixmap without having my window realized/shown?
+<p>
+Functions such as <tt/gdk_pixmap_create_from_xpm()/ require a valid
+window as a parameter. During the initialisation phase of an
+application, a valid window may not be available without showing a
+window, which may be inappropriate. In order to avoid this, a
+function such as <tt/gdk_pixmap_colormap_create_from_xpm/ can be used,
+as in:
+
+<tscreen><verb>
+  char *pixfile = "foo.xpm";
+  GtkWidget *top, *box, *pixw;
+  GdkPixmap *pixmap, *pixmap_mask;
+
+  top = gtk_window_new (GKT_WINDOW_TOPLEVEL);
+  box = gtk_hbox_new (FALSE, 4);
+  gtk_conainer_add (GTK_CONTAINER(top), box);
+  pixmap = gdk_pixmap_colormap_create_from_xpm (
+               NULL, gtk_widget_get_colormap(top),
+               &amp;pixmap_mask, NULL, pixfile);
+  pixw = gtk_pixmap_new (pixmap, pixmap_mask);
+  gdk_pixmap_unref (pixmap);
+  gdk_pixmap_unref (pixmap_mask);
+
+</verb></tscreen>
+
 <!-- ***************************************************************** -->
 <sect>Development with GTK+: widget specific questions 
 <!-- ***************************************************************** -->
@@ -1836,6 +1932,25 @@ To get known about the selection:
 }
 </verb></tscreen>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I stop the column headings of a GtkCList disappearing
+when the list is scrolled?
+<p>
+This happens when a GtkCList is packed into a GtkScrolledWindow using
+the function <tt/gtk_scroll_window_add_with_viewport()/. The prefered
+method of adding a CList to a scrolled window is to use the function
+<tt/gtk_container_add/, as in:
+
+<tscreen><verb>
+    GtkWidget *scrolled, *clist;
+    char *titles[] = { "Title1" , "Title2" };
+
+    scrolled = gtk_scrolled_window_new(NULL, NULL);
+
+    clist = gtk_clist_new_with_titles(2, titles);
+    gtk_container_add(GTK_CONTAINER(scrolled), clist);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- --><p>
 <sect1>I don't want the user of my applications to enter text into a GtkCombo. Any idea?
 <p>
@@ -1956,9 +2071,9 @@ align it, center it or left align it. If you want to do this, you
 should use:
 
 <tscreen><verb>
-void gtk_misc_set_alignment     (GtkMisc *misc,
-                                gfloat xalign,
-                                gfloat yalign);
+void gtk_misc_set_alignment (GtkMisc *misc,
+                             gfloat xalign,
+                             gfloat yalign);
 </verb></tscreen>
 
 where the <tt/xalign/ and <tt/yalign/ values are floats in [0.00;1.00].
@@ -2037,14 +2152,6 @@ style "postie"
 widget "gtk-tooltips*" style "postie"
 </verb>
 
-<!-- ----------------------------------------------------------------- -->
-<sect1>How do I use horizontal scrollbars with a GtkText widget?
-<p>
-The short answer is that you can't. The current version of the GtkText
-widget does not support horizontal scrolling. There is an intention to
-completely rewrite the GtkText widget, at which time this limitation
-will be removed.
-
 <!-- ----------------------------------------------------------------- -->
 <sect1>I can't add more than (something like) 2000 chars in a GtkEntry. What's wrong?
 <p>
@@ -2064,6 +2171,28 @@ the number of chars in the entry to 2047.
     max_length = MIN (2047, entry->text_max_length);
 </verb></tscreen>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I make a GtkEntry widget activate on pressing the Return key?
+<p>
+The Entry widget emits an 'activate' signal when you press return in
+it. Just attach to the activate signal on the entry and do whatever you
+want to do. Typical code would be:
+
+<tscreen><verb>
+  entry = gtk_entry_new();
+  gtk_signal_connect (GTK_OBJECT(entry), "activate",
+                      GTK_SIGNAL_FUNC(entry_callback),
+                      NULL);
+</verb></tscreen>
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I use horizontal scrollbars with a GtkText widget?
+<p>
+The short answer is that you can't. The current version of the GtkText
+widget does not support horizontal scrolling. There is an intention to
+completely rewrite the GtkText widget, at which time this limitation
+will be removed.
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I change the font of a GtkText widget?
 <p>
@@ -2565,45 +2694,51 @@ have not accepted "hi 7 am 17" or "hi i hi 17".
 <!-- ***************************************************************** -->
 <sect>GTK+ FAQ Contributions, Maintainers and Copyright
 <p>
-If you would like to make a contribution to the FAQ, send either one of us
-an e-mail message with the exact text you think should be included (question and
-answer).  With your help, this document can grow and become more useful!
+If you would like to make a contribution to the FAQ, send either one
+of us an e-mail message with the exact text you think should be
+included (question and answer). With your help, this document can grow
+and become more useful!
 
-This document is maintained by Nathan Froyd 
-<htmlurl url="mailto:maestrox@geocities.com" 
-name="&lt;maestrox@geocities.com&gt;">,
+This document is maintained by 
 Tony Gale <htmlurl url="mailto:gale@gtk.org" 
-name="&lt;gale@gtk.org&gt;"> and 
+name="&lt;gale@gtk.org&gt;"> 
+Nathan Froyd <htmlurl url="mailto:maestrox@geocities.com" 
+name="&lt;maestrox@geocities.com&gt;">,
+and 
 Emmanuel Deloget <htmlurl url="mailto:logout@free.fr"
 name="&lt;logout@free.fr&gt;">.
 This FAQ was created by Shawn T. Amundson 
 <htmlurl url="mailto:amundson@gimp.org" 
 name="&lt;amundson@gimp.org&gt;"> who continues to provide support.
 
-The GTK+ FAQ is Copyright (C) 1997,1998, 1999 by Shawn T. Amundson, 
-Nathan Froyd and Tony Gale, Emmanuel Deloget.
+Contributions should be sent to Tony Gale <htmlurl url="mailto:gale@gtk.org" 
+name="&lt;gale@gtk.org&gt;">
+
+The GTK+ FAQ is Copyright (C) 1997-2000 by Shawn T. Amundson, 
+Tony Gale, Emmanuel Deloget and Nathan Froyd.
 
-Permission is granted to make and distribute verbatim copies of 
-this manual provided the copyright notice and this permission notice 
-are preserved on all copies.
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
 
-Permission is granted to copy and distribute modified versions of 
-this document under the conditions for verbatim copying, provided 
-that this copyright notice is included exactly as in the original, 
-and that the entire resulting derived work is distributed under 
-the terms of a permission notice identical to this one.
+Permission is granted to copy and distribute modified versions of this
+document under the conditions for verbatim copying, provided that this
+copyright notice is included exactly as in the original, and that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
 
-Permission is granted to copy and distribute translations of 
-this document into another language,  under the above conditions 
-for modified versions.
+Permission is granted to copy and distribute translations of this
+document into another language, under the above conditions for
+modified versions.
 
-If you are intending to incorporate this document into a published work, 
-please contact one of the maintainers, and we will make an effort to ensure 
-that you have the most up to date information available.
+If you are intending to incorporate this document into a published
+work, please contact one of the maintainers, and we will make an
+effort to ensure that you have the most up to date information
+available.
 
 There is no guarentee that this document lives up to its intended
-purpose.  This is simply provided as a free resource.  As such,
-the authors and maintainers of the information provided within can 
-not make any guarentee that the information is even accurate.
+purpose.  This is simply provided as a free resource.  As such, the
+authors and maintainers of the information provided within can not
+make any guarentee that the information is even accurate.
 
 </article>
index 1dea1a6c267b1c811fb7cd04f424f5f2743235b2..9ec3927ea39ac7a14384461bbe071ac38e36ceac 100644 (file)
@@ -9,7 +9,7 @@
 <!-- NOTE: Use only one author tag, otherwise sgml2txt barfs - TRG --> 
 <author>Tony Gale, Shawn T. Amundson, Emmanuel Deloget, Nathan Froyd
 
-<date>November 9th 1999
+<date>February 9th 2000
 
 <abstract> This document is intended to answer questions that are likely to be 
 frequently asked by programmers using GTK+ or people who are just looking at 
@@ -1477,6 +1477,19 @@ Moreover, Havoc posted this to the <tt/gtk-list/
   you click a button makes button clicking and signals related concepts.
 </quote>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>Data I pass to the <tt/delete_event/ (or other event) handler gets corrupted.
+<p>
+All event handlers take an additional argument which contains
+information about the event that triggered the handler. So, a
+<tt/delete_event/ handler must be declared as:
+
+<tscreen><verb>
+gint delete_event_handler (GtkWidget   *widget,
+                           GdkEventAny *event,
+                           gpointer     data);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>I have my signal connected to the the (whatever) event, but it seems I don't catch it. What's wrong?
 <p>
@@ -1544,7 +1557,7 @@ placed on a queue, which is processed within <tt/gtk_main()/. You can
 force the drawing queue to be processed using something like:
 
 <tscreen><verb>
-while (g_main_iteration(FALSE));
+while (gtk_main_iteration(FALSE));
 </verb></tscreen>
 
 inside you're function that changes the widget.
@@ -1606,6 +1619,36 @@ you:
 <item> replace the data with NULL (with the same key)
 </itemize>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I reparent a widget?
+<p>
+The normal way to reparent (ie change the owner) of a widget should be
+to use the function:
+
+<tscreen><verb>
+void gtk_widget_reparent (GtkWidget *widget, 
+                          GtkWidget *new_parent)
+</verb></tscreen>
+
+But this is only a "should be" since this function does not correctly
+do its job on some specific widgets. The main goal of
+gtk_widget_reparent() is to avoid unrealizing widget if both widget
+and new_parent are realized (in this case, widget->window is
+successfully reparented). The problem here is that some widgets in the
+GTK+ hierarchy have multiple attached X subwindows and this is notably
+the case for the GtkSpinButton widget. For those,
+gtk_widget_reparent() will fail by leaving an unrealized child window
+where it should not.
+
+To avoid this problem, simply use the following code snippet: 
+
+<tscreen><verb>
+     gtk_widget_ref(widget);
+     gtk_container_remove(GTK_CONTAINER(old_parent), widget);
+     gtk_container_add(GTK_CONTAINER(new_parent), widget);
+     gtk_widget_unref(widget);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How could I get any widgets position?
 <p>
@@ -1613,15 +1656,26 @@ As Tim Janik pointed out, there are different cases, and each case requires
 a different solution.
 
 <itemize>
-<item>  If you want the position of a widget relative to its parent, you should
-        use <tt/widget->allocation.x/ and <tt/widget->allocation.y/.
-<item>  If you want the position of a window relative to the X root window,
-        you should use <tt/gdk_window_get_geometry()/ or 
+<item> If you want the position of a widget relative to its parent,
+        you should use <tt/widget->allocation.x/ and
+        <tt/widget->allocation.y/.
+<item> If you want the position of a window relative to the X root
+        window, you should use <tt/gdk_window_get_geometry()/
+        <tt/gdk_window_get_position()/ or
         <tt/gdk_window_get_origin()/.
-<item>  Last but not least, if you want to get a Window Manager frame position,
-        you should use <tt/gdk_window_get_deskrelative_origin()/.
+<item> If you want to get the position of the window (including the WM
+        decorations), you should use
+        <tt/gdk_window_get_root_origin()/.
+<item> Last but not least, if you want to get a Window Manager frame
+        position, you should use
+        <tt/gdk_window_get_deskrelative_origin()/.
 </itemize>
 
+Your choice of Window Manager will have an effect of the results of
+the above functions. You should keep this in mind when writing your
+application. This is dependant upon how the Window Managers manage the
+decorations that they add around windows.
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I set the size of a widget/window? How do I prevent the user resizing my window?
 <p>
@@ -1632,17 +1686,17 @@ The <tt/gtk_widget_set_usize()/ function is used to set the
 size of a widget. In order to use all the features that are provided by
 this function when it acts on a window, you may want to use the
 <tt/gtk_window_set_policy/ function. The definition of these functions
-is:
+are:
 
 <tscreen><verb>
-void        gtk_widget_set_usize (GtkWidget *widget,
-                                  gint width,
-                                  gint height);
-
-void        gtk_window_set_policy (GtkWindow *window,
-                                   gint allow_shrink,
-                                   gint allow_grow,
-                                   gint auto_shrink);
+void gtk_widget_set_usize (GtkWidget *widget,
+                           gint width,
+                           gint height);
+
+void gtk_window_set_policy (GtkWindow *window,
+                            gint allow_shrink,
+                            gint allow_grow,
+                            gint auto_shrink);
 </verb></tscreen>
 
 <tt/Auto_shrink/ will automatically shrink the window when the
@@ -1658,6 +1712,20 @@ allow_grow   = TRUE
 auto_shrink  = FALSE
 </verb></tscreen>
 
+The <tt/gtk_widget_set_usize()/ functions is not the easiest way to
+set a window size since you cannot decrease this window size with
+another call to this function unless you call it twice, as in:
+
+     gtk_widget_set_usize(your_widget, -1, -1);
+     gtk_widget_set_usize(your_widget, new_x_size, new_y_size);
+
+Another way to set the size of and/or move a window is to use the
+<tt/gdk_window_move_resize()/ function which uses to work fine both to
+grow or to shrink the window:
+
+     gdk_window_move_resize(window->window, 
+                            x_pos, y_pos, 
+                            x_size, y_size);
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I add a popup menu to my GTK+ application?
 <p>
@@ -1694,8 +1762,8 @@ is a boolean value: when this value is TRUE, the widget is enabled.
 <p>
 For example:
 <verb>
-gint gtk_clist_prepend (GtkCList    *clist,
-                        gchar       *text[]);
+gint gtk_clist_prepend (GtkCList *clist,
+                        gchar    *text[]);
 </verb>
 
 Answer: No, while a type "gchar*" (pointer to char) can automatically
@@ -1730,6 +1798,34 @@ DirectMedia Layer library (SDL).
 You do NOT want to use <tt/gdk_draw_point()/, that will be extremely
 slow.
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I create a pixmap without having my window realized/shown?
+<p>
+Functions such as <tt/gdk_pixmap_create_from_xpm()/ require a valid
+window as a parameter. During the initialisation phase of an
+application, a valid window may not be available without showing a
+window, which may be inappropriate. In order to avoid this, a
+function such as <tt/gdk_pixmap_colormap_create_from_xpm/ can be used,
+as in:
+
+<tscreen><verb>
+  char *pixfile = "foo.xpm";
+  GtkWidget *top, *box, *pixw;
+  GdkPixmap *pixmap, *pixmap_mask;
+
+  top = gtk_window_new (GKT_WINDOW_TOPLEVEL);
+  box = gtk_hbox_new (FALSE, 4);
+  gtk_conainer_add (GTK_CONTAINER(top), box);
+  pixmap = gdk_pixmap_colormap_create_from_xpm (
+               NULL, gtk_widget_get_colormap(top),
+               &amp;pixmap_mask, NULL, pixfile);
+  pixw = gtk_pixmap_new (pixmap, pixmap_mask);
+  gdk_pixmap_unref (pixmap);
+  gdk_pixmap_unref (pixmap_mask);
+
+</verb></tscreen>
+
 <!-- ***************************************************************** -->
 <sect>Development with GTK+: widget specific questions 
 <!-- ***************************************************************** -->
@@ -1836,6 +1932,25 @@ To get known about the selection:
 }
 </verb></tscreen>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I stop the column headings of a GtkCList disappearing
+when the list is scrolled?
+<p>
+This happens when a GtkCList is packed into a GtkScrolledWindow using
+the function <tt/gtk_scroll_window_add_with_viewport()/. The prefered
+method of adding a CList to a scrolled window is to use the function
+<tt/gtk_container_add/, as in:
+
+<tscreen><verb>
+    GtkWidget *scrolled, *clist;
+    char *titles[] = { "Title1" , "Title2" };
+
+    scrolled = gtk_scrolled_window_new(NULL, NULL);
+
+    clist = gtk_clist_new_with_titles(2, titles);
+    gtk_container_add(GTK_CONTAINER(scrolled), clist);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- --><p>
 <sect1>I don't want the user of my applications to enter text into a GtkCombo. Any idea?
 <p>
@@ -1956,9 +2071,9 @@ align it, center it or left align it. If you want to do this, you
 should use:
 
 <tscreen><verb>
-void gtk_misc_set_alignment     (GtkMisc *misc,
-                                gfloat xalign,
-                                gfloat yalign);
+void gtk_misc_set_alignment (GtkMisc *misc,
+                             gfloat xalign,
+                             gfloat yalign);
 </verb></tscreen>
 
 where the <tt/xalign/ and <tt/yalign/ values are floats in [0.00;1.00].
@@ -2037,14 +2152,6 @@ style "postie"
 widget "gtk-tooltips*" style "postie"
 </verb>
 
-<!-- ----------------------------------------------------------------- -->
-<sect1>How do I use horizontal scrollbars with a GtkText widget?
-<p>
-The short answer is that you can't. The current version of the GtkText
-widget does not support horizontal scrolling. There is an intention to
-completely rewrite the GtkText widget, at which time this limitation
-will be removed.
-
 <!-- ----------------------------------------------------------------- -->
 <sect1>I can't add more than (something like) 2000 chars in a GtkEntry. What's wrong?
 <p>
@@ -2064,6 +2171,28 @@ the number of chars in the entry to 2047.
     max_length = MIN (2047, entry->text_max_length);
 </verb></tscreen>
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I make a GtkEntry widget activate on pressing the Return key?
+<p>
+The Entry widget emits an 'activate' signal when you press return in
+it. Just attach to the activate signal on the entry and do whatever you
+want to do. Typical code would be:
+
+<tscreen><verb>
+  entry = gtk_entry_new();
+  gtk_signal_connect (GTK_OBJECT(entry), "activate",
+                      GTK_SIGNAL_FUNC(entry_callback),
+                      NULL);
+</verb></tscreen>
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I use horizontal scrollbars with a GtkText widget?
+<p>
+The short answer is that you can't. The current version of the GtkText
+widget does not support horizontal scrolling. There is an intention to
+completely rewrite the GtkText widget, at which time this limitation
+will be removed.
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I change the font of a GtkText widget?
 <p>
@@ -2565,45 +2694,51 @@ have not accepted "hi 7 am 17" or "hi i hi 17".
 <!-- ***************************************************************** -->
 <sect>GTK+ FAQ Contributions, Maintainers and Copyright
 <p>
-If you would like to make a contribution to the FAQ, send either one of us
-an e-mail message with the exact text you think should be included (question and
-answer).  With your help, this document can grow and become more useful!
+If you would like to make a contribution to the FAQ, send either one
+of us an e-mail message with the exact text you think should be
+included (question and answer). With your help, this document can grow
+and become more useful!
 
-This document is maintained by Nathan Froyd 
-<htmlurl url="mailto:maestrox@geocities.com" 
-name="&lt;maestrox@geocities.com&gt;">,
+This document is maintained by 
 Tony Gale <htmlurl url="mailto:gale@gtk.org" 
-name="&lt;gale@gtk.org&gt;"> and 
+name="&lt;gale@gtk.org&gt;"> 
+Nathan Froyd <htmlurl url="mailto:maestrox@geocities.com" 
+name="&lt;maestrox@geocities.com&gt;">,
+and 
 Emmanuel Deloget <htmlurl url="mailto:logout@free.fr"
 name="&lt;logout@free.fr&gt;">.
 This FAQ was created by Shawn T. Amundson 
 <htmlurl url="mailto:amundson@gimp.org" 
 name="&lt;amundson@gimp.org&gt;"> who continues to provide support.
 
-The GTK+ FAQ is Copyright (C) 1997,1998, 1999 by Shawn T. Amundson, 
-Nathan Froyd and Tony Gale, Emmanuel Deloget.
+Contributions should be sent to Tony Gale <htmlurl url="mailto:gale@gtk.org" 
+name="&lt;gale@gtk.org&gt;">
+
+The GTK+ FAQ is Copyright (C) 1997-2000 by Shawn T. Amundson, 
+Tony Gale, Emmanuel Deloget and Nathan Froyd.
 
-Permission is granted to make and distribute verbatim copies of 
-this manual provided the copyright notice and this permission notice 
-are preserved on all copies.
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
 
-Permission is granted to copy and distribute modified versions of 
-this document under the conditions for verbatim copying, provided 
-that this copyright notice is included exactly as in the original, 
-and that the entire resulting derived work is distributed under 
-the terms of a permission notice identical to this one.
+Permission is granted to copy and distribute modified versions of this
+document under the conditions for verbatim copying, provided that this
+copyright notice is included exactly as in the original, and that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
 
-Permission is granted to copy and distribute translations of 
-this document into another language,  under the above conditions 
-for modified versions.
+Permission is granted to copy and distribute translations of this
+document into another language, under the above conditions for
+modified versions.
 
-If you are intending to incorporate this document into a published work, 
-please contact one of the maintainers, and we will make an effort to ensure 
-that you have the most up to date information available.
+If you are intending to incorporate this document into a published
+work, please contact one of the maintainers, and we will make an
+effort to ensure that you have the most up to date information
+available.
 
 There is no guarentee that this document lives up to its intended
-purpose.  This is simply provided as a free resource.  As such,
-the authors and maintainers of the information provided within can 
-not make any guarentee that the information is even accurate.
+purpose.  This is simply provided as a free resource.  As such, the
+authors and maintainers of the information provided within can not
+make any guarentee that the information is even accurate.
 
 </article>