efl/src/tests/elementary/elm_test_focus_common.c

102 lines
2.2 KiB
C

#include "elm_test_focus_common.h"
#define Q(o,_x,_y,_w,_h) \
do {\
Eina_Rect rect; \
rect.x = _x; \
rect.y = _y; \
rect.w = _w; \
rect.h = _h; \
focus_test_size(o, rect); \
} while (0)
Efl_Ui_Focus_Object*
elm_focus_test_object_new(const char *name, int x, int y, int w, int h)
{
Efl_Ui_Focus_Object *ret;
ret = efl_add(FOCUS_TEST_CLASS, NULL,
efl_name_set(efl_added, name)
);
Q(ret, x, y, w, h);
return ret;
}
void
elm_focus_test_setup_cross(Efl_Ui_Focus_Object **middle,
Efl_Ui_Focus_Object **south,
Efl_Ui_Focus_Object **north,
Efl_Ui_Focus_Object **east,
Efl_Ui_Focus_Object **west)
{
*middle = elm_focus_test_object_new("middle", 40, 40, 20, 20);
*south = elm_focus_test_object_new("south", 40, 80, 20, 20);
*north = elm_focus_test_object_new("north", 40, 0, 20, 20);
*east = elm_focus_test_object_new("east", 80, 40, 20, 20);
*west = elm_focus_test_object_new("west", 0, 40, 20, 20);
}
Efl_Ui_Focus_Manager*
elm_focus_test_manager_new(Efl_Ui_Focus_Object **middle)
{
Efl_Ui_Focus_Object *root;
Efl_Ui_Focus_Manager *m;
root = elm_focus_test_object_new("middle", 40, 40, 20, 20);
m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
efl_ui_focus_manager_root_set(efl_added, root)
);
if (middle)
*middle = root;
return m;
}
//Test class implementation
typedef struct {
Eina_Rect rect;
Eina_Bool focus;
} Focus_Test_Data;
EOLIAN static Efl_Object*
_focus_test_efl_object_constructor(Eo *obj, Focus_Test_Data *pd)
{
Eo *eo;
eo = efl_constructor(efl_super(obj, FOCUS_TEST_CLASS));
eina_rectangle_coords_from(&pd->rect.rect, 0, 0, 0, 0);
return eo;
}
EOLIAN static void
_focus_test_efl_ui_focus_object_focus_set(Eo *obj, Focus_Test_Data *pd, Eina_Bool focus)
{
pd->focus = focus;
printf("Object %p now focused\n", obj);
}
EOLIAN static Eina_Rect
_focus_test_efl_ui_focus_object_focus_geometry_get(Eo *obj EINA_UNUSED, Focus_Test_Data *pd)
{
return pd->rect;
}
EOLIAN static void
_focus_test_size(Eo *obj EINA_UNUSED, Focus_Test_Data *pd, Eina_Rect rect)
{
pd->rect = rect;
}
EOLIAN static Eina_Rect
_focus_test_efl_gfx_geometry_get(Eo *obj EINA_UNUSED, Focus_Test_Data *pd)
{
return pd->rect;
}
#include "focus_test.eo.c"