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