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);

-- 


Reply via email to