From dd8f0d3fff4951cd7b7ea294823b8e377024c2ff Mon Sep 17 00:00:00 2001 From: Jean Guyomarc'h Date: Sat, 12 Jan 2019 08:47:35 +0100 Subject: [PATCH] gui: make an overlay fade when the UI is attached to neovim --- data/themes/default.edc | 29 +++++++++++++++++++++++++++++ include/eovim/gui.h | 1 + src/gui.c | 5 +++++ src/nvim.c | 9 +++++++-- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index 27703fc..7f8d0e3 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -430,6 +430,19 @@ collections { visible: 0; } } + + rect { "overlay"; nomouse; + desc { "default"; + color: 40 40 40 255;; + } + desc { "fade"; + color: 40 40 40 0; + } + desc { "faded"; + inherit: "fade"; + visible: 0; /* Make sure it is killed */ + } + } } programs { @@ -437,6 +450,22 @@ collections { action: PLAY_SAMPLE "bell" 1.0 ALERT; } + /* [OVERLAY FADING] ************************************************** + * When eovim starts, we push an overlay that covers the whole window. + * When neovim is successfully attached to the UI, we make the overlay + * fade away, so we can begin to use neovim. */ + program { signal: "eovim,ready"; source: "eovim"; + action: STATE_SET "fade"; + target: "overlay"; + transition: ACCELERATE 0.2; + after: "eovim_overlay_faded"; + } + program { name: "eovim_overlay_faded"; + action: STATE_SET "faded"; + target: "overlay"; + } + /* END OVERLAY FADING ***********************************************/ + program { signal: "eovim,cmdline,show"; source: "eovim"; action: STATE_SET "default"; target: "eovim.cmdline"; diff --git a/include/eovim/gui.h b/include/eovim/gui.h index f05fb97..981e957 100644 --- a/include/eovim/gui.h +++ b/include/eovim/gui.h @@ -192,6 +192,7 @@ void gui_caps_lock_alert(s_gui *gui); void gui_caps_lock_dismiss(s_gui *gui); Eina_Bool gui_caps_lock_warning_get(const s_gui *gui); +void gui_ready_set(s_gui *gui); void gui_mode_update(s_gui *gui, const s_mode *mode); #endif /* ! __EOVIM_GUI_H__ */ diff --git a/src/gui.c b/src/gui.c index 96dcdcd..efd476b 100644 --- a/src/gui.c +++ b/src/gui.c @@ -893,6 +893,11 @@ gui_bell_ring(s_gui *gui) elm_layout_signal_emit(gui->layout, "eovim,bell,ring", "eovim"); } +void gui_ready_set(s_gui *gui) +{ + elm_layout_signal_emit(gui->layout, "eovim,ready", "eovim"); +} + static void _compl_item_del(void *data, Evas_Object *obj EINA_UNUSED) diff --git a/src/nvim.c b/src/nvim.c index a003a00..dcf263d 100644 --- a/src/nvim.c +++ b/src/nvim.c @@ -49,8 +49,13 @@ static void _api_decode_cb(s_nvim *nvim, void *data, const msgpack_object *resul * Private API * *============================================================================*/ -static inline s_nvim * -_nvim_get(void) +static void _ui_attached_cb(s_nvim *nvim, void *data EINA_UNUSED, + const msgpack_object *result EINA_UNUSED) +{ + gui_ready_set(&nvim->gui); +} + +static inline s_nvim *_nvim_get(void) { /* We handle only one neovim instance */ return _nvim_instance;