changeset 30468:efb82b6b9406

merge of '36b528cbf13e606208f74b6ec90ce973f512df75' and '95bdb96951c9aaae802bf85e057270a6a37d2ca8'
author Paul Aurich <paul@darkrain42.org>
date Tue, 31 Aug 2010 02:57:59 +0000
parents 4072761e3454 (current diff) 3d045343e04d (diff)
children 195d034b6cfe
files ChangeLog pidgin/pixmaps/emotes/small/16/cool.png pidgin/pixmaps/emotes/small/16/grin.png pidgin/win32/IdleTracker/Makefile.mingw pidgin/win32/IdleTracker/idletrack.c pidgin/win32/IdleTracker/idletrack.h
diffstat 23 files changed, 229 insertions(+), 312 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Aug 31 02:52:28 2010 +0000
+++ b/ChangeLog	Tue Aug 31 02:57:59 2010 +0000
@@ -3,14 +3,20 @@
 version 2.7.4 (MM/DD/YYYY):
 	General:
 	* Fix search path for Tk when compiling on Debian Squeeze. (#12465)
-	
+
 	libpurple:
-	* Added ability to use TURN relaying via TCP and TLS (including preference
-	  settings for these).
+	* Added ability to use TURN relaying via TCP and TLS (as well as the
+	  preference settings for these).
+	* Fall back to an ordinary request if a UI does not support showing a
+	  request with an icon.  Fixes receiving MSN file transfer requests
+	  including a thumbnail in Finch.
 
 	Pidgin:
 	* Add support for the Gadu-Gadu protocol in the gevolution plugin to
 	  provide Evolution integration with contacts with GG IDs. (#10709)
+	* Remap the "Set User Mood" shortcut to Control-D, which does not
+	  conflict with the previous shortcut for Get Buddy Info on the
+	  selected buddy.
 
 	Finch:
 	* Add support for drop-down account options (like the SILC cipher
--- a/libpurple/request.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/libpurple/request.c	Tue Aug 31 02:57:59 2010 +0000
@@ -1399,6 +1399,11 @@
 		handles = g_list_append(handles, info);
 
 		return info->ui_handle;
+	} else {
+		/* Fall back on the non-icon request if the UI doesn't support icon
+		 requests */
+		return purple_request_action_varg(handle, title, primary, secondary,
+			default_action, account, who, conv, user_data, action_count, actions);
 	}
 
 	return NULL;
--- a/libpurple/win32/global.mak	Tue Aug 31 02:52:28 2010 +0000
+++ b/libpurple/win32/global.mak	Tue Aug 31 02:57:59 2010 +0000
@@ -37,7 +37,6 @@
 PURPLE_PLUGINS_TOP := $(PURPLE_TOP)/plugins
 PURPLE_PERL_TOP := $(PURPLE_PLUGINS_TOP)/perl
 PIDGIN_TOP := $(PIDGIN_TREE_TOP)/pidgin
-PIDGIN_IDLETRACK_TOP := $(PIDGIN_TOP)/win32/IdleTracker
 PIDGIN_PIXMAPS_TOP := $(PIDGIN_TOP)/pixmaps
 PIDGIN_PLUGINS_TOP := $(PIDGIN_TOP)/plugins
 PURPLE_PO_TOP := $(PIDGIN_TREE_TOP)/po
@@ -48,7 +47,6 @@
 PURPLE_CONFIG_H := $(PIDGIN_TREE_TOP)/config.h
 PIDGIN_REVISION_H := $(PIDGIN_TREE_TOP)/package_revision.h
 PIDGIN_REVISION_RAW_TXT := $(PIDGIN_TREE_TOP)/package_revision_raw.txt
-PIDGIN_IDLETRACK_DLL := $(PIDGIN_IDLETRACK_TOP)/idletrack.dll
 PURPLE_PURPLE_H := $(PURPLE_TOP)/purple.h
 PURPLE_VERSION_H := $(PURPLE_TOP)/version.h
 PURPLE_DLL := $(PURPLE_TOP)/libpurple.dll
--- a/libpurple/win32/targets.mak	Tue Aug 31 02:52:28 2010 +0000
+++ b/libpurple/win32/targets.mak	Tue Aug 31 02:57:59 2010 +0000
@@ -36,9 +36,6 @@
 $(PIDGIN_DLL) $(PIDGIN_DLL).a:
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.dll
 
-$(PIDGIN_IDLETRACK_DLL) $(PIDGIN_IDLETRACK_DLL).a:
-	$(MAKE) -C $(PIDGIN_IDLETRACK_TOP) -f $(MINGW_MAKEFILE) idletrack.dll
-
 $(PIDGIN_EXE):
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.exe
 
--- a/libpurple/win32/win32dep.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/libpurple/win32/win32dep.c	Tue Aug 31 02:57:59 2010 +0000
@@ -35,7 +35,7 @@
 static char *app_data_dir = NULL, *install_dir = NULL,
 	*lib_dir = NULL, *locale_dir = NULL;
 
-static HINSTANCE libpurpledll_hInstance = 0;
+static HINSTANCE libpurpledll_hInstance = NULL;
 
 /*
  *  PUBLIC CODE
@@ -77,16 +77,23 @@
 	BOOL did_load = FALSE;
 	FARPROC proc = 0;
 
-	if(!(hmod = GetModuleHandle(dllname))) {
+	wchar_t *wc_dllname = g_utf8_to_utf16(dllname, -1, NULL, NULL, NULL);
+
+	if(!(hmod = GetModuleHandleW(wc_dllname))) {
 		purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname);
-		if(!(hmod = LoadLibrary(dllname))) {
-			purple_debug_error("wpurple", "Could not load: %s\n", dllname);
+		if(!(hmod = LoadLibraryW(wc_dllname))) {
+			purple_debug_error("wpurple", "Could not load: %s (%s)\n", dllname,
+				g_win32_error_message(GetLastError()));
+			g_free(wc_dllname);
 			return NULL;
 		}
 		else
 			did_load = TRUE;
 	}
 
+	g_free(wc_dllname);
+	wc_dllname = NULL;
+
 	if((proc = GetProcAddress(hmod, procedure))) {
 		purple_debug_info("wpurple", "This version of %s contains %s\n",
 			dllname, procedure);
@@ -124,7 +131,7 @@
 	if (!initialized) {
 		char *tmp = NULL;
 		wchar_t winstall_dir[MAXPATHLEN];
-		if (GetModuleFileNameW(NULL, winstall_dir,
+		if (GetModuleFileNameW(libpurpledll_hInstance, winstall_dir,
 				MAXPATHLEN) > 0) {
 			tmp = g_utf16_to_utf8(winstall_dir, -1,
 				NULL, NULL, NULL);
--- a/pidgin/Makefile.mingw	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/Makefile.mingw	Tue Aug 31 02:57:59 2010 +0000
@@ -33,7 +33,6 @@
 
 INCLUDE_PATHS +=	\
 			$(PURPLE_INCLUDE_PATHS) \
-			-I$(PIDGIN_IDLETRACK_TOP) \
 			-I$(PIDGIN_TOP) \
 			-I$(PIDGIN_TOP)/win32 \
 			-I$(GTK_TOP)/include/gtk-2.0 \
@@ -45,8 +44,7 @@
 
 LIB_PATHS +=		-L$(GTK_TOP)/lib \
 			-L$(PURPLE_TOP) \
-			-L$(PIDGIN_TOP) \
-			-L$(PIDGIN_IDLETRACK_TOP)
+			-L$(PIDGIN_TOP)
 
 ##
 ##  SOURCES, OBJECTS
@@ -121,7 +119,6 @@
 		-lgthread-2.0 \
 		-lpurple \
 		-lz \
-		-lidletrack \
 		-lgtk-win32-2.0 \
 		-latk-1.0 \
 		-lpango-1.0 \
@@ -151,7 +148,6 @@
 install: install_shallow all
 	$(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
 	$(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) install
-	$(MAKE) -C $(PIDGIN_IDLETRACK_TOP) -f $(MINGW_MAKEFILE) install
 
 win32/pidgin_dll_rc.rc: win32/pidgin_dll_rc.rc.in $(PIDGIN_TREE_TOP)/VERSION
 	sed -e 's/@PIDGIN_VERSION@/$(PIDGIN_VERSION)/g' \
@@ -159,7 +155,7 @@
 
 $(EXE_OBJECTS) $(PIDGIN_OBJECTS): $(PIDGIN_CONFIG_H)
 
-$(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a: $(PURPLE_DLL).a $(PIDGIN_IDLETRACK_DLL).a $(PIDGIN_OBJECTS)
+$(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a: $(PURPLE_DLL).a $(PIDGIN_OBJECTS)
 	$(CC) -shared $(PIDGIN_OBJECTS) $(LIB_PATHS) $(PIDGIN_LIBS) $(DLL_LD_FLAGS) -Wl,--output-def,$(PIDGIN_TARGET).def,--out-implib,$(PIDGIN_TARGET).dll.a -o $(PIDGIN_TARGET).dll
 
 $(EXE_TARGET).exe: $(PIDGIN_CONFIG_H) $(PIDGIN_DLL).a $(EXE_OBJECTS) $(PIDGIN_TARGET).dll
@@ -169,7 +165,6 @@
 ## CLEAN RULES
 ##
 clean:
-	$(MAKE) -C $(PIDGIN_IDLETRACK_TOP) -f $(MINGW_MAKEFILE) clean
 	$(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean
 	$(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) clean
 	rm -f $(PIDGIN_OBJECTS) $(PIDGIN_RC_SRC) $(EXE_OBJECTS) $(EXE_RC_SRC)
--- a/pidgin/gtkblist.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/gtkblist.c	Tue Aug 31 02:57:59 2010 +0000
@@ -3653,6 +3653,9 @@
  ***************************************************/
 static GtkItemFactoryEntry blist_menu[] =
 {
+/* NOTE: Do not set any accelerator to Control+O. It is mapped by 
+   gtk_blist_key_press_cb to "Get User Info" on the selected buddy. */
+
 	/* Buddies menu */
 	{ N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Buddies/New Instant _Message..."), "<CTL>M", pidgin_dialogs_im, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW },
@@ -3686,7 +3689,7 @@
 	{ N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 2, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
 	{ N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
 	{ N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
-	{ N_("/Tools/Set _Mood"), "<CTL>O", set_mood_show, 0, "<Item>", NULL },
+	{ N_("/Tools/Set _Mood"), "<CTL>D", set_mood_show, 0, "<Item>", NULL },
 	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
 	{ N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_TRANSFER },
 	{ N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
--- a/pidgin/gtkidle.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/gtkidle.c	Tue Aug 31 02:57:59 2010 +0000
@@ -29,7 +29,7 @@
 #else
 # ifdef USE_SCREENSAVER
 #  ifdef _WIN32
-#   include "idletrack.h"
+#   include "gtkwin32dep.h"
 #  else
     /* We're on X11 and not MacOS X with IOKit. */
 #   include <X11/Xlib.h>
--- a/pidgin/pixmaps/emotes/default/24/default.theme.in	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/pixmaps/emotes/default/24/default.theme.in	Tue Aug 31 02:57:59 2010 +0000
@@ -419,6 +419,98 @@
 female-fighter.png  o-+     O-+
 yin-yang.png        (%)
 
+# Following Yahoo! Messenger 8.1
+[Yahoo JAPAN]
+happy.png           :)      :-)
+question.png        :-/     :-\\
+shocked.png         :-O     :O      :-o     :o 
+devil.png           >:)
+angel.png           O:-)    o:-)    0:-)
+sick.png            :-&
+sleepy.png          (:|
+hypnotized.png      @-)
+on-the-phone.png    :)]
+sad.png             :(      :-(
+amorous.png         :x      :-x     :X      :-X
+angry.png           X-(     x-(     X(      x(
+crying.png          :((
+glasses-nerdy.png   :-B     :-b
+quiet.png           :-$
+drool.png           =P~     =p~
+lying.png           :^O     :^o
+call-me.png         :-c
+wink.png            ;)      ;-)
+embarrassed.png     :">
+mean.png            :->     :>
+laugh.png           :))     :-))
+bye.png             =;
+arrogant.png        [-(
+thinking.png        :-?
+waiting.png         :-w     :-W
+at-wits-end.png     ~x(     ~X(
+excited.png         :D      :-D     :d      :-d
+tongue.png          :-P     :P      :-p     :p
+glasses-cool.png    B-)     b-)
+neutral.png         :|      :-|
+sleeping.png        I-)     i-)     |-)
+clown.png           :o)     :O)
+doh.png             #-o     #-O
+weep.png            :-<
+go-away.png         :-h
+lashes.png          ;;)
+kiss.png            :-*     :*
+confused.png        :-S     :-s
+sarcastic.png       /:)
+eyeroll.png         8-|
+silly.png           8-}
+clap.png            =D>     =d>
+mad-tongue.png      >:P     >:p
+time-out.png        :-t     :-T
+hug-left.png        >:D<    >:d<
+love-over.png       =((
+hot.png             #:-S    #:-s
+rotfl.png           =)) :-j :-J 
+loser.png           L-)     l-)
+party.png           <:-P    <:-p
+nervous.png         :-SS       :-Ss    :-sS    :-ss
+cowboy.png          <):)
+desire.png          8->
+! skywalker.png     C:-)    c:-)    C:)     c:)
+! monkey.png        :-(|)  :(|)
+
+# Hidden Yahoo emotes
+alien.png           =:)     >-)
+beat-up.png         b-(     B-(
+chicken.png         ~:>
+coffee.png          ~o)     ~O)
+cow.png             3:-O    3:-o
+dance.png           \\:D/   \\:d/
+rose.png            @};-
+dont-know.png       :-L     :-l
+skeleton.png        8-X     8-x
+lamp.png            *-:)
+monkey.png          :(|)
+coins.png           $-)
+peace.png           :)>-
+pig.png             :@)
+pray.png            [-o<    [-O<
+pumpkin.png         (~~)
+shame.png           [-X     [-x
+flag.png            **==
+clover.png          %%-
+musical-note.png    :-"
+giggle.png          ;))
+worship.png         ^:)^
+star.png            (*)
+waving.png          >:/
+talktohand.png      :-@
+
+# Only available after activating the Yahoo! Fighter IMVironment
+male-fighter1.png   o->     O->
+male-fighter2.png   o=>     O=>
+female-fighter.png  o-+     O-+
+yin-yang.png        (%)
+
 
 # Following MySpaceIM Beta 1.0.697.0
 [MySpaceIM]
@@ -428,7 +520,7 @@
 glasses-nerdy.png   B)
 bulgy-eyes.png	    %)
 freaked-out.png	    :E
