diff --git a/firmware/application/apps/ui_fileman.cpp b/firmware/application/apps/ui_fileman.cpp index 9271bc92..42ef2f82 100644 --- a/firmware/application/apps/ui_fileman.cpp +++ b/firmware/application/apps/ui_fileman.cpp @@ -267,14 +267,15 @@ void FileManagerView::on_refactor(NavigationView& nav) { std::string destination_path = current_path.string(); if (destination_path.back() != '/') destination_path += '/'; - destination_path = destination_path + buffer; + + destination_path = get_selected_path().string().back() != '/' ? destination_path + buffer + extension_buffer : destination_path + buffer; rename_file(get_selected_path(), destination_path); //rename the selected file auto selected_path = get_selected_path(); auto extension = selected_path.extension().string(); - if (!extension.empty() && selected_path.string().back() != '/' && extension.substr(1) == "C16") { + if (!extension.empty() && selected_path.string().back() != '/' && extension.substr(1) == "C16") { //substr(1) is for ignore the dot // Rename its partner ( C16 <-> TXT ) file. auto partner_file_path = selected_path.string().substr(0, selected_path.string().size() - 4) + ".TXT"; destination_path = destination_path.substr(0, destination_path.size() - 4) + ".TXT"; @@ -359,6 +360,13 @@ FileManagerView::FileManagerView( button_refactor.on_select = [this, &nav](Button&) { name_buffer = entry_list[menu_view.highlighted_index()].entry_path.filename().string().substr(0, max_filename_length); + size_t pos = name_buffer.find_last_of("."); + + if (pos != std::string::npos) { + extension_buffer = name_buffer.substr(pos); + name_buffer = name_buffer.substr(0, pos); + } + on_refactor(nav); }; diff --git a/firmware/application/apps/ui_fileman.hpp b/firmware/application/apps/ui_fileman.hpp index 261295e8..cfea0848 100644 --- a/firmware/application/apps/ui_fileman.hpp +++ b/firmware/application/apps/ui_fileman.hpp @@ -143,6 +143,7 @@ public: private: std::string name_buffer { }; + std::string extension_buffer { }; void refresh_widgets(const bool v); void on_rename(NavigationView& nav);