menu: ensure clicking outside does nothing.

This commit is contained in:
Alastair Poole 2020-04-18 15:36:34 +01:00
parent 4a27a4d636
commit f54ded6c4d
2 changed files with 15 additions and 6 deletions

View File

@ -1525,7 +1525,11 @@ _btn_kill_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info
static void static void
_item_menu_dismissed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *ev EINA_UNUSED) _item_menu_dismissed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *ev EINA_UNUSED)
{ {
Ui *ui = data;
evas_object_del(obj); evas_object_del(obj);
ui->menu = NULL;
} }
static void static void
@ -1564,9 +1568,10 @@ _item_menu_kill_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EI
static void static void
_item_menu_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) _item_menu_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
Evas_Object *menu = data; Ui *ui = data;
elm_menu_close(menu); elm_menu_close(ui->menu);
ui->menu = NULL;
} }
static void static void
@ -1608,10 +1613,10 @@ _item_menu_create(Ui *ui, Proc_Info *proc)
Eina_Bool stopped; Eina_Bool stopped;
if (!proc) return NULL; if (!proc) return NULL;
menu = elm_menu_add(ui->win); ui->menu = menu = elm_menu_add(ui->win);
if (!menu) return NULL; if (!menu) return NULL;
evas_object_smart_callback_add(menu, "dismissed", _item_menu_dismissed_cb, NULL); evas_object_smart_callback_add(menu, "dismissed", _item_menu_dismissed_cb, ui);
stopped = !!strcmp(proc->state, "stop"); stopped = !!strcmp(proc->state, "stop");
@ -1627,7 +1632,7 @@ _item_menu_create(Ui *ui, Proc_Info *proc)
if (!stopped) elm_object_item_disabled_set(menu_it2, EINA_TRUE); if (!stopped) elm_object_item_disabled_set(menu_it2, EINA_TRUE);
elm_menu_item_add(menu, menu_it, _icon_path_get("kill"), "Kill", _item_menu_kill_cb, proc); elm_menu_item_add(menu, menu_it, _icon_path_get("kill"), "Kill", _item_menu_kill_cb, proc);
elm_menu_item_separator_add(menu, menu_it); elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_add(menu, menu_it, _icon_path_get("cancel"), "Cancel", _item_menu_cancel_cb, menu); elm_menu_item_add(menu, menu_it, _icon_path_get("cancel"), "Cancel", _item_menu_cancel_cb, ui);
return menu; return menu;
} }
@ -1666,10 +1671,13 @@ _item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
ui = data; ui = data;
it = event_info; it = event_info;
elm_genlist_item_selected_set(it, EINA_FALSE);
if (ui->menu) return;
proc = elm_object_item_data_get(it); proc = elm_object_item_data_get(it);
if (!proc) return; if (!proc) return;
elm_genlist_item_selected_set(it, EINA_FALSE);
ui->selected_pid = proc->pid; ui->selected_pid = proc->pid;
_process_panel_update(ui); _process_panel_update(ui);

View File

@ -58,6 +58,7 @@ typedef enum
typedef struct Ui typedef struct Ui
{ {
Evas_Object *win; Evas_Object *win;
Evas_Object *menu;
Evas_Object *panel; Evas_Object *panel;
Evas_Object *scroller; Evas_Object *scroller;
Evas_Object *content; Evas_Object *content;