summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoungbok Shin <youngb.shin@samsung.com>2014-01-10 16:37:55 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2014-01-10 16:39:06 +0900
commit6c12d740087ce54e9af59333c0e23dbc129882e7 (patch)
tree97bccaa5c9ce5cd4d007ab06006b38c82904adb3
parentb15e2cfc45105640078f004345593aacd68a96ee (diff)
downloadelementary-6c12d740087ce54e9af59333c0e23dbc129882e7.tar.gz
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
-rw-r--r--src/bin/test_entry.c66
-rw-r--r--src/lib/elm_entry.c33
2 files changed, 79 insertions, 20 deletions
diff --git a/src/bin/test_entry.c b/src/bin/test_entry.c
index 4327a7d1c..c6483d88f 100644
--- a/src/bin/test_entry.c
+++ b/src/bin/test_entry.c
@@ -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);
diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index e460d9043..bf380664c 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -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