1. fix conforman stuff to actually respect min size of content. it never did.

2. more comprehensive test.



SVN revision: 45863
This commit is contained in:
Carsten Haitzler 2010-02-04 09:08:02 +00:00
parent fb06522eb4
commit 56aba6a22b
3 changed files with 111 additions and 17 deletions

View File

@ -4,7 +4,7 @@
void
test_conformant(void *data, Evas_Object *obj, void *event)
{
Evas_Object *win, *bg, *conform, *btn;
Evas_Object *win, *bg, *conform, *btn, *bx, *sc, *en;
win = elm_win_add(NULL, "conformant", ELM_WIN_BASIC);
elm_win_title_set(win, "Conformant");
@ -21,13 +21,90 @@ test_conformant(void *data, Evas_Object *obj, void *event)
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(conform);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
sc = elm_scroller_add(win);
elm_scroller_content_min_limit(sc, 0, 1);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_scroller_bounce_set(sc, 1, 0);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sc);
en = elm_entry_add(win);
elm_entry_single_line_set(en, 1);
elm_entry_entry_set(en, "This is the top entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_scroller_content_set(sc, en);
evas_object_show(en);
evas_object_show(sc);
btn = elm_button_add(win);
elm_button_label_set(btn, "Test Conformant");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
elm_conformant_content_set(conform, btn);
sc = elm_scroller_add(win);
elm_scroller_content_min_limit(sc, 0, 1);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_scroller_bounce_set(sc, 1, 0);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sc);
evas_object_resize(win, 200, 200);
en = elm_entry_add(win);
elm_entry_single_line_set(en, 1);
elm_entry_entry_set(en, "This is the middle entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_scroller_content_set(sc, en);
evas_object_show(en);
evas_object_show(sc);
btn = elm_button_add(win);
elm_button_label_set(btn, "Test Conformant");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
sc = elm_scroller_add(win);
elm_scroller_content_min_limit(sc, 0, 0);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
elm_scroller_bounce_set(sc, 0, 1);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, sc);
en = elm_entry_add(win);
elm_entry_entry_set(en,
"This is a multi-line entry at the bottom<br>"
"This can contain more than 1 line of text and be "
"scrolled around to allow for entering of lots of "
"content. It is also to test to see that autoscroll "
"moves to the right part of a larger multi-line "
"text entry that is inside of a scroller than can be "
"scrolled around, thus changing the expected position "
"as well as cursor changes updating auto-scroll when "
"it is enabled.");
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);
elm_scroller_content_set(sc, en);
evas_object_show(en);
evas_object_show(sc);
elm_conformant_content_set(conform, bx);
evas_object_show(bx);
evas_object_resize(win, 240, 240);
evas_object_show(win);
}

View File

@ -473,8 +473,6 @@ extern "C" {
EAPI void elm_table_homogenous_set(Evas_Object *obj, Eina_Bool homogenous);
EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical);
/* smart callbacks called:
*/
EAPI Evas_Object *elm_clock_add(Evas_Object *parent);
EAPI void elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec);
@ -491,8 +489,8 @@ extern "C" {
EAPI Eina_Bool elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style);
EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content);
EAPI Evas_Object *elm_layout_edje_get(const Evas_Object *obj);
EAPI void elm_layout_sizing_eval(Evas_Object *obj);
/* smart callbacks called:
EAPI void elm_layout_sizing_eval(Evas_Object *obj);
/* smart callbacks called:
*/
typedef enum _Elm_Notify_Orient
@ -516,6 +514,7 @@ extern "C" {
EAPI void elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat);
/* smart callbacks called:
*/
typedef enum _Elm_Hover_Axis
{
ELM_HOVER_AXIS_NONE,
@ -587,7 +586,6 @@ extern "C" {
EAPI Eina_Bool elm_entry_context_menu_disabled_get(Evas_Object *obj);
EAPI char *elm_entry_markup_to_utf8(const char *s);
EAPI char *elm_entry_utf8_to_markup(const char *s);
/* smart callbacks called:
* "changed" - the text content changed
* "selection,start" - the user started selecting text
@ -607,7 +605,6 @@ extern "C" {
/* composite widgets - these basically put together basic widgets above
* in convenient packages that do more than basic stuff */
typedef enum _Elm_Text_Format
{
ELM_TEXT_FORMAT_PLAIN_UTF8,
@ -795,7 +792,6 @@ extern "C" {
EAPI Elm_List_Item *elm_list_item_next(const Elm_List_Item *it);
EAPI void elm_list_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
EAPI void elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
/* smart callbacks called:
* "clicked" - when the user double-clicked an item
* "selected" - when the user selected an item
@ -827,12 +823,6 @@ extern "C" {
EAPI void elm_slider_value_set(Evas_Object *obj, double val);
EAPI double elm_slider_value_get(const Evas_Object *obj);
EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted);
/* smart callbacks called:
* "changed" - when the slider value changes
* "delay,changed" - when the slider value changed, but a small time after a change (use this if you only want to respond to a change once the slider is held still for a short while).
* "slider,drag,start" - dragging the slider indicator around has started
* "slider,drag,stop" - dragging the slider indicator around has stopped
*/
typedef enum _Elm_Genlist_Item_Flags
{

View File

@ -48,6 +48,28 @@ _sizing_eval(Evas_Object *obj)
evas_object_size_hint_max_set(obj, -1, -1);
}
static void
_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Widget_Data *wd = elm_widget_data_get(data);
_sizing_eval(data);
}
static void
_sub_del(void *data, Evas_Object *obj, void *event_info)
{
Widget_Data *wd = elm_widget_data_get(obj);
Evas_Object *sub = event_info;
if (sub == wd->content)
{
evas_object_event_callback_del_full(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
wd->content = NULL;
_sizing_eval(obj);
}
}
static int
_prop_change(void *data, int type, void *event)
{
@ -131,7 +153,9 @@ elm_conformant_add(Evas_Object *parent)
wd->prop_hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
_prop_change, obj);
#endif
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
_sizing_eval(obj);
return obj;
}
@ -147,6 +171,9 @@ elm_conformant_content_set(Evas_Object *obj, Evas_Object *content)
if (content)
{
elm_widget_sub_object_add(obj, content);
evas_object_event_callback_add(content,
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
edje_object_part_swallow(wd->base, "elm.swallow.content", content);
_sizing_eval(obj);
}