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:
parent
855799ecc1
commit
ee120d6293
Notes:
blender-bot
2023-03-24 17:05:22 +01:00
Referenced by issue #53476, File Browser: Selection Issue
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue