forked from enlightenment/efl
1. found leak in event code - fix.
2. fix leak in textblock - much better now SVN revision: 13137
This commit is contained in:
parent
010a29867e
commit
6a4061ae7c
|
@ -343,6 +343,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, const void *data)
|
||||||
if (!e->events_frozen)
|
if (!e->events_frozen)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
|
||||||
}
|
}
|
||||||
|
if (copy) copy = evas_list_free(copy);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -637,6 +638,7 @@ evas_event_feed_mouse_out(Evas *e, const void *data)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (copy) copy = evas_list_free(copy);
|
||||||
/* free our old list of ins */
|
/* free our old list of ins */
|
||||||
e->pointer.object.in = evas_list_free(e->pointer.object.in);
|
e->pointer.object.in = evas_list_free(e->pointer.object.in);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct _Layout
|
||||||
unsigned char r, g, b, a;
|
unsigned char r, g, b, a;
|
||||||
} color, underline_color, outline_color, shadow_color;
|
} color, underline_color, outline_color, shadow_color;
|
||||||
struct {
|
struct {
|
||||||
Evas_Coord x, y, ascent, descent, mascent, mdescent;
|
int x, y, ascent, descent, mascent, mdescent;
|
||||||
} line;
|
} line;
|
||||||
double align;
|
double align;
|
||||||
};
|
};
|
||||||
|
@ -109,21 +109,7 @@ evas_object_textblock_layout_init(Layout *layout)
|
||||||
static char *
|
static char *
|
||||||
evas_object_textblock_format_merge(char *ofmt, char *fmt)
|
evas_object_textblock_format_merge(char *ofmt, char *fmt)
|
||||||
{
|
{
|
||||||
int l1 = 0, l2 = 0;
|
|
||||||
char *buf;
|
|
||||||
|
|
||||||
return strdup(fmt);
|
return strdup(fmt);
|
||||||
/* this is more correct */
|
|
||||||
if (ofmt) l1 = strlen(ofmt);
|
|
||||||
if (fmt) l2 = strlen(fmt);
|
|
||||||
buf = malloc(l1 + 1 + l2 + 1);
|
|
||||||
if (ofmt) strcpy(buf, ofmt);
|
|
||||||
strcpy(ofmt + l1, " ");
|
|
||||||
if (fmt) strcpy(buf + l1 + 1, fmt);
|
|
||||||
/* FIXME: sanitise buf */
|
|
||||||
return strdup(buf);
|
|
||||||
/* FIXME: actually merge */
|
|
||||||
/* snprintf to a buffer, return strdup buffer */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -143,11 +129,16 @@ evas_object_textblock_layout_format_apply(Layout *layout, char *key, char *data)
|
||||||
if (layout->font.name) free(layout->font.name);
|
if (layout->font.name) free(layout->font.name);
|
||||||
layout->font.name = strdup(data);
|
layout->font.name = strdup(data);
|
||||||
}
|
}
|
||||||
if (!strcmp(key, "size"))
|
else if (!strcmp(key, "font_source"))
|
||||||
|
{
|
||||||
|
if (layout->font.source) free(layout->font.source);
|
||||||
|
layout->font.source = strdup(data);
|
||||||
|
}
|
||||||
|
else if (!strcmp(key, "size"))
|
||||||
{
|
{
|
||||||
layout->font.size = atoi(data);
|
layout->font.size = atoi(data);
|
||||||
}
|
}
|
||||||
if (!strcmp(key, "color"))
|
else if (!strcmp(key, "color"))
|
||||||
{
|
{
|
||||||
/* #RRGGBB[AA] or #RGB[A] */
|
/* #RRGGBB[AA] or #RGB[A] */
|
||||||
if (data[0] == '#')
|
if (data[0] == '#')
|
||||||
|
@ -291,7 +282,6 @@ evas_object_textblock_layout_format_modify(Layout *layout, const char *format)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (*p);
|
while (*p);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -299,6 +289,7 @@ evas_object_textblock_layout_copy(Layout *layout, Layout *layout_dst)
|
||||||
{
|
{
|
||||||
*layout_dst = *layout;
|
*layout_dst = *layout;
|
||||||
if (layout->font.name) layout_dst->font.name = strdup(layout->font.name);
|
if (layout->font.name) layout_dst->font.name = strdup(layout->font.name);
|
||||||
|
if (layout->font.source) layout_dst->font.source = strdup(layout->font.source);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -354,7 +345,7 @@ evas_object_textblock_layout(Evas_Object *obj)
|
||||||
Evas_Object_List *l, *ll;
|
Evas_Object_List *l, *ll;
|
||||||
Evas_Coord w, h;
|
Evas_Coord w, h;
|
||||||
Layout_Node *line_start = NULL;
|
Layout_Node *line_start = NULL;
|
||||||
|
|
||||||
o = (Evas_Object_Textblock *)(obj->object_data);
|
o = (Evas_Object_Textblock *)(obj->object_data);
|
||||||
/* FIXME: takes nodes and produce layotu nodes */
|
/* FIXME: takes nodes and produce layotu nodes */
|
||||||
evas_object_textblock_layout_init(&layout);
|
evas_object_textblock_layout_init(&layout);
|
||||||
|
@ -448,6 +439,9 @@ evas_object_textblock_layout(Evas_Object *obj)
|
||||||
/* the first char can't fit. put it in there anyway */
|
/* the first char can't fit. put it in there anyway */
|
||||||
/* FIXME */
|
/* FIXME */
|
||||||
free(text);
|
free(text);
|
||||||
|
if (lnode->text) free(lnode->text);
|
||||||
|
evas_object_textblock_layout_clear(obj, &(lnode->layout));
|
||||||
|
free(lnode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -495,6 +489,7 @@ evas_object_textblock_layout(Evas_Object *obj)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
evas_object_textblock_layout_clear(obj, &layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1092,14 +1087,16 @@ evas_object_textblock_render_pre(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
if (o->changed)
|
if (o->changed)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
Evas_Rectangle *r;
|
Evas_Rectangle *r;
|
||||||
|
|
||||||
r = malloc(sizeof(Evas_Rectangle));
|
r = malloc(sizeof(Evas_Rectangle));
|
||||||
r->x = 0; r->y = 0;
|
r->x = 0; r->y = 0;
|
||||||
r->w = obj->cur.geometry.w;
|
r->w = obj->cur.geometry.w;
|
||||||
r->h = obj->cur.geometry.h;
|
r->h = obj->cur.geometry.h;
|
||||||
updates = evas_object_render_pre_prev_cur_add(updates, obj);
|
|
||||||
updates = evas_list_append(updates, r);
|
updates = evas_list_append(updates, r);
|
||||||
|
*/
|
||||||
|
updates = evas_object_render_pre_prev_cur_add(updates, obj);
|
||||||
evas_object_textblock_layout_clean(obj);
|
evas_object_textblock_layout_clean(obj);
|
||||||
evas_object_textblock_layout(obj);
|
evas_object_textblock_layout(obj);
|
||||||
o->changed = 0;
|
o->changed = 0;
|
||||||
|
|
Loading…
Reference in New Issue