changeset 16269:c14a05c00484

merge of '6b7a5fb8f33d3f1801a33540b42b5fb01b69511a' and '7d305ece871339300b733aa498ca247d21b5aa41'
author Sean Egan <seanegan@gmail.com>
date Fri, 20 Apr 2007 00:47:30 +0000
parents a68fffb647d0 (current diff) eae8f64218ba (diff)
children 9b0a3110f86e
files TODO libpurple/protocols/gg/.todo libpurple/protocols/irc/.todo libpurple/protocols/msn/.todo libpurple/protocols/yahoo/.todo libpurple/protocols/zephyr/.todo pidgin/pixmaps/pidgin.svg
diffstat 19 files changed, 76 insertions(+), 955 deletions(-) [+]
line wrap: on
line diff
--- a/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ b/.todo	Fri Apr 20 00:47:30 2007 +0000
@@ -2,173 +2,7 @@
     <title>
         Gaim TODO List
     </title>
-    <note priority="high" time="1036029816">
-        UI stuff
-        <note priority="high" time="1053306672" done="1089237474">
-            need to be able to copy/paste smilies
-            <comment>
-                done some time ago
-            </comment>
-        </note>
-        <note priority="medium" time="1035996189" done="1089237564">
-            resizing text entry area below default doesn't work well.
-            <comment>
-                wysiwyg and changes from that time period fixed this
-            </comment>
-            <note priority="medium" time="1035996380" done="0">
-                some people report being unable to shrink it at all
-            </note>
-        </note>
-        <note priority="verylow" time="1036039515" done="1092939361">
-            copy grabs html as well as text.
-            <comment>
-                wysiwyg solved this
-            </comment>
-        </note>
-        <note priority="veryhigh" time="1035996049">
-            kicking someone in #name-extension causes a kick to display in #name as well and vice-versa
-        </note>
-        <note priority="veryhigh" time="1036028214">
-            SEARCH FUNCTION FOR LOG FILES
-            <note priority="veryhigh" time="1092939096">
-                current function only highlights every other entry (sf bug 980075)
-            </note>
-        </note>
-        <note priority="high" time="1036028245">
-            fix crash when someone writes just as you close the chat window.
-        </note>
-        <note priority="high" time="1066444991">
-            Save buddy icon option does not work, it saves a screenname.icon file which is not openable.
-        </note>
-        <note priority="medium" time="1036028206">
-            status report w/out being on own list
-        </note>
-        <note priority="medium" time="1036039939">
-            option not to raise windows on event while away
-        </note>
-        <note priority="medium" time="1036039961">
-            make entry widget height preference a relative size, that is it doesn't change the overall height of the window.
-        </note>
-        <note priority="medium" time="1036040014">
-            buddy pounce stuff
-            <note priority="medium" time="1036040050" done="1129562645">
-                drop down list of buddies
-                <comment>
-                    I think tab complete for the field solves this
-                </comment>
-            </note>
-        </note>
-        <note priority="medium" time="1036210515">
-            blist does not resize correctly on some platforms. this does not seem to be an issue on linux.
-        </note>
-        <note priority="medium" time="1036337817">
-            better gtk2-ified icons: maybe a send icon? review the ones we're using now. do they make sense?
-        </note>
-        <note priority="medium" time="1036361367">
-            do not automatically resize windows that have been manually resized.
-            <comment>
-                is this fixed?
-            </comment>
-            <note priority="medium" time="1036361428" done="1129562686">
-                when a new tab is created
-                <comment>
-                    I think this is solved now that tabs always display
-                </comment>
-            </note>
-            <note priority="medium" time="1036361397">
-                when a buddy icon is received
-            </note>
-            <note priority="medium" time="1036361407">
-                when an im image is received
-            </note>
-        </note>
-        <note priority="low" time="1036027907">
-            block buddy option from right click menu in blist
-        </note>
-        <note priority="low" time="1036346291">
-            blist short cuts apparently not working
-        </note>
-        <note priority="low" time="1092939253">
-            display status overlay for buddies on the blist that have been blocked
-        </note>
-        <note priority="verylow" time="1036039472">
-            option to have input box scroll instead of line wrap. input box only.
-        </note>
-        <note priority="verylow" time="1036040093">
-            Transparency for GtkIMHtml
-        </note>
-    </note>
-    <note priority="high" time="1036029923">
-        Prefs stuff
-        <note priority="veryhigh" time="1129562765">
-            make sure prefs save
-        </note>
-        <note priority="high" time="1129562791">
-            move plugins out of prefs to their own dialog
-        </note>
-        <note priority="medium" time="1036028226">
-            preference to set logfile path. (i think there is a patch to add this)
-        </note>
-        <note priority="low" time="1036027262">
-            add ircproxy option to proxy preferences.
-        </note>
-        <note priority="low" time="1036027278">
-            per-sn controls on how to compute idle time
-        </note>
-    </note>
-    <note priority="high" time="1036030165">
-        Core stuff
-        <note priority="low" time="1036038499" done="1129562864">
-            encryption and hash stuff currently in gaim consolidated to an api
-            <comment>
-                cipher api
-            </comment>
-        </note>
-        <note priority="veryhigh" time="1036027053">
-            PERMIT ONLY PEOPLE ON MY LIST TO IM ME IS NEEDED ASAP!!!!!!!!
-            <note priority="veryhigh" time="1036027074">
-                for yahoo
-            </note>
-            <note priority="veryhigh" time="1036027081">
-                icq
-            </note>
-            <note priority="medium" time="1036027095">
-                msn
-            </note>
-        </note>
-        <note priority="medium" time="1036026995">
-            documentation needed. (both online and not)
-        </note>
-        <note priority="medium" time="1036038388">
-            better privacy controls.
-        </note>
-        <note priority="medium" time="1036038411">
-            networking code rethink (libgnet?)
-        </note>
-        <note priority="low" time="1036038360">
-            Cancelable proxy_connect
-        </note>
-    </note>
-    <note priority="high" time="1036040208">
-        away rethink
-        <note priority="high" time="1129562952">
-            make it possible to create a state with exceptions
-        </note>
-        <note priority="high" time="1129562964">
-            make it possible to use a saved state
-        </note>
-        <note priority="medium" time="1036040310">
-            Away needs to be modified to include "show" and "status", i.e. you can have an away state, and an away message. This is exactly what ICQ does - you're "N/A" (show in Jabber) and your away message is "I'm gone." (status in Jabber). Since it only applies to ICQ and Jabber (and actually, currently only Jabber, since icqlib doesn't handle away messages yet), there should be some way of indicating that it can do both without breaking the others. My suggestion is to put "/" at the end of the "state", and when that's there, have it be a menu with all of the custom messages, e.g. in Jabber it'd return "Away/" as one of the states, and you'd see "Away" with a menu of all the away messages you have.
-        </note>
-    </note>
-    <link filename="src/protocols/gg/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/irc/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/jabber/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/msn/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/napster/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/oscar/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/yahoo/.todo" priority="medium" time="0"/>
-    <link filename="src/protocols/zephyr/.todo" priority="medium" time="0"/>
+    <link filename="./libpurple/protocols/oscar/.todo" priority="medium" time="0"/>
     <note priority="medium" time="1036029726">
         WinGaim specific stuff
         <note priority="high" time="1035995058">
