Summary: BiDi text is truncated because the way we find the last visual item in text object is wrong.
This patch is similar with _line_native_last_visual_get function in textblock.
Reviewers: cedric, tasn, herdsman
Subscribers: id213sin, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3947
(commit id:
d22850848dc91eccc1995eb0a5e873fc27430d32)
Signed-off-by: Minwoo, Lee <minwoo47.lee@samsung.com>
Change-Id: Iec239ad7edad9eb688a7430dd4384842093efaa2
#ifdef BIDI_SUPPORT
int par_len = len;
int *segment_idxs = NULL;
+ Eina_Bool is_bidi = EINA_FALSE;
#endif
if (o->items &&
}
o->bidi_par_props = evas_bidi_paragraph_props_get(text, len, segment_idxs, bidi_par_type);
+ is_bidi = !!o->bidi_par_props;
}
if (o->bidi_par_props)
if (text)
{
const Evas_Object_Text_Item *last_it = NULL;
+#ifdef BIDI_SUPPORT
+ size_t max_vpos = 0;
+#endif
while (len > 0)
{
/* TIZEN_ONLY(20161007): Apply the last character's advance for width calculation
if (it->w > 0)
- last_it = it;
*/
if ((it->w > 0) || (it->adv > 0))
- last_it = it;
/* END */
+ {
+#ifdef BIDI_SUPPORT
+ if (is_bidi)
+ {
+ if (!last_it || (visual_pos >= max_vpos))
+ {
+ last_it = it;
+ max_vpos = visual_pos;
+ }
+ }
+ else
+#endif
+ {
+ last_it = it;
+ }
+ }
}
}