-smile.png	    :)      :-)
+happy.png	    :)      :-)
 amorous.png	    :X
 laugh.png	    :))
 mohawk.png	    -:
--- a/pidgin/pixmaps/emotes/small/16/Makefile.am	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/pixmaps/emotes/small/16/Makefile.am	Tue Aug 31 02:57:59 2010 +0000
@@ -34,7 +34,6 @@
     confused.png \
     console.png \
     cold.png \
-    cool.png \
     cross.png \
     crying.png \
     devil.png \
@@ -44,7 +43,6 @@
     excruciating.png \
     eyeroll.png \
     girl.png \
-    grin.png \
     happy.png \
     hug-left.png \
     hug-right.png \
@@ -77,6 +75,7 @@
     star.png \
     stressed.png \
     thinking.png \
+    thunder.png \
     tongue.png \
     tv.png \
     uhm-yeah.png \
Binary file pidgin/pixmaps/emotes/small/16/cool.png has changed
Binary file pidgin/pixmaps/emotes/small/16/glasses-cool.png has changed
Binary file pidgin/pixmaps/emotes/small/16/grin.png has changed
--- a/pidgin/pixmaps/emotes/small/16/small.theme.in	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/pixmaps/emotes/small/16/small.theme.in	Tue Aug 31 02:57:59 2010 +0000
@@ -1,5 +1,5 @@
 _Name=Small