@@ -187,142 +21,5 @@
             Write a seperate program that implements multiple-users.  It should encrypt/decrypt .gaimrc's based on a provided password, then launch gaim -f, with that .gaimrc.
         </note>
     </note>
-    <note priority="medium" time="1036030029">
-        gaim-remote stuff
-        <note priority="low" time="1035996470">
-            GAIM-REMOTE: need a doc written up for gaim-remote on usage
-        </note>
-        <note priority="low" time="1035996488">
-            GAIM-REMOTE: need to implement everything listed in gaim-remote --help
-        </note>
-    </note>
-    <note priority="medium" time="1036030336">
-        In General (i don't know where this should be)
-        <note priority="medium" time="1036039588" done="1063208189">
-            person support
-            <comment>
-                faceprint added it
-            </comment>
-        </note>
-        <note priority="high" time="1036027886">
-            fix memory leaks
-        </note>
-        <note priority="medium" time="1036028233">
-            gzip storage of logs
-            <comment>
-                a plugin could do this now
-            </comment>
-        </note>
-        <note priority="medium" time="1036028352">
-            throwaway away message (unsaved) for single account (vs. set all away)
-        </note>
-        <note priority="medium" time="1037924676">
-            add state saving and hook it to session management and user dialogs
-        </note>
-        <note priority="low" time="1036027794">
-            importing/exporting blist files
-            <note priority="medium" time="1092939903">
-                export one account's worth of blist.xml
-            </note>
-            <note priority="medium" time="1092939932">
-                import whatever we export, to any account
-            </note>
-            <note priority="low" time="1036027810">
-                licq
-            </note>
-            <note priority="verylow" time="1063208225">
-                trillian
-            </note>
-        </note>
-        <note priority="low" time="1041997250">
-            adding and removing buddies needs cleaned up. basically, add_buddy should be calling ui_add_buddy and serv_add_buddy as needed (require an extra arg to add_buddy to tell  it what needs done) and the various ways a buddy can come to be needing added should be calling some type of request_add_buddy (this would be part of both the core&lt;-&gt;ui interface and the core&lt;-&gt;prpl interface)
-        </note>
-        <note priority="low" time="1043803149">
-            some way to ask about differences bettween server lists and local lists
-        </note>
-    </note>
-    <note priority="medium" time="1036030450">
-        Plugins/Scripts
-        <note priority="high" time="1129563228">
-            move to gobjects and gsignals
-        </note>
-        <note priority="medium" time="1036028091">
-            sean's plugin ideas
-            <note priority="medium" time="1036028108">
-                screenshot plugin
-            </note>
-            <note priority="medium" time="1036028113">
-                xmms remote plugin
-            </note>
-            <note priority="medium" time="1036028123">
-                statusimage plugin
-            </note>
-        </note>
-        <note priority="low" time="1037924600">
-            docklet stuff
-            <note priority="medium" time="1037924629">
-                make the docklet support blinking status icons where appropriate (requires setting up a better GAIM_STOCK_ICON framework)
-            </note>
-        </note>
-    </note>
-    <note priority="verylow" time="1036026433">
-        DISCUSSION: entries here are things i'm not sure are desirable or doable.
-        <note priority="low" time="1036026529" done="1089237962">
-            do we really need some of the preferences? (Ignore TIK messages. Does anyone use that method of retrieving Away messages anymore? no, but it is small and it would be a piece of history lost ;-))
-            <comment>
-                prefsslash04
-            </comment>
-        </note>
-        <note priority="low" time="1036026508">
-            "console beep" sound option should use different frequency beeps for different events, or at least give some way to allow this behavior.
-        </note>
-        <note priority="low" time="1036026609">
-            ximian serial numbers in rpms cause... problems.
-        </note>
-        <note priority="low" time="1036026691">
-            msn auth expires (better, but still not perfect)
-        </note>
-        <note priority="low" time="1036026746">
-            gaim should detect if message is sent and only log on success for protocols capable of offline messaging, this would always log, but aim messages would only be logged if sent to an online person. this would essentially entail making logging dependent on the return status of the serv send msg command.
-        </note>
-        <note priority="low" time="1036026818">
-            the privacy dialog has five different options now.  this looks rather ugly.  When we redesign the dialog, perhaps we should change the privacy setting to a combobox?
-        </note>
-        <note priority="verylow" time="1036026484">
-            protocol action to log into webmail for those that support such (aim, yahoo, msn)  maybe a right-click option to send to user(yahoo, msn)
-        </note>
-        <note priority="verylow" time="1036026538">
-            show alias in list of people in chat
-        </note>
-        <note priority="verylow" time="1036026552">
-            tab complete to alias, translate to nick on send for chat
-        </note>
-        <note priority="verylow" time="1036026597">
-            sorting of conversation tabs, if the ordering of left-to-right order by opening isn't good enough for you
-        </note>
-        <note priority="verylow" time="1036026772">
-            option to disable close for x seconds after receive im. this would short circuit missing messages as you close the window. make it an option that's off by default.
-        </note>
-        <note priority="verylow" time="1036026845">
-            options on key bindings. (different window managers map different things).
-            <note priority="verylow" time="1036026870">
-                make the control key switchable with the alt key or similar)
-            </note>
-            <note priority="verylow" time="1036026881">
-                maybe make control/alt+arrow optionally replace control+bracket (since control-pageup and control-pagedown work, i'm inclined not to do this)
-            </note>
-        </note>
-        <note priority="verylow" time="1036028335">
-            make the option to have escape close a window be global (error messages, account editor, etc.)
-        </note>
-    </note>
-    <note priority="verylow" time="1036027143">
-        autotools/gettext
-        <note priority="verylow" time="1036027169">
-            automake 1.4 support bug, non-root users can't get gaim to compile by putting the gtk2 and glib2 m4 files in the m4 dir
-        </note>
-        <note priority="verylow" time="1036027184">
-            automake 1.[56] support not perfect.
-        </note>
-    </note>
+    <link filename="./libpurple/protocols/jabber/.todo" priority="medium" time="1176995038"/>
 </todo>
--- a/Doxyfile.in	Fri Apr 20 00:47:25 2007 +0000
+++ b/Doxyfile.in	Fri Apr 20 00:47:30 2007 +0000
@@ -615,13 +615,13 @@
 # each generated HTML page. If it is left blank doxygen will generate a 
 # standard header.
 
-HTML_HEADER            = doc/TracHeader.html
+HTML_HEADER            = @top_srcdir@/doc/TracHeader.html
 
 # The HTML_FOOTER tag can be used to specify a personal HTML footer for 
 # each generated HTML page. If it is left blank doxygen will generate a 
 # standard footer.
 
-HTML_FOOTER            = doc/TracFooter.html
+HTML_FOOTER            = @top_srcdir@/doc/TracFooter.html
 
 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
 # style sheet that is used by each HTML page. It can be used to 
--- a/TODO	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-* conversation api {{{
-	* need to handle: {{{
-		* unnamed chats
-		* chats with the same name as a buddy
-			* this should be working now, but it needs to be kept in mind when (re-)designing
-		* jabber Messages (one off messages vrs a conversation with a backlog)
-		* multiple conversations with a single buddy (jabber, with thread tag)
-		* bugs
-	}}}
-	* notes: {{{
-		* (12:58:39) Robot101: user list always|auto|never
-		* topic only where supported by the protocol
-		* how do we log this? {{{
-			* rlaager's (NEW) proposal: {{{
-				* each conversation has 1 or more logs associated with it.
-				* when someone joins, a new log is opened
-					* file based loggers should try to use hard-links in a smart way
-					  to avoid duplicating data on disk as much as possible...
-					* this needs to be designed in such a way that a database logger
-					  can handle it w/o duplication...
-					* TO SOLVE THESE CONCERNS, a link and/or copy function callback
-					  will likely need to be added
-			}}}
-		}}}
-	}}}
-}}}
-* buddy list {{{
-	* we have not committed any gobjectification, so this is not a blocker for 2.0.0 until we do.
-		* if we do, it is only a blocker to the extent that pidgin & finch need to run.  That is, we do not
-		  *necessarily* have to gobjectifiy everything as long as we preserve functionality.
-		* That being said, my understanding of the signals mess says that it is probly more work to
-		  try to do this in stages than to start it or not start it.
-	* This would require some sort of signal aggregation, as gobject signals are unique to the instance.
-		* one way to do this would be to emit the signals from a non-descript buddy object.  this would
-		  most closely mimic the current functionality
-		* a second way would be to actually try to aggregate them in some way. I really don't know how
-		  possible this is, but it would allow us to do things like set a pounce on everyone in a group
-		  or define sounds on a per-group basis.
-		* we could look at replacing the UI ops with signals/call backs
-	* bugs
-		* wrong buddy given priority
-}}}
-* status {{{
-	* Error messages aren't particularly usable currently.  we need to be able to see the full text of
-	  the error, and what account is in that error condition.
-	* No way to see accounts not in the global state.
-	* Easier access to saved states is needed.
-}}}
-* Privacy {{{
-	* this is not a blocker for 2.0.0
-	* Privacy sucks. it doesn't handle many of the protocols in a way that users understand. notably
-	  msn, but also yahoo, jabber, and icq.
-	* We want to sync to the server as much as possible, entirely local-only privacy is not an option
-	  except on protocols like irc that have no server-side.
-	* We want to be as consistent across protocols as possible.  this will require renaming things on
-	  some protocols.
-	* Bleeter suggests that we create a privacy.xml, remove privacy from blist.xml.  He suggests
-	  that each protocol define certain capabilities & defaults, with accounts.xml holding exceptions
-	  to the defaults.
-}}}
-* Perl {{{
-	* Block for 2.0.0 or remove perl:
-		* Extended testing and resolving the inevitable bugs remains.
-		* Test each call to make sure it actually works
-		* Make it work with G_MODULE_BIND_LOCAL
-}}}
-* Prefs {{{
-	* on upgrade from 1.x, the timestamp preference often gets lost.
-}}}
-* system log {{{
-	* The system log minimally should tell me what _I_ do in Pidgin.  It should (minimally) tell me about
-	  my accounts and actions.  It should thus list
-	  * Pidgin start and quit
-	  * Account connection
-	  * account disconnection, and reason if caused by error.
-	  * account state changes, IFF we are logging that for buddies.
-		* This might include the state message(s).
-	  * This might be done using one or more files.
-	* historically, the system log has also functioned to log things about buddies that do not relate
-	  to a specific conversation.  While I(luke) do not at all object to this, it could be argued that
-	  such functionality more properly belongs in a plugin, such as the buddy state notification plugin.
-	  if we continue to implement such functionality, it could include:
-	  * logging when a buddy signs on, including in some form what account sees that change.
-	  * logging when a buddy signs off, including in some form what account sees that change.
-	  * "		"	 " "	 goes idle, "		  "  "	  "    "    "       "    "    "
-	  * "		"	 " "	 goes away, "		  "  "	  "    "    "       "    "    "
-	  * "		"	 " "	 becomes available, " "    "  "    "    "       "    "    "
-	  * like the logging of my own accounts, this could be done in one or more files.
-	    * one potential downside of using multiple files is the idea that either the file's contents
-		  duplicate information contained in the file's location/name, or that we need to manipulate
-		  the display so as to convey that information to the user from the graphical viewer
-}}}
--- a/doc/Makefile.am	Fri Apr 20 00:47:25 2007 +0000
+++ b/doc/Makefile.am	Fri Apr 20 00:47:30 2007 +0000
@@ -4,6 +4,8 @@
 	C-HOWTO.dox \
 	PERL-HOWTO.dox \
 	TCL-HOWTO.dox \
