changeset 21164:dada0e6416cc

merge of 'eb14385d2f3d84e0bdd1b158200baa76f86da3a2' and 'ff5b50d410a4c5d305fbbaacab5465581332c254'
author Stu Tomlinson <stu@nosnilmot.com>
date Thu, 08 Nov 2007 02:47:12 +0000
parents 50970c85709a (diff) 1dd6704cd187 (current diff)
children 184f5991502d
files pidgin/pixmaps/icons/16/Makefile.mingw pidgin/pixmaps/icons/24/Makefile.mingw pidgin/pixmaps/icons/32/Makefile.mingw pidgin/pixmaps/icons/48/Makefile.mingw
diffstat 30 files changed, 700 insertions(+), 626 deletions(-) [+]
line wrap: on
line diff
--- a/doc/pidgin.1.in	Thu Nov 08 02:37:02 2007 +0000
+++ b/doc/pidgin.1.in	Thu Nov 08 02:47:12 2007 +0000
@@ -32,7 +32,7 @@
 which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,
 Novell GroupWise, Lotus Sametime, Zephyr, Gadu-Gadu, and QQ all at once. It has
 many common features found in other clients, as well as many unique features.
-Finch is not endorsed by or affiliated with America Online, ICQ, Microsoft, or
+Pidgin is not endorsed by or affiliated with America Online, ICQ, Microsoft, or
 Yahoo.
 
 .SH OPTIONS
@@ -49,6 +49,9 @@
 .B \-h, \-\-help
 Print a summary of command line options and exit.
 .TP
+.B \-m, \-\-multiple
+Allow multiple instances of Pidgin to run.
+.TP
 .B \-n, \-\-nologin
 Don't automatically login when Pidgin starts.  Sets the global status to
 \fBOffline\fR.
@@ -68,9 +71,9 @@
 
 The \fBBuddy List\fR window contains a list of your buddies who are online
 and have allowed you to be notified of their presence.  The icon to the
-left of each buddy indicates the buddy's current state and the protocol
-they are using.  Double clicking a buddy will open a new \fBConversation\fR
-window.  Right clicking will pop up a menu:
+left of each buddy indicates the buddy's current status.  Double clicking
+a buddy will open a new \fBConversation\fR window.  Right clicking will
+pop up a menu:
 .TP
 .B Get Info
 Retrieves and displays information about the buddy.  This information is
@@ -89,16 +92,17 @@
 discussed later.
 .TP
 .B View Log
-Pidgin is capable of automatically log its activities.  These logs are
+Pidgin is capable of automatically logging messages.  These logs are
 either plain text files (with a .txt extension) or html files (with a
 \&.html extension) located under the \fI~/.purple/logs\fR directory.  This
 menu command will display Pidgin's log viewer with logs loaded for that
 buddy or chat.
 .TP
 .B Alias
-Create an alias for this buddy.  This will open up a new dialog in which
-one can give this buddy an alternate name to appear on the buddy list and
-in conversations.
+Create an alias for this buddy.  This will show an editable text field where
+the buddy's screen name was displayed.  In this field one can give this
+buddy an alternate, more friendly name to appear on the buddy list and in
+conversations.
 
 For example, if a buddy's name screen name was jsmith1281xx and his real
 name was 'John Q. Smith,' one could create an alias as to identify the
@@ -106,39 +110,27 @@
 .LP
 The remainder of the menu will consist of protocol specific commands.
 These commands vary depending on the protocol.
-.LP
-At the bottom of the \fBBuddy List\fR are several buttons (if enabled in
-\fBPreferences\fR):
 .TP
-.B IM
-Opens a new \fBConversation\fR window to to the selected buddy, or brings
-up the \fBNew Message\fR dialog box if no buddy is selected.
-.TP
-.B Info
-Retrieves and display information about the selected buddy, or brings up
-the \fBGet User Info\fR dialog box if no buddy is selected.
-.TP
-.B Chat
-Brings up the \fBJoin Chat\fR dialog box, prompting the user to select
-which username to use and what chat group to join.
-.TP
-.B Away
-Brings up a menu of all available \fBAway Messages\fR.  If an item is
-selected, all online accounts will use this item as their away message.
+.B Status Selector
+At the bottom of the \fBBuddy List\fR is a status selector which allows
+one to change his/her status.  This will be discussed further below.
+.T
 
 .SH ACCOUNT EDITOR
 The account editor consists of a list of accounts and information about
-them.  Clicking \fIDelete\fR will delete the currently selected account.
+them.  It can be accessed by selecting \fBManage\fR from the Tools menu.
+Clicking \fIDelete\fR will delete the currently selected account.
 Clicking \fIAdd\fR or \fIModify\fR will invoke a \fBModify Account\fR
 window.  Here, you can add or alter account information.  When creating a
 new account, you will submit your screen name and password.  You will also
 choose your protocol.
 
 If \fIRemember Password\fR is chosen, the password will be saved in
-Pidgin's configuration file.
+Pidgin's \fI~/.purple/accounts.xml\fR configuration file.
 
-If \fIAuto-Login\fR is chosen, this account will automatically login upon
-starting Pidgin.
+If \fIEnabled\fR is checked in the accounts dialog, this account will
+follow the status currently selected in the status selector.  If it is
+not checked, the account will always be offline.
 
 Each protocol has its own specific options that can be found in the
 modify screen.
@@ -149,120 +141,84 @@
 
 .SH Interface
 
-\fIDisplay remote nicknames if no alias is set\fR: Toggles whether server
-nickname data should be used if no local alias exists.
-
-.SH Buddy List
-\fISorting\fR: Toggles the order in which buddies are shown in your
-\fBBuddy List\fR between none, alphabetical, by status and by log size.
+.TP
+.B Show system tray icon
+Specifies when to show a Pidgin icon in the notification area of your
+panel (commonly referred to as the System Tray).
 
-\fIShow buttons as\fR: Toggles between picture-only, text-only, picture and
-text or no buttons view of the buttons on the \fBBuddy List\fR.
-
-\fIRaise window on events\fR: Tells Pidgin to bring the \fBBuddy
-List\fR window to the top when buddies sign in or out.
-
-\fIShow numbers in groups\fR: The number of buddies from each group
-currently logged in will be shown along with the total number of buddies in
-the group.
+.TP
+.B Hide new IM conversations
+Specifies when to hide new IM messages.  Messages will queue under the
+specified condition until shown.  Clicking the Pidgin icon in the
+notification area or system tray will display the queued messages.  An
+icon also appears in the buddy list's menu bar; this icon may also be
+used to display queued messages.
 
-\fIShow buddy icons\fR: Toggles the display of buddies' custom icons.
-
-\fIShow warning levels\fR: Each buddy's warning level will be displayed
-next to the screen name. As a buddy's warning level increases, outgoing
-messages are more and more severely rate-limited.
+.TP
+.B Show IMs and chats in tabbed windows
+When checked, this option will cause IM and chat sessions to appear in
+windows with multiple tabs.  One tab will represent one conversation or
+chat.  Where tabs are placed will be dictated by the preferences below.
 
-\fIShow idle times\fR: The amount of time each buddy has been idle will be
-displayed next to the screen name (if the buddy has opted to have their
-client report this information).
+.TP
+.B Show close buttons on tabs
+When checked, this option will cause a clickable "U+2715 MULTIPLICATION X"
+unicode character to appear at the right edge of each tab.  Clicking this
+will cause the tab to be closed.
 
-\fIDim idle buddies\fR: If enabled, idle buddies will be displayed in grey
-text instead of black text.
+.TP
+.B Placement
+Specifies where to place tabs in the window.  Some tab orientations may
+allow some users to fit more tabs into a single window comfortably.
 
-\fIAutomatically expand contacts\fR: If enabled, contacts will
-automatically expand to show the associated buddies when the mouse is held
-over the contact for a short period.
+.TP
+.B New conversations
+Specifies under which conditions tabs are placed into existing windows or
+into new windows.  For a single window, select \fILast created window\fR here.
 
 .SH Conversations
 