-_Description=Smaller versions of the default smilies
+_Description=Smaller versions of the default smileys
 Icon=wink.png
 Author=Hylke Bons
 
@@ -13,10 +13,12 @@
 tongue.png          :P      :p      :-P     :-p
 shocked.png         =-O     =-o
 kiss.png            :-*
+glasses-cool.png    8-)
 embarrassed.png     :-[
 crying.png          :'(     :'-(
 thinking.png        :-/     :-\\
 angel.png           O:-)    o:-)
+shut-mouth.png      :-X
 
 
 [XMPP]
@@ -29,18 +31,23 @@
 tongue.png          :P      :p      :-P     :-p
 shocked.png         =-O     =-o     :-O     :-o
 kiss.png            :kiss:  :-*
+glasses-cool.png    8-)     B-)
 embarrassed.png     :-[
 crying.png          :'-(    :'(
 thinking.png        :-/     :-\\
 angel.png           O:-)    o:-)
+shut-mouth.png      :-X
 
 # Following XEP-0038 + GTalk
 angry.png           >:-(    >:(     X-(    x-(
+rose.png            @->--   :rose:
 phone.png           :telephone:
+lamp.png            :jabber:
 in_love.png         :heart: :love:  <3
 musical-note.png    :music:
 beer.png            :beer:
 coffee.png          :coffee:
+star.png            :star:
 
 # Others
 neutral.png         :|      :-|
@@ -61,6 +68,8 @@
 angel.png           O:-)
 thinking.png        :-\\    :-/
 crying.png          :'(
+shut-mouth.png      :-X
+glasses-cool.png    8-)
 
 
 # Following Windows Live Messenger 8.1
@@ -70,6 +79,7 @@
 wink.png            ;)      ;-)
 shocked.png         :-O     :-o     :O      :o
 tongue.png          :-P     :P      :-p     :p
