efl_access_component: resolve property name conflicts

this class is a giant FIXME for anyone looking to do refactoring work.
the only reason it seems to exist is to provide wrappers around
efl.gfx functions and provide screen position adjustments--something
which isn't even viable under wayland

note that a test was removed here due to the corresponding method being
removed
This commit is contained in:
Mike Blumenkrantz 2018-02-14 21:14:52 -05:00
parent f8e93775c0
commit 804fc1667a
6 changed files with 44 additions and 130 deletions

View File

@ -12,45 +12,24 @@
EOLIAN static void EOLIAN static void
_efl_access_component_position_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, Eina_Bool type, int *x, int *y) _efl_access_component_screen_position_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int *x, int *y)
{ {
Eina_Rect r; Eina_Rect r;
r = efl_access_component_extents_get(obj, type); r = efl_access_component_extents_get(obj, EINA_TRUE);
if (x) *x = r.x; if (x) *x = r.x;
if (y) *y = r.y; if (y) *y = r.y;
} }
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
_efl_access_component_position_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, Eina_Bool type, int x, int y) _efl_access_component_screen_position_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int x, int y)
{ {
Eina_Rect r; Eina_Rect r;
r = efl_access_component_extents_get(obj, type); r = efl_access_component_extents_get(obj, EINA_TRUE);
r.x = x; r.x = x;
r.y = y; r.y = y;
return efl_access_component_extents_set(obj, type, r); return efl_access_component_extents_set(obj, EINA_TRUE, r);
}
EOLIAN static Eina_Bool
_efl_access_component_size_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int w, int h)
{
Eina_Rect r;
r = efl_access_component_extents_get(obj, EINA_FALSE);
r.w = w;
r.h = h;
return efl_access_component_extents_set(obj, EINA_FALSE, r);
}
EOLIAN static void
_efl_access_component_size_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int *w, int *h)
{
Eina_Rect r;
r = efl_access_component_extents_get(obj, EINA_FALSE);
if (w) *w = r.w;
if (h) *h = r.h;
} }
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
@ -62,15 +41,6 @@ _efl_access_component_contains(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, Eina_
return eina_rectangle_coords_inside(&r.rect, x, y); return eina_rectangle_coords_inside(&r.rect, x, y);
} }
EOLIAN static double
_efl_access_component_alpha_get(Eo *obj, void *_pd EINA_UNUSED)
{
int alpha;
evas_object_color_get(obj, NULL, NULL, NULL, &alpha);
return (double)alpha / 255.0;
}
EOLIAN static Eo * EOLIAN static Eo *
_efl_access_component_accessible_at_point_get(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y) _efl_access_component_accessible_at_point_get(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y)
{ {
@ -139,11 +109,6 @@ _efl_access_component_extents_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool scre
return EINA_TRUE; return EINA_TRUE;
} }
EOLIAN static int
_efl_access_component_layer_get(Eo *obj, void *_pd EINA_UNUSED)
{
return evas_object_layer_get(obj);
}
EOLIAN static int EOLIAN static int
_efl_access_component_z_order_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED) _efl_access_component_z_order_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)

View File

