evas_event_feed_mouse_up(e, 1, EVAS_BUTTON_NONE, (timestamp + 0.03f) * 1000, NULL);
}
+static void access_del_cb(void *_info, Evas *e, Evas_Object *ao, void *event_info)
+{
+ struct info *handle = _info;
+ Evas_Object *edje_part;
+ Evas_Object *edje;
+
+ edje_part = evas_object_data_del(ao, "edje,part");
+ edje = evas_object_data_del(ao, "edje");
+ (void)evas_object_data_del(edje_part, "ao");
+
+ handle->access_chain = eina_list_remove(handle->access_chain, edje_part);
+ DbgPrint("AO(%p) is removed from local access chain\n", ao);
+}
+
PUBLIC int script_update_text(void *h, Evas *e, const char *id, const char *part, const char *text)
{
struct obj_info *obj_info;
if (!ao) {
ao = elm_access_object_register(edje_part, handle->parent);
if (!ao) {
- ErrPrint("Unable to add ao: %s\n", part);
+ ErrPrint("Unable to register an access object(%s)\n", part);
goto out;
}
handle->access_chain = eina_list_append(handle->access_chain, edje_part);
- (void)evas_object_data_set(edje_part, "ao", ao);
- (void)evas_object_data_set(ao, "edje", edje);
+ evas_object_data_set(edje_part, "ao", ao);
+ evas_object_data_set(ao, "edje", edje);
+ evas_object_data_set(ao, "edje,part", edje_part);
elm_access_activate_cb_set(ao, activate_cb, NULL);
elm_object_focus_custom_chain_append(handle->parent, ao, NULL);
+ evas_object_event_callback_add(ao, EVAS_CALLBACK_DEL, access_del_cb, handle);
DbgPrint("[%s] Register access info: (%s) to, %p\n", part, text, handle->parent);
}
if (!text || !strlen(text)) {
+ /*
handle->access_chain = eina_list_remove(handle->access_chain, edje_part);
(void)evas_object_data_del(edje_part, "ao");
(void)evas_object_data_del(ao, "edje");
+ */
+ /*!
+ * \note
+ * Delete callback will be called
+ */
+ DbgPrint("[%s] Remove access object(%p)\n", part, ao);
elm_access_object_unregister(ao);
- DbgPrint("[%s] Remove access object\n", part);
goto out;
}
if ((!utf8 || !strlen(utf8))) {
free(utf8);
+ /*
handle->access_chain = eina_list_remove(handle->access_chain, edje_part);
(void)evas_object_data_del(edje_part, "ao");
(void)evas_object_data_del(ao, "edje");
+ */
+ /*!
+ * \note
+ * Delete callback will be called
+ */
+ DbgPrint("[%s] Remove access object(%p)\n", part, ao);
elm_access_object_unregister(ao);
- DbgPrint("[%s] Remove access object\n", part);
goto out;
}
elm_access_info_set(ao, ELM_ACCESS_INFO, text);
DbgPrint("Access info is updated: [%s]\n", text);
} else {
+ /*
handle->access_chain = eina_list_remove(handle->access_chain, edje_part);
(void)evas_object_data_del(edje_part, "ao");
(void)evas_object_data_del(ao, "edje");
+ */
+ /*!
+ * \note
+ * Delete clalback will be called
+ */
+ DbgPrint("[%s] Remove access object(%p)\n", part, ao);
elm_access_object_unregister(ao);
- DbgPrint("Successfully unregistered\n");
}
} else if (text && strlen(text)) {
ao = elm_access_object_register(edje_part, handle->parent);
if (!ao) {
- ErrPrint("Unable to register an access object\n");
+ ErrPrint("Unable to register an access object(%s)\n", part);
} else {
elm_access_info_set(ao, ELM_ACCESS_INFO, text);
handle->access_chain = eina_list_append(handle->access_chain, edje_part);
evas_object_data_set(edje_part, "ao", ao);
evas_object_data_set(ao, "edje", edje);
+ evas_object_data_set(ao, "edje,part", edje_part);
elm_object_focus_custom_chain_append(handle->parent, ao, NULL);
elm_access_activate_cb_set(ao, activate_cb, NULL);
+ evas_object_event_callback_add(ao, EVAS_CALLBACK_DEL, access_del_cb, handle);
DbgPrint("[%s] Register access info: (%s) to, %p\n", part, text, handle->parent);
}
}
}
if (edje == obj) {
+ /*!
handle->access_chain = eina_list_remove(handle->access_chain, edje_part);
(void)evas_object_data_del(edje_part, "ao");
(void)evas_object_data_del(ao, "edje");
+ */
+ /*!
+ * Delete callback will be called
+ */
+ DbgPrint("Remove access object(%p)\n", ao);
elm_access_object_unregister(ao);
}
}