diff --git a/src/bin/e_gadget_loader.c b/src/bin/e_gadget_loader.c index 85a53ab21..cd725622a 100644 --- a/src/bin/e_gadget_loader.c +++ b/src/bin/e_gadget_loader.c @@ -59,11 +59,21 @@ _gadget_gravity(void *data, struct e_gadget *e_gadget EINA_UNUSED, uint32_t grav win_emit(data, "gadget_site_gravity", gravity); } +static void +_gadget_removed(void *data, struct e_gadget *e_gadget EINA_UNUSED) +{ + Evas_Object *win; + + win = eina_list_data_get(eina_hash_find(wins, &data)); + evas_object_smart_callback_call(win, "gadget_removed", NULL); +} + static const struct e_gadget_listener _gadget_listener = { _gadget_anchor, _gadget_orient, _gadget_gravity, + _gadget_removed, }; static void diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c index 418b19a8b..4c6e3807d 100644 --- a/src/bin/e_gadget_runner.c +++ b/src/bin/e_gadget_runner.c @@ -349,6 +349,8 @@ runner_removed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) { Instance *inst = data; if (inst->box != event_info) return; + if (inst->ci->sandbox && inst->gadget_resource) + e_gadget_send_gadget_removed(inst->gadget_resource); rconfig->items = eina_list_remove(rconfig->items, inst->ci); eina_stringshare_del(inst->ci->cmd); E_FREE(inst->ci); diff --git a/src/protocol/e-gadget.xml b/src/protocol/e-gadget.xml index eb0e65626..f3e63e113 100644 --- a/src/protocol/e-gadget.xml +++ b/src/protocol/e-gadget.xml @@ -30,6 +30,7 @@ +