_efl_ui_collection_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Collection_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
{
Eina_List *subobj_list = eina_list_data_find_list(pd->items, existing);
- EINA_SAFETY_ON_NULL_RETURN_VAL(subobj_list, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_NULL_RETURN_VAL(subobj_list, EINA_FALSE);
if (!register_item(obj, pd, subobj))
return EINA_FALSE;
_efl_ui_collection_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Collection_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
{
Eina_List *subobj_list = eina_list_data_find_list(pd->items, existing);
- EINA_SAFETY_ON_NULL_RETURN_VAL(subobj_list, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_NULL_RETURN_VAL(subobj_list, EINA_FALSE);
if (!register_item(obj, pd, subobj))
return EINA_FALSE;
EINA_SAFETY_ON_TRUE_RETURN_VAL(subobj == obj, EINA_FALSE);
Eo *container = efl_ui_item_container_get(obj);
EINA_SAFETY_ON_NULL_RETURN_VAL(container, EINA_FALSE);
+ int group_index = efl_pack_index_get(container, obj);
//FIXME, maybe we should check if existing is really part of this group
_register_item(obj, pd, subobj);
- HANDLE_REG_CALL(efl_pack_before(container, subobj, existing));
+ if (existing)
+ {
+ HANDLE_REG_CALL(efl_pack_before(container, subobj, existing));
+ }
+ else
+ {
+ HANDLE_REG_CALL(efl_pack_at(container, subobj, group_index + 1));
+ }
+
}
EOLIAN static Eina_Bool
EINA_SAFETY_ON_TRUE_RETURN_VAL(subobj == obj, EINA_FALSE);
Eo *container = efl_ui_item_container_get(obj);
EINA_SAFETY_ON_NULL_RETURN_VAL(container, EINA_FALSE);
+ int group_index = efl_pack_index_get(container, obj);
//FIXME, maybe we should check if existing is really part of this group
_register_item(obj, pd, subobj);
- HANDLE_REG_CALL(efl_pack_after(container, subobj, existing));
+ if (existing)
+ {
+ HANDLE_REG_CALL(efl_pack_after(container, subobj, existing));
+ }
+ else
+ {
+ HANDLE_REG_CALL(efl_pack_at(container, subobj, group_index + eina_list_count(pd->registered_items)));
+ }
}
EOLIAN static Eina_Bool
const Efl_Gfx_Entity *existing)
{
int index = eina_list_data_idx(pd->content_list, (void *)existing);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing);
const Efl_Gfx_Entity *existing)
{
int index = eina_list_data_idx(pd->content_list, (void *)existing);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
pd->content_list = eina_list_append_relative(pd->content_list, subobj, existing);
EOLIAN static Eina_Bool
_efl_ui_tab_bar_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
{
- EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
EINA_SAFETY_ON_FALSE_RETURN_VAL(_register_item(obj, pd, subobj), EINA_FALSE);
return efl_pack_before(pd->bx, subobj, existing);
}
EOLIAN static Eina_Bool
_efl_ui_tab_bar_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
{
- EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
+ if (existing)
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
EINA_SAFETY_ON_FALSE_RETURN_VAL(_register_item(obj, pd, subobj), EINA_FALSE);
return efl_pack_after(pd->bx, subobj, existing);
}
}
EFL_END_TEST
+EFL_START_TEST(pack_before4)
+{
+ Efl_Ui_Widget *wid[3];
+ Efl_Ui_Widget *inv = create_test_widget();
+
+ _fill_array(wid);
+
+ for (int i = 0; i < 3; i++)
+ efl_pack_end(widget, wid[i]);
+
+ ck_assert_int_eq(efl_pack_before(widget, inv, NULL), EINA_TRUE);
+ ck_assert_ptr_eq(efl_pack_content_get(widget, 0), inv);
+}
+EFL_END_TEST
+
EFL_START_TEST(pack_after1)
{
Efl_Ui_Widget *wid[3];
}
EFL_END_TEST
+EFL_START_TEST(pack_after4)
+{
+ Efl_Ui_Widget *wid[3];
+ Efl_Ui_Widget *inv = create_test_widget();
+
+ _fill_array(wid);
+
+ for (int i = 0; i < 3; i++)
+ efl_pack_end(widget, wid[i]);
+
+ ck_assert_int_eq(efl_pack_after(widget, inv, NULL), EINA_TRUE);
+ ck_assert_ptr_eq(efl_pack_content_get(widget, 3), inv);
+}
+EFL_END_TEST
+
EFL_START_TEST(pack_at1)
{
for (int x = -3; x < 3; ++x)
tcase_add_test(tc, pack_before1);
tcase_add_test(tc, pack_before2);
tcase_add_test(tc, pack_before3);
+ tcase_add_test(tc, pack_before4);
tcase_add_test(tc, pack_after1);
tcase_add_test(tc, pack_after2);
tcase_add_test(tc, pack_after3);
+ tcase_add_test(tc, pack_after4);
tcase_add_test(tc, pack_at1);
tcase_add_test(tc, pack_at2);
tcase_add_test(tc, pack_at3);