Restore 'lastrom' functionality; partially broken in a previous refactoring.

This commit is contained in:
Stephen Anthony 2020-01-22 13:53:17 -03:30
parent 69967fc598
commit 1fc3c62a91
2 changed files with 12 additions and 7 deletions

View File

@ -34,16 +34,19 @@ FileListWidget::FileListWidget(GuiObject* boss, const GUI::Font& font,
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FileListWidget::setDirectory(const FilesystemNode& node, string select) void FileListWidget::setDirectory(const FilesystemNode& node,
const string& select)
{ {
_node = node; _node = node;
// We always want a directory listing // We always want a directory listing
if(!_node.isDirectory() && _node.hasParent()) if(!_node.isDirectory() && _node.hasParent())
{ {
select = _node.getName(); _selectedFile = _node.getName();
_node = _node.getParent(); _node = _node.getParent();
} }
else
_selectedFile = select;
// Initialize history // Initialize history
FilesystemNode tmp = _node; FilesystemNode tmp = _node;
@ -62,11 +65,12 @@ void FileListWidget::setDirectory(const FilesystemNode& node, string select)
_history.reverse(); _history.reverse();
// Finally, go to this location // Finally, go to this location
setLocation(_node, select); setLocation(_node, _selectedFile);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FileListWidget::setLocation(const FilesystemNode& node, const string& select) void FileListWidget::setLocation(const FilesystemNode& node,
const string& select)
{ {
_node = node; _node = node;
@ -90,7 +94,7 @@ void FileListWidget::setLocation(const FilesystemNode& node, const string& selec
void FileListWidget::selectDirectory() void FileListWidget::selectDirectory()
{ {
_history.push(selected().getName()); _history.push(selected().getName());
setLocation(selected()); setLocation(selected(), _selectedFile);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -64,7 +64,7 @@ class FileListWidget : public StringListWidget
will instead be used, and the file will be selected will instead be used, and the file will be selected
@param select An optional entry to select (if applicable) @param select An optional entry to select (if applicable)
*/ */
void setDirectory(const FilesystemNode& node, string select = ""); void setDirectory(const FilesystemNode& node, const string& select = EmptyString);
/** Select parent directory (if applicable) */ /** Select parent directory (if applicable) */
void selectParent(); void selectParent();
@ -83,7 +83,7 @@ class FileListWidget : public StringListWidget
private: private:
/** Very similar to setDirectory(), but also updates the history */ /** Very similar to setDirectory(), but also updates the history */
void setLocation(const FilesystemNode& node, const string& select = EmptyString); void setLocation(const FilesystemNode& node, const string& select);
/** Descend into currently selected directory */ /** Descend into currently selected directory */
void selectDirectory(); void selectDirectory();
@ -99,6 +99,7 @@ class FileListWidget : public StringListWidget
Common::FixedStack<string> _history; Common::FixedStack<string> _history;
uInt32 _selected{0}; uInt32 _selected{0};
string _selectedFile;
string _quickSelectStr; string _quickSelectStr;
uInt64 _quickSelectTime{0}; uInt64 _quickSelectTime{0};