Currently I don't know if this problem have to be fixed. I'll try to
describe it and wait your opinion.
So, for example you have aplication with a sheet of paper. Paper may
be zoomed, zoom implemented via evas_set_viewport. And let there is
unzoomable editbox (text and blinking cursor).
double scale = 5.0; /* 20% */
char *fontname = "lucon"; /* but any */
int fontsize = 12; /* if 14 -- cursor will go forward */
... /* initialization */
evas_set_viewport(e, dx, dy, scale*win_w, scale*win_h);
o_ed = evas_add_text(e, fontname, fontsize*scale,"any text");
o_cu = evas_add_rectangle(e); /* cursor */
evas_resize(e, o_cu, 2*scale,12*scale);
/* my_rezoom_handler, my_configure_handler, etc. */
... /* the problem appears here */
w = evas_get_text_width(o_ed);
evas_move(e, o_cu, cu_x+w, cu_y);
... /* */
The result of entering text is on the pic1
Backspaced text will look like on the pic2 until update.
If scale = 1.0 then everything is Ok.
I've noticed that evas_get_text_width() works with "lucon/60" in this
case, but rendering goes with "lucon/12", and precision is lost here.
1) Patch seems to be useless (scale !=1.0 is rarely used imho), somebody
wants text size in pixels (as "lucon/60"), other people want no garbage.
If you interested in patch please answer me.
2) For those who warns -- my solution how to put cursor on the right place:
o_dummy = evas_add_text(e,
w = evas_get_text_width(e, o_dummy);
w *= scale;
evas_del_object(e, o_dummy); /* also cliprect made that way will help */