+glasses-cool.png    (H)     (h)
 angry.png           :@      :-@
 embarrassed.png     :$      :-$
 confused.png        :S      :s      :-S     :-s
@@ -79,21 +89,28 @@
 devil.png           (6)
 angel.png           (A)     (a)
 in_love.png         (L)     (l)
+star.png            (*)
 musical-note.png    (8)
+rose.png            (F)     (f)
 kiss.png            (K)     (k)
 camera.png          (P)     (p)
+lamp.png            (I)     (i)
 coffee.png          (C)     (c)
 phone.png           (T)     (t)
 hug-left.png        ({)
 hug-right.png       (})
 beer.png            (B)     (b)
+boy.png             (Z)     (z)
+girl.png            (X)     (x)
 sarcastic.png       ^o)
 sick.png            +o(
 plate.png           (pl)
 mobile.png          (mp)
 dont-know.png       :^)
 thinking.png        *-)
+thunder.png         (li)
 party.png           <:o)
+eyeroll.png         8-)
 sleepy.png          |-) 
 
 # Hidden MSN emotes
@@ -106,28 +123,37 @@
 shocked.png         /:O      /jy       /surprised
 party.png           /8-)     /dy       /revel
 crying.png          /:<      /ll       /cry
+shut-mouth.png      /:X      /bz       /shut_mouth
 sleeping.png        /:Z      /shui     /sleep
 embarrassed.png     /:-|     /gg       /embarassed
+pissed-off.png      /:@      /fn       /pissed_off
 excited.png         /:D      /cy       /toothy_smile
 happy.png           /:)      /wx       /small_smile
 sad.png             /:(      /ng       /sad
+glasses-cool.png    /:+      /kuk      /cool
 sick.png            /:T      /tu       /vomit
 sleepy.png          /|-)     /kun      /sleepy
 hot.png             /:L      /sweat
 question.png        /?       /yiw      /question
+excruciating.png    /:8      /zhem     /excrutiating
 afraid.png          /shake   /fad      /shake
 amorous.png         /love    /aiq      /love
 search.png          /find    /zhao     /search
 hug-left.png        /hug     /yb       /hug
+lamp.png            /!       /dp       /lightbulb
+thunder.png         /li      /shd      /lightning
 musical-note.png    /music   /yy       /music
 coffee.png          /coffee  /kf       /coffee
 hungry.png          /eat     /fan      /eat
+rose.png            /rose    /mg       /rose
 kiss.png            /kiss    /wen      /kiss
 in_love.png         /heart   /xin      /heart
 meeting.png         /meeting /hy       /meeting
 phone.png           /phone   /dh       /phone
 tv.png              /TV      /ds       /TV
 angry.png           /<O>     /oh       /angry
+girl.png            /<00>    /nv       /woman
+boy.png             /<11>    /nan      /man
 
 
 # Following ICQ 6.0
@@ -146,9 +172,12 @@
 embarrassed.png     :-[
 devil.png           ]:->
 angel.png           O:-)
+rose.png            @}->--
+shut-mouth.png      :-X     :X      :-x     :x
 thinking.png        :-\\    :-/
 beer.png            *DRINK*
 excited.png         :-D     :D
