keydown: escape closes window.

Not perfect but good enough.
This commit is contained in:
Alastair Poole 2020-12-30 12:55:03 +00:00
parent 5b42efce5b
commit bf3bd51be1
5 changed files with 78 additions and 7 deletions

View File

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

View File

@ -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,

View File

@ -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,

View File

@ -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;
}

View File

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