Eina_Bool have_selection : 1;
Eina_Bool selmode : 1;
Eina_Bool deferred_cur : 1;
+ Eina_Bool cur_changed : 1;
Eina_Bool disabled : 1;
Eina_Bool context_menu : 1;
Eina_Bool drag_selection_asked : 1;
Evas_Coord cx, cy, cw, ch;
edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
&cx, &cy, &cw, &ch);
- elm_widget_show_region_set(data, cx, cy, cw, ch);
+ if (wd->cur_changed)
+ {
+ elm_widget_show_region_set(data, cx, cy, cw, ch);
+ wd->cur_changed = EINA_FALSE;
+ }
+ }
+}
+
+static void
+_recalc_cursor_geometry(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ evas_object_smart_callback_call(obj, SIG_CURSOR_CHANGED, NULL);
+ if (!wd->deferred_recalc_job)
+ {
+ Evas_Coord cx, cy, cw, ch;
+ edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
+ &cx, &cy, &cw, &ch);
+ if (wd->cur_changed)
+ {
+ elm_widget_show_region_set(obj, cx, cy, cw, ch);
+ wd->cur_changed = EINA_FALSE;
+ }
+ }
+ else
+ {
+ wd->deferred_cur = EINA_TRUE;
}
}
if (wd->single_line)
evas_object_size_hint_max_set(obj, -1, minh);
}
+
+ _recalc_cursor_geometry(obj);
}
static void
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
- evas_object_smart_callback_call(data, SIG_CURSOR_CHANGED, NULL);
wd->cursor_pos = edje_object_part_text_cursor_pos_get(wd->ent, "elm.text", EDJE_CURSOR_MAIN);
- if (!wd->deferred_recalc_job)
- {
- Evas_Coord cx, cy, cw, ch;
- edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
- &cx, &cy, &cw, &ch);
- elm_widget_show_region_set(data, cx, cy, cw, ch);
- }
- else
- {
- wd->deferred_cur = EINA_TRUE;
- }
+ wd->cur_changed = EINA_TRUE;
+ _recalc_cursor_geometry(data);
}
static void