From bc48081c93ff00f35cc18111c7aa108ee2b6209b Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Thu, 3 Jun 2021 12:44:24 +0900 Subject: [PATCH] atspi: move duplicated code in one place Summary: we do not have to change several place for updating. Reviewers: Hermet, jsuya, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12282 --- src/lib/elementary/efl_access_component.c | 24 +++++++++++++++-------- src/lib/elementary/efl_ui_image.c | 7 +------ src/lib/elementary/efl_ui_widget.c | 9 +-------- src/lib/elementary/efl_ui_win.c | 9 +-------- src/lib/elementary/elm_priv.h | 1 + 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/lib/elementary/efl_access_component.c b/src/lib/elementary/efl_access_component.c index 9566db017d..e2874f16ba 100644 --- a/src/lib/elementary/efl_access_component.c +++ b/src/lib/elementary/efl_access_component.c @@ -64,6 +64,21 @@ _efl_access_component_accessible_at_point_get(Eo *obj, void *_pd EINA_UNUSED, Ei return ret; } +Eina_Rect +_efl_access_component_screen_coords_extents_get(const Eo *obj, Eina_Rect r) +{ + Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj)); + if (ee) + { + int ee_x = 0, ee_y = 0; + ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL); + r.x += ee_x; + r.y += ee_y; + } + + return r; +} + EOLIAN static Eina_Rect _efl_access_component_extents_get(const Eo *obj, void *_pd EINA_UNUSED, Eina_Bool screen_coords) { @@ -72,14 +87,7 @@ _efl_access_component_extents_get(const Eo *obj, void *_pd EINA_UNUSED, Eina_Boo r = efl_gfx_entity_geometry_get(obj); if (screen_coords) { - Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj)); - if (ee) - { - int ee_x = 0, ee_y = 0; - ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL); - r.x += ee_x; - r.y += ee_y; - } + r = _efl_access_component_screen_coords_extents_get(obj, r); } return r; } diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 4156728027..b584aa4a7d 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -2067,7 +2067,6 @@ _efl_ui_image_efl_gfx_arrangement_content_align_get(const Eo *obj EINA_UNUSED, E EOLIAN static Eina_Rect _efl_ui_image_efl_access_component_extents_get(const Eo *obj, Efl_Ui_Image_Data *sd EINA_UNUSED, Eina_Bool screen_coords) { - int ee_x, ee_y; Eina_Rect r; Evas_Object *image = elm_image_object_get(obj); @@ -2077,11 +2076,7 @@ _efl_ui_image_efl_access_component_extents_get(const Eo *obj, Efl_Ui_Image_Data evas_object_geometry_get(image, &r.x, &r.y, NULL, NULL); if (screen_coords) { - Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(image)); - if (!ee) return r; - ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL); - r.x += ee_x; - r.y += ee_y; + r = _efl_access_component_screen_coords_extents_get(obj, r); } elm_image_object_size_get(obj, &r.w, &r.h); return r; diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 553de7c3aa..26c4887684 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -5107,20 +5107,13 @@ EOLIAN static Eina_Rect _elm_widget_item_efl_access_component_extents_get(const Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED, Eina_Bool screen_coords) { Eina_Rect r = EINA_RECT(-1, -1, -1, -1); - int ee_x, ee_y; if (!sd->view) return r; r = efl_gfx_entity_geometry_get(sd->view); if (screen_coords) { - Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(sd->view)); - if (ee) - { - ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL); - r.x += ee_x; - r.y += ee_y; - } + r = _efl_access_component_screen_coords_extents_get(obj, r); } return r; } diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index c5deb408b8..843b06d01f 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -7485,19 +7485,12 @@ EOLIAN static Eina_Rect _efl_ui_win_efl_access_component_extents_get(const Eo *obj, Efl_Ui_Win_Data *_pd EINA_UNUSED, Eina_Bool screen_coords) { Eina_Rect r; - int ee_x, ee_y; r = efl_gfx_entity_geometry_get(obj); r.x = r.y = 0; if (screen_coords) { - Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj)); - if (ee) - { - ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL); - r.x += ee_x; - r.y += ee_y; - } + r = _efl_access_component_screen_coords_extents_get(obj, r); } return r; } diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 66aed98380..abef65524c 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -848,6 +848,7 @@ EOAPI void efl_ui_focus_manager_calc_update_order(Eo *obj, Efl_Ui_Focus_Object * void _efl_access_shutdown(void); +Eina_Rect _efl_access_component_screen_coords_extents_get(const Eo *obj, Eina_Rect r); /* Combobox: no proper support for Efl.Part API yet. */ void _elm_combobox_part_text_set(Eo *obj, const char * part, const char *label);