nav-scrollable: set skip-able sections

[?]
Jul 5, 2025, 9:19 AM
GOLHUD6RCYCO2SPULCFGWIW3ALBDODNEMUHVAKCDWYQREKWGFTLQC

Dependencies

  • [2] QMAUTRB6 refactor diff
  • [3] DCSUCH6R add undecoded diff view, improve decoded view style
  • [4] BFN2VHZS refactor file stuff into sub-mod
  • [5] 23SFYK4Q big view refactor into a new crate
  • [6] WW36JYLR add iced_nav_scrollable widget crate
  • [7] WIFVLV37 nav-scrollabe: detect size to determine if needs scrolling, msg when ready
  • [8] SASAN2XC use nav-scrollable
  • [9] YKHE3XMW refactor diffs handling
  • [10] ACDXXAX2 refactor main's updates into smaller fns
  • [11] KEPKF3WO unify diffs handling, simplify view
  • [*] 6YZAVBWU Initial commit
  • [*] MJDGPSHG WIP contents diff

Change contents

  • replacement in inflorescence/src/main.rs at line 186
    [8.2762][8.2762:2834]()
    if let Some(file::Loaded { id, contents_count }) = loaded {
    [8.2762]
    [8.2834]
    if let Some(file::Loaded {
    id,
    contents_count,
    unchanged_sections,
    }) = loaded
    {
  • replacement in inflorescence/src/main.rs at line 194
    [9.3531][8.2937:3015](),[8.2937][8.2937:3015]()
    let (nav, tasks) = iced_nav_scrollable::init(contents_count);
    [9.3531]
    [8.3015]
    let (nav, tasks) = iced_nav_scrollable::init(
    contents_count,
    unchanged_sections,
    );
  • replacement in inflorescence/src/main.rs at line 754
    [9.5348][9.5348:5450]()
    let (nav, nav_tasks) =
    iced_nav_scrollable::init(contents_count);
    [9.5348]
    [9.5450]
    let unchanged_sections = diff::unchanged_sections(&diff);
    let (nav, nav_tasks) = iced_nav_scrollable::init(
    contents_count,
    unchanged_sections,
    );
  • edit in inflorescence/src/file.rs at line 11
    [4.1946]
    [4.1946]
    use std::collections::HashSet;
  • edit in inflorescence/src/file.rs at line 96
    [8.7803]
    [8.7803]
    pub unchanged_sections: HashSet<usize>,
  • edit in inflorescence/src/file.rs at line 124
    [8.7992]
    [8.7992]
    let unchanged_sections =
    diff::unchanged_sections(&file_diff);
  • replacement in inflorescence/src/file.rs at line 133
    [8.8036][8.8036:8104]()
    return Some(Loaded { id, contents_count });
    [8.8036]
    [4.5304]
    return Some(Loaded {
    id,
    contents_count,
    unchanged_sections,
    });
  • edit in inflorescence/src/file.rs at line 147
    [8.8220]
    [8.8220]
    let skip_sections =
    diff::unchanged_sections(&file_diff);
  • replacement in inflorescence/src/file.rs at line 156
    [8.8268][8.8268:8340]()
    return Some(Loaded { id, contents_count });
    [8.8268]
    [4.5856]
    return Some(Loaded {
    id,
    contents_count,
    unchanged_sections: skip_sections,
    });
  • edit in inflorescence/src/diff.rs at line 17
    [5.29153]
    [3.287]
    use std::collections::HashSet;
  • edit in inflorescence/src/diff.rs at line 169
    [8.9076]
    [2.8673]
    /// Get indices of unchanged sections that are less relevant than the actual
    /// changes
    pub fn unchanged_sections(diff: &File) -> HashSet<usize> {
    match diff {
    File::Decoded(file) => file
    .combined
    .sections
    .iter()
    .enumerate()
    .filter_map(|(ix, section)| match section {
    Section::Unchanged(_) => Some(ix),
    Section::Changed { .. } => None,
    })
    .collect(),
    File::Undecodable(_file) => HashSet::new(),
    }
    }
  • edit in iced_nav_scrollable/src/lib.rs at line 3
    [6.189]
    [8.11738]
    use std::collections::HashSet;
  • edit in iced_nav_scrollable/src/lib.rs at line 21
    [7.277]
    [7.277]
    /// Indices of sections that should be skipped on scroll
    pub skip_sections: HashSet<usize>,
  • replacement in iced_nav_scrollable/src/lib.rs at line 49
    [6.720][6.720:787]()
    pub fn init(contents_count: usize) -> (NavScrollable, Task<Msg>) {
    [6.720]
    [7.580]
    pub fn init(
    contents_count: usize,
    skip_sections: HashSet<usize>,
    ) -> (NavScrollable, Task<Msg>) {
  • edit in iced_nav_scrollable/src/lib.rs at line 91
    [7.1425]
    [7.1425]
    skip_sections,