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:
parent
fb06522eb4
commit
56aba6a22b
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue