diff -ru xmms-1.0.1/xmms/playlist_list.c xmms-1.0.1-new/xmms/playlist_list.c
--- xmms-1.0.1/xmms/playlist_list.c	Sat Mar  4 16:32:02 2000
+++ xmms-1.0.1-new/xmms/playlist_list.c	Sat Mar  4 16:31:14 2000
@@ -223,7 +223,8 @@
 	GList *list;
 	PlaylistEntry *entry;
 	gchar *text, *title, length[20], *tmp, *tmp2;
-	gint i, len, tw, max_first;
+	gint i, len, len_wc, tw, max_first;
+	GdkWChar *text_wc;
 
 	gc = pl->pl_widget.gc;
 	width = pl->pl_widget.width;
@@ -303,16 +304,26 @@
 					*tmp = '\0';
 				}
 			len = strlen(text);
-			while (gdk_text_width(font, text, len) > tw && len > 4)
+			text_wc = g_malloc((strlen(text)+4)*sizeof(GdkWChar));
+			len_wc = gdk_mbstowcs(text_wc, text, (strlen(text)+1)*sizeof(GdkWChar));
+			if(gdk_text_width_wc(font, text_wc, len_wc) > tw && len_wc > 4)
 			{
-				len--;
-				text[len - 3] = '.';
-				text[len - 2] = '.';
-				text[len - 1] = '.';
-				text[len] = '\0';
+			        len_wc += 2;
+			        text_wc[len_wc - 3] = '.';
+			        text_wc[len_wc - 2] = '.';
+			        text_wc[len_wc - 1] = '.';
+			        text_wc[len_wc] = 0;
+			        
+			   	while (gdk_text_width_wc(font, text_wc, len_wc) > tw && len_wc > 4)
+			   	{
+					len_wc--;
+					text_wc[len_wc - 3] = '.';
+					text_wc[len_wc] = 0;
+			   	}
 			}
 
-			gdk_draw_text(obj, font, gc, pl->pl_widget.x, pl->pl_widget.y + (i - pl->pl_first) * pl->pl_fheight + font->ascent, text, len);
+			gdk_draw_text_wc(obj, font, gc, pl->pl_widget.x, pl->pl_widget.y + (i - pl->pl_first) * pl->pl_fheight + font->ascent, text_wc, len_wc);
+			g_free(text_wc);
 			g_free(text);
 			list = list->next;
 			i++;