-\fIShow buttons as...\fR: The selected item will determine whether
-picture-only, text-only, combined picture/text, or no buttons will be used
-for \fBConversation\fR windows.
-
-\fIShow formatting toolbar\fR: Display the formatting toolbar between the
-upper and lower text boxes in conversations.
-
-\fIShow aliases in tabs/titles\fR: Displays buddy alias instead of screen
-name in window tabs and titles.
-
-\fIShow buddy icons\fR: For protocols that support it, buddy icons allow
-buddies to send small pictures to be displayed during the course of a
-conversation. Turning this option off hides those pictures.
-
-\fIEnable buddy icon animation\fR: If these pictures happen to be animated,
-this option will enable the animation, otherwise only the first frame will
-be displayed.
-
-\fINotify buddies that you are typing to them\fR: Some protocols allow
-clients to tell their buddies when they are typing. This option enables
-this feature for protocols that supports it.
-
-\fIRaise IM windows on events\fR: If enabled, IM \fBConversation\fR windows
-will be brought to the top when new messages are received.
-
-\fIRaise Chat windows on events\fR: If enabled, chat \fBConversation\fR windows
-will be brought to the top when new messages are received.
-
-\fIUse multi-colored screen names in chats\fR: Color code the screen names of
-users in chat rooms.
+.TP
+.B Enable buddy icon animation
+If a buddy's icon happens to be animated, this option will enable the
+animation, otherwise only the first frame will be displayed.
 
 .TP
-.B Tab Options
-\fIShow IMs and chats in tabbed windows\fR: Tabbed chatting allows one to
-have multiple conversations without multiple windows.
-
-\fIShow close buttons on tabs\fR: Adds a close button to each tab.
-
-\fITab Placement...\fR: Specifies where tabs are shown in the conversation
-window.
-
-\fI New conversation placement...\fR: Determines where new conversations will
-be placed (Last created window / New window / windows grouped by group or
-account / separate windows for IMs and Chats).
+.B Notify buddies that you are typing to them
+Some protocols allow clients to tell their buddies when they are typing.
+This option enables this feature for protocols that supports it.  For XMPP,
+this also enables sending the "User has left the conversation" message
+when ending the conversation.
 
 .TP
-.B Message Text
-\fIShow timestamp on messages\fR: Toggles the timestamp behavior for
-conversations.  Per-conversation behavior can be changed by pressing
-\fIF2\fR in the \fBConversation\fR window.
-
-\fIHighlight misspelled words\fR: Toggles highlighting of misspelled words
-as you type.
-
-\fIIgnore colors/font faces/font sizes\fR: Tells Pidgin to disregard
-buddies' color/font/size information in displaying IMs or Chats.
+.B Default Formatting
+Allows specifying the default formatting to apply to all outgoing messages
+(only applicable to protocols that support formatting in messages).
 
-\fIDefault Formatting\fR: Allows specifying the default formatting to apply
-to all outgoing messages (only applicable to protocols that support
-formatting in messages).
-
-.TP
-.B Shortcuts
-Allows the user to determine which keyboard shortcuts are available.
-
-.TP
-.B Smiley Themes
+.SH Smiley Themes
 Allows the user to choose between different smiley themes. The "none" theme
 will disable graphical emoticons - they will be displayed as text instead.
+The \fBAdd\fR and \fBRemove\fR buttons may be used to install or uninstall
+smiley themes.  Themes may also be installed by dragging and dropping them
+onto the list of themes.
 
 .SH Sounds
 
-\fISounds while away\fR: Determines whether sounds are played when an away
-message is up.
+.TP
+.B Method
+Lets the user choose between different playback methods. The user can also
+manually enter a command to be executed when a sound is to be played\
+(\fI%s\fR expands to the full path to the file name).
 
-\fISound Method\fR lets the user choose between different playback methods.
-The user can also manually enter a command to be executed when a sound is
-to be played (\fI%s\fR expands to the full path to the file name).
+.TP
+.B Sounds when conversation has focus
+When checked, sounds will play for events in the active conversation if
+the window is focused.  When unchecked, sounds will not play for the
+active conversation when the window is focused.
+
+.TP
+.B Enable Sounds
+Determines when to play sounds.
 
 .TP
 .B Sound Events
@@ -271,17 +227,28 @@
 .SH Network
 
 .TP
-.B IP Address
-\fIAutodetect IP Address\fR: Pidgin will attempt to automatically determine
-your IP address for use in file transfers and Direct IMs.
-
-\fIPublic IP\fR: What IP address to use for file transfer and Direct IMs. This
-is mainly useful for users with multiple network interfaces or behind NAT.
+.B STUN server
+This allows specifying a server which uses the STUN protocol to determine
+a host's public IP address.  This can be particularly useful for some
+protocols.
 
 .TP
-.B Ports
-\fIManually specify range of ports to listen on\fR: Specify specific ports to
-listen on, overriding any defaults.
+.B Autodetect IP address
+When checked, causes Pidign to attempt to determine the public IP address
+of the host on which Pidgin is running and disables the \fBPublic IP\fR
+text field listed below.
+
+.TP
+.B Public IP
+If \fBAutodetect IP address\fR is disabled, this field allows manually
+specifying the public IP address for the host on which Pidgin is running.
+This is mainly useful for users with multiple network interfaces or behind
+NATs.
+
+.TP
+.B Manually specify range of ports to listen on
+Specify a range ports to listen on, overriding any defaults.  This is
+sometimes useful for file transfers and Direct IM.
 
 .TP
 .B Proxy Server
@@ -290,56 +257,82 @@
 
 .SH Browser
 
+.TP
+.B Browser
 Allows the user to select Pidgin's default web browser.  Firefox, Galeon,
 Konqueror, Mozilla, Netscape and Opera are supported natively.  The user
 can also manually enter a command to be executed when a link is clicked
 (\fI%s\fR expands to the URL).  For example, \fIxterm -e lynx "%s"\fR will
-open the link with lynx.  \fIOpen new window by default\fR makes the
-browser use a new window instead of using the current window (or spawning a
-new tab).
+open the link with lynx.
+
+.TP
+.B Open link in
+Allows the user to specify whether to use an existing window, a new tab, a
+new window, or to let the browser to decide what to do when calling the
+browser to open a link.  Which options are available will depend on which
+browser is selected.
 
 .SH Logging
 
-\fIMessage Logs\fR lets the user choose whether \fBConversations\fR and/or
-\fBBuddy Chats\fR will be logged as well as whether logs will be in HTML or
-plain text format.  \fISystem Logs\fR describes the types of events to be
-logged.
+.TP
+.B Log format
+Specifies how to log.  Pidgin supports HTML and plain text, but plugins can
+provide other logging methods.
 
-.SH Away / Idle
-
-\fIQueue new messages when away\fR: Messages received since going Away will
-not be shown until away status is removed.
+.TP
+.B Log all instant messages
+When enabled, all IM conversations are logged.  This can be overridden on a
+per-conversation basis in the conversation window.
 
-\fISend auto-response\fR: If someone messages you while away, your
-auto-response will be sent.
+.TP
+.B Log all chats
+When enabled, all chat conversations are logged.  This can be overridden on a
+per-conversation basis in the conversation window.
 
-\fIOnly send auto-response when idle\fR: If someone messages you while
-away, your auto-response will only be sent if Pidgin decides that the
-connection is idle.
+.TP
+.B Log all status changes to system log
+When enabled, status changes are logged.
 
-\fIIdle time reporting\fR: If \fINone\fR is selected, account idle time
-will not be reported.  \fIPidgin usage\fR infers your idle time from your
-usage of Pidgin.  \fIX usage\fR infers your idle time from \fBX\fR
-(this option may not be universally available).
+.SH Status / Idle
 
-\fIAuto-away\fR: Determines if and under what conditions Pidgin will
-automatically turn on the Away status.
+.TP
+.B Report idle time
+Determines under which conditions to report idle time.  \fBBased on keyboard
+and mouse use\fR uses keyboard and mouse activity to determine idle time.
+\fBFrom last sent message\fR uses the time at which you last sent a message
+in Pidgin to determine idle.  \fBNever\fR disables idle reporting.
 
 .TP
