From 9309941875d43ee6291e8c15cdd6023060031ac5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 13 Mar 2017 12:02:52 -0400 Subject: [PATCH] add behavior option to disable focus-in/out animations and visuals this is useful for CI --- data/themes/default.edc | 10 ++++++++++ data/themes/mild.edc | 6 ++++++ src/bin/config.c | 6 ++++++ src/bin/config.h | 1 + src/bin/options_behavior.c | 2 ++ src/bin/termio.c | 3 ++- src/bin/win.c | 38 ++++++++++++++++++++++++++++++-------- 7 files changed, 57 insertions(+), 9 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index 760b9685..047bcc8c 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -1008,6 +1008,16 @@ collections { target: "shine"; after: "focus_in2"; } + program { + signal: "focused,set"; source: "terminology"; + action: STATE_SET "focused" 0.0; + target: "glint"; + target: "shine"; + sequence { + action: STATE_SET "focused2" 0.0; + target: "glow"; + } + } program { name: "focus_in2"; action: STATE_SET "focused2" 0.0; transition: DECELERATE 0.5; diff --git a/data/themes/mild.edc b/data/themes/mild.edc index 4e006edd..bf3a6726 100644 --- a/data/themes/mild.edc +++ b/data/themes/mild.edc @@ -86,6 +86,12 @@ collections { transition: ACCELERATE 0.1; target: "focusclip"; } + program { + signal: "focused,set"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "focusclip"; + } program { signal: "focus,out"; source: "terminology"; diff --git a/src/bin/config.c b/src/bin/config.c index 2ead19aa..35a6e753 100644 --- a/src/bin/config.c +++ b/src/bin/config.c @@ -151,6 +151,9 @@ config_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC (edd_base, Config, "mouse_over_focus", mouse_over_focus, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_base, Config, "disable_focus_visuals", + disable_focus_visuals, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC (edd_base, Config, "colors_use", colors_use, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_ARRAY @@ -265,6 +268,7 @@ config_sync(const Config *config_src, Config *config) config->colors_use = config_src->colors_use; memcpy(config->colors, config_src->colors, sizeof(config->colors)); config->mouse_over_focus = config_src->mouse_over_focus; + config->disable_focus_visuals = config_src->disable_focus_visuals; /* TODO: config->keys */ config->gravatar = config_src->gravatar; config->notabs = config_src->notabs; @@ -512,6 +516,7 @@ config_new(void) config->drag_links = EINA_FALSE; config->login_shell = EINA_FALSE; config->mouse_over_focus = EINA_TRUE; + config->disable_focus_visuals = EINA_FALSE; config->colors_use = EINA_FALSE; config->gravatar = EINA_TRUE; config->notabs = EINA_FALSE; @@ -701,6 +706,7 @@ config_fork(Config *config) CPY(colors_use); memcpy(config2->colors, config->colors, sizeof(config->colors)); CPY(mouse_over_focus); + CPY(disable_focus_visuals); CPY(temporary); SCPY(config_key); CPY(font_set); diff --git a/src/bin/config.h b/src/bin/config.h index db6db6ef..2db6b250 100644 --- a/src/bin/config.h +++ b/src/bin/config.h @@ -72,6 +72,7 @@ struct _Config Eina_Bool drag_links; Eina_Bool login_shell; Eina_Bool mouse_over_focus; + Eina_Bool disable_focus_visuals; Eina_Bool colors_use; Eina_Bool gravatar; Eina_Bool notabs; diff --git a/src/bin/options_behavior.c b/src/bin/options_behavior.c index a44d3a0e..e0904854 100644 --- a/src/bin/options_behavior.c +++ b/src/bin/options_behavior.c @@ -39,6 +39,7 @@ CB(erase_is_del, 0); CB(drag_links, 0); CB(login_shell, 0); CB(mouse_over_focus, 0); +CB(disable_focus_visuals, 0); CB(gravatar, 0); CB(notabs, 1); CB(mv_always_show, 0); @@ -199,6 +200,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) CX(_("Drag & drop links"), drag_links, 0); CX(_("Start as login shell"), login_shell, 0); CX(_("Focus split under the Mouse"), mouse_over_focus, 0); + CX(_("Disable focus-out visuals"), disable_focus_visuals, 0); CX(_("Gravatar integration"), gravatar, 0); CX(_("Show tabs"), notabs, 1); CX(_("Always show miniview"), mv_always_show, 0); diff --git a/src/bin/termio.c b/src/bin/termio.c index ff14490a..e9074986 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -3518,7 +3518,8 @@ _smart_cb_focus_out(void *data, Termio *sd = evas_object_smart_data_get(data); EINA_SAFETY_ON_NULL_RETURN(sd); - edje_object_signal_emit(sd->cursor.obj, "focus,out", "terminology"); + if (!sd->config->disable_focus_visuals) + edje_object_signal_emit(sd->cursor.obj, "focus,out", "terminology"); if (!sd->win) return; sd->pty->selection.last_click = 0; elm_win_keyboard_mode_set(sd->win, ELM_WIN_KEYBOARD_OFF); diff --git a/src/bin/win.c b/src/bin/win.c index f1697287..ba5078ec 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -370,8 +370,11 @@ _solo_unfocus(Term_Container *tc, Term_Container *relative) if (tc->parent != relative) tc->parent->unfocus(tc->parent, tc); - edje_object_signal_emit(term->bg, "focus,out", "terminology"); - edje_object_signal_emit(term->base, "focus,out", "terminology"); + if (!term->config->disable_focus_visuals) + { + edje_object_signal_emit(term->bg, "focus,out", "terminology"); + edje_object_signal_emit(term->base, "focus,out", "terminology"); + } if (!tc->wn->cmdbox_up) elm_object_focus_set(term->termio, EINA_FALSE); @@ -402,8 +405,16 @@ _solo_focus(Term_Container *tc, Term_Container *relative) tc->parent->focus(tc->parent, tc); tc->is_focused = EINA_TRUE; - edje_object_signal_emit(term->bg, "focus,in", "terminology"); - edje_object_signal_emit(term->base, "focus,in", "terminology"); + if (term->config->disable_focus_visuals) + { + edje_object_signal_emit(term->bg, "focused,set", "terminology"); + edje_object_signal_emit(term->base, "focused,set", "terminology"); + } + else + { + edje_object_signal_emit(term->bg, "focus,in", "terminology"); + edje_object_signal_emit(term->base, "focus,in", "terminology"); + } if (term->wn->cmdbox) elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); elm_object_focus_set(term->termio, EINA_TRUE); @@ -498,8 +509,11 @@ _cb_win_focus_in(void *data, { if (term) { - edje_object_signal_emit(term->bg, "focus,out", "terminology"); - edje_object_signal_emit(term->base, "focus,out", "terminology"); + if (!term->config->disable_focus_visuals) + { + edje_object_signal_emit(term->bg, "focus,out", "terminology"); + edje_object_signal_emit(term->base, "focus,out", "terminology"); + } if (!wn->cmdbox_up) elm_object_focus_set(term->termio, EINA_FALSE); } @@ -4094,8 +4108,16 @@ _term_bg_config(Term *term) DBG("is focused? tc:%p", term->container); if (_term_is_focused(term) && (_win_is_focused(term->wn))) { - edje_object_signal_emit(term->bg, "focus,in", "terminology"); - edje_object_signal_emit(term->base, "focus,in", "terminology"); + if (term->config->disable_focus_visuals) + { + edje_object_signal_emit(term->bg, "focused,set", "terminology"); + edje_object_signal_emit(term->base, "focused,set", "terminology"); + } + else + { + edje_object_signal_emit(term->bg, "focus,in", "terminology"); + edje_object_signal_emit(term->base, "focus,in", "terminology"); + } if (term->wn->cmdbox) elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); elm_object_focus_set(term->termio, EINA_TRUE);