+glasses-cool.png    8-)
 amorous.png         *IN\ LOVE*
 
 
@@ -165,17 +194,21 @@
 amorous.png         :x      :-x     :X      :-X
 angry.png           X-(     x-(     X(      x(
 crying.png          :((
+drool.png           =P~     =p~
+lying.png           :^O     :^o
 wink.png            ;)      ;-)
 embarrassed.png     :">
 mean.png            :->     :>
 thinking.png        :-?
 excited.png         :D      :-D     :d      :-d
 tongue.png          :-P     :P      :-p     :p
+glasses-cool.png    B-)     b-)
 neutral.png         :|      :-|
 sleeping.png        I-)     i-)     |-)
 kiss.png            :-*     :*
 confused.png        :-S     :-s
 sarcastic.png       /:)
+eyeroll.png         8-|
 hug-left.png        >:D<    >:d<
 hot.png             #:-S    #:-s
 party.png           <:-P    <:-p
@@ -183,38 +216,48 @@
 
 # Hidden Yahoo emotes
 coffee.png          ~o)     ~O)
+rose.png            @};-
 dont-know.png       :-L     :-l
+lamp.png            *-:)
 shame.png           [-X     [-x
 musical-note.png    :-"
+star.png            (*)
 
 # Following Yahoo! Messenger 8.1
 [Yahoo JAPAN]
-smile.png           :)      :-)
+happy.png           :)      :-)
 question.png        :-/     :-\\
-shock.png           :-O     :O      :-o     :o 
+shocked.png         :-O     :O      :-o     :o 
 devil.png           >:)
 angel.png           O:-)    o:-)    0:-)
 sick.png            :-&
-yawn.png            (:|
+sleepy.png          (:|
 sad.png             :(      :-(
+amorous.png         :x      :-x     :X      :-X
 angry.png           X-(     x-(     X(      x(
 crying.png          :((
 wink.png            ;)      ;-)
 thinking.png        :-?
-smile-big.png       :D      :-D     :d      :-d
+excited.png         :D      :-D     :d      :-d
 tongue.png          :-P     :P      :-p     :p
+glasses-cool.png    B-)     b-)
 neutral.png         :|      :-|
-sleepy.png          I-)     i-)     |-)
+sleeping.png        I-)     i-)     |-)
 kiss.png            :-*     :*
 confused.png        :-S     :-s
+sarcastic.png       /:)
+eyeroll.png         8-|
 hug-left.png        >:D<    >:d<
 party.png           <:-P    <:-p
 
 # Hidden Yahoo emotes
 coffee.png          ~o)     ~O)
+rose.png            @};-
 dont-know.png       :-L     :-l
+lamp.png            *-:)
 shame.png           [-X     [-x
 musical-note.png    :-"
+star.png            (*)
 
 
 # Following MySpaceIM Beta 1.0.697.0
@@ -222,10 +265,13 @@
 excited.png  	    :D      :-D
 devil.png	    }:)
 confused.png	    :Z
+happy.png	    :)      :-)
 amorous.png	    :X
+pirate.png	    P)
 shocked.png	    :O
 neutral.png	    :|
 tongue.png	    :P      :p
+pissed-off.png	    B|
 wink.png	    ;-)     ;)
 sad.png		    :[
 kiss.png            :x
@@ -240,7 +286,7 @@
 shocked.png         :-O     :O
 tongue.png          :-P     :P
 embarrassed.png     :-$     :$
-cool.png            8-)
+glasses-cool.png    8-)
 in_love.png         (H)
 rose.png            (F)
 ### Added in v3.0
@@ -252,7 +298,7 @@
 lamp.png            (i)
 pissed-off.png      :e      :-e
 shut-mouth.png      :-x     :x
-grumpy.png          (z)
+thunder.png         (z)
 coffee.png          (U)
 mrgreen.png         (G)
 ### Added in v5.0
@@ -265,7 +311,7 @@
 drool.png           :-~     :~
 sleeping.png        :-z     :z
 lying.png           :L)
