term: add term_visual_focus_{in,out}

These functions should be called when the terminal gets or loses
visual focus.

Note that this isn't necessarily the same as having keyboard focus.
This commit is contained in:
Daniel Eklöf 2020-01-02 19:35:32 +01:00
parent 4be3c04999
commit 6f281cebfb
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 19 additions and 8 deletions

View file

@ -1392,27 +1392,36 @@ term_restore_cursor(struct terminal *term)
}
void
term_kbd_focus_in(struct terminal *term)
term_visual_focus_in(struct terminal *term)
{
term->visual_focus = true;
if (term->cursor_blink.active)
cursor_blink_start_timer(term);
cursor_refresh(term);
}
if (term->focus_events)
term_to_slave(term, "\033[I", 3);
void
term_visual_focus_out(struct terminal *term)
{
term->visual_focus = false;
if (term->cursor_blink.active)
cursor_blink_stop_timer(term);
cursor_refresh(term);
}
void
term_kbd_focus_in(struct terminal *term)
{
if (term->focus_events)
term_to_slave(term, "\033[I", 3);
}
void
term_kbd_focus_out(struct terminal *term)
{
if (term->cursor_blink.active)
cursor_blink_stop_timer(term);
if (term->focus_events)
term_to_slave(term, "\033[O", 3);
cursor_refresh(term);
}
static int

View file

@ -378,6 +378,8 @@ void term_arm_blink_timer(struct terminal *term);
void term_restore_cursor(struct terminal *term);
void term_visual_focus_in(struct terminal *term);
void term_visual_focus_out(struct terminal *term);
void term_kbd_focus_in(struct terminal *term);
void term_kbd_focus_out(struct terminal *term);
void term_mouse_down(struct terminal *term, int button, int row, int col);