forked from enlightenment/efl
When the viewport is resized, the entry size will be recalculate.
Using the elm_scrollable_interface_content_viewport_resize_cb_set in scrollable entry widget. this only happens in mobile profile when you drag the content with your finger left/right when the content is smaller than the gap between icons. This accepts D187
This commit is contained in:
parent
55d26bd52e
commit
d91f85c967
|
@ -286,10 +286,24 @@ _entry_rejected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EI
|
|||
printf("REJECTED: This entry rejects the following character set: [%s]\n", accept_set->rejected);
|
||||
}
|
||||
|
||||
static void
|
||||
_end_show_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *en = data;
|
||||
elm_entry_end_visible_set(en, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_end_hide_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *en = data;
|
||||
elm_entry_end_visible_set(en, EINA_FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *win, *bx, *bx2, *bt, *en, *en_p, *sp;
|
||||
Evas_Object *win, *bx, *bx2, *bx3, *bt, *en, *en_p, *sp, *entry;
|
||||
static Elm_Entry_Filter_Accept_Set digits_filter_data, digits_filter_data2;
|
||||
static Elm_Entry_Filter_Limit_Size limit_filter_data, limit_filter_data2;
|
||||
|
||||
|
@ -449,27 +463,27 @@ test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
|
|||
elm_box_pack_end(bx, en_p);
|
||||
|
||||
/* entry with icon/end widgets*/
|
||||
en = elm_entry_add(win);
|
||||
elm_entry_scrollable_set(en, EINA_TRUE);
|
||||
elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
|
||||
elm_entry_single_line_set(en, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
entry = elm_entry_add(win);
|
||||
elm_entry_scrollable_set(entry, EINA_TRUE);
|
||||
elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
|
||||
elm_entry_single_line_set(entry, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
bt = elm_icon_add(win);
|
||||
elm_icon_standard_set(bt, "home");
|
||||
evas_object_size_hint_min_set(bt, 48, 48);
|
||||
evas_object_color_set(bt, 128, 0, 0, 128);
|
||||
evas_object_show(bt);
|
||||
elm_object_part_content_set(en, "icon", bt);
|
||||
elm_object_part_content_set(entry, "icon", bt);
|
||||
bt = elm_icon_add(win);
|
||||
elm_icon_standard_set(bt, "delete");
|
||||
evas_object_color_set(bt, 128, 0, 0, 128);
|
||||
evas_object_size_hint_min_set(bt, 48, 48);
|
||||
evas_object_show(bt);
|
||||
elm_object_part_content_set(en, "end", bt);
|
||||
elm_object_text_set(en, "entry with icon and end objects");
|
||||
evas_object_show(en);
|
||||
elm_box_pack_end(bx, en);
|
||||
elm_object_part_content_set(entry, "end", bt);
|
||||
elm_object_text_set(entry, "entry with icon and end objects. For the test of show/hide end, text should be long long...");
|
||||
evas_object_show(entry);
|
||||
elm_box_pack_end(bx, entry);
|
||||
|
||||
/* markup entry */
|
||||
en = elm_entry_add(win);
|
||||
|
@ -551,6 +565,34 @@ test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
|
|||
elm_box_pack_end(bx, bx2);
|
||||
evas_object_show(bx2);
|
||||
|
||||
bx3 = elm_box_add(win);
|
||||
elm_box_horizontal_set(bx3, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
|
||||
evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "End Show");
|
||||
evas_object_smart_callback_add(bt, "clicked", _end_show_cb, entry);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
|
||||
elm_box_pack_end(bx3, bt);
|
||||
evas_object_propagate_events_set(bt, 0);
|
||||
elm_object_focus_allow_set(bt, 0);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "End Hide");
|
||||
evas_object_smart_callback_add(bt, "clicked", _end_hide_cb, entry);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
|
||||
elm_box_pack_end(bx3, bt);
|
||||
evas_object_propagate_events_set(bt, 0);
|
||||
elm_object_focus_allow_set(bt, 0);
|
||||
evas_object_show(bt);
|
||||
|
||||
elm_box_pack_end(bx, bx3);
|
||||
evas_object_show(bx3);
|
||||
|
||||
elm_object_focus_set(win, EINA_TRUE);
|
||||
evas_object_resize(win, 320, 300);
|
||||
evas_object_show(win);
|
||||
|
|
|
@ -2952,28 +2952,34 @@ _entry_selection_callbacks_register(Evas_Object *obj)
|
|||
}
|
||||
|
||||
static void
|
||||
_resize_cb(void *data,
|
||||
Evas *e EINA_UNUSED,
|
||||
Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
_elm_entry_resize_internal(Evas_Object *obj)
|
||||
{
|
||||
ELM_ENTRY_DATA_GET(data, sd);
|
||||
ELM_ENTRY_DATA_GET(obj, sd);
|
||||
|
||||
if (sd->line_wrap)
|
||||
{
|
||||
elm_layout_sizing_eval(data);
|
||||
elm_layout_sizing_eval(obj);
|
||||
}
|
||||
else if (sd->scroll)
|
||||
{
|
||||
Evas_Coord vw = 0, vh = 0;
|
||||
|
||||
eo_do(data, elm_scrollable_interface_content_viewport_size_get(&vw, &vh));
|
||||
eo_do(obj, elm_scrollable_interface_content_viewport_size_get(&vw, &vh));
|
||||
if (vw < sd->ent_mw) vw = sd->ent_mw;
|
||||
if (vh < sd->ent_mh) vh = sd->ent_mh;
|
||||
evas_object_resize(sd->entry_edje, vw, vh);
|
||||
}
|
||||
|
||||
if (sd->hoversel) _hoversel_position(data);
|
||||
if (sd->hoversel) _hoversel_position(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_resize_cb(void *data,
|
||||
Evas *e EINA_UNUSED,
|
||||
Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
_elm_entry_resize_internal(data);
|
||||
}
|
||||
|
||||
Evas_Coord ox, oy;
|
||||
|
@ -3355,6 +3361,9 @@ _elm_entry_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
if (sd->auto_save) _save_do(obj);
|
||||
}
|
||||
|
||||
if (sd->scroll)
|
||||
eo_do(obj, elm_scrollable_interface_content_viewport_resize_cb_set(NULL));
|
||||
|
||||
elm_entry_anchor_hover_end(obj);
|
||||
elm_entry_anchor_hover_parent_set(obj, NULL);
|
||||
|
||||
|
@ -4998,6 +5007,13 @@ _cnp_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
|
|||
if (ret) *ret = sd->cnp_mode;
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_entry_content_viewport_resize_cb(Evas_Object *obj,
|
||||
Evas_Coord w EINA_UNUSED, Evas_Coord h EINA_UNUSED)
|
||||
{
|
||||
_elm_entry_resize_internal(obj);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_entry_scrollable_set(Evas_Object *obj,
|
||||
Eina_Bool scroll)
|
||||
|
@ -5050,6 +5066,7 @@ _scrollable_set(Eo *obj, void *_pd, va_list *list)
|
|||
else
|
||||
eo_do(obj, elm_scrollable_interface_policy_set(sd->policy_h, sd->policy_v));
|
||||
eo_do(obj, elm_scrollable_interface_content_set(sd->entry_edje));
|
||||
eo_do(obj, elm_scrollable_interface_content_viewport_resize_cb_set(_elm_entry_content_viewport_resize_cb));
|
||||
elm_widget_on_show_region_hook_set(obj, _show_region_hook, NULL);
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue