It fixes the following problems.
- elm_widget_show_region_set() could be called from
inside of elm_widget_show_region_set(). And the last function call
could be ignored and given values were abandoned.
The patch updates show region values everytime.
- When elm_entry is resized during processing elm_widget_show_region_set(),
it must update its show region geometry to show proper region according to
lastest geometry.
The patch will show proper region of elm_entry's cursor.
@tizen_fix
Change-Id: Ia92a5232cfd26aa98075cdb9e4b54d376d1c44b7
}
if (sd->hoversel) _hoversel_position(obj);
+
+ /* TIZEN_ONLY(20161222): Update show region geometry when entry is resized */
+ /* Update show region geometry if current resize event is
+ occured during processing elm_widget_show_region_set() function. */
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
+ if (wd->on_show_region_set)
+ {
+ Evas_Coord cx, cy, cw, ch;
+
+ edje_object_part_text_cursor_geometry_get
+ (sd->entry_edje, "elm.text", &cx, &cy, &cw, &ch);
+ elm_widget_show_region_set(obj, cx, cy, cw, ch, EINA_FALSE);
+ }
+ /* END */
}
static void
Evas_Coord px, py, cx, cy, nx = 0, ny = 0;
+ /* TIZEN_ONLY(20161222): Update show region geometry when entry is resized
+ Move this code to the blow to update show region geometry properly.
evas_smart_objects_calculate(evas_object_evas_get(obj));
+ */
if (!forceshow && (x == sd->rx) && (y == sd->ry) &&
(w == sd->rw) && (h == sd->rh)) return;
sd->ry = y;
sd->rw = w;
sd->rh = h;
+
+ /* TIZEN_ONLY(20161222): Update show region geometry when entry is resized */
+ /* Block nested call for evas_smart_objects_calculate() and region showing works */
+ if (sd->on_show_region_set) return;
+
+ sd->on_show_region_set = EINA_TRUE;
+
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+
+ sd->on_show_region_set = EINA_FALSE;
+
+ /* show_region geometry could be changed during processing elm_widget_show_region_set().
+ evas_smart_objects_calculate() can trigger nested show_region_set calls */
+ x = sd->rx;
+ y = sd->ry;
+ w = sd->rw;
+ h = sd->rh;
+ /* END */
+
if (sd->on_show_region)
{
sd->on_show_region
Eina_Bool scroll_item_align_enable;
const char *scroll_item_valign;
//
+
+ /* TIZEN_ONLY(20161222): Update show region geometry when entry is resized */
+ Eina_Bool on_show_region_set: 1;
+ /* END */
} Elm_Widget_Smart_Data;
/**