{
_find_layout_format_item_line_match(cur->obj,
_evas_textblock_node_visible_at_pos_get(
- _evas_textblock_cursor_node_format_before_or_at_pos_get(cur)),
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
&ln, &fi);
}
else
{
_find_layout_format_item_line_match(cur->obj,
_evas_textblock_node_visible_at_pos_get(
- _evas_textblock_cursor_node_format_before_or_at_pos_get(cur)),
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
&ln, &fi);
}
else
{
if (!s) return EINA_FALSE;
const char *item;
+ Eina_Bool is_opener = EINA_TRUE;
if (s[0] == '+' || s[0] == '-')
{
+ is_opener = (s[0] == '+') ? EINA_TRUE : EINA_FALSE;
s++;
}
while ((item = _format_parse(&s)))
tmp = alloca(s - item + 1);
strncpy(tmp, item, s - item);
tmp[s - item] = '\0';
+ /* We care about all of the formats even after a - except for
+ * item which we don't care after a - because it's just a standard
+ * closing */
if (((!strcmp(item, "\n")) || (!strcmp(item, "\\n"))) ||
((!strcmp(item, "\t")) || (!strcmp(item, "\\t"))) ||
(!strcmp(item, "ps")) ||
- (!strcmp(item, "item")))
+ (!strncmp(item, "item", 4) && is_opener)) /*FIXME: formats like item2 will break it. */
return EINA_TRUE;
}
return EINA_FALSE;
if (!o->formatted.valid) _relayout(cur->obj);
if (evas_textblock_cursor_format_is_visible_get(cur))
{
- _find_layout_format_item_line_match(cur->obj,
- _evas_textblock_cursor_node_format_at_pos_get(cur),
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
&ln, &fi);
}
else
{
_find_layout_format_item_line_match(cur->obj,
_evas_textblock_node_visible_at_pos_get(
- _evas_textblock_cursor_node_format_before_or_at_pos_get(cur)),
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
&ln, &fi);
}
else
Evas_Object_Textblock_Format_Item *fi = NULL;
Evas_Coord x, y, w, h;
- if (!cur) return 0;
+ if (!cur || !evas_textblock_cursor_format_is_visible_get(cur)) return 0;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
if (!o->formatted.valid) _relayout(cur->obj);
_find_layout_format_item_line_match(cur->obj,
- _evas_textblock_cursor_node_format_before_or_at_pos_get(cur), &ln, &fi);
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
if ((!ln) || (!fi)) return 0;
x = ln->x + fi->x;
y = ln->y + ln->baseline + fi->y;