mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
fix: line numbers remain relative when helix loses focus (#7955)
* fix: line numbers remain relative when helix loses focus If `line number = relative` and a new window is opened in helix, lines inside unfocused windows will be `absolute`. This commit adds the same thing when helix becomes unfocused in a terminal emulator. * partial rebase
This commit is contained in:
parent
82cd445715
commit
b67d2c3a68
@ -43,6 +43,8 @@ pub struct EditorView {
|
|||||||
pub(crate) last_insert: (commands::MappableCommand, Vec<InsertEvent>),
|
pub(crate) last_insert: (commands::MappableCommand, Vec<InsertEvent>),
|
||||||
pub(crate) completion: Option<Completion>,
|
pub(crate) completion: Option<Completion>,
|
||||||
spinners: ProgressSpinners,
|
spinners: ProgressSpinners,
|
||||||
|
/// Tracks if the terminal window is focused by reaction to terminal focus events
|
||||||
|
terminal_focused: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -71,6 +73,7 @@ pub fn new(keymaps: Keymaps) -> Self {
|
|||||||
last_insert: (commands::MappableCommand::normal_mode, Vec::new()),
|
last_insert: (commands::MappableCommand::normal_mode, Vec::new()),
|
||||||
completion: None,
|
completion: None,
|
||||||
spinners: ProgressSpinners::default(),
|
spinners: ProgressSpinners::default(),
|
||||||
|
terminal_focused: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +174,7 @@ pub fn render_view(
|
|||||||
view,
|
view,
|
||||||
view.area,
|
view.area,
|
||||||
theme,
|
theme,
|
||||||
is_focused,
|
is_focused & self.terminal_focused,
|
||||||
&mut line_decorations,
|
&mut line_decorations,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1372,13 +1375,17 @@ fn handle_event(
|
|||||||
|
|
||||||
Event::Mouse(event) => self.handle_mouse_event(event, &mut cx),
|
Event::Mouse(event) => self.handle_mouse_event(event, &mut cx),
|
||||||
Event::IdleTimeout => self.handle_idle_timeout(&mut cx),
|
Event::IdleTimeout => self.handle_idle_timeout(&mut cx),
|
||||||
Event::FocusGained => EventResult::Ignored(None),
|
Event::FocusGained => {
|
||||||
|
self.terminal_focused = true;
|
||||||
|
EventResult::Consumed(None)
|
||||||
|
}
|
||||||
Event::FocusLost => {
|
Event::FocusLost => {
|
||||||
if context.editor.config().auto_save {
|
if context.editor.config().auto_save {
|
||||||
if let Err(e) = commands::typed::write_all_impl(context, false, false) {
|
if let Err(e) = commands::typed::write_all_impl(context, false, false) {
|
||||||
context.editor.set_error(format!("{}", e));
|
context.editor.set_error(format!("{}", e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self.terminal_focused = false;
|
||||||
EventResult::Consumed(None)
|
EventResult::Consumed(None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user