The allocated memory should be deallocated when the associated widget is destroyed not selected.
Change-Id: Ib8d0acb20b52d9024519afbefbfb0173e4453a70
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
Elm_Object_Item *item = (Elm_Object_Item *)event_info;
if (!item) {
- delete cb_data;
return;
}
static char *im_setting_list_genlist_item_label_get(void *data, Evas_Object *obj, const char *part)
{
- int index = (int)reinterpret_cast<long>(data);
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return NULL;
+
+ int index = cb_data->index;
if (index < 0 || index >= (int)g_active_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_active_ime_info_list.size() : %d\n", index, g_active_ime_info_list.size());
return NULL;
static Evas_Object *im_setting_list_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part)
{
- int index = (int)reinterpret_cast<long>(data);
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return NULL;
+
+ int index = cb_data->index;
Elm_Object_Item *it = elm_genlist_nth_item_get(obj, index);
if (!strcmp(part, "elm.swallow.end") ||
return NULL;
}
+static void im_setting_list_genlist_item_del_cb(void *data, Evas_Object *obj)
+{
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return;
+
+ delete cb_data;
+}
+
static void im_setting_list_genlist_item_class_create(void)
{
itc_im_list = elm_genlist_item_class_new();
itc_im_list->func.text_get = im_setting_list_genlist_item_label_get;
itc_im_list->func.content_get = im_setting_list_genlist_item_icon_get;
itc_im_list->func.state_get = NULL;
- itc_im_list->func.del = NULL;
+ itc_im_list->func.del = im_setting_list_genlist_item_del_cb;
}
}
cb_data->index = i;
elm_genlist_item_append(genlist,
itc_im_list,
- (void *)(i),
+ (void *)(cb_data),
NULL,
ELM_GENLIST_ITEM_NONE,
im_setting_list_ime_sel_cb,
cb_data->index = i;
elm_genlist_item_append(genlist,
itc_im_list,
- (void *)(i),
+ (void *)(cb_data),
NULL,
ELM_GENLIST_ITEM_NONE,
im_setting_list_ime_sel_cb,
int index = (int)reinterpret_cast<long>(cb_data->data);
if (index < 0 || index >= (int)g_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_ime_info_list.size() : %d\n", index, g_ime_info_list.size());
- delete cb_data;
return;
}
Eina_Bool state = EINA_FALSE;
state = g_gen_item_data[index].chk_status;
isf_control_set_enable_ime(g_ime_info_list[index].appid, state);
evas_object_del(cb_data->popup);
- delete cb_data;
}
static void
int index = (int)reinterpret_cast<long>(cb_data->data);
if (index < 0 || index >= (int)g_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_ime_info_list.size() : %d\n", index, g_ime_info_list.size());
- delete cb_data;
return;
}
g_gen_item_data[index].chk_status = !state;
elm_genlist_item_update(g_gen_item_data[index].gen_item);
evas_object_del(cb_data->popup);
- delete cb_data;
}
static void _popup_back_cb(void *data, Evas_Object *obj, void *event_info)
int index = (int)reinterpret_cast<long>(cb_data->data);
if (index < 0 || index >= (int)g_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_ime_info_list.size() : %d\n", index, g_ime_info_list.size());
- delete cb_data;
return;
}
im_setting_list_check_popup_cancel_cb(data, NULL, NULL);
} else {
evas_object_del(cb_data->popup);
- delete cb_data;
}
}
+static void _popup_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ popup_cb_data *cb_data = (popup_cb_data *)data;
+ if (!cb_data)
+ return;
+
+ delete cb_data;
+}
+
static void im_setting_list_show_popup(void *data, Evas_Object *obj, popup_ok_cb ime_setting_list_ok_callback, popup_cancel_cb ime_setting_list_cancel_callback)
{
int index = (int)reinterpret_cast<long>(data);
evas_object_smart_callback_add(btn_ok, "clicked", ime_setting_list_ok_callback, cb_data);
eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _popup_back_cb, cb_data);
+ evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _popup_del_cb, cb_data);
evas_object_show(popup);
}
int index = (int)reinterpret_cast<long>(cb_data->data);
if (index < 0 || index >= (int)g_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_ime_info_list.size() : %d\n", index, g_ime_info_list.size());
- delete cb_data;
return;
}
isf_control_set_enable_ime(g_ime_info_list[index].appid, !state);
elm_genlist_item_update(g_gen_item_data[index].gen_item);
evas_object_del(cb_data->popup);
- delete cb_data;
}
static void
if (!cb_data)
return;
evas_object_del(cb_data->popup);
- delete cb_data;
}
static void im_setting_list_item_sel_cb(void *data, Evas_Object *obj, void *event_info)
selected_index = index;
im_setting_selector_update_radio_state(item, obj, index);
ecore_idler_add(_ime_select_idler_cb, ad);
-
- delete cb_data;
}
static Evas_Object *im_setting_selector_genlist_create(Evas_Object* parent, Evas_Object* conform)
static char *im_setting_selector_genlist_item_label_get(void *data, Evas_Object *obj, const char *part)
{
- int index = (int)reinterpret_cast<long>(data);
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return NULL;
+
+ int index = cb_data->index;
if (index < 0 || index >= (int)g_ime_info_list.size()) {
LOGW("Wrong value. index : %d, g_ime_info_list.size() : %d\n", index, g_ime_info_list.size());
return NULL;
static Evas_Object *im_setting_selector_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part)
{
- int index = (int)reinterpret_cast<long>(data);
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return NULL;
+
+ int index = cb_data->index;
Elm_Object_Item *it = elm_genlist_nth_item_get(obj, index);
if (!strcmp(part, "elm.swallow.end") ||
return NULL;
}
+static void
+im_setting_selector_genlist_item_del_cb(void *data, Evas_Object *obj)
+{
+ sel_cb_data *cb_data = (sel_cb_data *)data;
+ if (!cb_data)
+ return;
+
+ delete cb_data;
+}
+
static void im_setting_selector_genlist_item_class_create(void)
{
itc_im_selector = elm_genlist_item_class_new();
itc_im_selector->func.text_get = im_setting_selector_genlist_item_label_get;
itc_im_selector->func.content_get = im_setting_selector_genlist_item_icon_get;
itc_im_selector->func.state_get = NULL;
- itc_im_selector->func.del = NULL;
+ itc_im_selector->func.del = im_setting_selector_genlist_item_del_cb;
}
}
sel_cb_data *cb_data = new sel_cb_data;
cb_data->data = data;
cb_data->index = i;
+
elm_genlist_item_append(ad->genlist,
itc_im_selector,
- (void *)(i),
+ (void *)(cb_data),
NULL,
ELM_GENLIST_ITEM_NONE,
im_setting_selector_ime_sel_cb,
cb_data->index = i;
elm_genlist_item_append(genlist,
itc_im_selector,
- (void *)(i),
+ (void *)(cb_data),
NULL,
ELM_GENLIST_ITEM_NONE,
im_setting_selector_ime_sel_cb,