diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 407cea2f9a..405d47f233 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -2059,7 +2059,7 @@ impl Editor { } }); if active { - editor.show_mouse_cursor(); + editor.show_mouse_cursor(cx); } }), ], @@ -2312,12 +2312,15 @@ impl Editor { key_context } - fn show_mouse_cursor(&mut self) { - self.mouse_cursor_hidden = false; + fn show_mouse_cursor(&mut self, cx: &mut Context) { + if self.mouse_cursor_hidden { + self.mouse_cursor_hidden = false; + cx.notify(); + } } - pub fn hide_mouse_cursor(&mut self, origin: &HideMouseCursorOrigin) { - self.mouse_cursor_hidden = match origin { + pub fn hide_mouse_cursor(&mut self, origin: HideMouseCursorOrigin, cx: &mut Context) { + let hide_mouse_cursor = match origin { HideMouseCursorOrigin::TypingAction => { matches!( self.hide_mouse_mode, @@ -2328,6 +2331,10 @@ impl Editor { matches!(self.hide_mouse_mode, HideMouseMode::OnTypingAndMovement) } }; + if self.mouse_cursor_hidden != hide_mouse_cursor { + self.mouse_cursor_hidden = hide_mouse_cursor; + cx.notify(); + } } pub fn edit_prediction_in_conflict(&self) -> bool { @@ -3768,7 +3775,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let selections = self.selections.all_adjusted(cx); let mut bracket_inserted = false; @@ -4191,7 +4198,7 @@ impl Editor { } pub fn newline(&mut self, _: &Newline, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { let (edits_with_flags, selection_info): (Vec<_>, Vec<_>) = { let selections = this.selections.all::(cx); @@ -4463,7 +4470,7 @@ impl Editor { } pub fn newline_above(&mut self, _: &NewlineAbove, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let buffer = self.buffer.read(cx); let snapshot = buffer.snapshot(cx); @@ -4522,7 +4529,7 @@ impl Editor { } pub fn newline_below(&mut self, _: &NewlineBelow, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let buffer = self.buffer.read(cx); let snapshot = buffer.snapshot(cx); @@ -5537,7 +5544,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.do_completion(action.item_ix, CompletionIntent::Complete, window, cx) } @@ -5547,7 +5554,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.do_completion(None, CompletionIntent::CompleteWithInsert, window, cx) } @@ -5557,7 +5564,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.do_completion(None, CompletionIntent::CompleteWithReplace, window, cx) } @@ -5567,7 +5574,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.do_completion(action.item_ix, CompletionIntent::Compose, window, cx) } @@ -5996,7 +6003,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let actions_menu = if let CodeContextMenu::CodeActions(menu) = self.hide_context_menu(window, cx)? { @@ -9362,7 +9369,7 @@ impl Editor { } pub fn backspace(&mut self, _: &Backspace, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.select_autoclose_pair(window, cx); let mut linked_ranges = HashMap::<_, Vec<_>>::default(); @@ -9457,7 +9464,7 @@ impl Editor { } pub fn delete(&mut self, _: &Delete, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { @@ -9475,7 +9482,7 @@ impl Editor { } pub fn backtab(&mut self, _: &Backtab, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); if self.move_to_prev_snippet_tabstop(window, cx) { return; } @@ -9484,13 +9491,13 @@ impl Editor { pub fn tab(&mut self, _: &Tab, window: &mut Window, cx: &mut Context) { if self.move_to_next_snippet_tabstop(window, cx) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); return; } if self.read_only(cx) { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let mut selections = self.selections.all_adjusted(cx); let buffer = self.buffer.read(cx); let snapshot = buffer.snapshot(cx); @@ -9603,7 +9610,7 @@ impl Editor { if self.read_only(cx) { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let mut selections = self.selections.all::(cx); let mut prev_edited_row = 0; let mut row_delta = 0; @@ -9708,7 +9715,7 @@ impl Editor { if self.read_only(cx) { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let selections = self.selections.all::(cx); let mut deletion_ranges = Vec::new(); @@ -9782,7 +9789,7 @@ impl Editor { if self.read_only(cx) { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let selections = self .selections .all::(cx) @@ -9801,7 +9808,7 @@ impl Editor { } pub fn delete_line(&mut self, _: &DeleteLine, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let selections = self.selections.all::(cx); @@ -9950,7 +9957,7 @@ impl Editor { } pub fn join_lines(&mut self, _: &JoinLines, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.join_lines_impl(true, window, cx); } @@ -10012,7 +10019,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let mut buffer_ids = HashSet::default(); let snapshot = self.buffer().read(cx).snapshot(cx); for selection in self.selections.all::(cx) { @@ -10029,7 +10036,7 @@ impl Editor { } pub fn git_restore(&mut self, _: &Restore, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let selections = self .selections .all(cx) @@ -10453,7 +10460,7 @@ impl Editor { ) where Fn: FnMut(&mut Vec<&str>), { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = self.buffer.read(cx).snapshot(cx); @@ -10778,7 +10785,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = &display_map.buffer_snapshot; @@ -10864,7 +10871,7 @@ impl Editor { } pub fn move_line_up(&mut self, _: &MoveLineUp, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = self.buffer.read(cx).snapshot(cx); @@ -10971,7 +10978,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = self.buffer.read(cx).snapshot(cx); @@ -11063,7 +11070,7 @@ impl Editor { } pub fn transpose(&mut self, _: &Transpose, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let text_layout_details = &self.text_layout_details(window); self.transact(window, cx, |this, window, cx| { let edits = this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { @@ -11121,7 +11128,7 @@ impl Editor { } pub fn rewrap(&mut self, _: &Rewrap, _: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.rewrap_impl(RewrapOptions::default(), cx) } @@ -11374,13 +11381,13 @@ impl Editor { } pub fn cut(&mut self, _: &Cut, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let item = self.cut_common(window, cx); cx.write_to_clipboard(item); } pub fn kill_ring_cut(&mut self, _: &KillRingCut, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.change_selections(None, window, cx, |s| { s.move_with(|snapshot, sel| { if sel.is_empty() { @@ -11398,7 +11405,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let (text, metadata) = if let Some(KillRing(item)) = cx.try_global() { if let Some(ClipboardEntry::String(kill_ring)) = item.entries().first() { (kill_ring.text().to_string(), kill_ring.metadata_json()) @@ -11595,7 +11602,7 @@ impl Editor { } pub fn paste(&mut self, _: &Paste, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); if let Some(item) = cx.read_from_clipboard() { let entries = item.entries(); @@ -11620,7 +11627,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); if let Some(transaction_id) = self.buffer.update(cx, |buffer, cx| buffer.undo(cx)) { if let Some((selections, _)) = @@ -11650,7 +11657,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); if let Some(transaction_id) = self.buffer.update(cx, |buffer, cx| buffer.redo(cx)) { if let Some((_, Some(selections))) = @@ -11685,7 +11692,7 @@ impl Editor { } pub fn move_left(&mut self, _: &MoveLeft, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { let cursor = if selection.is_empty() { @@ -11699,14 +11706,14 @@ impl Editor { } pub fn select_left(&mut self, _: &SelectLeft, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| (movement::left(map, head), SelectionGoal::None)); }) } pub fn move_right(&mut self, _: &MoveRight, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { let cursor = if selection.is_empty() { @@ -11720,7 +11727,7 @@ impl Editor { } pub fn select_right(&mut self, _: &SelectRight, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| (movement::right(map, head), SelectionGoal::None)); }) @@ -11736,7 +11743,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); let selection_count = self.selections.count(); @@ -11779,7 +11786,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); @@ -11816,7 +11823,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); @@ -11844,7 +11851,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, goal| { @@ -11859,7 +11866,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, goal| { @@ -11878,7 +11885,7 @@ impl Editor { return; }; - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); @@ -11918,7 +11925,7 @@ impl Editor { return; }; - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let autoscroll = if action.center_cursor { Autoscroll::center() @@ -11947,7 +11954,7 @@ impl Editor { } pub fn select_up(&mut self, _: &SelectUp, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, goal| { @@ -11964,7 +11971,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); let selection_count = self.selections.count(); @@ -12002,7 +12009,7 @@ impl Editor { return; }; - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); @@ -12042,7 +12049,7 @@ impl Editor { return; }; - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let autoscroll = if action.center_cursor { Autoscroll::center() @@ -12070,7 +12077,7 @@ impl Editor { } pub fn select_down(&mut self, _: &SelectDown, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let text_layout_details = &self.text_layout_details(window); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, goal| { @@ -12129,7 +12136,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { ( @@ -12146,7 +12153,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { ( @@ -12163,7 +12170,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12180,7 +12187,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12197,7 +12204,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.select_autoclose_pair(window, cx); this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { @@ -12222,7 +12229,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.select_autoclose_pair(window, cx); this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { @@ -12243,7 +12250,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { (movement::next_word_end(map, head), SelectionGoal::None) @@ -12257,7 +12264,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { (movement::next_subword_end(map, head), SelectionGoal::None) @@ -12271,7 +12278,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { (movement::next_word_end(map, head), SelectionGoal::None) @@ -12285,7 +12292,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { (movement::next_subword_end(map, head), SelectionGoal::None) @@ -12299,7 +12306,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { @@ -12323,7 +12330,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { @@ -12343,7 +12350,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { ( @@ -12365,7 +12372,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12387,7 +12394,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|_, selection| { @@ -12413,7 +12420,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_cursors_with(|map, head, _| { ( @@ -12430,7 +12437,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12447,7 +12454,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.select_to_end_of_line( &SelectToEndOfLine { @@ -12466,7 +12473,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { this.select_to_end_of_line( &SelectToEndOfLine { @@ -12489,7 +12496,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { selection.collapse_to( @@ -12510,7 +12517,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { selection.collapse_to( @@ -12531,7 +12538,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12552,7 +12559,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12573,7 +12580,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { selection.collapse_to( @@ -12623,7 +12630,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { selection.collapse_to( @@ -12648,7 +12655,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_with(|map, selection| { selection.collapse_to( @@ -12673,7 +12680,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12694,7 +12701,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12715,7 +12722,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12736,7 +12743,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_heads_with(|map, head, _| { ( @@ -12757,7 +12764,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.select_ranges(vec![0..0]); }); @@ -12771,7 +12778,7 @@ impl Editor { ) { let mut selection = self.selections.last::(cx); selection.set_head(Point::zero(), SelectionGoal::None); - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.select(vec![selection]); }); @@ -12782,7 +12789,7 @@ impl Editor { cx.propagate(); return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let cursor = self.buffer.read(cx).read(cx).len(); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.select_ranges(vec![cursor..cursor]) @@ -12839,7 +12846,7 @@ impl Editor { } pub fn select_to_end(&mut self, _: &SelectToEnd, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let buffer = self.buffer.read(cx).snapshot(cx); let mut selection = self.selections.first::(cx); selection.set_head(buffer.len(), SelectionGoal::None); @@ -12849,7 +12856,7 @@ impl Editor { } pub fn select_all(&mut self, _: &SelectAll, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let end = self.buffer.read(cx).read(cx).len(); self.change_selections(None, window, cx, |s| { s.select_ranges(vec![0..end]); @@ -12857,7 +12864,7 @@ impl Editor { } pub fn select_line(&mut self, _: &SelectLine, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let mut selections = self.selections.all::(cx); let max_point = display_map.buffer_snapshot.max_point(); @@ -12928,7 +12935,7 @@ impl Editor { } fn add_selection(&mut self, above: bool, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let all_selections = self.selections.all::(cx); @@ -13258,7 +13265,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Result<()> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); @@ -13311,7 +13318,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Result<()> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); self.select_next_match_internal( &display_map, @@ -13329,7 +13336,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Result<()> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = &display_map.buffer_snapshot; let mut selections = self.selections.all::(cx); @@ -13522,7 +13529,7 @@ impl Editor { if self.read_only(cx) { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let text_layout_details = &self.text_layout_details(window); self.transact(window, cx, |this, window, cx| { let mut selections = this.selections.all::(cx); @@ -13822,7 +13829,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let buffer = self.buffer.read(cx).snapshot(cx); let old_selections = self.selections.all::(cx).into_boxed_slice(); @@ -13885,7 +13892,7 @@ impl Editor { return; } - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); let buffer = self.buffer.read(cx).snapshot(cx); @@ -14016,7 +14023,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); if let Some((mut selections, scroll_behavior, is_selection_reversed)) = self.select_syntax_node_history.pop() @@ -14290,7 +14297,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.change_selections(Some(Autoscroll::fit()), window, cx, |s| { s.move_offsets_with(|snapshot, selection| { let Some(enclosing_bracket_ranges) = @@ -14347,7 +14354,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); if let Some(entry) = self.selection_history.undo_stack.pop_back() { self.selection_history.mode = SelectionHistoryMode::Undoing; self.with_selection_effects_deferred(window, cx, |this, window, cx| { @@ -14370,7 +14377,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); if let Some(entry) = self.selection_history.redo_stack.pop_back() { self.selection_history.mode = SelectionHistoryMode::Redoing; self.with_selection_effects_deferred(window, cx, |this, window, cx| { @@ -14516,7 +14523,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.go_to_diagnostic_impl(Direction::Next, window, cx) } @@ -14526,7 +14533,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); self.go_to_diagnostic_impl(Direction::Prev, window, cx) } @@ -14611,7 +14618,7 @@ impl Editor { } pub fn go_to_next_hunk(&mut self, _: &GoToHunk, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let snapshot = self.snapshot(window, cx); let selection = self.selections.newest::(cx); self.go_to_hunk_before_or_after_position( @@ -14672,7 +14679,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx); let snapshot = self.snapshot(window, cx); let selection = self.selections.newest::(cx); self.go_to_hunk_before_or_after_position( @@ -15679,7 +15686,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let project = match &self.project { Some(project) => project.clone(), @@ -15701,7 +15708,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let project = match &self.project { Some(project) => project.clone(), @@ -15823,7 +15830,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) -> Option>> { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let project = match &self.project { Some(project) => project.clone(), None => return None, @@ -17175,7 +17182,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let buffers = self.buffer.read(cx).all_buffers(); for branch_buffer in buffers { @@ -17204,7 +17211,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); let snapshot = self.snapshot(window, cx); let hunks = snapshot.hunks_for_ranges(self.selections.ranges(cx)); let mut ranges_by_buffer = HashMap::default(); @@ -18236,7 +18243,7 @@ impl Editor { } fn insert_uuid(&mut self, version: UuidVersion, window: &mut Window, cx: &mut Context) { - self.hide_mouse_cursor(&HideMouseCursorOrigin::TypingAction); + self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); self.transact(window, cx, |this, window, cx| { let edits = this .selections diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index b7a89a5c76..a31b6a73c9 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1085,7 +1085,7 @@ impl EditorElement { let text_hovered = text_hitbox.is_hovered(window); let gutter_hovered = gutter_hitbox.is_hovered(window); editor.set_gutter_hovered(gutter_hovered, cx); - editor.mouse_cursor_hidden = false; + editor.show_mouse_cursor(cx); let point_for_position = position_map.point_for_position(event.position); let valid_point = point_for_position.previous_valid; diff --git a/crates/vim/src/vim.rs b/crates/vim/src/vim.rs index 7198cee36e..b687edb0fe 100644 --- a/crates/vim/src/vim.rs +++ b/crates/vim/src/vim.rs @@ -790,8 +790,8 @@ impl Vim { if let Some(action) = keystroke_event.action.as_ref() { // Keystroke is handled by the vim system, so continue forward if action.name().starts_with("vim::") { - self.update_editor(window, cx, |_, editor, _, _| { - editor.hide_mouse_cursor(&HideMouseCursorOrigin::MovementAction) + self.update_editor(window, cx, |_, editor, _, cx| { + editor.hide_mouse_cursor(HideMouseCursorOrigin::MovementAction, cx) }); return; }