From d082b0d6d78033d144734e44c0aa7c81b9bc41ec Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Wed, 29 Jul 2020 22:43:25 +0200 Subject: [PATCH] win/options_mouse: apply mouse timer change to current terms --- src/bin/options_mouse.c | 2 ++ src/bin/win.c | 49 +++++++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/bin/options_mouse.c b/src/bin/options_mouse.c index 1e410722..c858ebed 100644 --- a/src/bin/options_mouse.c +++ b/src/bin/options_mouse.c @@ -93,6 +93,7 @@ _cb_op_hide_cursor_changed(void *data, config->hide_cursor = CONFIG_CURSOR_IDLE_TIMEOUT_MAX + 1.0; elm_object_disabled_set(ctx->sld_hide_cursor, EINA_TRUE); } + windows_update(); config_save(config); } @@ -109,6 +110,7 @@ _cb_hide_cursor_slider_chg(void *data, return; config->hide_cursor = value; + windows_update(); config_save(config); } diff --git a/src/bin/win.c b/src/bin/win.c index 42c60d21..594cfc53 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -146,6 +146,7 @@ struct _Term unsigned char miniview_shown : 1; unsigned char popmedia_deleted : 1; unsigned char has_bg_cursor : 1; + unsigned char core_cursor_set: 1; Eina_Bool sendfile_request_enabled : 1; Eina_Bool sendfile_progress_enabled : 1; @@ -1605,6 +1606,27 @@ _win_split_direction(Term_Container *tc, return 0; } +static Eina_Bool +_set_cursor(Term *term, void *data) +{ + const char *cursor = data; + + assert(term->core); + if (cursor) + { + elm_object_cursor_set(term->core, cursor); + term->core_cursor_set = 1; + } + else + { + if (term->core_cursor_set) + elm_object_cursor_unset(term->core); + term->core_cursor_set = 0; + } + + return ECORE_CALLBACK_PASS_ON; +} + static void _win_update(Term_Container *tc) { @@ -1613,6 +1635,14 @@ _win_update(Term_Container *tc) assert (tc->type == TERM_CONTAINER_TYPE_WIN); wn = (Win*) tc; + if (wn->config->hide_cursor >= CONFIG_CURSOR_IDLE_TIMEOUT_MAX) + { + ecore_timer_del(wn->hide_cursor_timer); + wn->hide_cursor_timer = NULL; + + for_each_term_do(wn, &_set_cursor, NULL); + } + wn->child->update(wn->child); } @@ -2037,25 +2067,6 @@ _cb_win_mouse_down(void *data, tc_child->focus(tc_child, tc); } -static Eina_Bool -_set_cursor(Term *term, void *data) -{ - const char *cursor = data; - - assert(term->core); - if (cursor) - { - elm_object_cursor_set(term->core, cursor); - } - else - { - elm_object_cursor_unset(term->core); - } - - return ECORE_CALLBACK_PASS_ON; -} - - static Eina_Bool _hide_cursor(void *data) {