+	TracFooter.html \
+	TracHeader.html \
 	account-signals.dox \
 	blist-signals.dox \
 	cipher-signals.dox \
--- a/finch/gntplugin.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/finch/gntplugin.c	Fri Apr 20 00:47:30 2007 +0000
@@ -63,17 +63,22 @@
 static void
 plugin_toggled_cb(GntWidget *tree, PurplePlugin *plugin, gpointer null)
 {
+	/* TODO: Mark these strings for translation after the freeze */
 	if (gnt_tree_get_choice(GNT_TREE(tree), plugin))
 	{
-		if(!purple_plugin_load(plugin))
+		if (!purple_plugin_load(plugin)) {
 			purple_notify_error(NULL, "ERROR", "loading plugin failed", NULL);
+			gnt_tree_set_choice(GNT_TREE(tree), plugin, FALSE);
+		}
 	}
 	else
 	{
 		GntWidget *win;
 
-		if (!purple_plugin_unload(plugin))
+		if (!purple_plugin_unload(plugin)) {
 			purple_notify_error(NULL, "ERROR", "unloading plugin failed", NULL);
+			gnt_tree_set_choice(GNT_TREE(tree), plugin, TRUE);
+		}
 
 		if ((win = g_hash_table_lookup(confwins, plugin)) != NULL)
 		{
--- a/libpurple/example/Makefile.am	Fri Apr 20 00:47:25 2007 +0000
+++ b/libpurple/example/Makefile.am	Fri Apr 20 00:47:30 2007 +0000
@@ -1,4 +1,4 @@
-bin_PROGRAMS = nullclient
+noinst_PROGRAMS = nullclient
 
 nullclient_SOURCES = defines.h nullclient.c
 nullclient_DEPENDENCIES =
--- a/libpurple/prefs.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/libpurple/prefs.c	Fri Apr 20 00:47:30 2007 +0000
@@ -1116,17 +1116,19 @@
 		}
 	}
 
+	oldname = pref_full_name(oldpref);
+	newname = pref_full_name(newpref);
+
 	if (oldpref->type != newpref->type)
 	{
 		purple_debug_error("prefs", "Unable to rename %s to %s: differing types\n", oldname, newname);
+		g_free(oldname);
+		g_free(newname);
 		return;
 	}
 
-	oldname = pref_full_name(oldpref);
-	newname = pref_full_name(newpref);
 	purple_debug_info("prefs", "Renaming %s to %s\n", oldname, newname);
 	g_free(oldname);
-	g_free(newname);
 
 	switch(oldpref->type) {
 		case PURPLE_PREF_NONE:
@@ -1150,6 +1152,7 @@
 			purple_prefs_set_path_list(newname, oldpref->value.stringlist);
 			break;
 	}
+	g_free(newname);
 
 	remove_pref(oldpref);
 }