-nerdy.png           8-|     8|
+glasses-nerdy.png   8-|     8|
 pirate.png          P-)
 ### Added in v5.9.7
 bored.png           :-[     :[
Binary file pidgin/pixmaps/emotes/small/16/thunder.png has changed
--- a/pidgin/win32/IdleTracker/Makefile.mingw	Tue Aug 31 02:52:28 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for idletrack
-#
-
-PIDGIN_TREE_TOP := ../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-TARGET = idletrack
-
-##
-##  SOURCES, OBJECTS
-##
-
-C_SRC =	idletrack.c
-
-OBJECTS = $(C_SRC:%.c=%.o)
-
-include $(PIDGIN_COMMON_RULES)
-
-##
-## TARGET DEFINITIONS
-##
-
-.PHONY: all install clean
-
-all: $(TARGET).dll
-
-install: $(PIDGIN_INSTALL_DIR)
-	cp $(TARGET).dll $(PIDGIN_INSTALL_DIR)
-
-##
-## BUILD DLL
-##
-
-$(TARGET).dll $(TARGET).dll.a: $(OBJECTS)
-	$(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--out-implib,$(TARGET).dll.a -o $(TARGET).dll
-
-##
-## CLEAN RULES
-##
-
-clean:
-	rm -f $(OBJECTS) $(TARGET).dll $(TARGET).dll.a
-
-include $(PIDGIN_COMMON_TARGETS)
--- a/pidgin/win32/IdleTracker/idletrack.c	Tue Aug 31 02:52:28 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
- *  idletrack.c
- *
- *  Authors: mrgentry @ http://www.experts-exchange.com
- *           Herman Bloggs <hermanator12002@yahoo.com>
- *  Date: February, 2003
- *  Description: Track user inactivity.
- *
- *  Andrew Whewell <awhewell@users.sourceforge.net> - 25th June 2004. Added
- *  support for GetLastInputInfo under Windows 2000 and above. This avoids having
- *  IDLETRACK.DLL hook itself into every process on the machine, which makes
- *  upgrades easier. The hook mechanism is also used by key loggers, so not
- *  using hooks doesn't put the willys up programs that keep an eye out for
- *  loggers.
- *
- *  Windows 9x doesn't have GetLastInputInfo - when Purple runs on these machines
- *  the code silently falls back onto the old hooking scheme.
- */
-#define _WIN32_WINNT 0x0500
-#include "idletrack.h"
-
-#define EXPORT __declspec(dllexport)
-
-static HANDLE hMapObject = NULL;
-static DWORD *lastTime = NULL;
-static HHOOK keyHook = NULL;
-static HHOOK mouseHook = NULL;
-static HINSTANCE g_hInstance = NULL;
-static POINT g_point;
-
-/* GetLastInputInfo address and module - if g_GetLastInputInfo == NULL then
- * we fall back on the old "hook the world" method. GetLastInputInfo was brought
- * in with Windows 2000 so Windows 9x will still hook everything.
- */
-typedef BOOL (WINAPI *GETLASTINPUTINFO)(LASTINPUTINFO *);
-static HMODULE g_user32 = NULL;
-static GETLASTINPUTINFO g_GetLastInputInfo = NULL;
-
-static DWORD* setup_shared_mem() {
-	BOOL fInit;
-
-	/* Set up the shared memory. */
-	hMapObject = CreateFileMapping((HANDLE) 0xFFFFFFFF, /* use paging file        */
-								   NULL,                /* no security attributes */
-								   PAGE_READWRITE,      /* read/write access      */
-								   0,                   /* size: high 32-bits     */
-								   sizeof(DWORD),       /* size: low 32-bits      */
-								   "timermem");         /* name of map object     */
-
-	if(hMapObject == NULL)
-		return NULL;
-
-	/* The first process to attach initializes memory. */
-	fInit = (GetLastError() != ERROR_ALREADY_EXISTS);
-
-	/* Get a pointer to the file-mapped shared memory. */
-	lastTime = (DWORD*) MapViewOfFile(hMapObject,     /* object to map view of    */
-									  FILE_MAP_WRITE, /* read/write access        */
-									  0,              /* high offset:  map from   */
-									  0,              /* low offset:   beginning  */
-									  0);             /* default: map entire file */
-
-	if(lastTime == NULL)
-		return NULL;
-
-	*lastTime = GetTickCount();
-
-	return lastTime;
-}
-
-
-static LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) {
-	if(!(code < 0)) {
-		if(lastTime == NULL)
-			lastTime = setup_shared_mem();
-
-		if(lastTime)
-			*lastTime = GetTickCount();
-	}
-	return CallNextHookEx(keyHook, code, wParam, lParam);
-}
-
-
-static LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam) {
-	/* We need to verify that the Mouse pointer has actually moved. */
-	if(!(code < 0) &&
-			!((g_point.x == ((MOUSEHOOKSTRUCT*) lParam)->pt.x) &&
-			(g_point.y == ((MOUSEHOOKSTRUCT*) lParam)->pt.y))) {
-		g_point.x = ((MOUSEHOOKSTRUCT*) lParam)->pt.x;
-		g_point.y = ((MOUSEHOOKSTRUCT*) lParam)->pt.y;
-
-		if(lastTime == NULL)
-			lastTime = setup_shared_mem();
-
-		if(lastTime)
-			*lastTime = GetTickCount();
-	}
-	return CallNextHookEx(mouseHook, code, wParam, lParam);
-}
-
-
-EXPORT DWORD winpidgin_get_lastactive() {
-	DWORD result = 0;
-
-	/* If we have GetLastInputInfo then use it, otherwise use the hooks*/
-	if(g_GetLastInputInfo != NULL) {
-		LASTINPUTINFO lii;
-		memset(&lii, 0, sizeof(lii));
-		lii.cbSize = sizeof(lii);
-		if(g_GetLastInputInfo(&lii)) {
-			result = lii.dwTime;
-		}
-	} else {
-		if(lastTime == NULL)
-			lastTime = setup_shared_mem();
-
-		if(lastTime)
-			result = *lastTime;
-	}
-
-	return result;
-}
-
-
-EXPORT BOOL winpidgin_set_idlehooks() {
-	/* Is GetLastInputInfo available?*/
-	g_user32 = LoadLibrary("user32.dll");
-	if(g_user32) {
-		g_GetLastInputInfo = (GETLASTINPUTINFO) GetProcAddress(g_user32, "GetLastInputInfo");
-	}
-
-	/* If we couldn't find GetLastInputInfo then fall back onto the hooking scheme*/
-	if(g_GetLastInputInfo == NULL) {
-		/* Set up the shared memory.*/
-		lastTime = setup_shared_mem();
-		if(lastTime == NULL)
-			return FALSE;
-		*lastTime = GetTickCount();
-
-	/* Set up the keyboard hook.*/
-		keyHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstance, 0);
-		if(keyHook == NULL) {
-			UnmapViewOfFile(lastTime);
-			CloseHandle(hMapObject);
-			return FALSE;
-		}
-
-		/* Set up the mouse hook.*/
-		mouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInstance, 0);
-		if(mouseHook == NULL) {
-			UnhookWindowsHookEx(keyHook);
-			UnmapViewOfFile(lastTime);
-			CloseHandle(hMapObject);
-			return FALSE;
-		}
-	}
-
-	return TRUE;
-}
-
-
-EXPORT void winpidgin_remove_idlehooks() {
-	if(g_user32 != NULL)
-		FreeLibrary(g_user32);
-	if(keyHook)
-		UnhookWindowsHookEx(keyHook);
-	if(mouseHook)
-		UnhookWindowsHookEx(mouseHook);
-	if(lastTime)
-		UnmapViewOfFile(lastTime);
-	if(hMapObject)
-		CloseHandle(hMapObject);
-}
-
-/* suppress gcc "no previous prototype" warning */
-BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved);
-BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) {
-	switch(dwReason) {
-		case DLL_PROCESS_ATTACH:
-			g_hInstance = hInstance;
-			g_point.x = 0;
-			g_point.y = 0;
-			break;
-		case DLL_PROCESS_DETACH:
-			break;
-	}
-	return TRUE;
-}
--- a/pidgin/win32/IdleTracker/idletrack.h	Tue Aug 31 02:52:28 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-/*
- * idletrack.h
- */
-#include <windows.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-DWORD winpidgin_get_lastactive(void);
-BOOL winpidgin_set_idlehooks(void);
-void winpidgin_remove_idlehooks(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
--- a/pidgin/win32/gtkwin32dep.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/win32/gtkwin32dep.c	Tue Aug 31 02:57:59 2010 +0000
@@ -43,7 +43,6 @@
 #include "network.h"
 
 #include "resource.h"
-#include "idletrack.h"
 #include "zlib.h"
 #include "untar.h"
 
@@ -377,15 +376,19 @@
 
 void winpidgin_init(HINSTANCE hint) {
 	FARPROC proc;
+	gchar *exchndl_dll_path;
 
 	purple_debug_info("winpidgin", "winpidgin_init start\n");
 
 	exe_hInstance = hint;
 
-	proc = wpurple_find_and_loadproc("exchndl.dll", "SetLogFile");
+	exchndl_dll_path = g_build_filename(wpurple_install_dir(), "exchndl.dll", NULL);
+	proc = wpurple_find_and_loadproc(exchndl_dll_path, "SetLogFile");
+	g_free(exchndl_dll_path);
+	exchndl_dll_path = NULL;
 	if (proc) {
 		gchar *debug_dir, *locale_debug_dir;
-		
+
 		debug_dir = g_build_filename(purple_user_dir(), "pidgin.RPT", NULL);
 		locale_debug_dir = g_locale_from_utf8(debug_dir, -1, NULL, NULL, NULL);
 
@@ -397,10 +400,6 @@
 		g_free(locale_debug_dir);
 	}
 
-	/* IdleTracker Initialization */
-	if(!winpidgin_set_idlehooks())
-		purple_debug_error("winpidgin", "Failed to initialize idle tracker\n");
-
 	winpidgin_spell_init();
 	purple_debug_info("winpidgin", "GTK+ :%u.%u.%u\n",
 		gtk_major_version, gtk_minor_version, gtk_micro_version);
@@ -429,9 +428,6 @@
 	if(messagewin_hwnd)
 		DestroyWindow(messagewin_hwnd);
 
-	/* Idle tracker cleanup */
-	winpidgin_remove_idlehooks();
-
 }
 
 /* DLL initializer */
@@ -535,5 +531,18 @@
 				   (winR.right - winR.left),
 				   (winR.bottom - winR.top), TRUE);
 	}
