File tree Expand file tree Collapse file tree 1 file changed +14
-9
lines changed
Expand file tree Collapse file tree 1 file changed +14
-9
lines changed Original file line number Diff line number Diff line change @@ -357,15 +357,20 @@ class FileDialogWindow : public Window
357357 if (d1 != d2)
358358 return d1 > d2; // directories first
359359
360- char *filename1_nocase = g_utf8_casefold (i1.filename .c_str (), -1 );
361- char *filename2_nocase = g_utf8_casefold (i2.filename .c_str (), -1 );
362- char *key1 = g_utf8_collate_key_for_filename (filename1_nocase, -1 );
363- char *key2 = g_utf8_collate_key_for_filename (filename2_nocase, -1 );
364- string ks1 = key1, ks2 = key2;
365- g_free (key1);
366- g_free (key2);
367- g_free (filename1_nocase);
368- g_free (filename2_nocase);
360+ auto sort_key = [] (const string& filename)
361+ {
362+ char *utf8_valid_name = g_utf8_make_valid (filename.c_str (), -1 );
363+ char *name_nocase = g_utf8_casefold (utf8_valid_name, -1 );
364+ char *key = g_utf8_collate_key_for_filename (name_nocase, -1 );
365+ string ks = key;
366+ g_free (key);
367+ g_free (name_nocase);
368+ g_free (utf8_valid_name);
369+
370+ return ks;
371+ };
372+ string ks1 = sort_key (i1.filename );
373+ string ks2 = sort_key (i2.filename );
369374 return ks1 < ks2;
370375 });
371376 for (auto item : items)
You can’t perform that action at this time.
0 commit comments