This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository echart.

View the commit online.

commit cb6fba370f0eb704c6b7cfd08dc056c3ff9a564e
Author: Vincent Torri <[email protected]>
AuthorDate: Tue Jun 9 06:52:44 2026 +0200

    Esc and 'q' exit program
---
 src/bin/echart_grid.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/src/bin/echart_grid.c b/src/bin/echart_grid.c
index 07ab6cb..7966964 100644
--- a/src/bin/echart_grid.c
+++ b/src/bin/echart_grid.c
@@ -10,6 +10,22 @@
 #include "Echart.h"
 #include "echart_private.h"
 
+/* Modifiers */
+#define ENTICE_MODIFIERS_GET(mod)                              \
+    do                                                         \
+    {                                                          \
+        ctrl = evas_key_modifier_is_set(mod, "Control");       \
+        alt = evas_key_modifier_is_set(mod, "Alt");            \
+        shift = evas_key_modifier_is_set(mod, "Shift");        \
+        winm = evas_key_modifier_is_set(mod, "Super");         \
+        meta =                                                 \
+            evas_key_modifier_is_set(mod, "Meta") ||           \
+            evas_key_modifier_is_set(mod, "AltGr") ||          \
+            evas_key_modifier_is_set(mod, "ISO_Level3_Shift"); \
+        hyper = evas_key_modifier_is_set(mod, "Hyper");        \
+    }                                                          \
+    while (0)
+
 typedef enum Chart_Type
 {
    CHART_TYPE_LINE,
@@ -177,6 +193,30 @@ _grid_sel(void        *data,
    fflush(stdout);
 }
 
+static void
+_cb_key_down(void *data,
+             Evas *evas EINA_UNUSED,
+             Evas_Object *obj EINA_UNUSED,
+             void *event_info)
+{
+   Evas_Object *win = data;
+   Evas_Event_Key_Down *ev = event_info;
+   Eina_Bool ctrl, alt, shift, winm, meta, hyper; /* modifiers */
+
+   EINA_SAFETY_ON_NULL_RETURN(event_info);
+
+   ENTICE_MODIFIERS_GET(ev->modifiers);
+
+   /* No modifier */
+   if (!ctrl && !alt && !shift && !winm && !meta && !hyper)
+   {
+      if (!strcmp(ev->keyname, "q"))
+         evas_object_del(win);
+      else if (!strcmp(ev->key, "Escape"))
+         evas_object_del(win);
+   }
+}
+
 EAPI_MAIN int
 elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
 {
@@ -263,6 +303,16 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
                       600 * elm_config_scale_get());
    evas_object_show(win);
 
+    /* dummy button to catch keyboard events */
+    o = elm_button_add(win);
+    elm_object_focus_highlight_style_set(o, "blank");
+    evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_win_resize_object_add(win, o);
+    evas_object_show(o);
+    elm_object_focus_set(o, EINA_TRUE);
+    evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN,
+                                   _cb_key_down, win);
+
    elm_run();
 
    echart_shutdown();

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to