+
 }
 
+DWORD winpidgin_get_lastactive() {
+	DWORD result = 0;
+
+	LASTINPUTINFO lii;
+	memset(&lii, 0, sizeof(lii));
+	lii.cbSize = sizeof(lii);
+	if (GetLastInputInfo(&lii))
+		result = lii.dwTime;
+
+	return result;
+}
+
--- a/pidgin/win32/gtkwin32dep.h	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/win32/gtkwin32dep.h	Tue Aug 31 02:57:59 2010 +0000
@@ -39,6 +39,7 @@
 void winpidgin_ensure_onscreen(GtkWidget *win);
 void winpidgin_conv_blink(PurpleConversation *conv, PurpleMessageFlags flags);
 void winpidgin_window_flash(GtkWindow *window, gboolean flash);
+DWORD winpidgin_get_lastactive(void);
 
 /* init / cleanup */
 void winpidgin_init(HINSTANCE);
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Tue Aug 31 02:57:59 2010 +0000
@@ -621,7 +621,6 @@
     RMDir "$INSTDIR\spellcheck\lib"
     RMDir "$INSTDIR\spellcheck"
     Delete "$INSTDIR\freebl3.dll"
-    Delete "$INSTDIR\idletrack.dll"
     Delete "$INSTDIR\libjabber.dll"
     Delete "$INSTDIR\libnspr4.dll"
     Delete "$INSTDIR\libmeanwhile-1.dll"