-.B Away Messages
-Lets the user add/edit/remove available \fBAway Messages\fR.
+.B Auto-reply
+Determines when to send an auto-reply on protocols which support it
+(currently only AIM).
 
-.SH Plugins
+.TP
+.B Change status when idle
+When enabled, this uses the \fBMinutes before becoming idle\fR and \fBChange
+status to\fR preferences described below to set status on idle.
+
+.TP
+.B Minutes before becoming idle
+Specifies how many minutes of inactivity are required before considering the
+user to be idle.
 
-Allows the user to enable add-on plugins for Pidgin.  Several of these
-come with Pidgin, while others must be downloaded separately.  The
-\fIDescription\fR field gives the plugin author's description of the
-plugin, while the \fIDetails\fR field gives the plugin's authorship, URL,
-and file name/location information.
+.TP
+.B Change status to
+Specifies which "primitive" or "saved" status to use when setting status on
+idle.
 
-Some plugins can be configured.  If you load such a plugin, its
-configuration preferences will appear as a submenu to \fBPlugins\fR, with
-the submenu title determined by the plugin's name.
+.TP
+.B Use status from last exit at startup
+If this is checked, Pidgin will remember what status was active when the
+user closed Pidgin and restore it at the next run.  When disabled, Pidgin
+will always set the status selected in \fBStatus to apply at startup\fR
+at startup.
+
+.TP
+.B Status to apply at startup
+When \fBUse status from last exit at startup\fR is disabled, this specifies
+which "primitive" or "saved" status to use at startup.
 
 .SH CONVERSATIONS
 When starting a new conversation, the user is presented with the
@@ -420,23 +413,25 @@
 more information about Tcl scripting.
 
 .SH FILES
-\fI@prefix@/bin/pidgin\fR: Pidgin's location.
+  \fI@prefix@/bin/pidgin\fR: Pidgin's location.
 .br
-\fI@prefix@/lib/pidgin/\fR: Pidgin's plugins directory.
+  \fI@prefix@/lib/pidgin/\fR: Pidgin's plugins directory.
 .br
-\fI~/.purple/prefs.xml\fR: Pidgin's configuration file.
+  \fI@prefix@/lib/purple-2/\fR: libpurple's plugins directory.
 .br
-\fI~/.purple/accounts.xml\fR: information about your accounts.
+  \fI~/.purple/prefs.xml\fR: Pidgin's configuration file.
+.br
+  \fI~/.purple/accounts.xml\fR: information about your accounts.
 .br
-\fI~/.purple/status.xml\fR: stores your away messages.
+  \fI~/.purple/status.xml\fR: stores your away messages.
 .br
-\fI~/.purple/pounces.xml\fR: stores your buddy pounces.
+  \fI~/.purple/pounces.xml\fR: stores your buddy pounces.
 .br
-\fI~/.purple/logs/PROTOCOL/ACCOUNT/SCREENNAME/DATE.{html,txt}\fR: conversation logs.
+  \fI~/.purple/logs/PROTOCOL/ACCOUNT/SCREENNAME/DATE.{html,txt}\fR: conversation logs.
 .br
-\fI~/.purple/blist.xml\fR: the buddy list.
+  \fI~/.purple/blist.xml\fR: the buddy list.
 .br
-\fI~/.purple/plugins/\fR: users' local plugins
+  \fI~/.purple/plugins/\fR: users' local plugins
 
 .SH BUGS
 The bug tracker can be reached by visiting \fIhttp://developer.pidgin.im/query\fR
@@ -572,4 +567,8 @@
 .br
 
 
-This manpage was originally written by Dennis Ristuccia <\fIdennis@dennisr.net\fR>.  It has been updated and largely rewritten by Sean Egan <\fIseanegan@gmail.com\fR> and Ben Tegarden <\fItegarden@uclink.berkeley.edu\fR>.
+This manpage was originally written by Dennis Ristuccia
+<\fIdennis@dennisr.net\fR>.  It has been updated and largely rewritten by
+Sean Egan <\fIseanegan@gmail.com\fR>,
+Ben Tegarden <\fItegarden@uclink.berkeley.edu\fR>,
+and John Bailey <\fIrekkanoryo@pidgin.im\fR>.
--- a/finch/libgnt/gnt.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gnt.h	Thu Nov 08 02:47:12 2007 +0000
@@ -46,19 +46,19 @@
 #endif
 
 /**
- * 
+ * Initialize GNT.
  */
 void gnt_init(void);
 
 /**
- * 
+ * Start running the mainloop for gnt.
  */
 void gnt_main(void);
 
 /**
- * 
+ * Check whether the terminal is capable of UTF8 display.
  *
- * @return
+ * @return  @c FALSE if the terminal is capable of drawing UTF-8, @c TRUE otherwise.
  */
 gboolean gnt_ascii_only(void);
 
@@ -71,106 +71,133 @@
  * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_window_present(GntWidget *window);
