Skip to main content

broot/command/
sel.rs

1/// compute a new selection index for the given list len,
2/// taking into account whether we should cycle or not
3#[must_use]
4pub fn move_sel(
5    selection: usize,
6    len: usize,
7    d: i32, // displacement
8    cycle: bool,
9) -> usize {
10    if len == 0 {
11        return 0;
12    }
13    let ns = (selection as i32) + d;
14    if ns < 0 {
15        if cycle { len - 1 } else { 0 }
16    } else if ns >= len as i32 {
17        if cycle { 0 } else { len - 1 }
18    } else {
19        ns as usize
20    }
21}