netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=bf3bd51be1cf44f83ddfbd467dbc1ba56e859940
commit bf3bd51be1cf44f83ddfbd467dbc1ba56e859940 Author: Alastair Poole <nets...@gmail.com> Date: Wed Dec 30 12:55:03 2020 +0000 keydown: escape closes window. Not perfect but good enough. --- src/bin/ui/ui_cpu.c | 29 +++++++++++++++++++++++------ src/bin/ui/ui_disk.c | 17 +++++++++++++++++ src/bin/ui/ui_memory.c | 17 +++++++++++++++++ src/bin/ui/ui_process_list.c | 5 ++++- src/bin/ui/ui_sensors.c | 17 +++++++++++++++++ 5 files changed, 78 insertions(+), 7 deletions(-) diff --git a/src/bin/ui/ui_cpu.c b/src/bin/ui/ui_cpu.c index f3d519b..a3d419b 100644 --- a/src/bin/ui/ui_cpu.c +++ b/src/bin/ui/ui_cpu.c @@ -12,6 +12,7 @@ typedef struct { Ecore_Thread *thread; + Evas_Object *win; Evas_Object *bg; Evas_Object *obj; @@ -416,6 +417,22 @@ _colors_fill(Evas_Object *colors) } static void +_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + Animate *ad; + + ad = data; + ev = event_info; + + if (!ev || !ev->keyname) + return; + + if (!strcmp(ev->keyname, "Escape")) + evas_object_del(ad->ui->cpu.win); +} + +static Animate * _graph(Ui *ui, Evas_Object *parent) { Evas_Object *tbl, *tbl2, *box, *obj, *ic, *lb, *rec; @@ -424,8 +441,9 @@ _graph(Ui *ui, Evas_Object *parent) char buf[128]; Animate *ad = calloc(1, sizeof(Animate)); - if (!ad) return; + if (!ad) return NULL; + ad->win = ui->cpu.win; ad->cpu_count = system_cpu_count_get(); if (!system_cpu_frequency_min_max_get(&ad->freq_min, &ad->freq_max)) ad->cpu_freq = EINA_TRUE; @@ -675,8 +693,6 @@ _graph(Ui *ui, Evas_Object *parent) evas_object_size_hint_min_set (obj, 100, (BAR_HEIGHT * ad->cpu_count) * elm_config_scale_get()); - // since win is on auto-delete, just listen for when it is deleted, - // whatever the cause/reason evas_object_event_callback_add(ui->cpu.win, EVAS_CALLBACK_DEL, _win_del_cb, ad); // run a feedback thread that sends feedback to the mainloop @@ -685,6 +701,7 @@ _graph(Ui *ui, Evas_Object *parent) NULL, NULL, ad, EINA_TRUE); + return ad; } static void @@ -698,6 +715,7 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) void ui_win_cpu_add(Ui *ui, Evas_Object *parent) { + Animate *ad; Evas_Object *win, *box, *scroller; Evas_Coord x = 0, y = 0; @@ -730,8 +748,8 @@ ui_win_cpu_add(Ui *ui, Evas_Object *parent) evas_object_size_hint_weight_set(box, EXPAND, EXPAND); evas_object_show(box); - _graph(ui, box); - + ad = _graph(ui, box); + evas_object_event_callback_add(scroller, EVAS_CALLBACK_KEY_DOWN, _win_key_down_cb, ad); elm_object_content_set(scroller, box); elm_object_content_set(win, scroller); @@ -751,7 +769,6 @@ ui_win_cpu_add(Ui *ui, Evas_Object *parent) else elm_win_center(win, 1, 1); } - evas_object_show(win); } diff --git a/src/bin/ui/ui_disk.c b/src/bin/ui/ui_disk.c index e325aad..4d7737b 100644 --- a/src/bin/ui/ui_disk.c +++ b/src/bin/ui/ui_disk.c @@ -290,6 +290,22 @@ _disks_poll_update(Ui_Data *pd) pd->skip_wait = 1; } +static void +_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + Ui_Data *pd; + + pd = data; + ev = event_info; + + if (!ev || !ev->keyname) + return; + + if (!strcmp(ev->keyname, "Escape")) + evas_object_del(pd->ui->disk.win); +} + static void _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -668,6 +684,7 @@ ui_win_disk_add(Ui *ui, Evas_Object *parent) evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _win_del_cb, pd); evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, pd); + evas_object_event_callback_add(tbl, EVAS_CALLBACK_KEY_DOWN, _win_key_down_cb, pd); evas_object_show(win); pd->thread = ecore_thread_feedback_run(_disks_poll, diff --git a/src/bin/ui/ui_memory.c b/src/bin/ui/ui_memory.c index 878c6f7..72c6da7 100644 --- a/src/bin/ui/ui_memory.c +++ b/src/bin/ui/ui_memory.c @@ -348,6 +348,22 @@ _graph_guide(Evas_Object *parent, int r, int g, int b, int a) return btn; } +static void +_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + Ui_Data *pd; + + pd = data; + ev = event_info; + + if (!ev || !ev->keyname) + return; + + if (!strcmp(ev->keyname, "Escape")) + evas_object_del(pd->win); +} + static void _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) @@ -511,6 +527,7 @@ ui_win_memory_add(Ui *ui, Evas_Object *parent) evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, pd); evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _win_del_cb, pd); + evas_object_event_callback_add(tbl, EVAS_CALLBACK_KEY_DOWN, _win_key_down_cb, pd); evas_object_show(win); pd->thread = ecore_thread_feedback_run(_mem_usage_main_cb, diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 200e7cf..6d807ba 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -1451,7 +1451,10 @@ _win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if (!ev || !ev->keyname) return; - _win_key_down_search(pd, ev); + if (!strcmp(ev->keyname, "Escape") && !pd->entry_visible) + evas_object_del(pd->win); + else + _win_key_down_search(pd, ev); pd->skip_wait = 1; } diff --git a/src/bin/ui/ui_sensors.c b/src/bin/ui/ui_sensors.c index 6c9901c..8f5e208 100644 --- a/src/bin/ui/ui_sensors.c +++ b/src/bin/ui/ui_sensors.c @@ -200,6 +200,22 @@ _content_get(void *data, Evas_Object *obj, const char *part) return bx; } +static void +_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + Ui_Data *pd; + + pd = data; + ev = event_info; + + if (!ev || !ev->keyname) + return; + + if (!strcmp(ev->keyname, "Escape")) + evas_object_del(pd->ui->sensors.win); +} + static void _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -257,6 +273,7 @@ ui_win_sensors_add(Ui *ui, Evas_Object *parent) evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, pd); evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _win_del_cb, pd); + evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, _win_key_down_cb, pd); fr = elm_frame_add(win); evas_object_size_hint_weight_set(fr, EXPAND, EXPAND); --