--- a/libpurple/protocols/gg/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<todo version="0.1.17">
-        <note priority="medium" time="1036046603">
-            New User Registration
-        </note>
-        <note priority="medium" time="1036046614">
-            There's probably 100 other things but since I've hardly used the Windows client before I'm not sure what any of them are
-        </note>
-</todo>
--- a/libpurple/protocols/irc/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<todo version="0.1.19">
-    <note priority="veryhigh" time="1058921630" done="1079072308">
-        fix duplication of names on rejoin (depends on convo API)
-        <comment>
-            someone fixed this
-        </comment>
-    </note>
-    <note priority="high" time="1036041787" done="1058754795">
-        no list of people on /join
-        <comment>
-            This is a convo issue, not an IRC issue
-        </comment>
-    </note>
-    <note priority="high" time="1058843325" done="0">
-        /ignore
-    </note>
-    <note priority="medium" time="1036041658" done="1058918372">
-        Error 421, unknown command when going away. sometimes. (has to do with html in away messages?)
-        <comment>
-            I think this was caused by embedded newlines -- fixed, if that's the case.
-        </comment>
-    </note>
-    <note priority="medium" time="1036041674" done="1058921563">
-        /names
-    </note>
-    <note priority="medium" time="1058755195" done="1058918104">
-        Allow text to be sent on /query
-    </note>
-    <note priority="medium" time="1059198036" done="1060103790">
-        error message on unknown commands (don't just pass to ircd)
-    </note>
-    <note priority="low" time="1060015217" done="0">
-        Make /part smarter ... part the current channel with a part message on '/part message' if we can determine the first word is not a channel name
-    </note>
-    <note priority="medium" time="1129562998">
-        UI to see the banlist output in
-    </note>
-</todo>
--- a/libpurple/protocols/msn/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-<todo version="0.1.19">
-    <note priority="medium" time="1052795456">
-        Bugs
-        <note priority="high" time="1036042035">
-            bug: some people receive blank messages. clicking to ignore font faces font when the requested font isn't found.
-        </note>
-        <note priority="high" time="1036042159">
-            bug: doesn't save blist to file on read from server as this could be introducing new people, esp. if there is no existing file, it should
-        </note>
-        <note priority="high" time="1092939643">
-            when you authorize someone to add you, the corresponding dialog to add them is blank
-        </note>
-        <note priority="medium" time="1036042128">
-            Majortool says to tell sean about "already in opposite list" errors are still happening, now whenever you start gaim. follow from prior conversation. javabsp|away: the (C) and (R) works (23:02:54) MajorTool: LSchiere: yeah what javabsp|away is talking about but its certain ones
-        </note>
-    </note>
-    <note priority="medium" time="1052795462">
-        Features
-        <note priority="medium" time="1036042246" done="1052795280">
-            store group name that buddy is in on server
-        </note>
-        <note priority="verylow" time="1036042948" done="1089237800">
-            File Transfer
-            <comment>
-                shx did this
-            </comment>
-        </note>
-        <note priority="medium" time="1036042588">
-            Group chat support.
-            <note priority="medium" time="1036042573">
-                Typing notification in group chats.
-            </note>
-            <note priority="medium" time="1036042601">
-                Start chat.
-            </note>
-            <note priority="medium" time="1036042611">
-                Better support in general.
-            </note>
-        </note>
-        <note priority="medium" time="1036042780">
-            International friendly name support.
-        </note>
-        <note priority="medium" time="1036042939">
-            Need some way of indicating "invite" in IM window.
-        </note>
-        <note priority="medium" time="1036043086">
-            Auto-reply on away.
-        </note>
-        <note priority="medium" time="1036043093">
-            People search.
-        </note>
-        <note priority="medium" time="1052795877">
-            Mobile MSN support.
-        </note>
-        <note priority="low" time="1093966206">
-            support for displaying the number of emails in the inbox.
-        </note>
-        <note priority="verylow" time="1036042266">
-            Set the friendly name to be the self alias.
-        </note>
-        <note priority="verylow" time="1036043099">
-            Voice chat.
-        </note>
-    </note>
-</todo>
--- a/libpurple/protocols/yahoo/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<todo version="0.1.19">
-    <note priority="high" time="1036976065" done="1129563169">
-        offline messages get lost, esp. if more than 1 sent (is this fixed?)
-        <comment>
-            I've not heard a report on this for some time
-        </comment>
-    </note>
-    <note priority="medium" time="1036041356" done="1061347647">
-        color
-        <comment>
-            patch is in, but it doesn't do bg colors right currently and doesn't do default colors
-        </comment>
-        <note priority="high" time="1036041423">
-            &lt;fade&gt; tags need parsed.
-        </note>
-    </note>
-    <note priority="medium" time="1036041385" done="1061347733">
-        display profile
-        <comment>
-            this is as done as it is likely to get any time soon
-        </comment>
-    </note>
-    <note priority="high" time="1036041328">
-        bug: won't allow me to delete myself from my list past sign on
-    </note>
-    <note priority="medium" time="1036041395">
-        make away message display like that of aim/icq/jabber
-    </note>
-    <note priority="medium" time="1036041400">
-        auto reply on away
-    </note>
-    <note priority="verylow" time="1036041308">
-        web cam support
-    </note>
-    <note priority="verylow" time="1036041449">
-        voice chat
-    </note>
-</todo>
--- a/libpurple/protocols/zephyr/.todo	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-<!-- Automagically generated by the ToDo program on Fri Jul 30 01:36:52 2004 -->
-<todo version="0.1.17">
-    <note priority="veryhigh" time="1036046748">
-        God help us.
-        <comment>
-            Yup
-        </comment>
-    </note>
-    <note priority="veryhigh" time="1087756801">
-        clean up code
-        <comment>
-            Being worked on
-        </comment>
-    </note>
-    <note priority="high" time="1087689758">
-        write code to output a WGFILE with a sane name
-        <comment>
-            done
-        </comment>
-    </note>
-    <note priority="high" time="1087689986">
-        get server supplied subscriptions to properly get added as chats
-        <comment>
-            works.
-        </comment>
-    </note>
-    <note priority="high" time="1087691868">
-        zephyr freezes up sometimes (possibly when zlocating, and possibly when krb tickets have expired)? Debug and fix
-        <comment>
-            This is a libzephyr bug. I suppose I could always submit it upstream....
-        </comment>
-    </note>
-    <note priority="high" time="1087758121">
-        Does away actually work for zephyr
-    </note>
-    <note priority="high" time="1088381394">
-        Deal with %host% and %canon, and unsubscriptions (beginning with ! and - ?)
-        <comment>
-            dealt with %host% and %canon%.
-        </comment>
-    </note>
-    <note priority="high" time="1088381529">
-        Code to resubscribe, reload subs from file,  set exposure, zctl ret, zctl new_server, set signature, set display, and other protocol options.
-        <comment>
-            dealt with resubscriptions, "zctl ret".
-        </comment>
-    </note>
-    <note priority="high" time="1088688644">
-        Add zctl ret ("Show what the server thinks you're subscribed to")
-        <comment>
-            Done
-        </comment>
-    </note>
-    <note priority="high" time="1088828649">
-        should pop up errors when subs (with the sub command or zephyr_join_chat) fails
-    </note>
-    <note priority="high" time="1089047538">
-        update the progress bar for zephyr
-    </note>
-    <note priority="medium" time="1087689774">
-        get non-kerberized zephyr working for windows
-        <comment>
-            buggy, untested code exists on hard driveSee 991208, basically works
-        </comment>
-    </note>
-    <note priority="medium" time="1087689784">
-        get kerberized zephyr working for windows
-        <comment>
-            see 991208
-        </comment>
-    </note>
-    <note priority="medium" time="1087689886">
-        get opener and closer tags for @ formatting to only match the correct closing tag, not any closing tag (e.g. [ matches ], and not )
-        <comment>
-            tested, but code needs cleanup
-        </comment>
-    </note>
-    <note priority="medium" time="1087689920">
-        use tzc as a backend
-        <comment>
-            code exists on hard drive but needs lots of work (cleanup, and bug checking)
-        </comment>
-    </note>
-    <note priority="medium" time="1087690034">
-        properly detect when subscriptions get lost
-    </note>
-    <note priority="medium" time="1087690121">
-        support zcrypt
-        <comment>
-            Written as a perl plugin (for receiving)
-        </comment>
-    </note>
-    <note priority="medium" time="1087690133">
-        support /commands
-        <comment>
-            /msg (personals), /zl, /inst, /zc, /zi, /zci, /zir, /zcir now supported
-        </comment>
-    </note>
-    <note priority="medium" time="1087692864">
-        look for more memory leaks
-    </note>
-    <note priority="medium" time="1088196335">
-        Add instance name tabbing support
-    </note>
-    <note priority="medium" time="1088532457">
-        Add support for typing notification (using PING's)
-        <comment>
-            done
-        </comment>
-    </note>
-    <note priority="medium" time="1088814377">
-        Make zlocate be more efficient
-    </note>
-    <note priority="medium" time="1088832146">
-        add zstat support
-    </note>
-    <note priority="medium" time="1089048351">
-        remove unused imhtml buttons (background color, link description)
-        <comment>
-            done
-        </comment>
-    </note>
-    <note priority="medium" time="1091165812">
-        Intergalactic zephyr support
-    </note>
-    <note priority="low" time="1087690041">
-        support multiple zephyr accounts
-        <comment>
-            Depends on "use tzc as a backend"
-        </comment>
-    </note>
-    <note priority="low" time="1087690240">
-        support gpg
-        <comment>
-            Maybe this should go with gaim-e (gaim-encryption). possibly more useful as a plugin
-        </comment>
-    </note>
-    <note priority="low" time="1087691895">
-        import chats into blist.xml and autojoin on startup?
-    </note>
-    <note priority="verylow" time="1087690286">
-        support kzwrite
-        <comment>
-            possibly only useful at MIT. kzwrite might be deprecated
-        </comment>
-    </note>
-    <note priority="verylow" time="1087756756">
-        add xzewd like buddy faces
-        <comment>
-            This may only be useful at MIT. Uses out of protocol mechanisms to get buddy pixmap (hesiod to determine user's homedirectory, and AFS to retrieve the file.
-        </comment>
-    </note>
-</todo>
--- a/pidgin.spec.in	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin.spec.in	Fri Apr 20 00:47:30 2007 +0000
@@ -18,7 +18,7 @@
 Name:       @PACKAGE@
 Version:    %pidginver
 Release:    0%{?beta:.beta%{beta}}
-Epoch:      0
+Epoch:      2
 License:    GPL
 Group:      Applications/Internet
 URL:        http://pidgin.im/
@@ -72,7 +72,8 @@
 %package devel
 Summary:    Development headers, documentation, and libraries for Pidgin
 Group:      Applications/Internet
-Requires:   pkgconfig, pidgin = %{epoch}:%{version}, libpurple-devel = %{epoch}:%{version}
+Requires:   pidgin = %{epoch}:%{version}, libpurple-devel = %{epoch}:%{version}
+Requires:   pkgconfig
 Obsoletes:  gaim-devel
 
 %package -n libpurple
@@ -86,6 +87,7 @@
 Summary:    Development headers, documentation, and libraries for libpurple
 Group:      Applications/Internet
 Requires:   libpurple = %{epoch}:%{version}
+Requires:   pkgconfig
 
 %if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
 %package -n libpurple-bonjour
@@ -118,6 +120,7 @@
 Summary:    Headers etc. for finch stuffs
 Group:      Applications/Internet
 Requires:   finch = %{epoch}:%{version}, libpurple-devel = %{epoch}:%{version}
+Requires:   pkgconfig
 %endif
 
 %description
@@ -228,8 +231,6 @@
 rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
 find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';'
-# do we want to ship the nullclient ?
-rm -f $RPM_BUILD_ROOT%{_bindir}/nullclient
 rm -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/gaim.svg
 
 %if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1}
@@ -297,7 +298,10 @@
         %{_sysconfdir}/gconf/schemas/purple.schemas > /dev/null || :
     killall -HUP gconfd-2 || :
 fi
-/sbin/ldconfig
+
+%post -n libpurple -p /sbin/ldconfig
+
+%post -n finch -p /sbin/ldconfig
 
 %preun
 if [ "$1" -eq 0 -a -n "`which gconftool-2 2>/dev/null`" ]; then
@@ -307,7 +311,9 @@
     killall -HUP gconfd-2 || :
 fi
 
-%postun -p /sbin/ldconfig
+%postun -n libpurple -p /sbin/ldconfig
+
+%postun -n finch -p /sbin/ldconfig
 
 %files -f %{name}-%{version}-pidginplugins
 %defattr(-, root, root)
@@ -330,7 +336,6 @@
 
 %{_bindir}/pidgin
 %{_datadir}/pixmaps/pidgin
-%{_datadir}/pixmaps/pidgin.svg
 %dir %{_datadir}/sounds/pidgin
 %{_datadir}/sounds/pidgin/*
 %{_datadir}/applications/*
@@ -427,6 +432,12 @@
 %endif
 
 %changelog
+* Thu Apr 19 2007 Stu Tomlinson <stu@nosnilmot.com>
+- Fix pkgconfig Requires
+- Add ldconfig in pre/post scripts for libpurple & finch
+- Bump Epoch to 2 because Fedora unfortunately forgot to drop the Epoch
+  during the rename :(
+
 * Tue Apr 17 2007 Stu Tomlinson <stu@nosnilmot.com>
 - Add some Obsolete:s to help upgrades
 - Remove explicit Packager: %%{packager} from spec, it was redundant
--- a/pidgin/gtkstatusbox.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin/gtkstatusbox.c	Fri Apr 20 00:47:30 2007 +0000
@@ -540,6 +540,32 @@
 	                               );
 }
 
+static GdkPixbuf *
+pidgin_status_box_get_pixbuf(PidginStatusBox *status_box, PurpleStatusPrimitive prim)
+{
+	GdkPixbuf *pixbuf;
+	GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
+	if (prim == PURPLE_STATUS_UNAVAILABLE)
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_BUSY,
+						 icon_size, "PidginStatusBox");
+	else if (prim == PURPLE_STATUS_AWAY)
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AWAY,
+						 icon_size, "PidginStatusBox");
+	else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_XA,
+						 icon_size, "PidginStatusBox");
+	else if (prim == PURPLE_STATUS_INVISIBLE)
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_INVISIBLE,
+						 icon_size, "PidginStatusBox");
+	else if (prim == PURPLE_STATUS_OFFLINE)
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_OFFLINE,
+						 icon_size, "PidginStatusBox");
+	else
+		pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AVAILABLE,
+						 icon_size, "PidginStatusBox");
+	return pixbuf;
+}
+
 /**
  * This updates the text displayed on the status box so that it shows
  * the current status.  This is the only function in this file that
@@ -636,7 +662,6 @@
 	  {
 	    PurpleStatusType *status_type;
 	    PurpleStatusPrimitive prim;
-	    GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
 	    if (account_status) {
 	    	status_type = purple_status_get_type(purple_account_get_active_status(acct));
 	        prim = purple_status_type_get_primitive(status_type);
@@ -644,21 +669,7 @@
 	    	prim = purple_savedstatus_get_type(saved_status);
 	    }
 
-	    if (prim == PURPLE_STATUS_UNAVAILABLE)
-	      	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_BUSY,
-		   			         icon_size, "PidginStatusBox");
-	    else if (prim == PURPLE_STATUS_AWAY)
-	      	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AWAY,
-		 			         icon_size, "PidginStatusBox");
-	    else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
-	      	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_XA,
-					         icon_size, "PidginStatusBox");
-	    else if (prim == PURPLE_STATUS_OFFLINE)
-	      	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_OFFLINE,
-					         icon_size, "PidginStatusBox");
-	    else
-	      	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AVAILABLE,
-					         icon_size, "PidginStatusBox");
+		pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
 #if 0
 		if (account_status)
 			pixbuf = pidgin_create_prpl_icon_with_status(acct,
@@ -876,7 +887,6 @@
 static void
 add_popular_statuses(PidginStatusBox *statusbox)
 {
-	GtkIconSize icon_size;
 	GList *list, *cur;
 	GdkPixbuf *pixbuf;
 
@@ -885,8 +895,6 @@
 		/* Odd... oh well, nothing we can do about it. */
 		return;
 
-	icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
-
 	pidgin_status_box_add_separator(statusbox);
 
 	for (cur = list; cur != NULL; cur = cur->next)
@@ -899,21 +907,8 @@
 		/* Get an appropriate status icon */
 		prim = purple_savedstatus_get_type(saved);
 
-		if (prim == PURPLE_STATUS_UNAVAILABLE)
-			pixbuf = gtk_widget_render_icon (GTK_WIDGET(statusbox),
-					PIDGIN_STOCK_STATUS_BUSY, icon_size, "PidginStatusBox");
-		else if (prim == PURPLE_STATUS_AWAY)
-			pixbuf = gtk_widget_render_icon (GTK_WIDGET(statusbox),
-					PIDGIN_STOCK_STATUS_AWAY, icon_size, "PidginStatusBox");
-		else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
-			pixbuf = gtk_widget_render_icon (GTK_WIDGET(statusbox),
-					PIDGIN_STOCK_STATUS_XA, icon_size, "PidginStatusBox");
-		else if (prim == PURPLE_STATUS_OFFLINE)
-			pixbuf = gtk_widget_render_icon (GTK_WIDGET(statusbox),
-					PIDGIN_STOCK_STATUS_OFFLINE, icon_size, "PidginStatusBox");
-		else
-			pixbuf = gtk_widget_render_icon (GTK_WIDGET(statusbox),
-					PIDGIN_STOCK_STATUS_AVAILABLE, icon_size, "PidginStatusBox");
+
+		pixbuf = pidgin_status_box_get_pixbuf(statusbox, prim);
 
 		if (purple_savedstatus_is_transient(saved))
 		{
@@ -1019,28 +1014,13 @@
 	{
 		PurpleStatusType *status_type = (PurpleStatusType *)l->data;
 		PurpleStatusPrimitive prim;
-		GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
 
 		if (!purple_status_type_is_user_settable(status_type))
 			continue;
 
             	prim = purple_status_type_get_primitive(status_type);
 
-            	if (prim == PURPLE_STATUS_UNAVAILABLE)
-                	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_BUSY,
-                       		                          icon_size, "PidginStatusBox");
-            	else if (prim == PURPLE_STATUS_AWAY)
-                	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AWAY,
-                       		                          icon_size, "PidginStatusBox");
-            	else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
-                	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_XA,
-                        	                         icon_size, "PidginStatusBox");
-            	else if (prim == PURPLE_STATUS_OFFLINE)
-                	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_OFFLINE,
-                        	                         icon_size, "PidginStatusBox");
-            	else
-                	pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AVAILABLE,
-                        	                         icon_size, "PidginStatusBox");
+                pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
 
 		pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box),
 					PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf,
