fix mouse selection
[?]
Jul 25, 2025, 8:40 AM
NZD56PVBVHARAQD7JNXE2F3DRT4S2NNRDHVVJTKTQK474LDMVIXQCDependencies
- [2]
L6KSEFQImove cursor related stuff into its module - [3]
KWTBNTO3diffs selection and scrolling - [4]
KQABQCCZupdate rust to 1.88 - [5]
RDRBP7ALauto-scroll status selection - [6]
UR4J677Rnav for log changes and refactors - [7]
JZXYSIYDchannel selection! - [8]
VJNWIGSXclippy - [9]
YKHE3XMWrefactor diffs handling - [10]
4PNWU55Oreplace the circular hor navigation - [11]
5MUEECMJsmooth scrolling nav - [12]
K63JN6CRrefactor out non-view field from cursor - [*]
WT3GA27Padd cursor with selection
Change contents
- replacement in inflorescence/src/selection.rs at line 1252
fn select_exact<M>(fn select_exact( - replacement in inflorescence/src/selection.rs at line 1257
files_diffs: &diff::FilesState,logs: &diff::LogFilesAndState,) -> Task<M> {files_diffs: &mut diff::FilesState,logs: &mut diff::LogFilesAndState,) -> Task<crate::Msg> { - replacement in inflorescence/src/selection.rs at line 1262
status_nav: _,status_nav, - replacement in inflorescence/src/selection.rs at line 1281
let task = if is_diff_scrollablelet scroll_task = if is_diff_scrollable - replacement in inflorescence/src/selection.rs at line 1291[3.47252]→[3.47252:47266](∅→∅),[3.47266]→[7.17223:17268](∅→∅),[7.17268]→[3.47314:47462](∅→∅),[3.47314]→[3.47314:47462](∅→∅)
(Some(Status::UntrackedFile {ix,path,diff_selected: false,}),task,)let (selection, selection_task) = untracked_file_selection(repo_state,status_nav,ix,files,files_diffs,VertDir::Down,);(Some(selection), Task::batch([scroll_task, selection_task])) - replacement in inflorescence/src/selection.rs at line 1316
let task = if is_diff_scrollablelet scroll_task = if is_diff_scrollable - replacement in inflorescence/src/selection.rs at line 1326[3.48613]→[3.48613:48627](∅→∅),[3.48627]→[7.17269:17312](∅→∅),[7.17312]→[3.48673:48821](∅→∅),[3.48673]→[3.48673:48821](∅→∅)
(Some(Status::ChangedFile {ix,path,diff_selected: false,}),task,)let (selection, selection_task) = changed_file_selection(repo_state,status_nav,ix,files,files_diffs,VertDir::Down,);(Some(selection), Task::batch([scroll_task, selection_task]))}Select::LogChange {ix,hash: _,message: _,} => {let (selection, task) =log_selection(status_nav, logs, repo_state, ix, VertDir::Down);(Some(selection), task) - edit in inflorescence/src/selection.rs at line 1346[2.23144]→[3.48822:48875](∅→∅),[3.48875]→[7.17313:17350](∅→∅),[7.17350]→[3.48915:49063](∅→∅),[3.48915]→[3.48915:49063](∅→∅)
Select::LogChange { ix, hash, message } => (Some(Status::LogChange {ix,hash,message,file: None,}),Task::none(),), - replacement in inflorescence/src/selection.rs at line 1349
ix: change_ix,ix: log_ix, - edit in inflorescence/src/selection.rs at line 1354
let log_entry = repo_state.log.get(log_ix).unwrap(); - replacement in inflorescence/src/selection.rs at line 1361
let task = if diff_selectedlet scroll_task = if diff_selected - replacement in inflorescence/src/selection.rs at line 1371[3.50249]→[3.50249:50441](∅→∅),[3.50441]→[2.24714:24736](∅→∅),[2.24714]→[2.24714:24736](∅→∅),[2.24736]→[7.17438:17487](∅→∅),[7.17487]→[3.50442:50485](∅→∅),[2.24788]→[3.50442:50485](∅→∅),[3.50485]→[2.24820:24891](∅→∅),[2.24820]→[2.24820:24891](∅→∅),[2.24891]→[3.50486:50532](∅→∅),[3.50532]→[2.24972:25052](∅→∅),[2.24972]→[2.24972:25052](∅→∅)
let file = LogChangeFileSelection {ix: file_ix,path,diff_selected: false,};(Some(Status::LogChange {ix: change_ix,hash,message,file: Some(file),}),task,)let (file, selection_task) =log_file_selection(logs, log_entry, hash, file_ix);let selection = Some(Status::LogChange {ix: log_ix,hash,message,file: Some(file),});(selection, Task::batch([selection_task, scroll_task])) - replacement in inflorescence/src/selection.rs at line 1595
let nav_task = match (logs.diffs.get(&id_hash), logs.diffs_nav.as_ref()) {(Some(diff), Some((nav_id_hash, _nav))) if *nav_id_hash != id_hash => {let contents_count = diff::contents_count(&diff.file);// Init log change diff navlet (nav, tasks) =iced_nav_scrollable::init(contents_count, HashSet::new());logs.diffs_nav = Some((id_hash, nav));tasks.map(move |msg| {crate::Msg::View(app::Msg::LogChangeFileDiff {id_hash,msg: diff::Msg::DiffNav(msg),let nav_task = match logs.diffs.get(&id_hash) {Some(diff) => {let needs_new_nav = logs.diffs_nav.is_none()|| logs.diffs_nav.as_ref().map(|(nav_id_hash, _nav)| *nav_id_hash != id_hash).unwrap_or_default();if needs_new_nav {let contents_count = diff::contents_count(&diff.file);// Init log change diff navlet (nav, tasks) =iced_nav_scrollable::init(contents_count, HashSet::new());logs.diffs_nav = Some((id_hash, nav));tasks.map(move |msg| {crate::Msg::View(app::Msg::LogChangeFileDiff {id_hash,msg: diff::Msg::DiffNav(msg),}) - replacement in inflorescence/src/selection.rs at line 1615
})} else {Task::none()} - replacement in inflorescence/src/selection.rs at line 1619
_ => {None => {