+
 /**
- * 
- * @param widget
+ * @internal
+ * Use #gnt_widget_show instead.
  */
 void gnt_screen_occupy(GntWidget *widget);
 
 /**
- * 
- * @param widget
+ * @internal
+ * Use #gnt_widget_hide instead.
  */
 void gnt_screen_release(GntWidget *widget);
 
 /**
- * 
- * @param widget
+ * @internal
+ * Use #gnt_widget_draw instead.
  */
 void gnt_screen_update(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param width
- * @param height
+ * Resize a widget.
+ *
+ * @param widget  The widget to resize.
+ * @param width   The desired width.
+ * @param height  The desired height.
  */
 void gnt_screen_resize_widget(GntWidget *widget, int width, int height);
 
 /**
- * 
- * @param widget
- * @param x
- * @param y
+ * Move a widget.
+ *
+ * @param widget The widget to move.
+ * @param x      The desired x-coordinate.
+ * @param y      The desired y-coordinate.
  */
 void gnt_screen_move_widget(GntWidget *widget, int x, int y);
 
 /**
- * 
- * @param widget
- * @param text
+ * Rename a widget.
+ *
+ * @param widget  The widget to rename.
+ * @param text    The new name for the widget.
  */
 void gnt_screen_rename_widget(GntWidget *widget, const char *text);
 
 /**
- * 
- * @param widget
+ * Check whether a widget has focus.
  *
- * @return
+ * @param widget  The widget.
+ *
+ * @return  @c TRUE if the widget has the current focus, @c FALSE otherwise.
  */
 gboolean gnt_widget_has_focus(GntWidget *widget);
 
 /**
- * 
- * @param widget
+ * Set the URGENT hint for a widget.
+ *
+ * @param widget  The widget to set the URGENT hint for.
  */
 void gnt_widget_set_urgent(GntWidget *widget);
 
 /**
- * 
- * @param label
- * @param callback
+ * Register a global action.
+ *
+ * @param label      The user-visible label for the action.
+ * @param callback   The callback function for the action.
  */
 void gnt_register_action(const char *label, void (*callback)());
 
 /**
- * 
- * @param menu
+ * Show a menu.
  *
- * @return
+ * @param menu  The menu to display.
+ *
+ * @return @c TRUE if the menu is displayed, @c FALSE otherwise (e.g., if another menu is currently displayed).
  */
 gboolean gnt_screen_menu_show(gpointer menu);
 
 /**
- * 
+ * Terminate the mainloop of gnt.
  */
 void gnt_quit(void);
 
 /**
- * 
+ * Get the global clipboard.
  *
- * @return
+ * @return  The clipboard.
  */
 GntClipboard * gnt_get_clipboard(void);
 
 /**
- * 
+ * Get the string in the clipboard.
  *
- * @return
+ * @return A copy of the string in the clipboard. The caller must @c g_free the string.
  */
 gchar * gnt_get_clipboard_string(void);
 
 /**
- * 
- * @param string
+ * Set the contents of the global clipboard.
+ *
+ * @param string  The new content of the new clipboard.
  */
-void gnt_set_clipboard_string(gchar *string);
+void gnt_set_clipboard_string(const gchar *string);
 
 /**
  * Spawn a different application that will consume the console.
+ *
+ * @param wd    The working directory for the new application.
+ * @param argv  The argument vector.
+ * @param envp  The environment, or @c NULL.
+ * @param stin  Location to store the child's stdin, or @c NULL.
+ * @param stout Location to store the child's stdout, or @c NULL.
+ * @param sterr Location to store the child's stderr, or @c NULL.
+ * @param callback   The callback to call after the child exits.
+ * @param data  The data to pass to the callback.
+ *
+ * @return  @c TRUE if the child was successfully spawned, @c FALSE otherwise.
  */
 gboolean gnt_giveup_console(const char *wd, char **argv, char **envp,
 		gint *stin, gint *stout, gint *sterr,
 		void (*callback)(int status, gpointer data), gpointer data);
 
+/**
+ * Check whether a child process is in control of the current terminal.
+ *
+ * @return @c TRUE if a child process (eg., PAGER) is occupying the current
+ *         terminal, @c FALSE otherwise.
+ */
 gboolean gnt_is_refugee(void);
+
--- a/finch/libgnt/gntbindable.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntbindable.h	Thu Nov 08 02:47:12 2007 +0000
@@ -160,8 +160,8 @@
 
 /**
  * Returns a GntTree populated with "key" -> "binding" for the widget.
- * 
- * @param widget  The object to list the bindings for.
+ *
+ * @param bind  The object to list the bindings for.
  *
  * @return   The GntTree.
  */
@@ -170,9 +170,9 @@
 /**
  * Builds a window that list the key bindings for a GntBindable object.
  * From this window a user can select a listing to rebind a new key for the given action.
- * 
+ *
  * @param bindable   The object to list the bindings for.
- *	
+ *
  * @return  @c TRUE
  */
 
--- a/finch/libgnt/gntfilesel.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntfilesel.c	Thu Nov 08 02:47:12 2007 +0000
@@ -719,6 +719,7 @@
 
 void gnt_file_sel_set_suggested_filename(GntFileSel *sel, const char *suggest)
 {
+	g_free(sel->suggest);
 	sel->suggest = g_strdup(suggest);
 }
 
--- a/finch/libgnt/gntfilesel.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntfilesel.h	Thu Nov 08 02:47:12 2007 +0000
@@ -98,113 +98,123 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntFileSel.
  */
 GType gnt_file_sel_get_gtype(void);
 
 /**
- * 
+ * Create a new file selector.
  *
- * @return
+ * @return  The newly created file selector.
  */
 GntWidget * gnt_file_sel_new(void);
 
 /**
- * 
- * @param sel
- * @param path
+ * Set the current location of the file selector.
  *
- * @return
+ * @param sel   The file selector.
+ * @param path  The current path of the selector.
+ *
+ * @return @c TRUE if the current location was successfully changed, @c FALSE otherwise.
  */
 gboolean gnt_file_sel_set_current_location(GntFileSel *sel, const char *path);
 
 /**
- * 
- * @param sel
- * @param dirs
+ * Set wheter to only allow selecting directories.
+ *
+ * @param sel    The file selector.
+ * @param dirs   @c TRUE if only directories can be selected, @c FALSE if files
+ *               can also be selected.
  */
 void gnt_file_sel_set_dirs_only(GntFileSel *sel, gboolean dirs);
 
 /**
- * 
- * @param sel
+ * Check whether the file selector allows only selecting directories.
  *
- * @return
+ * @param sel  The file selector.
+ *
+ * @return  @c TRUE if only directories can be selected.
  */
 gboolean gnt_file_sel_get_dirs_only(GntFileSel *sel);
 
 /**
- * 
- * @param sel
- * @param must
+ * Set whether a selected file must exist.
+ *
+ * @param sel   The file selector.
+ * @param must  @c TRUE if the selected file must exist.
  */
 void gnt_file_sel_set_must_exist(GntFileSel *sel, gboolean must);
 
 /**
- * 
- * @param sel
+ * Check whether the selector allows selecting non-existent files.
  *
- * @return
+ * @param sel  The file selector.
+ *
+ * @return  @c TRUE if the selected file must exist, @c FALSE if a non-existent
+ *          file can be selected.
  */
 gboolean gnt_file_sel_get_must_exist(GntFileSel *sel);
 
 /**
- * 
- * @param sel
+ * Get the selected file in the selector.
  *
- * @return
+ * @param sel  The file selector.
+ *
+ * @return The path of the selected file. The caller should g_free the returned
+ *         string.
  */
 char * gnt_file_sel_get_selected_file(GntFileSel *sel);
 
-  /* The returned value should be free'd */
-
 /**
- * 
- * @param sel
+ * Get the list of selected files in the selector.
  *
- * @return
+ * @param sel  The file selector.
+ *
+ * @return  A list of paths for the selected files. The caller must g_free the
+ *          contents of the list, and g_list_free the list.
  */
 GList * gnt_file_sel_get_selected_multi_files(GntFileSel *sel);
 
 /**
- * 
- * @param sel
- * @param set
+ * Allow selecting multiple files.
+ *
+ * @param sel  The file selector.
+ * @param set  @c TRUE if selecting multiple files should be allowed.
  */
 void gnt_file_sel_set_multi_select(GntFileSel *sel, gboolean set);
 
 /**
- * 
- * @param sel
- * @param suggest
+ * Set the suggested file to have selected at startup.
+ *
+ * @param sel      The file selector.
+ * @param suggest  The suggested filename.
  */
 void gnt_file_sel_set_suggested_filename(GntFileSel *sel, const char *suggest);
 
 /**
- * 
- * @param sel
- * @param path
- * @param files
- * @param error)
+ * Set custom functions to read the names of files.
+ *
+ * @param sel      The file selector.
+ * @param read_fn  The custom read function.
  */
 void gnt_file_sel_set_read_fn(GntFileSel *sel, gboolean (*read_fn)(const char *path, GList **files, GError **error));
 
 /**
- * 
- * @param name
- * @param size
+ * Create a new GntFile.
  *
- * @return
+ * @param name   The name of the file.
+ * @param size   The size of the file.
+ *
+ * @return  The newly created GntFile.
  */
 GntFile* gnt_file_new(const char *name, unsigned long size);
 
 /**
- * 
- * @param name
+ * Create a new GntFile for a directory.
  *
- * @return
+ * @param name  The name of the directory.
+ *
+ * @return  The newly created GntFile.
  */
 GntFile* gnt_file_new_dir(const char *name);
 
--- a/finch/libgnt/gntkeys.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntkeys.h	Thu Nov 08 02:47:12 2007 +0000
@@ -104,41 +104,59 @@
 #define GNT_KEY_F12        SAFE(key_f12)
 
 /**
- * This will do stuff with the terminal settings and stuff.
- */
-/**
- * 
+ * Initialize the keys.
  */
 void gnt_init_keys(void);
 
 /**
- * 
- * @param text
+ * Refine input text. This usually looks at what the terminal claims it is,
+ * and tries to change the text to work around some oft-broken terminfo entries.
+ *
+ * @param text  The input text to refine.
  */
 void gnt_keys_refine(char *text);
 
+/**
+ * Translate a user-readable representation of an input to a machine-readable representation.
+ *
+ * @param name   The user-readable representation of an input (eg.: c-t)
+ *
+ * @return  A machine-readable representation of the input.
+ */
 const char *gnt_key_translate(const char *name);
+
+/**
+ * Translate a machine-readable representation of an input to a user-readable representation.
+ *
+ * @param key  The machine-readable representation of an input.
+ *
+ * @return  A user-readable representation of the input (eg.: c-t).
+ */
 const char *gnt_key_lookup(const char *key);
 
 /**
- * 
- * @param path
+ * Add a key combination to the internal key-tree.
+ *
+ * @param key  The key to add
  */
-void gnt_keys_add_combination(const char *path);
+void gnt_keys_add_combination(const char *key);
 
 /**
- * 
- * @param path
+ * Remove a key combination from the internal key-tree.
+ *
+ * @param key The key to remove.
  */
-void gnt_keys_del_combination(const char *path);
+void gnt_keys_del_combination(const char *key);
 
 /**
- * 
- * @param path
+ * Find a combination from the given string.
+ *
+ * @param key  The input string.
  *
- * @return
+ * @return The number of bytes in the combination that starts at the beginning
+ *         of key (can be 0).
  */
-int gnt_keys_find_combination(const char *path);
+int gnt_keys_find_combination(const char *key);
 
 /* A lot of commonly used variable names are defined in <term.h>. 
  * #undef them to make life easier for everyone. */
--- a/finch/libgnt/gntlabel.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntlabel.h	Thu Nov 08 02:47:12 2007 +0000
@@ -67,33 +67,34 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntLabel.
  */
 GType gnt_label_get_gtype(void);
 
 /**
- * 
- * @param text
+ * Create a new GntLabel.
  *
- * @return
+ * @param text  The text of the label.
+ *
+ * @return  The newly created label.
  */
 GntWidget * gnt_label_new(const char *text);
 
 /**
- * 
- * @param text
- * @param flags
+ * Create a new label with specified text attributes.
  *
- * @return
+ * @param text    The text.
+ * @param flags   Text attributes for the text.
+ *
+ * @return  The newly created label.
  */
 GntWidget * gnt_label_new_with_format(const char *text, GntTextFormatFlags flags);
 
 /**
- * 
- * @param label
- * @param text
+ * Change the text of a label.
+ *
+ * @param label  The label.
+ * @param text   The new text to set in the label.
  */
 void gnt_label_set_text(GntLabel *label, const char *text);
 
--- a/finch/libgnt/gntline.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntline.h	Thu Nov 08 02:47:12 2007 +0000
@@ -67,9 +67,7 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntLine.
  */
 GType gnt_line_get_gtype(void);
 
@@ -77,10 +75,11 @@
 #define gnt_vline_new() gnt_line_new(TRUE)
 
 /**
- * 
- * @param vertical
+ * Create new line
  *
- * @return
+ * @param vertical  @c TRUE if the line should be vertical, @c FALSE for a horizontal line.
+ *
+ * @return  The newly created line.
  */
 GntWidget * gnt_line_new(gboolean vertical);
 
--- a/finch/libgnt/gntmain.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntmain.c	Thu Nov 08 02:47:12 2007 +0000
@@ -646,7 +646,7 @@
 	return TRUE;
 }
 
