diff --git a/lapce-ui/src/editor/view.rs b/lapce-ui/src/editor/view.rs index 9f8f3efa..a8cecb22 100644 --- a/lapce-ui/src/editor/view.rs +++ b/lapce-ui/src/editor/view.rs @@ -544,8 +544,12 @@ fn event( Event::Command(cmd) if cmd.is(LAPCE_UI_COMMAND) => { let command = cmd.get_unchecked(LAPCE_UI_COMMAND); if let LapceUICommand::Focus = command { - self.cursor_blink_timer = - ctx.request_timer(Duration::from_millis(500), None); + if data.config.editor.blink_interval > 0 { + self.cursor_blink_timer = ctx.request_timer( + Duration::from_millis(data.config.editor.blink_interval), + None, + ); + } self.request_focus(ctx, data, true); let editor_data = data.editor_view_content(self.view_id); self.ensure_cursor_visible( @@ -559,12 +563,16 @@ fn event( } Event::Timer(id) if self.cursor_blink_timer == *id => { ctx.set_handled(); - if ctx.is_focused() { - ctx.request_paint(); - self.cursor_blink_timer = - ctx.request_timer(Duration::from_millis(500), None); - } else { - self.cursor_blink_timer = TimerToken::INVALID; + if data.config.editor.blink_interval > 0 { + if ctx.is_focused() { + ctx.request_paint(); + self.cursor_blink_timer = ctx.request_timer( + Duration::from_millis(data.config.editor.blink_interval), + None, + ); + } else { + self.cursor_blink_timer = TimerToken::INVALID; + } } } Event::Timer(id) if self.last_idle_timer == *id => { @@ -768,27 +776,31 @@ fn update( } } - if data.focus == self.view_id { - let reset = if old_data.focus != self.view_id { - true - } else { - let mode = editor_data.editor.cursor.get_mode(); - let old_mode = old_editor_data.editor.cursor.get_mode(); - let offset = editor_data.editor.cursor.offset(); - let old_offset = old_editor_data.editor.cursor.offset(); - let (line, col) = - editor_data.doc.buffer().offset_to_line_col(offset); - let (old_line, old_col) = - old_editor_data.doc.buffer().offset_to_line_col(old_offset); - mode != old_mode || line != old_line || col != old_col - }; + if data.config.editor.blink_interval > 0 { + if data.focus == self.view_id { + let reset = if old_data.focus != self.view_id { + true + } else { + let mode = editor_data.editor.cursor.get_mode(); + let old_mode = old_editor_data.editor.cursor.get_mode(); + let offset = editor_data.editor.cursor.offset(); + let old_offset = old_editor_data.editor.cursor.offset(); + let (line, col) = + editor_data.doc.buffer().offset_to_line_col(offset); + let (old_line, old_col) = + old_editor_data.doc.buffer().offset_to_line_col(old_offset); + mode != old_mode || line != old_line || col != old_col + }; - if reset { - self.cursor_blink_timer = - ctx.request_timer(Duration::from_millis(500), None); - *editor_data.editor.last_cursor_instant.borrow_mut() = - Instant::now(); - ctx.request_paint(); + if reset { + self.cursor_blink_timer = ctx.request_timer( + Duration::from_millis(data.config.editor.blink_interval), + None, + ); + *editor_data.editor.last_cursor_instant.borrow_mut() = + Instant::now(); + ctx.request_paint(); + } } }