# HG changeset patch # User yaz # Date 1155298391 25200 # Node ID 664e1b2f3e8049126c9905269396761a23a577d6 # Parent e6fce20309f968da303a0560c53d95b9e4c6627b [svn] jump to file dialog now accepts multi-byte input. diff -r e6fce20309f9 -r 664e1b2f3e80 ChangeLog --- a/ChangeLog Fri Aug 11 03:44:50 2006 -0700 +++ b/ChangeLog Fri Aug 11 05:13:11 2006 -0700 @@ -1,3 +1,12 @@ +2006-08-11 10:44:50 +0000 Yoshiki Yazawa + revision [2064] + xspf.c needs round trip encoding conversion between locale encoding and utf8. + + + Changes: Modified: + +17 -3 trunk/Plugins/Container/xspf/xspf.c + + 2006-08-11 08:48:51 +0000 William Pitcock revision [2062] - unbork diff -r e6fce20309f9 -r 664e1b2f3e80 audacious/mainwin.c --- a/audacious/mainwin.c Fri Aug 11 03:44:50 2006 -0700 +++ b/audacious/mainwin.c Fri Aug 11 05:13:11 2006 -0700 @@ -1523,6 +1523,25 @@ } static gboolean +mainwin_jump_to_file_edit_keypress_cb(GtkWidget * object, + GdkEventKey * event, + gpointer data) +{ + switch (event->keyval) { + case GDK_Return: + if (gtk_im_context_filter_keypress (GTK_ENTRY (object)->im_context, event)) { + GTK_ENTRY (object)->need_im_reset = TRUE; + return TRUE; + } else { + mainwin_jump_to_file_jump(GTK_TREE_VIEW(data)); + return TRUE; + } + default: + return FALSE; + } +} + +static gboolean mainwin_jump_to_file_keypress_cb(GtkWidget * object, GdkEventKey * event, gpointer data) @@ -1533,9 +1552,6 @@ gtk_widget_destroy(mainwin_jtf); mainwin_jtf = NULL; return TRUE; - case GDK_Return: - mainwin_jump_to_file_jump(GTK_TREE_VIEW(data)); - return TRUE; default: return FALSE; }; @@ -1575,7 +1591,7 @@ * reading */ gint row; GList *playlist; - gchar *desc_buf; + gchar *desc_buf = NULL; gchar *row_str; GtkTreeIter iter; GtkTreeSelection *selection; @@ -1594,11 +1610,11 @@ PlaylistEntry *entry = PLAYLIST_ENTRY(playlist->data); if (entry->title) - desc_buf = entry->title; + desc_buf = g_strdup(entry->title); else if (strchr(entry->filename, '/')) - desc_buf = strrchr(entry->filename, '/') + 1; + desc_buf = str_to_utf8(strrchr(entry->filename, '/') + 1); else - desc_buf = entry->filename; + desc_buf = str_to_utf8(entry->filename); row_str = g_strdup_printf("%d", row++); @@ -1606,6 +1622,11 @@ gtk_list_store_set(GTK_LIST_STORE(store), &iter, 0, row_str, 1, desc_buf, -1); + if(desc_buf) { + g_free(desc_buf); + desc_buf = NULL; + } + g_free(row_str); } @@ -1643,11 +1664,12 @@ playlist = g_list_next(playlist)) { PlaylistEntry *entry = PLAYLIST_ENTRY(playlist->data); - const gchar *title, *filename; + const gchar *title; + gchar *filename = NULL; title = entry->title; if (!title) { - filename = entry->filename; + filename = str_to_utf8(entry->filename); if (strchr(filename, '/')) title = strrchr(filename, '/') + 1; @@ -1680,6 +1702,10 @@ } song_index++; + if (filename) { + g_free(filename); + filename = NULL; + } } PLAYLIST_UNLOCK(); @@ -1701,7 +1727,7 @@ GtkWidget *rescan, *edit; GtkWidget *search_label, *hbox; GList *playlist; - gchar *desc_buf; + gchar *desc_buf = NULL; gchar *row_str; gint row; @@ -1772,6 +1798,9 @@ g_signal_connect(edit, "changed", G_CALLBACK(mainwin_jump_to_file_edit_cb), treeview); + g_signal_connect(edit, "key_press_event", + G_CALLBACK(mainwin_jump_to_file_edit_keypress_cb), treeview); + g_signal_connect(mainwin_jtf, "key_press_event", G_CALLBACK(mainwin_jump_to_file_keypress_cb), treeview); @@ -1839,11 +1868,11 @@ PlaylistEntry *entry = PLAYLIST_ENTRY(playlist->data); if (entry->title) - desc_buf = entry->title; + desc_buf = g_strdup(entry->title); else if (strchr(entry->filename, '/')) - desc_buf = strrchr(entry->filename, '/') + 1; + desc_buf = str_to_utf8(strrchr(entry->filename, '/') + 1); else - desc_buf = entry->filename; + desc_buf = str_to_utf8(entry->filename); row_str = g_strdup_printf("%d", row++); @@ -1851,6 +1880,10 @@ gtk_list_store_set(GTK_LIST_STORE(jtf_store), &iter, 0, row_str, 1, desc_buf, -1); + if (desc_buf) { + g_free(desc_buf); + desc_buf = NULL; + } g_free(row_str); }