Fix T53476: File Browser: Selection Issue with 'fill' option.

Fill-selection would only go upward in list of items to find an already
selected one and fill-select all items in-between. Now, in case upward
search fails, it will also intent to go downward, effectiviely allowing
to 'fill-select' from bottom to top.

Note that top-to-bottom keeps priority (i.e. if a top-to-bottom
fill-selection is possible, it will always happen, even if a
bottom-to-top one is also possible).
This commit is contained in:
Bastien Montagne 2017-12-05 22:34:49 +01:00
parent 855799ecc1
commit ee120d6293
Notes: blender-bot 2023-03-24 17:05:22 +01:00
Referenced by issue #53476, File Browser: Selection Issue
1 changed files with 13 additions and 3 deletions

View File

@ -151,15 +151,25 @@ static FileSelection file_selection_get(bContext *C, const rcti *rect, bool fill
/* if desired, fill the selection up from the last selected file to the current one */
if (fill && (sel.last >= 0) && (sel.last < numfiles) ) {
int f = sel.last;
while (f >= 0) {
int f;
/* Try to find a smaller-index selected item. */
for (f = sel.last; f >= 0; f--) {
if (filelist_entry_select_index_get(sfile->files, f, CHECK_ALL) )
break;
f--;
}
if (f >= 0) {
sel.first = f + 1;
}
/* If none found, try to find a higher-index selected item. */
else {
for (f = sel.first; f < numfiles; f++) {
if (filelist_entry_select_index_get(sfile->files, f, CHECK_ALL) )
break;
}
if (f < numfiles) {
sel.last = f - 1;
}
}
}
return sel;
}