Fix buttons and labels of pages>1 in file picker

This commit is contained in:
2025-03-08 10:45:46 -06:00
committed by Celtic Minstrel
parent 87ee60d0b4
commit fd9ac5ab04

View File

@@ -1826,6 +1826,47 @@ class cFilePicker {
cStack& stk = get_stack(); cStack& stk = get_stack();
int num_pages = ceil((float)save_file_mtimes.size() / parties_per_page); int num_pages = ceil((float)save_file_mtimes.size() / parties_per_page);
stk.setPageCount(num_pages); stk.setPageCount(num_pages);
// HACK: For some reason which should be fixed, the buttons and labels on subsequent pages
// aren't getting text on the static buttons and labels
std::string save_button_text = me["save1"].getText();
std::string ext_label_text = me["file1-extension-label"].getText();
std::string load_button_text = me["load1"].getText();
std::string auto_button_text = me["auto1"].getText();
std::string newer_label_text = me["auto1-more-recent"].getText();
for(int i = 0; i < stk.getPageCount(); ++i){
stk.setPage(i);
if(saving){
me["title-load"].hide();
me["title-auto"].hide();
me["file1"].setText(""); // Keep the frame
me["file1-extension-label"].setText(ext_label_text);
for(int i = 0; i < SLOTS_PER_PAGE; ++i){
me["save" + std::to_string(i+1)].setText(save_button_text);
me["load" + std::to_string(i+1)].hide();
}
}else{
if(picking_auto){
me["title-load"].hide();
std::string title = me["title-auto"].getText();
fs::path party_name = save_folder.filename();
party_name.replace_extension();
boost::replace_first(title, "{Folder}", party_name.string());
me["title-auto"].setText(title);
}else{
me["title-auto"].hide();
}
me["title-save"].hide();
me["file1-field"].hide();
me["file1-extension-label"].hide();
for(int i = 0; i < SLOTS_PER_PAGE; ++i){
me["save" + std::to_string(i+1)].hide();
me["load" + std::to_string(i+1)].setText(load_button_text);
me["auto" + std::to_string(i+1)].setText(auto_button_text);
me["auto" + std::to_string(i+1) + "-more-recent"].setText(newer_label_text);
}
}
}
stk.setPage(0);
} }
void empty_slot(int idx) { void empty_slot(int idx) {
@@ -2083,32 +2124,6 @@ public:
fs::path run() { fs::path run() {
template_info_str = me["info1"].getText(); template_info_str = me["info1"].getText();
if(saving){
me["title-load"].hide();
me["title-auto"].hide();
me["file1"].setText(""); // Keep the frame
for(int i = 0; i < SLOTS_PER_PAGE; ++i){
me["load" + std::to_string(i+1)].hide();
}
}else{
if(picking_auto){
me["title-load"].hide();
std::string title = me["title-auto"].getText();
fs::path party_name = save_folder.filename();
party_name.replace_extension();
boost::replace_first(title, "{Folder}", party_name.string());
me["title-auto"].setText(title);
}else{
me["title-auto"].hide();
}
me["title-save"].hide();
me["file1-field"].hide();
me["file1-extension-label"].hide();
for(int i = 0; i < SLOTS_PER_PAGE; ++i){
me["save" + std::to_string(i+1)].hide();
}
}
me["cancel"].attachClickHandler(std::bind(&cFilePicker::doCancel, this)); me["cancel"].attachClickHandler(std::bind(&cFilePicker::doCancel, this));
me["find"].attachClickHandler(std::bind(&cFilePicker::doFileBrowser, this)); me["find"].attachClickHandler(std::bind(&cFilePicker::doFileBrowser, this));
// Since it would be crazy to record and replay the metadata shown on a player's save picker // Since it would be crazy to record and replay the metadata shown on a player's save picker