-void gnt_set_clipboard_string(gchar *string)
+void gnt_set_clipboard_string(const gchar *string)
 {
 	gnt_clipboard_set_string(clipboard, string);
 }
--- a/finch/libgnt/gntmenu.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntmenu.h	Thu Nov 08 02:47:12 2007 +0000
@@ -86,24 +86,24 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return  The GType for GntMenu.
  */
 GType gnt_menu_get_gtype(void);
 
 /**
- * 
- * @param type
+ * Create a new menu.
  *
- * @return
+ * @param type  The type of the menu, whether it's a toplevel menu or a popup menu.
+ *
+ * @return  The newly created menu.
  */
 GntWidget * gnt_menu_new(GntMenuType type);
 
 /**
- * 
- * @param menu
- * @param item
+ * Add an item to the menu.
+ *
+ * @param menu   The menu.
+ * @param item   The item to add to the menu.
  */
 void gnt_menu_add_item(GntMenu *menu, GntMenuItem *item);
 
--- a/finch/libgnt/gntmenuitem.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntmenuitem.h	Thu Nov 08 02:47:12 2007 +0000
@@ -86,32 +86,33 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntMenuItem.
  */
 GType gnt_menuitem_get_gtype(void);
 
 /**
- * 
- * @param text
+ * Create a new menuitem.
  *
- * @return
+ * @param text   Label for the menuitem.
+ *
+ * @return  The newly created menuitem.
  */
 GntMenuItem * gnt_menuitem_new(const char *text);
 
 /**
- * 
- * @param item
- * @param callback
- * @param data
+ * Set a callback function for a menuitem.
+ *
+ * @param item       The menuitem.
+ * @param callback   The callback function.
+ * @param data       Data to send to the callback function.
  */
 void gnt_menuitem_set_callback(GntMenuItem *item, GntMenuItemCallback callback, gpointer data);
 
 /**
- * 
- * @param item
- * @param menu
+ * Set a submenu for a menuitem. A menuitem with a submenu cannot have a callback.
+ *
+ * @param item  The menuitem.
+ * @param menu  The submenu.
  */
 void gnt_menuitem_set_submenu(GntMenuItem *item, GntMenu *menu);
 
--- a/finch/libgnt/gntmenuitemcheck.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntmenuitemcheck.h	Thu Nov 08 02:47:12 2007 +0000
@@ -66,32 +66,33 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntMenuItemCheck.
  */
 GType gnt_menuitem_check_get_gtype(void);
 
 /**
- * 
- * @param text
+ * Create a new menuitem.
  *
- * @return
+ * @param text  The text for the menuitem.
+ *
+ * @return  The newly created menuitem.
  */
 GntMenuItem * gnt_menuitem_check_new(const char *text);
 
 /**
- * 
- * @param item
+ * Check whether the menuitem is checked or not.
  *
- * @return
+ * @param item  The menuitem.
+ *
+ * @return @c TRUE if the item is checked, @c FALSE otherwise.
  */
 gboolean gnt_menuitem_check_get_checked(GntMenuItemCheck *item);
 
 /**
- * 
- * @param item
- * @param set
+ * Set whether the menuitem is checked or not.
+ *
+ * @param item  The menuitem.
+ * @param set   @c TRUE if the item should be checked, @c FALSE otherwise.
  */
 void gnt_menuitem_check_set_checked(GntMenuItemCheck *item, gboolean set);
 
--- a/finch/libgnt/gntstyle.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntstyle.h	Thu Nov 08 02:47:12 2007 +0000
@@ -38,11 +38,17 @@
 } GntStyle;
 
 /**
- * 
- * @param filename
+ * Read configuration from a file.
+ *
+ * @param filename  The filename to read configuration from.
  */
 void gnt_style_read_configure_file(const char *filename);
 
+/**
+ * Get the user-setting for a style.
+ * @param style  The style.
+ * @return  The user-setting, or @c NULL.
+ */
 const char *gnt_style_get(GntStyle style);
 
 /**
@@ -70,38 +76,40 @@
 gboolean gnt_style_parse_bool(const char *value);
 
 /**
- * 
- * @param style
- * @param def
+ * Get the boolean value for a user-setting.
  *
- * @return
+ * @param style  The style.
+ * @param def    The default value (i.e, the value if the user didn't define
+ *               any value)
+ *
+ * @return  The value of the setting.
  */
 gboolean gnt_style_get_bool(GntStyle style, gboolean def);
 
-/* This should be called only once for the each type */
 /**
- * 
- * @param type
- * @param hash
+ * @internal
  */
 void gnt_styles_get_keyremaps(GType type, GHashTable *hash);
 
 /**
- * 
- * @param type
- * @param klass
+ * @internal
  */
 void gnt_style_read_actions(GType type, GntBindableClass *klass);
 
+/**
+ * @internal
+ * Read workspace information.
+ */
 void gnt_style_read_workspaces(GntWM *wm);
 
 /**
- * 
+ * Initialize style settings.
  */
 void gnt_init_styles(void);
 
 /**
- * 
+ * Uninitialize style settings.
  */
 void gnt_uninit_styles(void);
 
+
--- a/finch/libgnt/gnttextview.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gnttextview.h	Thu Nov 08 02:47:12 2007 +0000
@@ -88,116 +88,144 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return  GType for GntTextView.
  */
 GType gnt_text_view_get_gtype(void);
 
-/* XXX: For now, don't set a textview to have any border.
- *      If you want borders real bad, put it in a box. */
 /**
- * 
+ * Create a new textview.
  *
- * @return
+ * @return The newly created textview.
  */
 GntWidget * gnt_text_view_new(void);
 