--- a/pidgin/gtkutils.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin/gtkutils.c	Fri Apr 20 00:47:30 2007 +0000
@@ -1569,6 +1569,9 @@
         else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
                 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_XA,
                                                  icon_size, "GtkWidget");
+        else if (prim == PURPLE_STATUS_INVISIBLE)
+                pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_INVISIBLE,
+                                                 icon_size, "GtkWidget");
         else if (prim == PURPLE_STATUS_OFFLINE)
                 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_OFFLINE,
                                                  icon_size, "GtkWidget");
--- a/pidgin/pidginstock.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin/pidginstock.c	Fri Apr 20 00:47:30 2007 +0000
@@ -46,11 +46,6 @@
 	{ PIDGIN_STOCK_CHAT,            NULL,      GTK_STOCK_JUMP_TO          },
 	{ PIDGIN_STOCK_CLEAR,           NULL,      GTK_STOCK_CLEAR            },
 	{ PIDGIN_STOCK_CLOSE_TABS,      NULL,      GTK_STOCK_CLOSE            },
-#if GTK_CHECK_VERSION(2,6,0)
-	{ PIDGIN_STOCK_CONNECT,         NULL,      GTK_STOCK_CONNECT          },
-#else
-	{ PIDGIN_STOCK_CONNECT,         "icons",   "stock_connect_16.png"     },
-#endif
 	{ PIDGIN_STOCK_DEBUG,           NULL,      GTK_STOCK_PROPERTIES       },
 	{ PIDGIN_STOCK_DOWNLOAD,        NULL,      GTK_STOCK_GO_DOWN          },
 #if GTK_CHECK_VERSION(2,6,0)