--- a/pidgin/win32/winpidgin.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/win32/winpidgin.c	Tue Aug 31 02:57:59 2010 +0000
@@ -605,9 +605,9 @@
 		char *lpszCmdLine, int nCmdShow) {
 	wchar_t errbuf[512];
 	wchar_t pidgin_dir[MAX_PATH];
+	wchar_t *pidgin_dir_start = NULL;
 	wchar_t exe_name[MAX_PATH];
 	HMODULE hmod;
-	wchar_t *tmp;
 	wchar_t *wtmp;
 	int pidgin_argc;
 	char **pidgin_argv; /* This is in utf-8 */
@@ -672,14 +672,14 @@
 	if (GetModuleFileNameW(NULL, pidgin_dir, MAX_PATH) != 0) {
 
 		/* primitive dirname() */
-		tmp = wcsrchr(pidgin_dir, L'\\');
+		pidgin_dir_start = wcsrchr(pidgin_dir, L'\\');
 
-		if (tmp) {
+		if (pidgin_dir_start) {
 			HMODULE hmod;
-			tmp[0] = L'\0';
+			pidgin_dir_start[0] = L'\0';
 
 			/* tmp++ will now point to the executable file name */
-			wcscpy(exe_name, tmp + 1);
+			wcscpy(exe_name, pidgin_dir_start + 1);
 
 			wcscat(pidgin_dir, L"\\exchndl.dll");
 			if ((hmod = LoadLibraryW(pidgin_dir))) {
@@ -702,7 +702,8 @@
 				proc = GetProcAddress(hmod, "SetDebugInfoDir");
 				if (proc) {
 					char *pidgin_dir_ansi = NULL;
-					tmp[0] = L'\0';
+					/* Restore pidgin_dir to point to where the executable is */
+					pidgin_dir_start[0] = L'\0';
 					i = WideCharToMultiByte(CP_ACP, 0, pidgin_dir,
 						-1, NULL, 0, NULL, NULL);
 					if (i != 0) {
@@ -728,7 +729,8 @@
 
 			}
 
-			tmp[0] = L'\0';
+			/* Restore pidgin_dir to point to where the executable is */
+			pidgin_dir_start[0] = L'\0';
 		}
 	} else {
 		DWORD dw = GetLastError();
@@ -763,9 +765,14 @@
 			return 0;
 
 	/* Now we are ready for Pidgin .. */
-	if ((hmod = LoadLibraryW(L"pidgin.dll")))
+	wcscat(pidgin_dir, L"\\pidgin.dll");
+	if ((hmod = LoadLibraryW(pidgin_dir)))
 		pidgin_main = (LPFNPIDGINMAIN) GetProcAddress(hmod, "pidgin_main");
 
+	/* Restore pidgin_dir to point to where the executable is */
+	if (pidgin_dir_start)
+		pidgin_dir_start[0] = L'\0';
+
 	if (!pidgin_main) {
 		DWORD dw = GetLastError();
 		BOOL mod_not_found = (dw == ERROR_MOD_NOT_FOUND || dw == ERROR_DLL_NOT_FOUND);
--- a/pidgin/win32/wspell.c	Tue Aug 31 02:52:28 2010 +0000
+++ b/pidgin/win32/wspell.c	Tue Aug 31 02:57:59 2010 +0000
@@ -73,25 +73,29 @@
 static void load_gtkspell() {
 	UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
 	gchar *tmp, *tmp2;
+
 	const char *path = g_getenv("PATH");
 	tmp = g_build_filename(wpurple_install_dir(), "spellcheck", NULL);
-	tmp2 = g_strdup_printf("%s%s%s", (path ? path : ""),
+	tmp2 = g_strdup_printf("%s%s%s", tmp,
 		(path ? G_SEARCHPATH_SEPARATOR_S : ""),
-		tmp);
+		(path ? path : ""));
 	g_free(tmp);
 	g_setenv("PATH", tmp2, TRUE);
+	g_free(tmp2);
 
+	tmp = g_build_filename(wpurple_install_dir(), "spellcheck", GTKSPELL_DLL, NULL);
 	/* Suppress error popups */
-	wpidginspell_new_attach_proxy = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_new_attach" );
+	wpidginspell_new_attach_proxy = (void*) wpurple_find_and_loadproc(tmp, "gtkspell_new_attach" );
 	if (wpidginspell_new_attach_proxy) {
-		wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_get_from_text_view");
-		wpidginspell_detach = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_detach");
-		wpidginspell_set_language = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_set_language");
-		wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_recheck_all");
+		wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc(tmp, "gtkspell_get_from_text_view");
+		wpidginspell_detach = (void*) wpurple_find_and_loadproc(tmp, "gtkspell_detach");
+		wpidginspell_set_language = (void*) wpurple_find_and_loadproc(tmp, "gtkspell_set_language");
+		wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc(tmp, "gtkspell_recheck_all");
 	} else {
-		purple_debug_warning("wspell", "Couldn't load gtkspell (%s) \n", GTKSPELL_DLL);
+		purple_debug_warning("wspell", "Couldn't load gtkspell (%s) \n", tmp);
 		/*wpidginspell_new_attach = wgtkspell_new_attach;*/
 	}
+	g_free(tmp);
 	SetErrorMode(old_error_mode);
 }