@ -1,38 +1,10 @@
import eina_types; import eina_types;
mixin Efl.Access.Component () mixin Efl.Access.Component (Efl.Gfx, Efl.Gfx.Stack)
{ {
[[AT-SPI component mixin]] [[AT-SPI component mixin]]
data: null; data: null;
methods { methods {
@property size @protected @beta {
[[Size of accessible widget.]]
set {
return: bool; [[$true if size was set, $false otherwise]]
}
get {
}
values {
w: int; [[Width of the widget]]
h: int; [[Height of the widget]]
}
}
@property layer @protected @beta {
[[Evas layer of accessible widget.]]
get {
}
values {
layer: int; [[Evas layer of the widget]]
}
}
@property alpha @protected @beta {
[[Gets alpha of accessible widget.]]
get {
}
values {
alpha: double; [[Alpha value in [0, 1] range.]]
}
}
@property z_order @protected @beta { @property z_order @protected @beta {
[[Gets the depth at which the component is shown in relation to other [[Gets the depth at which the component is shown in relation to other
components in the same container.]] components in the same container.]]
@ -57,17 +29,13 @@ mixin Efl.Access.Component ()
rect: Eina.Rect; [[The geometry.]] rect: Eina.Rect; [[The geometry.]]
} }
} }
@property position @protected @beta { @property screen_position @protected @beta {
[[Position of accessible widget.]] [[Position of accessible widget.]]
set { set {
return: bool; [[$true if position was set, $false otherwise]] return: bool; [[$true if position was set, $false otherwise]]
} }
get { get {
} }
keys {
screen_coords: bool; [[If $true x and y values will be relative to
screen origin, otherwise relative to canvas]]
}
values { values {
x: int; [[X coordinate]] x: int; [[X coordinate]]
y: int; [[Y coordinate]] y: int; [[Y coordinate]]

View File

@ -5525,14 +5525,6 @@ _elm_widget_item_efl_access_component_extents_set(Eo *obj EINA_UNUSED, Elm_Widge
return EINA_FALSE; return EINA_FALSE;
} }
EOLIAN static int
_elm_widget_item_efl_access_component_layer_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED)
{
if (!sd->view)
return -1;
return evas_object_layer_get(sd->view);
}
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
_elm_widget_item_efl_access_component_focus_grab(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED) _elm_widget_item_efl_access_component_focus_grab(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED)
{ {
@ -5540,16 +5532,6 @@ _elm_widget_item_efl_access_component_focus_grab(Eo *obj EINA_UNUSED, Elm_Widget
return elm_object_item_focus_get(obj); return elm_object_item_focus_get(obj);
} }
EOLIAN static double
_elm_widget_item_efl_access_component_alpha_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED)
{
int alpha;
if (!sd->view) return -1.0;
evas_object_color_get(sd->view, NULL, NULL, NULL, &alpha);
return (double)alpha / 255.0;
}
EOLIAN static Efl_Object * EOLIAN static Efl_Object *
_efl_ui_widget_efl_object_provider_find(const Eo *obj, Elm_Widget_Smart_Data *pd, const Efl_Object *klass) _efl_ui_widget_efl_object_provider_find(const Eo *obj, Elm_Widget_Smart_Data *pd, const Efl_Object *klass)
{ {

View File

@ -3440,7 +3440,7 @@ _component_get_position(const Eldbus_Service_Interface *iface EINA_UNUSED, const
const char *obj_path = eldbus_message_path_get(msg); const char *obj_path = eldbus_message_path_get(msg);
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
int x, y; int x = 1, y = 1;
AtspiCoordType coord_type; AtspiCoordType coord_type;
Eldbus_Message *ret; Eldbus_Message *ret;
@ -3450,7 +3450,13 @@ _component_get_position(const Eldbus_Service_Interface *iface EINA_UNUSED, const
return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type."); return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type.");
Eina_Bool type = coord_type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : EINA_FALSE; Eina_Bool type = coord_type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : EINA_FALSE;
efl_access_component_position_get(obj, type, &x, &y); if (efl_gfx_visible_get(obj))
{
if (type)
efl_access_component_screen_position_get(obj, &x, &y);
else
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
}
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
@ -3467,12 +3473,13 @@ _component_get_size(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eld
const char *obj_path = eldbus_message_path_get(msg); const char *obj_path = eldbus_message_path_get(msg);
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
int x, y; int x = -1, y = -1;
Eldbus_Message *ret; Eldbus_Message *ret;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg); ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg);
efl_access_component_size_get(obj, &x, &y); if (efl_gfx_visible_get(obj))
evas_object_geometry_get(obj, NULL, NULL, &x, &y);
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
@ -3499,13 +3506,14 @@ _component_get_layer(const Eldbus_Service_Interface *iface EINA_UNUSED, const El
const char *obj_path = eldbus_message_path_get(msg); const char *obj_path = eldbus_message_path_get(msg);
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
int layer = 0; int layer = -1;
Eldbus_Message *ret; Eldbus_Message *ret;
AtspiComponentLayer atspi_layer; AtspiComponentLayer atspi_layer;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg); ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg);
layer = efl_access_component_layer_get(obj); if (efl_gfx_visible_get(obj))
layer = evas_object_layer_get(obj);
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
@ -3545,12 +3553,17 @@ _component_get_alpha(const Eldbus_Service_Interface *iface EINA_UNUSED, const El
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
Eldbus_Message *ret; Eldbus_Message *ret;
double alpha = 0; double alpha = -1;
int a;
if (!obj) if (!obj)
return _dbus_invalid_ref_error_new(msg); return _dbus_invalid_ref_error_new(msg);
alpha = efl_access_component_alpha_get(obj); if (efl_gfx_visible_get(obj))
{
evas_object_color_get(obj, NULL, NULL, NULL, &a);
alpha = a / 255.0;
}
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
@ -3593,7 +3606,7 @@ _component_set_position(const Eldbus_Service_Interface *iface EINA_UNUSED, const
const char *obj_path = eldbus_message_path_get(msg); const char *obj_path = eldbus_message_path_get(msg);
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
int x, y; int x = -1, y = -1;
Eina_Bool result = EINA_FALSE; Eina_Bool result = EINA_FALSE;
AtspiCoordType coord_type; AtspiCoordType coord_type;
Eldbus_Message *ret; Eldbus_Message *ret;
@ -3604,7 +3617,16 @@ _component_set_position(const Eldbus_Service_Interface *iface EINA_UNUSED, const
return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type."); return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type.");
Eina_Bool type = coord_type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : EINA_FALSE; Eina_Bool type = coord_type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : EINA_FALSE;
result = efl_access_component_position_set(obj, type, x, y); if (efl_gfx_visible_get(obj))
{
if (type)
result = efl_access_component_screen_position_set(obj, x, y);
else
{
result = EINA_TRUE;
evas_object_move(obj, x, y);
}
}
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
@ -3621,7 +3643,7 @@ _component_set_size(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eld
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME); Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path); Eo *obj = _bridge_object_from_path(bridge, obj_path);
int w, h; int w, h;
Eina_Bool result; Eina_Bool result = EINA_TRUE;
Eldbus_Message *ret; Eldbus_Message *ret;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg); ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg);
@ -3629,7 +3651,7 @@ _component_set_size(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eld
if (!eldbus_message_arguments_get(msg, "ii", &w, &h)) if (!eldbus_message_arguments_get(msg, "ii", &w, &h))
return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type."); return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Invalid index type.");
result = efl_access_component_size_set(obj, w, h); evas_object_resize(obj, w, h);
ret = eldbus_message_method_return_new(msg); ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);

View File

@ -543,8 +543,6 @@ class Elm.Widget.Item(Efl.Object, Efl.Access,
Efl.Access.state_set { get; } Efl.Access.state_set { get; }
Efl.Access.attributes { get; } Efl.Access.attributes { get; }
Efl.Access.Component.extents { get; set; } Efl.Access.Component.extents { get; set; }
Efl.Access.Component.alpha { get; }
Efl.Access.Component.layer { get; }
Efl.Access.Component.focus_grab; Efl.Access.Component.focus_grab;
} }
} }

