- <para>And now, run it:<programlisting>(gtk-hello:run)</programlisting></para>
- <para>This code should create a form with a button. When the button is clicked, this program prints a message to standard output and changes the text of the button.</para>
- <para>If you have a window, then congratulations! Otherwise, contact the author for support.</para>
+ <para>The empty window with title "Hello, world!" should appear.</para>
+ <para>Let's analyze this example line-by-line.</para>
+ <para><varname>(asdf:oos 'asdf:load-op :gtk)</varname> loads the GTK system into Lisp.</para>
+ <para>CL-GTK2 runs Gtk+ main loop in background thread (because Lisp development is interactive in its nature; if main loop would block the REPL thread, you would have to restart the Lisp image too often). Because all access to Gtk+ should come from Gtk+ thread, we should run the code in that thread. Macro <varname>gtk:within-main-loop</varname> does exactly that: it schedules the code to be tun in the Gtk+ thread. You should use this macro whenever you want evaluate the code from the REPL or when you start you application.</para>
+ <para>Next, we create the window with <varname>make-instance</varname> and set its <varname>title</varname> property to <varname>"Hello, world!"</varname>.</para>
+ <para>When the window is created, it is not yet shown on the screen. To show it, we call <varname>(gtk:widget-show window)</varname>.</para>
+ <para>After this code executes, you should get back to the REPL (rememer, Gtk+ runs in background thread) and the window should appear on the screen.</para>