-/* scroll > 0 means scroll up, < 0 means scroll down, == 0 means scroll to the end */
 /**
- * 
- * @param view
- * @param scroll
+ * Scroll the textview.
+ * @param view     The textview to scroll.
+ * @param scroll   scroll > 0 means scroll up, < 0 means scroll down, == 0 means scroll to the end.
  */
 void gnt_text_view_scroll(GntTextView *view, int scroll);
 
 /**
- * 
- * @param view
- * @param text
- * @param flags
+ * Append new text in a textview.
+ *
+ * @param view   The textview.
+ * @param text   The text to append to the textview.
+ * @param flags  The text-flags to apply to the new text.
  */
 void gnt_text_view_append_text_with_flags(GntTextView *view, const char *text, GntTextFormatFlags flags);
 
 /**
- * 
- * @param view
- * @param text
- * @param flags
- * @param tag
+ * Append text in the textview, with some identifier (tag) for the added text.
+ *
+ * @param view   The textview.
+ * @param text   The text to append.
+ * @param flags  The text-flags to apply to the new text.
+ * @param tag    The tag for the appended text, so it can be changed later (@see gnt_text_view_tag_change)
  */
 void gnt_text_view_append_text_with_tag(GntTextView *view, const char *text, GntTextFormatFlags flags, const char *tag);
 
-/* Move the cursor to the beginning of the next line and resets text-attributes.
- * It first completes the current line with the current text-attributes. */
 /**
- * 
- * @param view
+ * Move the cursor to the beginning of the next line and resets text-attributes.
+ * It first completes the current line with the current text-attributes.
+ *
+ * @param view  The textview.
  */
 void gnt_text_view_next_line(GntTextView *view);
 
 /**
- * 
- * @param flags
+ * Convert GNT-text formats to ncurses-text attributes.
  *
- * @return
+ * @param flags  The GNT text format.
+ *
+ * @return  Nucrses text attribute.
  */
 chtype gnt_text_format_flag_to_chtype(GntTextFormatFlags flags);
 
 /**
- * 
- * @param view
+ * Clear the contents of the textview.
+ *
+ * @param view  The textview.
  */
 void gnt_text_view_clear(GntTextView *view);
 
 /**
- * 
- * @param view
+ * The number of lines below the bottom-most visible line.
  *
- * @return
+ * @param view  The textview.
+ *
+ * @return  Number of lines below the bottom-most visible line.
  */
 int gnt_text_view_get_lines_below(GntTextView *view);
 
 /**
- * 
- * @param view
+ * The number of lines above the topmost visible line.
  *
- * @return
+ * @param view  The textview.
+ *
+ * @return  Number of lines above the topmost visible line.
  */
 int gnt_text_view_get_lines_above(GntTextView *view);
 
-/* If text is NULL, then the tag is removed. */
 /**
- * 
- * @param view
- * @param name
- * @param text
- * @param all
+ * Change the text of a tag.
  *
- * @return
+ * @param view   The textview.
+ * @param name   The name of the tag.
+ * @param text   The new text for the text. If 'text' is @c NULL, the tag is removed.
+ * @param all    @c TRUE if all of the instancess of the tag should be changed, @c FALSE if
+ *               only the first instance should be changed.
+ *
+ * @return  The number of instances changed.
  */
 int gnt_text_view_tag_change(GntTextView *view, const char *name, const char *text, gboolean all);
 
 /**
- * 
- * @param view
- * @param widget
+ * Setup hooks so that pressing up/down/page-up/page-down keys when 'widget' is
+ * in focus scrolls the textview.
+ *
+ * @param view    The textview.
+ * @param widget  The trigger widget.
  */
 void gnt_text_view_attach_scroll_widget(GntTextView *view, GntWidget *widget);
 
 /**
- * 
- * @param view
- * @param widget
+ * Setup appropriate hooks so that pressing some keys when the 'pager' widget
+ * is in focus triggers the PAGER to popup with the contents of the textview
+ * in it.
+ *
+ * The default key-combination to trigger the pager is a-v, and the default
+ * PAGER application is $PAGER. Both can be changed in ~/.gntrc like this:
+ *
+ * @code
+ * [pager]
+ * key = a-v
+ * path = /path/to/pager
+ * @endcode
+ *
+ * @param view    The textview.
+ * @param pager   The widget to trigger the PAGER.
  */
 void gnt_text_view_attach_pager_widget(GntTextView *view, GntWidget *pager);
 
 /**
- * 
- * @param view
- * @param widget
+ * Setup appropriate hooks so that pressing some keys when 'widget'
+ * is in focus triggers the EDITOR to popup with the contents of the textview
+ * in it.
+ *
+ * The default key-combination to trigger the pager is a-e, and the default
+ * EDITOR application is $EDITOR. Both can be changed in ~/.gntrc like this:
+ *
+ * @code
+ * [editor]
+ * key = a-e
+ * path = /path/to/editor
+ * @endcode
+ *
+ * @param view     The textview.
+ * @param widget   The widget to trigger the EDITOR.
  */
