forked from enlightenment/efl
evas: make Evas_Object_Text ellipsis handle faster by not recalculating what was already calculated.
SVN revision: 80790
This commit is contained in:
parent
dff801c49b
commit
a3f52650b9
|
@ -44,6 +44,10 @@ struct _Evas_Object_Text
|
||||||
|
|
||||||
Evas_Font_Set *font;
|
Evas_Font_Set *font;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
Evas_Coord w, h;
|
||||||
|
} last_computed;
|
||||||
|
|
||||||
char changed : 1;
|
char changed : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -622,6 +626,14 @@ _evas_object_text_layout(Evas_Object *eo_obj, Evas_Object_Text *o, const Eina_Un
|
||||||
#ifdef BIDI_SUPPORT
|
#ifdef BIDI_SUPPORT
|
||||||
int par_len = len;
|
int par_len = len;
|
||||||
int *segment_idxs = NULL;
|
int *segment_idxs = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!memcmp(&o->cur, &o->prev, sizeof (o->cur)) &&
|
||||||
|
o->last_computed.w == obj->cur.geometry.w &&
|
||||||
|
o->last_computed.h == obj->cur.geometry.h)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
#ifdef BIDI_SUPPORT
|
||||||
if (o->bidi_delimiters)
|
if (o->bidi_delimiters)
|
||||||
segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters);
|
segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters);
|
||||||
evas_bidi_paragraph_props_unref(o->bidi_par_props);
|
evas_bidi_paragraph_props_unref(o->bidi_par_props);
|
||||||
|
@ -781,6 +793,9 @@ _evas_object_text_layout(Evas_Object *eo_obj, Evas_Object_Text *o, const Eina_Un
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
o->prev = o->cur;
|
||||||
|
o->last_computed.w = obj->cur.geometry.w;
|
||||||
|
o->last_computed.h = obj->cur.geometry.h;
|
||||||
|
|
||||||
_evas_object_text_item_order(eo_obj, o);
|
_evas_object_text_item_order(eo_obj, o);
|
||||||
|
|
||||||
|
@ -2072,8 +2087,8 @@ evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
|
||||||
/* If object size changed and ellipsis is set */
|
/* If object size changed and ellipsis is set */
|
||||||
if ((o->cur.ellipsis >= 0.0 ||
|
if ((o->cur.ellipsis >= 0.0 ||
|
||||||
o->cur.ellipsis != o->prev.ellipsis) &&
|
o->cur.ellipsis != o->prev.ellipsis) &&
|
||||||
((obj->cur.geometry.w != obj->prev.geometry.w) ||
|
((obj->cur.geometry.w != o->last_computed.w) ||
|
||||||
(obj->cur.geometry.h != obj->prev.geometry.h)))
|
(obj->cur.geometry.h != o->last_computed.h)))
|
||||||
{
|
{
|
||||||
_evas_object_text_recalc(eo_obj);
|
_evas_object_text_recalc(eo_obj);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue