Ctrl+click should toggle selection

This commit is contained in:
Jason Rodney Hansen 2024-05-26 19:50:41 -06:00 committed by Jeremy Soller
parent 8351678822
commit d756bdf2e9

View file

@ -979,14 +979,18 @@ impl Tab {
&& self.dialog.as_ref().map_or(true, |x| x.multiple()); && self.dialog.as_ref().map_or(true, |x| x.multiple());
match message { match message {
Message::ClickRelease(click_i_opt) => { Message::ClickRelease(click_i_opt) => {
if click_i_opt != self.clicked.take() { if click_i_opt == self.clicked.take() {
return commands; return commands;
} }
self.context_menu = None; self.context_menu = None;
if let Some(l) = self.items_opt.as_mut() { if let Some(ref mut items) = self.items_opt {
for item in l.iter_mut().enumerate() { for (i, item) in items.iter_mut().enumerate() {
if Some(item.0) != click_i_opt { if mod_ctrl {
item.1.selected = false; if Some(i) == click_i_opt && item.selected {
item.selected = false;
}
} else if Some(i) != click_i_opt {
item.selected = false;
} }
} }
} }
@ -1015,7 +1019,7 @@ impl Tab {
} }
Message::Click(click_i_opt) => { Message::Click(click_i_opt) => {
self.context_menu = None; self.context_menu = None;
if !mod_ctrl { if click_i_opt.is_none() {
self.clicked = click_i_opt; self.clicked = click_i_opt;
} }
let dont_unset = mod_ctrl let dont_unset = mod_ctrl
@ -1039,8 +1043,14 @@ impl Tab {
} }
} }
} }
item.selected = true; if !item.selected {
} else if !dont_unset { self.clicked = click_i_opt;
item.selected = true;
}
self.selected_clicked = true;
} else if !dont_unset && item.selected {
self.clicked = click_i_opt;
item.selected = false; item.selected = false;
} }
} }