--- a/pidgin/pixmaps/Makefile.am	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin/pixmaps/Makefile.am	Fri Apr 20 00:47:30 2007 +0000
@@ -3,7 +3,6 @@
 EXTRA_DIST = \
 		about_menu.png			\
 		edit.png			\
-		pidgin.svg			\
 		logo.png			\
 		pause.png			\
 		arrow-down.xpm		\
@@ -13,17 +12,9 @@
 		Makefile.mingw			\
 		pidgin.ico
 
-
 pidginbuttonpixdir = $(datadir)/pixmaps/pidgin/buttons
 pidginbuttonpix_DATA = about_menu.png edit.png pause.png
 
 pidgindistpixdir = $(datadir)/pixmaps/pidgin
 pidgindistpix_DATA = logo.png arrow-down.xpm arrow-left.xpm arrow-right.xpm arrow-up.xpm
 
-
-distpixmapdir = $(datadir)/pixmaps
-distpixmap_DATA = pidgin.svg
-
-
-
-
--- a/pidgin/pixmaps/pidgin.svg	Fri Apr 20 00:47:25 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="38.400002pt"
-   height="38.400002pt"
-   id="svg1494"
-   sodipodi:version="0.32"
-   inkscape:version="0.43"
-   sodipodi:docbase="/home/dude/code-gaim-head/pixmaps"
-   sodipodi:docname="gaim.svg"
-   inkscape:export-filename="/opt/kde/share/apps/kxdocker/themes/icons/gaim.png"
-   inkscape:export-xdpi="256.16339"
-   inkscape:export-ydpi="256.16339"
-   version="1.0">
-  <defs
-     id="defs1496">
-    <linearGradient
-       id="linearGradient2102">
-      <stop
-         style="stop-color:#f8f0b6;stop-opacity:1;"
-         offset="0"
-         id="stop2104" />
-      <stop
-         id="stop2110"
-         offset="0.5"
-         style="stop-color:#e5bb13;stop-opacity:1;" />
-      <stop
-         style="stop-color:#bf5600;stop-opacity:1;"
-         offset="1"
-         id="stop2106" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2094">
-      <stop
-         style="stop-color:#de8b02;stop-opacity:1;"
-         offset="0"
-         id="stop2096" />
-      <stop
-         style="stop-color:#de8b02;stop-opacity:0;"
-         offset="1"
-         id="stop2098" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="radialGradient2108"
-       cx="-9.9956121"
-       cy="1019.0612"
-       fx="-9.9956121"
-       fy="1019.0612"
-       r="8.5848799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.199386,1.136882,-0.809907,-0.854435,803.3602,1901.146)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient4718"
-       x1="14.143999"
-       y1="1024.514"
-       x2="29.989687"
-       y2="1039.6663"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-0.126267,-0.631345)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="radialGradient1334"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.199386,1.136882,-0.809907,-0.854435,803.3602,1901.146)"
-       cx="-9.9956121"
-       cy="1019.0612"
-       fx="-9.9956121"
-       fy="1019.0612"
-       r="8.5848799" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient1338"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.03334,-0.126267,-1037.821)"
-       x1="14.143999"
-       y1="1024.514"
-       x2="29.989687"
-       y2="1039.6663" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient3107"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.03334,-0.126267,-1037.821)"
-       x1="14.143999"
-       y1="1024.514"
-       x2="29.989687"
-       y2="1039.6663" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="radialGradient3109"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.199386,1.136882,-0.809907,-0.854435,803.3602,1901.146)"
-       cx="-9.9956121"
-       cy="1019.0612"
-       fx="-9.9956121"
-       fy="1019.0612"
-       r="8.5848799" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="5.6568542"
-     inkscape:cx="26.602156"
-     inkscape:cy="30.958631"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     gridempspacing="20"
-     inkscape:grid-bbox="false"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="750"
-     inkscape:window-height="542"
-     inkscape:window-x="382"
-     inkscape:window-y="54" />
-  <metadata
-     id="metadata1499">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g3988">
-      <path
-         id="path4728"
-         d="M 25.009137,4.2393924 C 19.333416,4.2394904 14.702823,8.8679822 14.702823,14.541064 C 14.702823,17.243438 15.81669,19.665705 17.52479,21.500873 C 17.329683,21.473305 17.235059,21.469478 17.034013,21.439555 C 16.523458,21.370778 16.065243,21.688953 15.899092,21.8994 C 15.73294,22.110144 15.671117,22.278306 15.62303,22.420665 C 15.526854,22.705286 15.479403,22.958412 15.438988,23.279138 C 15.358159,23.920589 15.329513,24.778472 15.316294,25.793237 C 15.289857,27.822764 15.393381,30.518957 15.62303,33.335531 C 15.852678,36.152107 16.203578,39.0716 16.727278,41.521631 C 17.250977,43.971958 17.775769,45.916815 19.058468,47.101802 C 19.281272,47.311072 19.581153,47.419878 19.886654,47.408301 C 20.192154,47.396822 20.477799,47.265942 20.684166,47.040384 C 23.06267,44.419541 24.879957,42.814736 26.297427,41.950966 C 27.714896,41.087097 28.627332,40.950036 29.456803,41.123103 C 31.115744,41.469241 32.957983,43.674779 36.051617,46.028661 C 36.476845,46.371069 37.075037,46.379507 37.493274,46.028661 C 37.91151,45.677816 38.032943,45.065701 37.769336,44.587606 C 36.43377,42.035341 35.339621,37.876802 34.886022,34.500601 C 34.659222,32.812501 34.584551,31.284223 34.671307,30.330877 C 34.695959,30.059992 34.724591,29.996711 34.763327,29.840321 C 35.069106,29.92558 35.339187,30.002303 35.836902,30.177628 C 36.574995,30.437425 37.425896,30.750498 38.260113,31.0361 C 39.094329,31.321604 39.886506,31.556777 40.591303,31.679906 C 40.943701,31.741421 41.276753,31.815691 41.695551,31.741225 C 41.90495,31.704041 42.174465,31.611326 42.431716,31.404017 C 42.539588,31.316894 42.565086,31.165214 42.646431,31.0361 L 42.677104,31.066711 C 42.70801,31.028252 42.682559,30.960064 42.707778,30.913461 C 42.78144,30.768453 42.904108,30.659943 42.922493,30.514835 L 42.769125,30.484126 C 42.807857,30.244637 42.923381,30.005344 42.861146,29.840321 C 42.742477,29.525581 42.606772,29.39833 42.493063,29.288446 C 42.265645,29.068579 42.066122,28.963306 41.818245,28.79789 C 41.322492,28.46706 40.657411,28.027816 39.855137,27.418154 C 38.250589,26.19922 36.126138,24.249556 34.18053,20.948999 C 33.97327,20.594523 33.570312,20.457952 33.168303,20.458443 C 34.401302,18.763376 35.284778,16.795659 35.284778,14.541064 C 35.284778,8.8679822 30.68486,4.2394904 25.009137,4.2393924 z "
-         style="fill:#000000;fill-opacity:0.3137255;stroke:none;stroke-width:0.91975927;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <g
-         id="g3086">
-        <path
-           style="fill:url(#linearGradient3107);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.71700001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 30.94516,19.174802 C 27.976637,20.120205 25.443829,21.972053 14.316353,20.259499 C 13.294668,20.117208 14.007054,42.055016 17.330403,45.2283 C 27.180184,34.007881 28.517649,39.260245 34.559917,44.013092 C 31.608553,38.182368 30.17769,26.236441 32.19516,26.555743 C 33.792426,26.808498 39.55591,29.603992 39.69516,28.468145 C 40.10545,27.940935 35.082679,26.431019 30.94516,19.174802 z "
-           id="path2112"
-           sodipodi:nodetypes="ccccscc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient3109);fill-opacity:1;stroke:#000000;stroke-width:0.64874142;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path1364"
-           sodipodi:cx="-6.875"
-           sodipodi:cy="1021.1964"
-           sodipodi:rx="8.125"
-           sodipodi:ry="8.125"
-           d="M 1.25 1021.1964 A 8.125 8.125 0 1 1  -15,1021.1964 A 8.125 8.125 0 1 1  1.25 1021.1964 z"
-           transform="matrix(1.087241,0,0,1.12349,30.06407,-1135.503)" />
-      </g>
-    </g>
-  </g>
-</svg>
--- a/pidgin/win32/gtkwin32dep.c	Fri Apr 20 00:47:25 2007 +0000
+++ b/pidgin/win32/gtkwin32dep.c	Fri Apr 20 00:47:30 2007 +0000
@@ -267,7 +267,7 @@
 	g_return_if_fail(GDK_WINDOW_TYPE(gdkwin) != GDK_WINDOW_CHILD);
 
 	if(GDK_WINDOW_DESTROYED(gdkwin))
-	    return;
+		return;
 
 	if(MyFlashWindowEx) {
 		FLASHWINFO info;
@@ -308,6 +308,10 @@
 	}
 	window = GTK_WINDOW(win->window);
 
+	/* Don't flash if the window is in the foreground */
+	if (GetForegroundWindow() == GDK_WINDOW_HWND(GTK_WIDGET(window)->window))
+		return;
+
 	winpidgin_window_flash(window, TRUE);
 	/* Stop flashing when window receives focus */
 	g_signal_connect(G_OBJECT(window), "focus-in-event",