| 1037 | } |
| 1038 | |
| 1039 | void onScrollMouseDown(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override |
| 1040 | { |
| 1041 | int32_t selectedItem; |
| 1042 | |
| 1043 | selectedItem = screenCoords.y / kScrollableRowHeight; |
| 1044 | if (selectedItem >= numListItems) |
| 1045 | return; |
| 1046 | |
| 1047 | if (_listItems[selectedItem].type == FileType::directory) |
| 1048 | { |
| 1049 | // The selected item is a folder |
| 1050 | numListItems = 0; |
| 1051 | selectedListItem = -1; |
| 1052 | |
| 1053 | char directory[MAX_PATH]; |
| 1054 | String::safeUtf8Copy(directory, _listItems[selectedItem].path.c_str(), sizeof(directory)); |
| 1055 | |
| 1056 | PopulateList(directory, _extensionPattern); |
| 1057 | initScrollWidgets(); |
| 1058 | |
| 1059 | numListItems = static_cast<uint16_t>(_listItems.size()); |
| 1060 | } |
| 1061 | else // FileType::file |
| 1062 | { |
| 1063 | // Load or overwrite |
| 1064 | String::set(_currentFilename, std::size(_currentFilename), _listItems[selectedItem].name.c_str()); |
| 1065 | invalidateWidget(WIDX_FILENAME_TEXTBOX); |
| 1066 | |
| 1067 | if (action == LoadSaveAction::save) |
| 1068 | { |
| 1069 | WindowOverwritePromptOpen( |
| 1070 | _listItems[selectedItem].name, _listItems[selectedItem].path, action, type, _trackDesign); |
| 1071 | } |
| 1072 | else |
| 1073 | { |
| 1074 | Select(_listItems[selectedItem].path.c_str(), action, type, _trackDesign); |
| 1075 | } |
| 1076 | } |
| 1077 | } |
| 1078 | |
| 1079 | void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override |
| 1080 | { |
nothing calls this directly
no test coverage detected