diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index ad837e3260998a0f0c5e7c3568436785c0ead031..d46a326d6532990130926b3d732b829eecda144f 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -7599,18 +7599,17 @@ impl Editor { ) } - fn multi_cursor_modifier(invert: bool, modifiers: &Modifiers, cx: &mut Context) -> bool { - let multi_cursor_setting = EditorSettings::get_global(cx).multi_cursor_modifier; - if invert { - match multi_cursor_setting { - MultiCursorModifier::Alt => modifiers.alt, - MultiCursorModifier::CmdOrCtrl => modifiers.secondary(), - } - } else { - match multi_cursor_setting { - MultiCursorModifier::Alt => modifiers.secondary(), - MultiCursorModifier::CmdOrCtrl => modifiers.alt, - } + fn is_cmd_or_ctrl_pressed(modifiers: &Modifiers, cx: &mut Context) -> bool { + match EditorSettings::get_global(cx).multi_cursor_modifier { + MultiCursorModifier::Alt => modifiers.secondary(), + MultiCursorModifier::CmdOrCtrl => modifiers.alt, + } + } + + fn is_alt_pressed(modifiers: &Modifiers, cx: &mut Context) -> bool { + match EditorSettings::get_global(cx).multi_cursor_modifier { + MultiCursorModifier::Alt => modifiers.alt, + MultiCursorModifier::CmdOrCtrl => modifiers.secondary(), } } @@ -7619,9 +7618,9 @@ impl Editor { cx: &mut Context, ) -> Option { if modifiers.shift && modifiers.number_of_modifiers() == 2 { - if Self::multi_cursor_modifier(false, modifiers, cx) { + if Self::is_cmd_or_ctrl_pressed(modifiers, cx) { Some(ColumnarMode::FromMouse) - } else if Self::multi_cursor_modifier(true, modifiers, cx) { + } else if Self::is_alt_pressed(modifiers, cx) { Some(ColumnarMode::FromSelection) } else { None diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index a77a868c46a0d907793b00b0acca41651166b5bf..505d7860c6b8f605ed0bc15181f507aa0fe0a9f1 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -820,7 +820,7 @@ impl EditorElement { editor.select( SelectPhase::Begin { position, - add: Editor::multi_cursor_modifier(true, &modifiers, cx), + add: Editor::is_alt_pressed(&modifiers, cx), click_count, }, window, @@ -1004,7 +1004,7 @@ impl EditorElement { let text_hitbox = &position_map.text_hitbox; let pending_nonempty_selections = editor.has_pending_nonempty_selection(); - let hovered_link_modifier = Editor::multi_cursor_modifier(false, &event.modifiers(), cx); + let hovered_link_modifier = Editor::is_cmd_or_ctrl_pressed(&event.modifiers(), cx); if let Some(mouse_position) = event.mouse_position() && !pending_nonempty_selections diff --git a/crates/editor/src/hover_links.rs b/crates/editor/src/hover_links.rs index f36c82b20277fc748620928e6d7fc49a2b20cd3e..03fce48f146fbfa3bdab93937038c4101a04a484 100644 --- a/crates/editor/src/hover_links.rs +++ b/crates/editor/src/hover_links.rs @@ -116,7 +116,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - let hovered_link_modifier = Editor::multi_cursor_modifier(false, &modifiers, cx); + let hovered_link_modifier = Editor::is_cmd_or_ctrl_pressed(&modifiers, cx); if !hovered_link_modifier || self.has_pending_selection() { self.hide_hovered_link(cx); return; @@ -241,8 +241,8 @@ impl Editor { } }) .collect(); - let navigate_task = - self.navigate_to_hover_links(None, links, modifiers.alt, window, cx); + let split = Self::is_alt_pressed(&modifiers, cx); + let navigate_task = self.navigate_to_hover_links(None, links, split, window, cx); self.select(SelectPhase::End, window, cx); return navigate_task; } @@ -261,7 +261,8 @@ impl Editor { ); let navigate_task = if point.as_valid().is_some() { - match (modifiers.shift, modifiers.alt) { + let split = Self::is_alt_pressed(&modifiers, cx); + match (modifiers.shift, split) { (true, true) => { self.go_to_type_definition_split(&GoToTypeDefinitionSplit, window, cx) }