Index: configure.in
===================================================================
RCS file: /cvsroot/gaim/gaim/configure.in,v
retrieving revision 1.95
diff -u -r1.95 configure.in
--- configure.in	2001/05/31 01:07:12	1.95
+++ configure.in	2001/06/06 23:32:31
@@ -43,9 +43,9 @@
 AM_CONDITIONAL(DISTRIB, test "x$enable_distrib" = "xyes")
 AC_ARG_ENABLE(multi,   [  --disable-multi         disable multiple connections],,enable_multi=yes)
 AC_ARG_ENABLE(prpls,   [  --disable-prpls         don't build protocol plugins],,enable_prpls=yes)
-AC_ARG_ENABLE(gnome,   [  --disable-gnome         compile without Gnome bits],,enable_gnome=yes)
-AC_ARG_ENABLE(pixbuf,   [  --disable-pixbuf        compile without GdkPixbuf (needed for Buddy Icons)],,enable_pixbuf=yes)
-AC_ARG_ENABLE(panel,   [  --enable-panel          compile as a GNOME applet],,enable_panel=$enable_distrib)
+dnl AC_ARG_ENABLE(gnome,   [  --disable-gnome         compile without Gnome bits],,enable_gnome=yes)
+dnl AC_ARG_ENABLE(pixbuf,   [  --disable-pixbuf        compile without GdkPixbuf (needed for Buddy Icons)],,enable_pixbuf=yes)
+dnl AC_ARG_ENABLE(panel,   [  --enable-panel          compile as a GNOME applet],,enable_panel=$enable_distrib)
 AM_CONDITIONAL(GNOMEAPPLET, test "x$enable_panel" = "xyes")
 AC_ARG_ENABLE(esd,     [  --disable-esd           Turn off ESD (default=auto)],,enable_esd=yes)
 AC_ARG_ENABLE(nas,     [  --enable-nas            Enable NAS (Network Audio System) support],,enable_nas=no)
@@ -60,72 +60,72 @@
 	AC_DEFINE(DEBUG)
 fi
 
-if test "x$enable_gnome" = "xyes" ; then
-	if test "x$enable_panel" = "xyes" ; then
-		GNOME_INIT(applets)
-		GNOME_X_CHECKS
-		CFLAGS="$CFLAGS $GNOME_INCLUDEDIR"
-		AC_DEFINE(USE_APPLET)
-		AC_DEFINE(USE_GNOME)
-		LIBS="$LIBS $GTK_LIBS $GNOME_LIBDIR $GNOME_APPLETS_LIBS $GNOMEUI_LIBS"
-		AC_PATH_PROG(gaimpath, gaim_applet)
-	else
-		AC_PATH_PROG(gnomepath, gnome-config)
-		AC_MSG_CHECKING(for Gnome compile flags)
-		GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null`
-		if test "x$GNOME_CFLAGS" = "x" ; then
-			enable_gnome=no
-			AC_MSG_RESULT([Gnome not found, building without it.])
-		else
-			GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //' 2>/dev/null`
-			GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([[0-9]*]*\).\([[0-9]*]*\).\([[0-9]*]*\)/\1/' 2>/dev/null`
-			if test "x$GNOME_MAJOR" = "x0" ; then
-				enable_gnome = no
-				AC_MSG_RESULT([old Gnome found, building without it.])
-			else
-				AC_MSG_RESULT(ok)
-				CFLAGS="$CFLAGS $GNOME_CFLAGS"
-				LIBS="$LIBS `$gnomepath gnomeui --libs 2>/dev/null`"
-				AC_DEFINE(USE_GNOME)
-				GNOME_CONFIG="$gnomepath"
-				AC_SUBST(GNOME_CONFIG)
-				AC_PATH_PROG(gaimpath, gaim)
-			fi
-		fi
-	fi
-fi
+dnl if test "x$enable_gnome" = "xyes" ; then
+dnl	if test "x$enable_panel" = "xyes" ; then
+dnl		GNOME_INIT(applets)
+dnl		GNOME_X_CHECKS
+dnl		CFLAGS="$CFLAGS $GNOME_INCLUDEDIR"
+dnl		AC_DEFINE(USE_APPLET)
+dnl		AC_DEFINE(USE_GNOME)
+dnl		LIBS="$LIBS $GTK_LIBS $GNOME_LIBDIR $GNOME_APPLETS_LIBS $GNOMEUI_LIBS"
+dnl		AC_PATH_PROG(gaimpath, gaim_applet)
+dnl	else
+dnl		AC_PATH_PROG(gnomepath, gnome-config)
+dnl		AC_MSG_CHECKING(for Gnome compile flags)
+dnl		GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null`
+dnl		if test "x$GNOME_CFLAGS" = "x" ; then
+dnl			enable_gnome=no
+dnl			AC_MSG_RESULT([Gnome not found, building without it.])
+dnl		else
+dnl			GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //' 2>/dev/null`
+dnl			GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([[0-9]*]*\).\([[0-9]*]*\).\([[0-9]*]*\)/\1/' 2>/dev/null`
+dnl			if test "x$GNOME_MAJOR" = "x0" ; then
+dnl				enable_gnome = no
+dnl				AC_MSG_RESULT([old Gnome found, building without it.])
+dnl			else
+dnl				AC_MSG_RESULT(ok)
+dnl				CFLAGS="$CFLAGS $GNOME_CFLAGS"
+dnl				LIBS="$LIBS `$gnomepath gnomeui --libs 2>/dev/null`"
+dnl				AC_DEFINE(USE_GNOME)
+dnl				GNOME_CONFIG="$gnomepath"
+dnl				AC_SUBST(GNOME_CONFIG)
+dnl				AC_PATH_PROG(gaimpath, gaim)
+dnl			fi
+dnl		fi
+dnl	fi
+dnl fi
 
-if test "x$enable_gnome" != "xyes" ; then
-	AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR([
+dnl if test "x$enable_gnome" != "xyes" ; then
+	AM_PATH_GLIB_2_0(1.2.3,,AC_MSG_ERROR([
 *** GLib is required to build Gaim; please make sure you have the GLib
 *** development headers installed. The latest version of GLib is
 *** always available at http://www.gtk.org/.]))
-	AM_PATH_GTK(1.2.0,,AC_MSG_ERROR([
+	AM_PATH_GTK_2_0(1.2.3,,AC_MSG_ERROR([
 *** GTK+ is required to build Gaim; please make sure you have the GTK+
 *** development headers installed. The latest version of GTK+ is
 *** always available at http://www.gtk.org/.]),gthread)
 	LIBS="$LIBS $GTK_LIBS"
 	AC_PATH_PROG(gaimpath, gaim)
-fi
-CFLAGS="$CFLAGS $GTK_CFLAGS"
+dnl fi
+CFLAGS="$CFLAGS $GTK_CFLAGS -DGTK_ENABLE_BROKEN"
 
-use_pixbuf=no
-if test "x$enable_pixbuf" = "xyes" ; then
-	AC_PATH_PROG(pixbufcfg, gdk-pixbuf-config)
-	if test "x$pixbufcfg" != "x" ; then
-		GDK_PIXBUF_CFLAGS=`$pixbufcfg --cflags`
-		GDK_PIXBUF_LIBS=`$pixbufcfg --libs`
-		GDK_PIXBUF_CONFIG="$pixbufcfg"
-		AC_SUBST(GDK_PIXBUF_CONFIG)
-		AC_SUBST(GDK_PIXBUF_CFLAGS)
-		AC_SUBST(GDK_PIXBUF_LIBS)
-		CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS"
-		LIBS="$LIBS $GDK_PIXBUF_LIBS"
-		dnl We should be doing checks to see that the header files and functions exist. eh.
-		AC_DEFINE(USE_PIXBUF)
-		use_pixbuf=yes
-	fi
-fi
+dnl use_pixbuf=no
+dnl if test "x$enable_pixbuf" = "xyes" ; then
+dnl	AC_PATH_PROG(pixbufcfg, gdk-pixbuf-config)
+dnl	if test "x$pixbufcfg" != "x" ; then
+dnl		GDK_PIXBUF_CFLAGS=`$pixbufcfg --cflags`
+dnl		GDK_PIXBUF_LIBS=`$pixbufcfg --libs`
+dnl		GDK_PIXBUF_CONFIG="$pixbufcfg"
+dnl		AC_SUBST(GDK_PIXBUF_CONFIG)
+dnl		AC_SUBST(GDK_PIXBUF_CFLAGS)
+dnl		AC_SUBST(GDK_PIXBUF_LIBS)
+dnl		CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS"
+dnl		LIBS="$LIBS $GDK_PIXBUF_LIBS"
+dnl		dnl We should be doing checks to see that the header files and functions exist. eh.
+dnl		AC_DEFINE(USE_PIXBUF)
+dnl		use_pixbuf=yes
+dnl	fi
+dnl fi
 
 dnl Check for XScreenSaver
 if test "x$enable_xss" = "xyes" ; then
@@ -299,11 +299,11 @@
 echo
 echo Allow Multiple Connections. : $enable_multi
 echo Build Protocol Plugins..... : $enable_prpls
-echo
-echo Build with GNOME bits...... : $enable_gnome
-echo Use GdkPixbuf for Icons.... : $use_pixbuf
-echo Build as GNOME applet...... : $enable_panel
 echo
+dnl echo Build with GNOME bits...... : $enable_gnome
+dnl echo Use GdkPixbuf for Icons.... : $use_pixbuf
+dnl echo Build as GNOME applet...... : $enable_panel
+dnl echo
 echo Build with Plugin support.. : $enable_plugins
 echo Build with Perl support.... : $enable_perl
 echo
Index: src/browser.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/browser.c,v
retrieving revision 1.10
diff -u -r1.10 browser.c
--- src/browser.c	2001/06/01 23:17:09	1.10
+++ src/browser.c	2001/06/06 23:32:32
@@ -486,7 +486,7 @@
 	mozilla_remote_init_atoms();
 	window = mozilla_remote_find_window();
 
-	if (window && (((GdkWindowPrivate *) window)->destroyed == FALSE)) {
+	if (window && (((GdkWindowObject *) window)->destroyed == FALSE)) {
 
 		XSelectInput(gdk_display, GDK_WINDOW_XWINDOW(window),
 			     (PropertyChangeMask | StructureNotifyMask));
@@ -526,7 +526,7 @@
 	mozilla_remote_init_atoms();
 	window = mozilla_remote_find_window();
 
-	if (window && (((GdkWindowPrivate *) window)->destroyed == FALSE)) {
+	if (window && (((GdkWindowObject *) window)->destroyed == FALSE)) {
 
 		XSelectInput(gdk_display, GDK_WINDOW_XWINDOW(window),
 			     (PropertyChangeMask | StructureNotifyMask));
Index: src/conversation.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/conversation.c,v
retrieving revision 1.226
diff -u -r1.226 conversation.c
--- src/conversation.c	2001/05/29 23:51:15	1.226
+++ src/conversation.c	2001/06/06 23:32:34
@@ -31,6 +31,7 @@
 #include <stdlib.h>
 #include <ctype.h>
 #include <gtk/gtk.h>
+#include <gtk/gtkeditable.h>
 #include "gtkimhtml.h"
 #include <gdk/gdkkeysyms.h>
 #include "convo.h"
@@ -748,7 +749,7 @@
 		gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
 	}
 
-	return TRUE;
+	return FALSE;
 }
 
 
@@ -884,7 +885,7 @@
 int entry_key_pressed(GtkWidget *w, GtkWidget *entry)
 {
 	check_everything(w);
-	return TRUE;
+	return FALSE;
 }
 
 /*------------------------------------------------------------------------*/
@@ -1537,7 +1538,7 @@
 	GtkWidget *win;
 	GtkWidget *entry;
 
-	toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
+	toolbar = gtk_toolbar_new();
 	win = c->window;
 	entry = c->entry;
 
Index: src/dialogs.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v
retrieving revision 1.234
diff -u -r1.234 dialogs.c
--- src/dialogs.c	2001/05/25 23:07:22	1.234
+++ src/dialogs.c	2001/06/06 23:32:35
@@ -3321,10 +3321,10 @@
 	vbox = gtk_vbox_new(TRUE, 5);
 	bbox = gtk_hbox_new(FALSE, 5);
 
-	smiley_box_1 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
-	smiley_box_2 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
-	smiley_box_3 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
-	smiley_box_4 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
+	smiley_box_1 = gtk_toolbar_new();
+	smiley_box_2 = gtk_toolbar_new();
+	smiley_box_3 = gtk_toolbar_new();
+	smiley_box_4 = gtk_toolbar_new();
 
 	/* setup buttons */
 
Index: src/gaim.h
===================================================================
RCS file: /cvsroot/gaim/gaim/src/gaim.h,v
retrieving revision 1.230
diff -u -r1.230 gaim.h
--- src/gaim.h	2001/06/01 23:56:52	1.230
+++ src/gaim.h	2001/06/06 23:32:36
@@ -27,6 +27,13 @@
 #endif
 
 #include <gtk/gtk.h>
+#ifndef GTK_WINDOW_DIALOG
+#define GTK_WINDOW_DIALOG GTK_WINDOW_TOPLEVEL
+#endif
+#ifdef GTK_EDITABLE
+#undef GTK_EDITABLE
+#define GTK_EDITABLE GTK_OLD_EDITABLE
+#endif
 #include <time.h>
 #include <stdio.h>
 #ifdef USE_APPLET
Index: src/gtkimhtml.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/gtkimhtml.c,v
retrieving revision 1.32
diff -u -r1.32 gtkimhtml.c
--- src/gtkimhtml.c	2001/06/05 17:47:39	1.32
+++ src/gtkimhtml.c	2001/06/06 23:32:37
@@ -1416,18 +1416,18 @@
 	signals [URL_CLICKED] =
 		gtk_signal_new ("url_clicked",
 				GTK_RUN_FIRST,
-				object_class->type,
+				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GtkIMHtmlClass, url_clicked),
 				gtk_marshal_NONE__POINTER,
 				GTK_TYPE_NONE, 1,
 				GTK_TYPE_POINTER);
 
-	gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
+	/*gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);*/
 
 	object_class->destroy = gtk_imhtml_destroy;
 
 	widget_class->realize = gtk_imhtml_realize;
-	widget_class->draw = gtk_imhtml_draw;
+	/*widget_class->draw = gtk_imhtml_draw;*/
 	widget_class->style_set = gtk_imhtml_style_set;
 	widget_class->expose_event  = gtk_imhtml_expose_event;
 	widget_class->size_allocate = gtk_imhtml_size_allocate;
Index: src/gtkticker.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/gtkticker.c,v
retrieving revision 1.2
diff -u -r1.2 gtkticker.c
--- src/gtkticker.c	2000/11/21 01:00:45	1.2
+++ src/gtkticker.c	2001/06/06 23:32:37
@@ -94,7 +94,7 @@
   widget_class->realize = gtk_ticker_realize;
   widget_class->size_request = gtk_ticker_size_request;
   widget_class->size_allocate = gtk_ticker_size_allocate;
-  widget_class->draw = gtk_ticker_draw;
+  /*widget_class->draw = gtk_ticker_draw;*/
   widget_class->expose_event = gtk_ticker_expose;
 
   container_class->add = gtk_ticker_add_real;
Index: src/oscar.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/oscar.c,v
retrieving revision 1.214
diff -u -r1.214 oscar.c
--- src/oscar.c	2001/06/04 20:13:34	1.214
+++ src/oscar.c	2001/06/06 23:32:39
@@ -43,10 +43,8 @@
 #include "aim.h"
 #include "proxy.h"
 
-#if USE_PIXBUF
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gdk-pixbuf/gdk-pixbuf-loader.h>
-#endif
 
 /*#include "pixmaps/cancel.xpm"*/
 #include "pixmaps/admin_icon.xpm"
@@ -62,9 +60,7 @@
 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
 
 static int gaim_caps = AIM_CAPS_CHAT |
-#if USE_PIXBUF
 		       AIM_CAPS_BUDDYICON |
-#endif
 		       AIM_CAPS_GETFILE |
 		       AIM_CAPS_IMIMAGE;
 
@@ -143,21 +139,15 @@
 	long size;
 };
 
-#if USE_PIXBUF
 struct icon_req {
 	char *user;
 	time_t timestamp;
 	unsigned long length;
 	gpointer data;
 	gboolean request;
-	GdkPixbufAnimation *anim;
-	GdkPixbuf *unanim;
 	struct conversation *cnv;
-	GtkWidget *pix;
-	int curframe;
-	int timer;
+	GtkWidget *img;
 };
-#endif
 
 static struct direct_im *find_direct_im(struct oscar_data *od, char *who) {
 	GSList *d = od->direct_ims;
@@ -523,24 +513,16 @@
 		odata->direct_ims = g_slist_remove(odata->direct_ims, n);
 		g_free(n);
 	}
-#if USE_PIXBUF
 	while (odata->hasicons) {
 		struct icon_req *n = odata->hasicons->data;
-		if (n->anim)
-			gdk_pixbuf_animation_unref(n->anim);
-		if (n->unanim)
-			gdk_pixbuf_unref(n->unanim);
-		if (n->timer)
-			gtk_timeout_remove(n->timer);
 		if (n->cnv)
-			gtk_container_remove(GTK_CONTAINER(n->cnv->bbox), n->pix);
+			gtk_container_remove(GTK_CONTAINER(n->cnv->bbox), n->img);
 		g_free(n->user);
 		if (n->data)
 			g_free(n->data);
 		odata->hasicons = g_slist_remove(odata->hasicons, n);
 		g_free(n);
 	}
-#endif
 	if (gc->inpa > 0)
 		gdk_input_remove(gc->inpa);
 	if (odata->cnpa > 0)
@@ -1597,63 +1579,6 @@
 }
 */
 
-#if USE_PIXBUF
-static gboolean redraw_anim(gpointer data)
-{
-	int delay;
-	struct icon_req *ir = data;
-	GList *frames;
-	GdkPixbufFrame *frame;
-	GdkPixbuf *buf;
-	GdkPixmap *pm; GdkBitmap *bm;
-	GdkPixmap *src;
-	GdkGC *gc;
-
-	if (!ir->cnv || !g_list_find(conversations, ir->cnv)) {
-		debug_printf("I think this is a bug.\n");
-		return FALSE;
-	}
-
-	frames = gdk_pixbuf_animation_get_frames(ir->anim);
-	frame = g_list_nth_data(frames, ir->curframe);
-	buf = gdk_pixbuf_frame_get_pixbuf(frame);
-	switch (gdk_pixbuf_frame_get_action(frame)) {
-		case GDK_PIXBUF_FRAME_RETAIN:
-			gdk_pixbuf_render_pixmap_and_mask(buf, &src, NULL, 0);
-			gtk_pixmap_get(GTK_PIXMAP(ir->pix), &pm, &bm);
-			gc = gdk_gc_new(pm);
-			gdk_draw_pixmap(pm, gc, src, 0, 0,
-					gdk_pixbuf_frame_get_x_offset(frame),
-					gdk_pixbuf_frame_get_y_offset(frame),
-					-1, -1);
-			gdk_pixmap_unref(src);
-			gtk_widget_queue_draw(ir->pix);
-			gdk_gc_unref(gc);
-			break;
-		case GDK_PIXBUF_FRAME_DISPOSE:
-			gdk_pixbuf_render_pixmap_and_mask(buf, &pm, &bm, 0);
-			gtk_pixmap_set(GTK_PIXMAP(ir->pix), pm, bm);
-			gdk_pixmap_unref(pm);
-			if (bm)
-				gdk_bitmap_unref(bm);
-			break;
-		case GDK_PIXBUF_FRAME_REVERT:
-			frame = frames->data;
-			buf = gdk_pixbuf_frame_get_pixbuf(frame);
-			gdk_pixbuf_render_pixmap_and_mask(buf, &pm, &bm, 0);
-			gtk_pixmap_set(GTK_PIXMAP(ir->pix), pm, bm);
-			gdk_pixmap_unref(pm);
-			if (bm)
-				gdk_bitmap_unref(bm);
-			break;
-	}
-	ir->curframe = (ir->curframe + 1) % g_list_length(frames);
-	delay = gdk_pixbuf_frame_get_delay_time(frame);
-	ir->timer = gtk_timeout_add(delay * 10, redraw_anim, ir);
-	return FALSE;
-}
-#endif
-
 int gaim_parse_incoming_im(struct aim_session_t *sess,
 			   struct command_rx_struct *command, ...) {
 	int channel;
@@ -1673,7 +1598,6 @@
 		args = va_arg(ap, struct aim_incomingim_ch1_args *);
 		va_end(ap);
 
-#if USE_PIXBUF
 		if (args->icbmflags & AIM_IMFLAGS_HASICON) {
 			struct oscar_data *od = gc->proto_data;
 			struct icon_req *ir;
@@ -1695,7 +1619,6 @@
 				ir->request = TRUE;
 			ir->timestamp = args->iconstamp;
 		}
-#endif
 
 		g_snprintf(tmp, BUF_LONG, "%s", args->msg);
 		serv_got_im(gc, userinfo->sn, tmp, args->icbmflags & AIM_IMFLAGS_AWAY, time(NULL));
@@ -1735,7 +1658,6 @@
 			*/
 		} else if (args->reqclass & AIM_CAPS_VOICE) {
 		} else if (args->reqclass & AIM_CAPS_BUDDYICON) {
-#if USE_PIXBUF
 			struct oscar_data *od = gc->proto_data;
 			GSList *h = od->hasicons;
 			struct icon_req *ir = NULL;
@@ -1743,10 +1665,8 @@
 			struct conversation *c;
 
 			GdkPixbufLoader *load;
-			GList *frames;
-			GdkPixbuf *buf;
-			GdkPixmap *pm;
-			GdkBitmap *bm;
+			GdkPixbufAnimation *anim;
+			GdkPixbuf *unanim;
 
 			who = normalize(userinfo->sn);
 
@@ -1763,21 +1683,12 @@
 				return 1;
 			}
 
-			if (ir->pix && ir->cnv)
-				gtk_container_remove(GTK_CONTAINER(ir->cnv->bbox), ir->pix);
-			ir->pix = NULL;
+			if (ir->img && ir->cnv)
+				gtk_container_remove(GTK_CONTAINER(ir->cnv->bbox), ir->img);
+			ir->img = NULL;
 			ir->cnv = NULL;
 			if (ir->data)
 				g_free(ir->data);
-			if (ir->anim)
-				gdk_pixbuf_animation_unref(ir->anim);
-			ir->anim = NULL;
-			if (ir->unanim)
-				gdk_pixbuf_unref(ir->unanim);
-			ir->unanim = NULL;
-			if (ir->timer)
-				gtk_timeout_remove(ir->timer);
-			ir->timer = 0;
 
 			ir->cnv = c;
 			ir->length = args->info.icon.length;
@@ -1788,41 +1699,26 @@
 			ir->data = g_memdup(args->info.icon.icon, args->info.icon.length);
 
 			load = gdk_pixbuf_loader_new();
-			gdk_pixbuf_loader_write(load, ir->data, ir->length);
-			ir->anim = gdk_pixbuf_loader_get_animation(load);
+			gdk_pixbuf_loader_write(load, ir->data, ir->length, NULL);
+			anim = gdk_pixbuf_loader_get_animation(load);
 
-			if (ir->anim) {
-				frames = gdk_pixbuf_animation_get_frames(ir->anim);
-				buf = gdk_pixbuf_frame_get_pixbuf(frames->data);
-				gdk_pixbuf_render_pixmap_and_mask(buf, &pm, &bm, 0);
-
-				if (gdk_pixbuf_animation_get_num_frames(ir->anim) > 1) {
-					int delay = gdk_pixbuf_frame_get_delay_time(frames->data);
-					ir->curframe = 1;
-					ir->timer = gtk_timeout_add(delay * 10, redraw_anim, ir);
-				}
+			if (anim) {
+				ir->img = gtk_image_new_from_animation(anim);
+				gdk_pixbuf_animation_unref(anim);
 			} else {
-				ir->unanim = gdk_pixbuf_loader_get_pixbuf(load);
-				if (!ir->unanim) {
-					gdk_pixbuf_loader_close(load);
+				unanim = gdk_pixbuf_loader_get_pixbuf(load);
+				if (!unanim) {
+					gdk_pixbuf_loader_close(load, NULL);
 					return 1;
 				}
-				gdk_pixbuf_render_pixmap_and_mask(ir->unanim, &pm, &bm, 0);
+				ir->img = gtk_image_new_from_animation(anim);
+				gdk_pixbuf_unref(unanim);
 			}
 
-			ir->pix = gtk_pixmap_new(pm, bm);
-			gtk_box_pack_start(GTK_BOX(c->bbox), ir->pix, FALSE, FALSE, 5);
-			if (ir->anim && (gdk_pixbuf_animation_get_num_frames(ir->anim) > 1))
-				gtk_widget_set_usize(ir->pix, gdk_pixbuf_animation_get_width(ir->anim),
-							gdk_pixbuf_animation_get_height(ir->anim));
-			gtk_widget_show(ir->pix);
-			gdk_pixmap_unref(pm);
-			if (bm)
-				gdk_bitmap_unref(bm);
+			gtk_box_pack_start(GTK_BOX(c->bbox), ir->img, FALSE, FALSE, 5);
+			gtk_widget_show(ir->img);
 
-			gdk_pixbuf_loader_close(load);
-
-#endif
+			gdk_pixbuf_loader_close(load, NULL);
 		} else if (args->reqclass & AIM_CAPS_IMIMAGE) {
 			struct ask_direct *d = g_new0(struct ask_direct, 1);
 			char buf[256];
@@ -2473,7 +2369,6 @@
 			aim_send_im(odata->sess, odata->conn, name, AIM_IMFLAGS_AWAY, message);
 		else {
 			int flags = AIM_IMFLAGS_ACK;
-#if USE_PIXBUF
 			GSList *h = odata->hasicons;
 			struct icon_req *ir;
 			char *who = normalize(name);
@@ -2488,7 +2383,6 @@
 				flags |= AIM_IMFLAGS_BUDDYREQ;
 				debug_printf("sending buddy icon request with message\n");
 			}
-#endif
 			aim_send_im(odata->sess, odata->conn, name, flags, message);
 		}
 	}
@@ -2581,7 +2475,7 @@
 	if (!name) {
 		if (!join_chat_entry || !join_chat_spin)
 			return;
-		name = gtk_entry_get_text(GTK_ENTRY(join_chat_entry));
+		name = (char *)gtk_entry_get_text(GTK_ENTRY(join_chat_entry));
 		exchange = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(join_chat_spin));
 		if (!name || !strlen(name))
 			return;
@@ -2932,14 +2826,14 @@
 	gtk_signal_connect(GTK_OBJECT(button), "activate",
 			   GTK_SIGNAL_FUNC(oscar_info), who);
 	gtk_object_set_user_data(GTK_OBJECT(button), gc);
-	gtk_menu_append(GTK_MENU(menu), button);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
 	gtk_widget_show(button);
 
 	button = gtk_menu_item_new_with_label(_("Get Away Msg"));
 	gtk_signal_connect(GTK_OBJECT(button), "activate",
 			   GTK_SIGNAL_FUNC(oscar_away_msg), who);
 	gtk_object_set_user_data(GTK_OBJECT(button), gc);
-	gtk_menu_append(GTK_MENU(menu), button);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
 	gtk_widget_show(button);
 
 	if (strcmp(n, normalize(who))) {
@@ -2947,7 +2841,7 @@
 		gtk_signal_connect(GTK_OBJECT(button), "activate",
 				   GTK_SIGNAL_FUNC(oscar_ask_direct_im), who);
 		gtk_object_set_user_data(GTK_OBJECT(button), gc);
-		gtk_menu_append(GTK_MENU(menu), button);
+		gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
 		gtk_widget_show(button);
 	}
 	g_free(n);
@@ -3161,17 +3055,14 @@
 
 static void oscar_insert_convo(struct gaim_connection *gc, struct conversation *c)
 {
-#if USE_PIXBUF
 	struct oscar_data *od = gc->proto_data;
 	GSList *h = od->hasicons;
 	struct icon_req *ir = NULL;
 	char *who = normalize(c->name);
 
 	GdkPixbufLoader *load;
-	GList *frames;
-	GdkPixbuf *buf;
-	GdkPixmap *pm;
-	GdkBitmap *bm;
+	GdkPixbufAnimation *anim;
+	GdkPixbuf *unanim;
 
 	while (h) {
 		ir = h->data;
@@ -3185,45 +3076,30 @@
 	ir->cnv = c;
 
 	load = gdk_pixbuf_loader_new();
-	gdk_pixbuf_loader_write(load, ir->data, ir->length);
-	ir->anim = gdk_pixbuf_loader_get_animation(load);
+	gdk_pixbuf_loader_write(load, ir->data, ir->length, NULL);
+	anim = gdk_pixbuf_loader_get_animation(load);
 
-	if (ir->anim) {
-		frames = gdk_pixbuf_animation_get_frames(ir->anim);
-		buf = gdk_pixbuf_frame_get_pixbuf(frames->data);
-		gdk_pixbuf_render_pixmap_and_mask(buf, &pm, &bm, 0);
-
-		if (gdk_pixbuf_animation_get_num_frames(ir->anim) > 1) {
-			int delay = gdk_pixbuf_frame_get_delay_time(frames->data);
-			ir->curframe = 1;
-			ir->timer = gtk_timeout_add(delay * 10, redraw_anim, ir);
-		}
+	if (anim) {
+		ir->img = gtk_image_new_from_animation(anim);
+		gdk_pixbuf_animation_unref(anim);
 	} else {
-		ir->unanim = gdk_pixbuf_loader_get_pixbuf(load);
-		if (!ir->unanim) {
-			gdk_pixbuf_loader_close(load);
+		unanim = gdk_pixbuf_loader_get_pixbuf(load);
+		if (!unanim) {
+			gdk_pixbuf_loader_close(load, NULL);
 			return;
 		}
-		gdk_pixbuf_render_pixmap_and_mask(ir->unanim, &pm, &bm, 0);
+		ir->img = gtk_image_new_from_pixbuf(unanim);
+		gdk_pixbuf_unref(unanim);
 	}
 
-	ir->pix = gtk_pixmap_new(pm, bm);
-	gtk_box_pack_start(GTK_BOX(c->bbox), ir->pix, FALSE, FALSE, 5);
-	if (ir->anim && (gdk_pixbuf_animation_get_num_frames(ir->anim) > 1))
-		gtk_widget_set_usize(ir->pix, gdk_pixbuf_animation_get_width(ir->anim),
-					gdk_pixbuf_animation_get_height(ir->anim));
-	gtk_widget_show(ir->pix);
-	gdk_pixmap_unref(pm);
-	if (bm)
-		gdk_bitmap_unref(bm);
+	gtk_box_pack_start(GTK_BOX(c->bbox), ir->img, FALSE, FALSE, 5);
+	gtk_widget_show(ir->img);
 
-	gdk_pixbuf_loader_close(load);
-#endif
+	gdk_pixbuf_loader_close(load, NULL);
 }
 
 static void oscar_remove_convo(struct gaim_connection *gc, struct conversation *c)
 {
-#if USE_PIXBUF
 	struct oscar_data *od = gc->proto_data;
 	GSList *h = od->hasicons;
 	struct icon_req *ir = NULL;
@@ -3238,24 +3114,9 @@
 	if (!h || !ir->data)
 		return;
 	
-	gtk_container_remove(GTK_CONTAINER(ir->cnv->bbox), ir->pix);
-	ir->pix = NULL;
+	gtk_container_remove(GTK_CONTAINER(ir->cnv->bbox), ir->img);
+	ir->img = NULL;
 	ir->cnv = NULL;
-	
-	if (ir->anim) {
-		gdk_pixbuf_animation_unref(ir->anim);
-		ir->anim = NULL;
-	} else if (ir->unanim) {
-		gdk_pixbuf_unref(ir->unanim);
-		ir->unanim = NULL;
-	}
-	
-	ir->curframe = 0;
-	
-	if (ir->timer)
-		gtk_timeout_remove(ir->timer);
-	ir->timer = 0;
-#endif
 }
 
 void oscar_init(struct prpl *ret) {
