mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-30 14:34:22 +01:00
browser fix
This commit is contained in:
parent
d0813f8281
commit
4570bac667
@ -542,40 +542,7 @@ bool ParseDirEntries()
|
|||||||
|
|
||||||
// Sort the file list
|
// Sort the file list
|
||||||
if(i >= 0)
|
if(i >= 0)
|
||||||
{
|
|
||||||
qsort(browserList, browser.numEntries+i, sizeof(BROWSERENTRY), FileSortCallback);
|
qsort(browserList, browser.numEntries+i, sizeof(BROWSERENTRY), FileSortCallback);
|
||||||
}
|
|
||||||
|
|
||||||
// try to find and select the last loaded file
|
|
||||||
if(selectLoadedFile == 1 && res != 0 && loadedFile[0] != 0 && browser.dir[0] != 0)
|
|
||||||
{
|
|
||||||
int indexFound = -1;
|
|
||||||
|
|
||||||
for(int j=1; j < browser.numEntries + i; j++)
|
|
||||||
{
|
|
||||||
if(strcmp(browserList[j].filename, loadedFile) == 0)
|
|
||||||
{
|
|
||||||
indexFound = j;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// move to this file
|
|
||||||
if(indexFound > 0)
|
|
||||||
{
|
|
||||||
if(indexFound > FILE_PAGESIZE)
|
|
||||||
{
|
|
||||||
browser.pageIndex = (ceil(indexFound/FILE_PAGESIZE*1.0)) * FILE_PAGESIZE;
|
|
||||||
|
|
||||||
if(browser.pageIndex + FILE_PAGESIZE > browser.numEntries + i)
|
|
||||||
{
|
|
||||||
browser.pageIndex = browser.numEntries + i - FILE_PAGESIZE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
browser.selIndex = indexFound;
|
|
||||||
}
|
|
||||||
selectLoadedFile = 2; // selecting done
|
|
||||||
}
|
|
||||||
|
|
||||||
browser.numEntries += i;
|
browser.numEntries += i;
|
||||||
|
|
||||||
@ -583,6 +550,41 @@ bool ParseDirEntries()
|
|||||||
{
|
{
|
||||||
dirclose(dirIter); // close directory
|
dirclose(dirIter); // close directory
|
||||||
dirIter = NULL;
|
dirIter = NULL;
|
||||||
|
|
||||||
|
// try to find and select the last loaded file
|
||||||
|
if(selectLoadedFile == 1 && parseHalt == 0 && loadedFile[0] != 0 && browser.dir[0] != 0)
|
||||||
|
{
|
||||||
|
int indexFound = -1;
|
||||||
|
|
||||||
|
for(int j=1; j < browser.numEntries; j++)
|
||||||
|
{
|
||||||
|
if(strcmp(browserList[j].filename, loadedFile) == 0)
|
||||||
|
{
|
||||||
|
indexFound = j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// move to this file
|
||||||
|
if(indexFound > 0)
|
||||||
|
{
|
||||||
|
if(indexFound >= FILE_PAGESIZE)
|
||||||
|
{
|
||||||
|
int newIndex = (floor(indexFound/(float)FILE_PAGESIZE)) * FILE_PAGESIZE;
|
||||||
|
|
||||||
|
if(newIndex + FILE_PAGESIZE > browser.numEntries)
|
||||||
|
newIndex = browser.numEntries - FILE_PAGESIZE;
|
||||||
|
|
||||||
|
if(newIndex < 0)
|
||||||
|
newIndex = 0;
|
||||||
|
|
||||||
|
browser.pageIndex = newIndex;
|
||||||
|
}
|
||||||
|
browser.selIndex = indexFound;
|
||||||
|
}
|
||||||
|
selectLoadedFile = 2; // selecting done
|
||||||
|
}
|
||||||
|
|
||||||
return false; // no more entries
|
return false; // no more entries
|
||||||
}
|
}
|
||||||
return true; // more entries
|
return true; // more entries
|
||||||
|
@ -199,6 +199,14 @@ void GuiFileBrowser::ResetState()
|
|||||||
|
|
||||||
void GuiFileBrowser::TriggerUpdate()
|
void GuiFileBrowser::TriggerUpdate()
|
||||||
{
|
{
|
||||||
|
int newIndex = browser.selIndex-browser.pageIndex;
|
||||||
|
|
||||||
|
if(newIndex >= FILE_PAGESIZE)
|
||||||
|
newIndex = FILE_PAGESIZE-1;
|
||||||
|
else if(newIndex < 0)
|
||||||
|
newIndex = 0;
|
||||||
|
|
||||||
|
selectedItem = newIndex;
|
||||||
listChanged = true;
|
listChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user