From 001eac9dbf8f19ec42376776275e6fd60a4d2b07 Mon Sep 17 00:00:00 2001 From: Jinhao Date: Fri, 2 Sep 2016 01:06:33 +0800 Subject: [PATCH] fix a filebox error under Linux fixed by buckyeh --- source/gui/filebox.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/source/gui/filebox.cpp b/source/gui/filebox.cpp index c18c7a83..ae57b0f7 100644 --- a/source/gui/filebox.cpp +++ b/source/gui/filebox.cpp @@ -498,24 +498,26 @@ namespace nana if(name.empty() || (name.front() == '.')) continue; + auto fpath = i->path().native(); + auto fattr = fs::status(fpath); + item_fs m; m.name = name; + m.directory = fs::is_directory(fattr); - auto fattr = fs::status(path + m.name); - - if(fattr.type() != fs::file_type::not_found && fattr.type() != fs::file_type::unknown) - { - m.bytes = fs::file_size(path + m.name); - m.directory = fs::is_directory(fattr); - fs_ext::modified_file_time(path + m.name, m.modified_time); - } - else + switch(fattr.type()) { + case fs::file_type::not_found: + case fs::file_type::unknown: + case fs::file_type::directory: m.bytes = 0; - m.directory = fs::is_directory(*i); - fs_ext::modified_file_time(path + i->path().filename().native(), m.modified_time); + break; + default: + m.bytes = fs::file_size(fpath); } + fs_ext::modified_file_time(fpath, m.modified_time); + file_container_.push_back(m); if(m.directory)