}
/* END */
+
+static Evas_BiDi_Direction
+_edje_text_direction_get(Edje_Real_Part *ep)
+{
+ Evas_BiDi_Direction bidi_dir;
+
+ if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK)
+ {
+ Evas_Textblock_Cursor *cur;
+ cur = evas_object_textblock_cursor_new(ep->object);
+ bidi_dir = evas_textblock_cursor_paragraph_direction_get(cur);
+ evas_textblock_cursor_line_set(cur, 1);
+ evas_textblock_cursor_free(cur);
+ }
+ else
+ {
+ bidi_dir = evas_object_text_direction_get(ep->object);
+ }
+
+ return bidi_dir;
+}
+
+static void
+_edje_text_direction_update(Edje *ed, Edje_Real_Part *ep, Edje_Part_Description_Text *chosen_desc)
+{
+ if (!ep || !ep->typedata.text) return;
+
+ if (!ep->typedata.text->text && !edje_string_get(&chosen_desc->text.text))
+ return;
+
+ Evas_BiDi_Direction par_dir = evas_object_paragraph_direction_get(ep->object);
+
+ if (!ep->typedata.text->changed &&
+ ep->typedata.text->last_paragraph_direction == par_dir)
+ return;
+
+ Evas_BiDi_Direction text_dir;
+ text_dir = _edje_text_direction_get(ep);
+
+ if (ep->typedata.text->text_direction == text_dir)
+ return;
+
+ ep->typedata.text->text_direction = text_dir;
+ ep->typedata.text->last_paragraph_direction = par_dir;
+ ep->typedata.text->changed = EINA_FALSE;
+
+ if (text_dir == EVAS_BIDI_DIRECTION_RTL ||
+ text_dir == EVAS_BIDI_DIRECTION_ANY_RTL)
+ _edje_emit(ed, "text,state,rtl", ep->part->name);
+ else
+ _edje_emit(ed, "text,state,ltr", ep->part->name);
+}
+
void
_edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *state)
{
/* TIZEN_ONLY_FEATURE: ellipsize.marquee, ellipsize.fade for TEXTBLOCK, TEXT part. */
if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK ||
ep->part->type == EDJE_PART_TYPE_TEXT)
- _edje_text_ellipsize_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc);
+ {
+ _edje_text_ellipsize_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc);
+ _edje_text_direction_update(ed, ep, (Edje_Part_Description_Text*) chosen_desc);
+ }
/* END */
}
}
/***********************************************************************************
* TIZEN_ONLY_FEATURE: API for handling text properties of Edje *
***********************************************************************************/
- else rp->typedata.text->valign = -1.0;
+ else
+ {
+ rp->typedata.text->valign = -1.0;
+ rp->typedata.text->changed = EINA_TRUE;
+ rp->typedata.text->text_direction = EVAS_BIDI_DIRECTION_NEUTRAL;
+ rp->typedata.text->last_paragraph_direction = EVAS_BIDI_DIRECTION_NEUTRAL;
+ }
/*******
* END *
*******/