-void gnt_text_view_attach_editor_widget(GntTextView *view, GntWidget *pager);
+void gnt_text_view_attach_editor_widget(GntTextView *view, GntWidget *widget);
 
 /**
  * Set a GntTextViewFlag for the textview widget.
--- a/finch/libgnt/gntutils.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntutils.h	Thu Nov 08 02:47:12 2007 +0000
@@ -153,5 +153,5 @@
  *
  * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
-void gnt_util_set_trigger_widget(GntWidget *wid, const char *text, GntWidget *button);
+void gnt_util_set_trigger_widget(GntWidget *widget, const char *key, GntWidget *button);
 
--- a/finch/libgnt/gntwidget.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntwidget.c	Thu Nov 08 02:47:12 2007 +0000
@@ -617,7 +617,7 @@
 		return;
 	while (widget->parent)
 		widget = widget->parent;
-	
+
 	if (!g_object_get_data(G_OBJECT(widget), "gnt:queue_update"))
 	{
 		int id = g_timeout_add(0, update_queue_callback, widget);
--- a/finch/libgnt/gntwidget.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntwidget.h	Thu Nov 08 02:47:12 2007 +0000
@@ -140,167 +140,176 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return  GType for GntWidget.
  */
 GType gnt_widget_get_gtype(void);
 
 /**
- * 
- * @param widget
+ * Destroy a widget.
+ * @param widget The widget to destroy.
  */
 void gnt_widget_destroy(GntWidget *widget);
 
 /**
- * 
- * @param widget
+ * Show a widget. This should only be used for toplevel widgets. For the rest
+ * of the widgets, use #gnt_widget_draw instead.
+ *
+ * @param widget  The widget to show.
  */
 void gnt_widget_show(GntWidget *widget);
 
 /**
- * 
- * @param widget
+ * Draw a widget.
+ * @param widget   The widget to draw.
  */
 void gnt_widget_draw(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param x
- * @param y
- * @param width
- * @param height
+ * @internal
+ * Expose part of a widget.
  */
 void gnt_widget_expose(GntWidget *widget, int x, int y, int width, int height);
 
 /**
- * 
- * @param widget
+ * Hide a widget.
+ * @param widget   The widget to hide.
  */
 void gnt_widget_hide(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param x
- * @param y
+ * Get the position of a widget.
+ *
+ * @param widget  The widget.
+ * @param x       Location to store the x-coordinate of the widget.
+ * @param y       Location to store the y-coordinate of the widget.
  */
 void gnt_widget_get_position(GntWidget *widget, int *x, int *y);
 
 /**
- * 
- * @param widget
- * @param x
- * @param y
+ * Set the position of a widget.
+ * @param widget   The widget to reposition.
+ * @param x        The x-coordinate of the widget.
+ * @param y        The x-coordinate of the widget.
  */
 void gnt_widget_set_position(GntWidget *widget, int x, int y);
 
 /**
- * 
- * @param widget
+ * Request a widget to calculate its desired size.
+ * @param widget  The widget.
  */
 void gnt_widget_size_request(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param width
- * @param height
+ * Get the size of a widget.
+ * @param widget    The widget.
+ * @param width     Location to store the width of the widget.
+ * @param height    Location to store the height of the widget.
  */
 void gnt_widget_get_size(GntWidget *widget, int *width, int *height);
 
 /**
- * 
- * @param widget
- * @param width
- * @param height
+ * Set the size of a widget.
  *
- * @return
+ * @param widget  The widget to resize.
+ * @param width   The width of the widget.
+ * @param height  The height of the widget.
+ *
+ * @return  If the widget was resized to the new size.
  */
 gboolean gnt_widget_set_size(GntWidget *widget, int width, int height);
 
 /**
- * 
- * @param widget
- * @param width
- * @param height
+ * Confirm a requested a size for a widget.
  *
- * @return
+ * @param widget   The widget.
+ * @param width    The requested width.
+ * @param height    The requested height.
+ *
+ * @return  @c TRUE if the new size was confirmed, @c FALSE otherwise.
  */
 gboolean gnt_widget_confirm_size(GntWidget *widget, int width, int height);
 
 /**
- * 
- * @param widget
- * @param keys
+ * Trigger the key-press callbacks for a widget.
  *
- * @return
+ * @param widget  The widget.
+ * @param keys    The keypress on the widget.
+ *
+ * @return  @c TRUE if the key-press was handled, @c FALSE otherwise.
  */
 gboolean gnt_widget_key_pressed(GntWidget *widget, const char *keys);
 
 /**
- * 
- * @param widget
- * @param event
- * @param x
- * @param y
+ * Trigger the 'click' callback of a widget.
  *
- * @return
+ * @param widget   The widget.
+ * @param event    The mouseevent.
+ * @param x        The x-coordinate of the mouse.
+ * @param y        The y-coordinate of the mouse.
+ *
+ * @return  @c TRUE if the event was handled, @c FALSE otherwise.
  */
 gboolean gnt_widget_clicked(GntWidget *widget, GntMouseEvent event, int x, int y);
 
 /**
- * 
- * @param widget
- * @param set
+ * Give or remove focus to a widget.
+ * @param widget  The widget.
+ * @param set     @c TRUE of focus should be given to the widget, @c FALSE if
+ *                focus should be removed.
  *
- * @return
+ * @return @c TRUE if the focus has been changed, @c FALSE otherwise.
  */
 gboolean gnt_widget_set_focus(GntWidget *widget, gboolean set);
 
 /**
- * 
- * @param widget
+ * Activate a widget. This only applies to widgets that can be activated (eg. GntButton)
+ * @param widget  The widget to activate.
  */
 void gnt_widget_activate(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param name
+ * Set the name of a widget.
+ * @param widget   The widget.
+ * @param name     A new name for the widget.
  */
 void gnt_widget_set_name(GntWidget *widget, const char *name);
 
+/**
+ * Get the name of a widget.
+ * @param widget   The widget.
+ * @return The name of the widget.
+ */
 const char *gnt_widget_get_name(GntWidget *widget);
 
-/* Widget-subclasses should call this from the draw-callback.
- * Applications should just call gnt_widget_draw instead of this. */
 /**
- * 
- * @param widget
+ * @internal
+ * Use #gnt_widget_draw instead.
  */
 void gnt_widget_queue_update(GntWidget *widget);
 
 /**
- * 
- * @param widget
- * @param set
+ * Set whether a widget can take focus or not.
+ *
+ * @param widget   The widget.
+ * @param set      @c TRUE if the widget can take focus.
  */
 void gnt_widget_set_take_focus(GntWidget *widget, gboolean set);
 
 /**
- * 
- * @param widget
- * @param set
+ * Set the visibility of a widget.
+ *
+ * @param widget  The widget.
+ * @param set     Whether the widget is visible or not.
  */
 void gnt_widget_set_visible(GntWidget *widget, gboolean set);
 
 /**
- * 
- * @param widget
+ * Check whether the widget has shadows.
  *
- * @return
+ * @param widget  The widget.
+ *
+ * @return  @c TRUE if the widget has shadows. This checks both the user-setting
+ *          and whether the widget can have shadows at all.
  */
 gboolean gnt_widget_has_shadow(GntWidget *widget);
 
--- a/finch/libgnt/gntwindow.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntwindow.h	Thu Nov 08 02:47:12 2007 +0000
@@ -77,25 +77,27 @@
 #define gnt_hwindow_new(homo) gnt_window_box_new(homo, FALSE)
 
 /**
- * 
+ * Create a new window.
  *
- * @return
+ * @return The newly created window.
  */
 GntWidget * gnt_window_new(void);
 
 /**
- * 
- * @param homo
- * @param vert
+ * Create a new window.
  *
- * @return
+ * @param homo  @c TRUE if the widgets inside the window should have the same dimensions.
+ * @param vert  @c TRUE if the widgets inside the window should be stacked vertically.
+ *
+ * @return  The newly created window.
  */
 GntWidget * gnt_window_box_new(gboolean homo, gboolean vert);
 
 /**
- * 
- * @param window
- * @param menu
+ * Set the menu for a window.
+ *
+ * @param window  The window.
+ * @param menu    The menu for the window.
  */
 void gnt_window_set_menu(GntWindow *window, GntMenu *menu);
 
--- a/finch/libgnt/gntwm.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntwm.c	Thu Nov 08 02:47:12 2007 +0000
@@ -1675,7 +1675,7 @@
 {
 	while (widget->parent)
 		widget = widget->parent;
-	
+
 	if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_INVISIBLE) ||
 			g_hash_table_lookup(wm->nodes, widget)) {
 		update_screen(wm);
--- a/finch/libgnt/gntwm.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/finch/libgnt/gntwm.h	Thu Nov 08 02:47:12 2007 +0000
@@ -113,7 +113,7 @@
 	 * whether to give focus to a new window.
 	 */
 	gboolean event_stack;
-	
+
 	GntKeyPressMode mode;
 
 	GHashTable *positions;
@@ -184,108 +184,149 @@
 G_BEGIN_DECLS
 
 /**
- * 
- *
- * @return
+ * @return GType for GntWM.
  */
 GType gnt_wm_get_gtype(void);
 
+/**
+ * Add a workspace.
+ * @param wm   The window-manager.
+ * @param ws   The workspace to add.
+ */
 void gnt_wm_add_workspace(GntWM *wm, GntWS *ws);
 
+/**
+ * Switch to a workspace.
+ * @param wm   The window-manager.
+ * @param n    Index of the workspace to switch to.
+ *
+ * @return   @c TRUE if the switch was successful.
+ */
 gboolean gnt_wm_switch_workspace(GntWM *wm, gint n);
+
+/**
+ * Switch to the previous workspace from the current one.
+ * @param wm  The window-manager.
+ */
 gboolean gnt_wm_switch_workspace_prev(GntWM *wm);
+
+/**
+ * Switch to the next workspace from the current one.
+ * @param wm  The window-manager.
+ */
 gboolean gnt_wm_switch_workspace_next(GntWM *wm);
+
+/**
+ * Move a window to a specific workspace.
+ * @param wm     The window manager.
+ * @param neww   The new workspace.
+ * @param widget The widget to move.
+ */
 void gnt_wm_widget_move_workspace(GntWM *wm, GntWS *neww, GntWidget *widget);
+
+/**
+ * Set the list of workspaces .
+ * @param wm            The window manager.
+ * @param workspaces    The list of workspaces.
+ */
 void gnt_wm_set_workspaces(GntWM *wm, GList *workspaces);
+
+/**
+ * Find the workspace that contains a specific widget.
+ * @param wm       The window-manager.
+ * @param widget   The widget to find.
+ * @return   The workspace that has the widget.
+ */
 GntWS *gnt_wm_widget_find_workspace(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param widget
+ * Process a new window.
+ *
+ * @param wm       The window-manager.
+ * @param widget   The new window.
  */
 void gnt_wm_new_window(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param widget
+ * Decorate a window.
+ * @param wm       The window-manager.
+ * @param widget   The widget to decorate.
  */
 void gnt_wm_window_decorate(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param widget
+ * Close a window.
+ * @param wm       The window-manager.
+ * @param widget   The window to close.
  */
 void gnt_wm_window_close(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param string
+ * Process input.
  *
- * @return
+ * @param wm      The window-manager.
+ * @param string  The input string to process.
+ *
+ * @return @c TRUE of the string was processed, @c FALSE otherwise.
  */
 gboolean gnt_wm_process_input(GntWM *wm, const char *string);
 
 /**
- * 
- * @param wm
- * @param event
- * @param x
- * @param y
- * @param widget
+ * Process a click event.
+ * @param wm      The window manager.
+ * @param event   The mouse event.
+ * @param x       The x-coordinate of the mouse.
+ * @param y       The y-coordinate of the mouse.
+ * @param widget  The widget under the mouse.
  *
- * @return
+ * @return  @c TRUE if the event was handled, @c FALSE otherwise.
  */
 gboolean gnt_wm_process_click(GntWM *wm, GntMouseEvent event, int x, int y, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param widget
- * @param width
- * @param height
+ * Resize a window.
+ * @param wm        The window manager.
+ * @param widget    The window to resize.
+ * @param width     The desired width of the window.
+ * @param height    The desired height of the window.
  */
 void gnt_wm_resize_window(GntWM *wm, GntWidget *widget, int width, int height);
 
 /**
- * 
- * @param wm
- * @param widget
- * @param x
- * @param y
+ * Move a window.
+ * @param wm      The window manager.
+ * @param widget  The window to move.
+ * @param x       The desired x-coordinate of the window.
+ * @param y       The desired y-coordinate of the window.
  */
 void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y);
 
 /**
- * 
- * @param wm
- * @param widget
+ * Update a window.
+ * @param wm      The window-manager.
+ * @param widget  The window to update.
  */
 void gnt_wm_update_window(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param widget
+ * Raise a window.
+ * @param wm      The window-manager.
+ * @param widget  The window to raise.
  */
 void gnt_wm_raise_window(GntWM *wm, GntWidget *widget);
 
 /**
- * 
- * @param wm
- * @param set
+ * @internal
  */
 void gnt_wm_set_event_stack(GntWM *wm, gboolean set);
 
+/**
+ * @internal
+ */
 void gnt_wm_copy_win(GntWidget *widget, GntNode *node);
 
 /**
- * 
- *
- * @return
+ * @return  The idle time of the user.
  */
 time_t gnt_wm_get_idle_time(void);
 
--- a/libpurple/prefs.h	Thu Nov 08 02:37:02 2007 +0000
+++ b/libpurple/prefs.h	Thu Nov 08 02:47:12 2007 +0000
@@ -45,9 +45,20 @@
 } PurplePrefType;
 
 /**
- * Pref change callback type
+ * The type of callbacks for preference changes.
+ *
+ * @param name the name of the preference which has changed.
+ * @param type the type of the preferenced named @a name
+ * @param val  the new value of the preferencs; should be cast to the correct
+ *             type.  For instance, to recover the value of a #PURPLE_PREF_INT
+ *             preference, use <tt>GPOINTER_TO_INT(val)</tt>.  Alternatively,
+ *             just call purple_prefs_get_int(), purple_prefs_get_string_list()
+ *             etc.
+ * @param data Arbitrary data specified when the callback was connected with
+ *             purple_prefs_connect_callback().
+ *
+ * @see purple_prefs_connect_callback()
  */
-
 typedef void (*PurplePrefCallback) (const char *name, PurplePrefType type,
 		gconstpointer val, gpointer data);
 
--- a/libpurple/protocols/msn/nexus.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/libpurple/protocols/msn/nexus.c	Thu Nov 08 02:47:12 2007 +0000
@@ -194,7 +194,7 @@
 		);
 
 	/*build the SOAP windows Live ID XML body */
-	tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE,username,password,challenge_str	);
+	tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE, username, password, challenge_str);
 	g_free(challenge_str);
 #else
 	rst1_str = g_strdup_printf(
@@ -214,6 +214,7 @@
 	g_free(fs);
 
 	soap = msn_soap_message_new(NULL, xmlnode_from_str(tail, -1));
+	g_free(tail);
 	msn_soap_message_send(nexus->session, soap, MSN_TWN_SERVER, TWN_POST_URL,
 		nexus_got_response_cb, nexus);
 }
--- a/pidgin/gtkimhtml.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/pidgin/gtkimhtml.c	Thu Nov 08 02:47:12 2007 +0000
@@ -2833,8 +2833,8 @@
 						{
 						    gtk_imhtml_toggle_underline(imhtml);
 						    font->underline = 1;
-						} else
-							g_free(textdec);
+						}
+						g_free(textdec);
 
 						if (oldfont)
 						{
--- a/pidgin/gtksavedstatuses.c	Thu Nov 08 02:37:02 2007 +0000
+++ b/pidgin/gtksavedstatuses.c	Thu Nov 08 02:47:12 2007 +0000
@@ -1201,6 +1201,7 @@
 	gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
 	focus_chain = g_list_prepend(focus_chain, dialog->message);
 	gtk_container_set_focus_chain(GTK_CONTAINER(hbox), focus_chain);
+	g_list_free(focus_chain);
 
 	if ((saved_status != NULL) && (purple_savedstatus_get_message(saved_status) != NULL))
 		gtk_imhtml_append_text(GTK_IMHTML(text),
--- a/pidgin/pixmaps/Makefile.am	Thu Nov 08 02:37:02 2007 +0000
+++ b/pidgin/pixmaps/Makefile.am	Thu Nov 08 02:47:12 2007 +0000
@@ -11,10 +11,6 @@
 		buddy_icons/qq/Makefile.mingw \
 		dialogs/16/Makefile.mingw \
 		dialogs/64/Makefile.mingw \
-		icons/16/Makefile.mingw \
-		icons/24/Makefile.mingw \
-		icons/32/Makefile.mingw \
-		icons/48/Makefile.mingw \
 		emotes/default/Makefile.mingw \
 		emotes/default/24/Makefile.mingw \
 		emotes/none/Makefile.mingw \
--- a/pidgin/pixmaps/Makefile.mingw	Thu Nov 08 02:37:02 2007 +0000
+++ b/pidgin/pixmaps/Makefile.mingw	Thu Nov 08 02:47:12 2007 +0000
@@ -15,7 +15,7 @@
 install:
 	if test '$(SUBDIRS)'; then \
 	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if [ "$$subdir" != "icons/22" ]; then \
+	  if [[ "$$subdir" != icons/* ]]; then \
 	    $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) install || exit 1 ;\
 	  fi \
 	  done; \
--- a/pidgin/pixmaps/icons/16/Makefile.mingw	Thu Nov 08 02:37:02 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-PIDGIN_TREE_TOP := ../../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-datadir = $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(pidginiconspix_DATA)'; then \
-	  mkdir -p $(pidginiconspixdir); \
-	  cp $(pidginiconspix_DATA) $(pidginiconspixdir); \
-	fi;
-
--- a/pidgin/pixmaps/icons/24/Makefile.mingw	Thu Nov 08 02:37:02 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-PIDGIN_TREE_TOP := ../../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-datadir = $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(pidginiconspix_DATA)'; then \
-	  mkdir -p $(pidginiconspixdir); \
-	  cp $(pidginiconspix_DATA) $(pidginiconspixdir); \
-	fi;
-
--- a/pidgin/pixmaps/icons/32/Makefile.mingw	Thu Nov 08 02:37:02 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-PIDGIN_TREE_TOP := ../../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-datadir = $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(pidginiconspix_DATA)'; then \
-	  mkdir -p $(pidginiconspixdir); \
-	  cp $(pidginiconspix_DATA) $(pidginiconspixdir); \
-	fi;
-
--- a/pidgin/pixmaps/icons/48/Makefile.mingw	Thu Nov 08 02:37:02 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-PIDGIN_TREE_TOP := ../../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-datadir = $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(pidginiconspix_DATA)'; then \
-	  mkdir -p $(pidginiconspixdir); \
-	  cp $(pidginiconspix_DATA) $(pidginiconspixdir); \
-	fi;
-