1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
From dd8f0d3fff4951cd7b7ea294823b8e377024c2ff Mon Sep 17 00:00:00 2001
From: Jean Guyomarc'h <jean@guyomarch.bzh>
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;
|