* [E_Editable] Fix valgrind warnings and mem leak

SVN revision: 24958
This commit is contained in:
moom 2006-08-20 22:24:16 +00:00 committed by moom
parent 24bb452439
commit cc6b1d0f99
1 changed files with 22 additions and 5 deletions

View File

@ -966,22 +966,32 @@ _e_editable_selection_update(Evas_Object *editable)
/* Position of the start cursor (note, the start cursor can not be at /* Position of the start cursor (note, the start cursor can not be at
* the end of the editable object, and the editable object can not be * the end of the editable object, and the editable object can not be
* empty, or it would have returned before)*/ * empty, or it would have returned before)*/
evas_object_text_char_pos_get(text_obj, start_pos, &cx, &cy, &cw, &ch); if (!evas_object_text_char_pos_get(text_obj, start_pos,
&cx, &cy, &cw, &ch))
return;
sx = tx + cx - 1; sx = tx + cx - 1;
sy = ty + cy; sy = ty + cy;
/* Position of the end cursor (note, the editable object can not be /* Position of the end cursor (note, the editable object can not be
* empty, or it would have returned before)*/ * empty, or it would have returned before)*/
if (end_pos >= sd->unicode_length) if (end_pos >= sd->unicode_length)
{ {
evas_object_text_char_pos_get(text_obj, sd->unicode_length - 1, if (!evas_object_text_char_pos_get(text_obj,
&cx, &cy, &cw, &ch); sd->unicode_length - 1,
&cx, &cy, &cw, &ch))
return;
sw = (tx + cx + cw - 1) - sx; sw = (tx + cx + cw - 1) - sx;
sh = ch; sh = ch;
} }
else else
{ {
evas_object_text_char_pos_get(text_obj, end_pos, &cx, &cy, &cw, &ch); if (!evas_object_text_char_pos_get(text_obj, end_pos,
&cx, &cy, &cw, &ch))
return;
sw = (tx + cx - 1) - sx; sw = (tx + cx - 1) - sx;
sh = ch; sh = ch;
} }
@ -1077,6 +1087,7 @@ _e_editable_smart_add(Evas_Object *object)
{ {
Evas *evas; Evas *evas;
E_Editable_Smart_Data *sd; E_Editable_Smart_Data *sd;
Evas_Coord ox, oy;
if ((!object) || !(evas = evas_object_evas_get(object))) if ((!object) || !(evas = evas_object_evas_get(object)))
return; return;
@ -1087,6 +1098,7 @@ _e_editable_smart_add(Evas_Object *object)
_e_editable_smart_use++; _e_editable_smart_use++;
evas_object_smart_data_set(object, sd); evas_object_smart_data_set(object, sd);
evas_object_geometry_get(object, &ox, &oy, NULL, NULL);
sd->text = malloc((E_EDITABLE_BLOCK_SIZE + 1) * sizeof(char)); sd->text = malloc((E_EDITABLE_BLOCK_SIZE + 1) * sizeof(char));
sd->text[0] = '\0'; sd->text[0] = '\0';
@ -1106,26 +1118,31 @@ _e_editable_smart_add(Evas_Object *object)
sd->password_mode = 0; sd->password_mode = 0;
sd->clip_object = evas_object_rectangle_add(evas); sd->clip_object = evas_object_rectangle_add(evas);
evas_object_move(sd->clip_object, ox, oy);
evas_object_smart_member_add(sd->clip_object, object); evas_object_smart_member_add(sd->clip_object, object);
sd->event_object = evas_object_rectangle_add(evas); sd->event_object = evas_object_rectangle_add(evas);
evas_object_color_set(sd->event_object, 255, 255, 255, 0); evas_object_color_set(sd->event_object, 255, 255, 255, 0);
evas_object_clip_set(sd->event_object, sd->clip_object); evas_object_clip_set(sd->event_object, sd->clip_object);
evas_object_move(sd->event_object, ox, oy);
evas_object_smart_member_add(sd->event_object, object); evas_object_smart_member_add(sd->event_object, object);
sd->text_object = edje_object_add(evas); sd->text_object = edje_object_add(evas);
evas_object_pass_events_set(sd->text_object, 1); evas_object_pass_events_set(sd->text_object, 1);
evas_object_clip_set(sd->text_object, sd->clip_object); evas_object_clip_set(sd->text_object, sd->clip_object);
evas_object_move(sd->text_object, ox, oy);
evas_object_smart_member_add(sd->text_object, object); evas_object_smart_member_add(sd->text_object, object);
sd->selection_object = edje_object_add(evas); sd->selection_object = edje_object_add(evas);
evas_object_pass_events_set(sd->selection_object, 1); evas_object_pass_events_set(sd->selection_object, 1);
evas_object_clip_set(sd->selection_object, sd->clip_object); evas_object_clip_set(sd->selection_object, sd->clip_object);
evas_object_move(sd->selection_object, ox, oy);
evas_object_smart_member_add(sd->selection_object, object); evas_object_smart_member_add(sd->selection_object, object);
sd->cursor_object = edje_object_add(evas); sd->cursor_object = edje_object_add(evas);
evas_object_pass_events_set(sd->cursor_object, 1); evas_object_pass_events_set(sd->cursor_object, 1);
evas_object_clip_set(sd->cursor_object, sd->clip_object); evas_object_clip_set(sd->cursor_object, sd->clip_object);
evas_object_move(sd->cursor_object, ox, oy);
evas_object_smart_member_add(sd->cursor_object, object); evas_object_smart_member_add(sd->cursor_object, object);
_e_editable_cursor_update(object); _e_editable_cursor_update(object);
@ -1145,7 +1162,7 @@ _e_editable_smart_del(Evas_Object *object)
evas_object_del(sd->text_object); evas_object_del(sd->text_object);
evas_object_del(sd->cursor_object); evas_object_del(sd->cursor_object);
evas_object_del(sd->selection_object); evas_object_del(sd->selection_object);
free(sd->text);
free(sd); free(sd);
_e_editable_smart_use--; _e_editable_smart_use--;