From b24ab806bf88aabac98dc133e22bee0f024d9404 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Fri, 22 Jun 2012 12:17:17 -0400 Subject: [PATCH] terminal: Only hide cursor for keypresses that generate data for the process --- clients/terminal.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/clients/terminal.c b/clients/terminal.c index 7d6d70a..e0f54bd 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -2138,13 +2138,6 @@ key_handler(struct window *window, struct input *input, uint32_t time, handle_bound_key(terminal, input, sym, time)) return; - serial = display_get_serial(terminal->display); - if (terminal->hide_cursor_serial != serial && - state == WL_KEYBOARD_KEY_STATE_PRESSED) { - input_set_pointer_image(input, CURSOR_BLANK); - terminal->hide_cursor_serial = serial; - } - switch (sym) { case XKB_KEY_F11: if (state == WL_KEYBOARD_KEY_STATE_RELEASED) @@ -2262,8 +2255,17 @@ key_handler(struct window *window, struct input *input, uint32_t time, break; } - if (state == WL_KEYBOARD_KEY_STATE_PRESSED && len > 0) + if (state == WL_KEYBOARD_KEY_STATE_PRESSED && len > 0) { terminal_write(terminal, ch, len); + + /* Hide cursor, except if this was coming from a + * repeating key press. */ + serial = display_get_serial(terminal->display); + if (terminal->hide_cursor_serial != serial) { + input_set_pointer_image(input, CURSOR_BLANK); + terminal->hide_cursor_serial = serial; + } + } } static void -- 2.7.4