View File

@ -99,7 +99,7 @@ START_TEST (elm_atspi_role_get)
} }
END_TEST END_TEST
START_TEST (elm_atspi_component_position) START_TEST (elm_atspi_component_screen_position)
{ {
Eina_Bool ret; Eina_Bool ret;
int x, y; int x, y;
@ -108,7 +108,7 @@ START_TEST (elm_atspi_component_position)
Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC);
ret = efl_access_component_position_set(win, EINA_TRUE, 45, 45); ret = efl_access_component_screen_position_set(win, 45, 45);
ck_assert(ret == EINA_TRUE); ck_assert(ret == EINA_TRUE);
Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win)); Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
@ -121,26 +121,6 @@ START_TEST (elm_atspi_component_position)
} }
END_TEST END_TEST
START_TEST (elm_atspi_component_size)
{
Eina_Bool ret;
int w, h;
elm_init(0, NULL);
Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC);
evas_object_resize(win, 50, 50);
ret = efl_access_component_size_set(win, 100, 100);
ck_assert(ret == EINA_TRUE);
evas_object_geometry_get(win, NULL, NULL, &w, &h);
ck_assert((w == 100) && (h == 100));
elm_shutdown();
}
END_TEST
START_TEST (elm_win_autohide) START_TEST (elm_win_autohide)
{ {
elm_init(0, NULL); elm_init(0, NULL);
@ -419,8 +399,7 @@ void elm_test_win(TCase *tc)
{ {
tcase_add_test(tc, elm_win_legacy_type_check); tcase_add_test(tc, elm_win_legacy_type_check);
tcase_add_test(tc, elm_atspi_role_get); tcase_add_test(tc, elm_atspi_role_get);
tcase_add_test(tc, elm_atspi_component_position); tcase_add_test(tc, elm_atspi_component_screen_position);
tcase_add_test(tc, elm_atspi_component_size);
tcase_add_test(tc, elm_win_policy_quit_last_window_hidden); tcase_add_test(tc, elm_win_policy_quit_last_window_hidden);
tcase_add_test(tc, efl_ui_win_multi_touch_inputs); tcase_add_test(tc, efl_ui_win_multi_touch_inputs);
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X