My bad. Feel free to fix it, or wait until I do it soon. On Sun, Feb 14, 2016 at 9:15 AM, Daniel Hirt <[email protected]> wrote:
> The ifdef is for the optional hyphen dictionaries. We should support > hyphenation with SHY-HYPHEN even without those. > This had disabled everything altogether. > > On 02/12/2016 02:21 PM, Tom Hacohen wrote: > > tasn pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=5b083ace84ca91496810cd1826c9469a6c741700 > > > > commit 5b083ace84ca91496810cd1826c9469a6c741700 > > Author: Tom Hacohen <[email protected]> > > Date: Fri Feb 12 12:08:29 2016 +0000 > > > > Evas textblock: Properly ifdef hyphenation out. > > > > I found this thanks to coverity. There was some code that we were > running > > although hyphenation was actually off. > > > > CID 1341062. > > --- > > src/lib/evas/canvas/evas_object_textblock.c | 95 > +++++++++++++++-------------- > > 1 file changed, 49 insertions(+), 46 deletions(-) > > > > diff --git a/src/lib/evas/canvas/evas_object_textblock.c > b/src/lib/evas/canvas/evas_object_textblock.c > > index 841918b..80e9774 100644 > > --- a/src/lib/evas/canvas/evas_object_textblock.c > > +++ b/src/lib/evas/canvas/evas_object_textblock.c > > @@ -3725,8 +3725,6 @@ _layout_text_cutoff_get(Ctxt *c, > Evas_Object_Textblock_Format *fmt, > > return -1; > > } > > > > -static Evas_Object_Textblock_Text_Item * _layout_hyphen_item_new(Ctxt > *c, const Evas_Object_Textblock_Text_Item *cur_ti); > > - > > /** > > * @internal > > * Split before cut, and strip if str[cut - 1] is a whitespace. > > @@ -4445,6 +4443,7 @@ _layout_get_charwrap(Ctxt *c, > Evas_Object_Textblock_Format *fmt, > > #define ALLOW_BREAK(i) \ > > (breaks[i] <= LINEBREAK_ALLOWBREAK) > > > > +#ifdef HAVE_HYPHEN > > /* Give a position in text, find the end of word by using Unicode word > > * boundary rules */ > > static inline size_t > > @@ -4455,13 +4454,58 @@ _layout_word_end(const char *breaks, size_t pos, > size_t len) > > return pos; > > } > > > > +/* Hyphenation (since 1.17) */ > > +static Evas_Object_Textblock_Text_Item * > > +_layout_hyphen_item_new(Ctxt *c, const Evas_Object_Textblock_Text_Item > *cur_ti) > > +{ > > + /* U+2010 - Unicode HYPHEN */ > > + const Eina_Unicode _hyphen_str[2] = { 0x2010, '\0' }; > > + Evas_Object_Textblock_Text_Item *hyphen_ti; > > + Evas_Script_Type script; > > + Evas_Font_Instance *script_fi = NULL, *cur_fi; > > + size_t len = 1; /* The length of _hyphen_str */ > > + > > + if (c->hyphen_ti) > > + { > > + _item_free(c->obj, NULL, _ITEM(c->hyphen_ti)); > > + } > > + c->hyphen_ti = hyphen_ti = _layout_text_item_new(c, > cur_ti->parent.format); > > + hyphen_ti->parent.text_node = cur_ti->parent.text_node; > > + hyphen_ti->parent.text_pos = cur_ti->parent.text_pos + > cur_ti->text_props.text_len - 1; > > + script = evas_common_language_script_type_get(_hyphen_str, len); > > + > > + evas_common_text_props_bidi_set(&hyphen_ti->text_props, > > + c->par->bidi_props, hyphen_ti->parent.text_pos); > > + evas_common_text_props_script_set (&hyphen_ti->text_props, script); > > + > > + if (hyphen_ti->parent.format->font.font) > > + { > > + Evas_Object_Protected_Data *obj = eo_data_scope_get(c->obj, > EVAS_OBJECT_CLASS); > > + /* It's only 1 char anyway, we don't need the run end. */ > > + (void) ENFN->font_run_end_get(ENDT, > > + hyphen_ti->parent.format->font.font, &script_fi, &cur_fi, > > + script, _hyphen_str, len); > > + > > + ENFN->font_text_props_info_create(ENDT, > > + cur_fi, _hyphen_str, &hyphen_ti->text_props, > > + c->par->bidi_props, hyphen_ti->parent.text_pos, len, > EVAS_TEXT_PROPS_MODE_SHAPE, > > + hyphen_ti->parent.format->font.fdesc->lang); > > + } > > + > > + _text_item_update_sizes(c, hyphen_ti); > > + return hyphen_ti; > > +} > > + > > #define SHY_HYPHEN 0xad > > > > +#endif > > + > > static int > > _layout_get_hyphenationwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, > > const Evas_Object_Textblock_Item *it, size_t line_start, > > const char *breaks, const char *wordbreaks) > > { > > +#ifdef HAVE_HYPHEN > > size_t wrap; > > size_t orig_wrap; > > const Eina_Unicode *str = eina_ustrbuf_string_get( > > @@ -4542,9 +4586,7 @@ _layout_get_hyphenationwrap(Ctxt *c, > Evas_Object_Textblock_Format *fmt, > > size_t i = 0; > > size_t pos = 0; > > > > -#ifdef HAVE_HYPHEN > > hyphens = _layout_wrap_hyphens_get(str, > it->format->font.fdesc->lang, word_start, word_len); > > -#endif > > > > /* This only happens one time, if the cutoff is > in > > * the middle of this word */ > > @@ -4608,6 +4650,9 @@ _layout_get_hyphenationwrap(Ctxt *c, > Evas_Object_Textblock_Format *fmt, > > return wrap; > > } > > } > > +#else > > + (void) wordbreaks; > > +#endif > > > > /* Hyphenation falls-back to char wrapping at start of line */ > > return _layout_get_charwrap(c, fmt, it, > > @@ -7509,48 +7554,6 @@ _layout_item_obstacle_get(Ctxt *c, > Evas_Object_Textblock_Item *it) > > return min_obs; > > } > > > > -/* Hyphenation (since 1.17) */ > > -static Evas_Object_Textblock_Text_Item * > > -_layout_hyphen_item_new(Ctxt *c, const Evas_Object_Textblock_Text_Item > *cur_ti) > > -{ > > - /* U+2010 - Unicode HYPHEN */ > > - const Eina_Unicode _hyphen_str[2] = { 0x2010, '\0' }; > > - Evas_Object_Textblock_Text_Item *hyphen_ti; > > - Evas_Script_Type script; > > - Evas_Font_Instance *script_fi = NULL, *cur_fi; > > - size_t len = 1; /* The length of _hyphen_str */ > > - > > - if (c->hyphen_ti) > > - { > > - _item_free(c->obj, NULL, _ITEM(c->hyphen_ti)); > > - } > > - c->hyphen_ti = hyphen_ti = _layout_text_item_new(c, > cur_ti->parent.format); > > - hyphen_ti->parent.text_node = cur_ti->parent.text_node; > > - hyphen_ti->parent.text_pos = cur_ti->parent.text_pos + > cur_ti->text_props.text_len - 1; > > - script = evas_common_language_script_type_get(_hyphen_str, len); > > - > > - evas_common_text_props_bidi_set(&hyphen_ti->text_props, > > - c->par->bidi_props, hyphen_ti->parent.text_pos); > > - evas_common_text_props_script_set (&hyphen_ti->text_props, script); > > - > > - if (hyphen_ti->parent.format->font.font) > > - { > > - Evas_Object_Protected_Data *obj = eo_data_scope_get(c->obj, > EVAS_OBJECT_CLASS); > > - /* It's only 1 char anyway, we don't need the run end. */ > > - (void) ENFN->font_run_end_get(ENDT, > > - hyphen_ti->parent.format->font.font, &script_fi, &cur_fi, > > - script, _hyphen_str, len); > > - > > - ENFN->font_text_props_info_create(ENDT, > > - cur_fi, _hyphen_str, &hyphen_ti->text_props, > > - c->par->bidi_props, hyphen_ti->parent.text_pos, len, > EVAS_TEXT_PROPS_MODE_SHAPE, > > - hyphen_ti->parent.format->font.fdesc->lang); > > - } > > - > > - _text_item_update_sizes(c, hyphen_ti); > > - return hyphen_ti; > > -} > > - > > /* cursors */ > > > > /** > > > > > ------------------------------------------------------------------------------ > Site24x7 APM Insight: Get Deep Visibility into Application Performance > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > Monitor end-to-end web transactions and take corrective actions now > Troubleshoot faster and improve end-user experience. Signup Now! > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
