diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-10-11 12:39:05 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-10-12 11:25:56 +0900 |
commit | 11b7cf6b728001dbcd42ce41d5ac2e129a835fd8 (patch) | |
tree | fe09c44ddb1e8b72b0464231e2363256f937d0c8 | |
parent | a0b8408021fc0dd46e5e4d8425755448d4d28c53 (diff) | |
download | efl-11b7cf6b728001dbcd42ce41d5ac2e129a835fd8.tar.gz |
evas/elm: Remove function group_move
This is an override of efl_gfx_position_set.
As for the other patches, I hope I didn't break anything.
A problem likely to happen is that the super call was inserted
too early or too late in the call flow. For instance:
_myclass_position_set(obj, x, y) {
position_set(super(obj), x, y);
position_get(obj, &prevx, &prevy);
do_something_with_delta_xy();
}
The above code flow is obvisouly wrong, but may have crept in this
patch (such a bug sneaked in inside smart object, breaking
everything at first).
50 files changed, 183 insertions, 106 deletions
diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo index 94c9c88cef..b6ec2c6fe9 100644 --- a/src/lib/edje/edje_object.eo +++ b/src/lib/edje/edje_object.eo @@ -2067,12 +2067,12 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part) } implements { Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Object.constructor; Efl.Object.destructor; Efl.Object.dbg_info_get; Efl.Canvas.Object.no_render.set; Efl.Canvas.Object.paragraph_direction.set; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c index 8e1b656ae3..d0800a2109 100644 --- a/src/lib/edje/edje_smart.c +++ b/src/lib/edje/edje_smart.c @@ -159,10 +159,15 @@ _edje_object_efl_canvas_group_group_del(Eo *obj, Edje *ed) } EOLIAN static void -_edje_object_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord x, Evas_Coord y) +_edje_object_efl_gfx_position_set(Eo *obj, Edje *ed, Evas_Coord x, Evas_Coord y) { unsigned short i; + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); + if ((ed->x == x) && (ed->y == y)) return; ed->x = x; ed->y = y; diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 262eab1572..80b2b33345 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -561,9 +561,12 @@ _efl_ui_image_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Data *sd) } EOLIAN static void -_efl_ui_image_efl_canvas_group_group_move(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Coord x, Evas_Coord y) +_efl_ui_image_efl_gfx_position_set(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); if ((sd->img_x == x) && (sd->img_y == y)) return; sd->img_x = x; diff --git a/src/lib/elementary/efl_ui_image.eo b/src/lib/elementary/efl_ui_image.eo index 42eedb73ab..c69cb3f50c 100644 --- a/src/lib/elementary/efl_ui_image.eo +++ b/src/lib/elementary/efl_ui_image.eo @@ -124,6 +124,7 @@ class Efl.Ui.Image (Elm.Widget, Efl.Ui.Clickable, Efl.Ui.Draggable, Efl.File.mmap.set; Efl.Gfx.color.set; Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Gfx.View.view_size.get; Efl.Image.Load.load_size.set; Efl.Image.Load.load_size.get; @@ -142,7 +143,6 @@ class Efl.Ui.Image (Elm.Widget, Efl.Ui.Clickable, Efl.Ui.Draggable, Edje.Object.size_min_calc; Edje.Object.calc_force; Efl.Canvas.Object.clip.set; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_member_add; diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index b7e1306fdf..5d6ecb3429 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -3468,9 +3468,12 @@ _efl_ui_text_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Text_Data *sd) } EOLIAN static void -_efl_ui_text_efl_canvas_group_group_move(Eo *obj, Efl_Ui_Text_Data *sd, Evas_Coord x, Evas_Coord y) +_efl_ui_text_efl_gfx_position_set(Eo *obj, Efl_Ui_Text_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo index 74b171fbb7..d506a45332 100644 --- a/src/lib/elementary/efl_ui_text.eo +++ b/src/lib/elementary/efl_ui_text.eo @@ -417,7 +417,7 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable, Efl.Object.constructor; Efl.Object.destructor; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_member_add; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 24cf2995ea..5dca56fbdf 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -2766,8 +2766,11 @@ _elm_win_obj_intercept_show(void *data, } EOLIAN static void -_efl_ui_win_efl_canvas_group_group_move(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord x, Evas_Coord y) +_efl_ui_win_efl_gfx_position_set(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + if (sd->img_obj) { if ((x != sd->screen.x) || (y != sd->screen.y)) @@ -2776,15 +2779,15 @@ _efl_ui_win_efl_canvas_group_group_move(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord sd->screen.y = y; efl_event_callback_legacy_call(obj, EFL_GFX_EVENT_MOVE, NULL); } - return; + goto super_skip; } else { if (!sd->response) TRAP(sd, move, x, y); - if (!ecore_evas_override_get(sd->ee)) return; + if (!ecore_evas_override_get(sd->ee)) goto super_skip; } - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); if (ecore_evas_override_get(sd->ee)) { @@ -2806,6 +2809,15 @@ _efl_ui_win_efl_canvas_group_group_move(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord sd->screen.x = x; sd->screen.y = y; } + + return; + +super_skip: + /* FIXME FIXME FIXME + * Ugly code flow: legacy code had an early return in smart_move, ie. + * evas object move would be processed but smart object move would be + * aborted. This super call tries to simulate that. */ + efl_gfx_position_set(efl_super(obj, EFL_CANVAS_GROUP_CLASS), x, y); } EOLIAN static void diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo index e53798255a..b8c9ab47bc 100644 --- a/src/lib/elementary/efl_ui_win.eo +++ b/src/lib/elementary/efl_ui_win.eo @@ -810,7 +810,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Elm.Interface.Atspi.Window, Efl.Object.constructor; Efl.Object.finalize; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_diskselector.c b/src/lib/elementary/elm_diskselector.c index 23f1437d93..8d4da071b8 100644 --- a/src/lib/elementary/elm_diskselector.c +++ b/src/lib/elementary/elm_diskselector.c @@ -1421,9 +1421,12 @@ _elm_diskselector_efl_canvas_group_group_del(Eo *obj, Elm_Diskselector_Data *sd) } EOLIAN static void -_elm_diskselector_efl_canvas_group_group_move(Eo *obj, Elm_Diskselector_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_diskselector_efl_gfx_position_set(Eo *obj, Elm_Diskselector_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_diskselector.eo b/src/lib/elementary/elm_diskselector.eo index 3c3ec40968..0b20ec6cea 100644 --- a/src/lib/elementary/elm_diskselector.eo +++ b/src/lib/elementary/elm_diskselector.eo @@ -197,8 +197,8 @@ class Elm.Diskselector (Elm.Widget, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_member_add; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index 0eaf67f484..85c039db35 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -3913,9 +3913,12 @@ _elm_entry_efl_canvas_group_group_del(Eo *obj, Elm_Entry_Data *sd) } EOLIAN static void -_elm_entry_efl_canvas_group_group_move(Eo *obj, Elm_Entry_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_entry_efl_gfx_position_set(Eo *obj, Elm_Entry_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo index c4dd01fea2..2bd3b1f1b7 100644 --- a/src/lib/elementary/elm_entry.eo +++ b/src/lib/elementary/elm_entry.eo @@ -940,7 +940,7 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable, class.constructor; Efl.Object.constructor; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_member_add; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 3ad9f4083b..27e06ceb02 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -478,8 +478,13 @@ _elm_gengrid_pan_efl_object_destructor(Eo *obj, Elm_Gengrid_Pan_Data *psd) } EOLIAN static void -_elm_gengrid_pan_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Elm_Gengrid_Pan_Data *psd, Evas_Coord _gen_param2 EINA_UNUSED, Evas_Coord _gen_param3 EINA_UNUSED) +_elm_gengrid_pan_efl_gfx_position_set(Eo *obj, Elm_Gengrid_Pan_Data *psd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_PAN_CLASS), x, y); + ecore_job_del(psd->wsd->calc_job); psd->wsd->calc_job = ecore_job_add(_calc_job, psd->wobj); } @@ -4331,9 +4336,12 @@ _elm_gengrid_efl_canvas_group_group_del(Eo *obj, Elm_Gengrid_Data *sd) } EOLIAN static void -_elm_gengrid_efl_canvas_group_group_move(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_gengrid_efl_gfx_position_set(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_gengrid.eo b/src/lib/elementary/elm_gengrid.eo index 584f580a9c..63baf6ff32 100644 --- a/src/lib/elementary/elm_gengrid.eo +++ b/src/lib/elementary/elm_gengrid.eo @@ -540,7 +540,7 @@ class Elm.Gengrid (Elm.Layout, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_member_add; diff --git a/src/lib/elementary/elm_gengrid_pan.eo b/src/lib/elementary/elm_gengrid_pan.eo index 1fc50e0883..94ca804f2f 100644 --- a/src/lib/elementary/elm_gengrid_pan.eo +++ b/src/lib/elementary/elm_gengrid_pan.eo @@ -6,8 +6,8 @@ class Elm.Gengrid.Pan (Elm.Pan) implements { class.constructor; Efl.Object.destructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_resize; Elm.Pan.content_size.get; Elm.Pan.pos; diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 5affc556d7..f75b263601 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -268,8 +268,13 @@ _elm_genlist_pan_efl_canvas_group_group_del(Eo *obj, Elm_Genlist_Pan_Data *psd) } EOLIAN static void -_elm_genlist_pan_efl_canvas_group_group_move(Eo *obj, Elm_Genlist_Pan_Data *psd, Evas_Coord _gen_param2 EINA_UNUSED, Evas_Coord _gen_param3 EINA_UNUSED) +_elm_genlist_pan_efl_gfx_position_set(Eo *obj, Elm_Genlist_Pan_Data *psd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_PAN_CLASS), x, y); + psd->wsd->pan_changed = EINA_TRUE; evas_object_smart_changed(obj); ELM_SAFE_FREE(psd->wsd->calc_job, ecore_job_del); @@ -5658,9 +5663,12 @@ _elm_genlist_efl_canvas_group_group_del(Eo *obj, Elm_Genlist_Data *sd) } EOLIAN static void -_elm_genlist_efl_canvas_group_group_move(Eo *obj, Elm_Genlist_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_genlist_efl_gfx_position_set(Eo *obj, Elm_Genlist_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_genlist.eo b/src/lib/elementary/elm_genlist.eo index 8a8efb5be2..cbdb18021f 100644 --- a/src/lib/elementary/elm_genlist.eo +++ b/src/lib/elementary/elm_genlist.eo @@ -528,8 +528,8 @@ class Elm.Genlist (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable, implements { class.constructor; Efl.Object.constructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_member_add; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_genlist_pan.eo b/src/lib/elementary/elm_genlist_pan.eo index 4c0b495eee..f773328014 100644 --- a/src/lib/elementary/elm_genlist_pan.eo +++ b/src/lib/elementary/elm_genlist_pan.eo @@ -6,8 +6,8 @@ class Elm.Genlist.Pan (Elm.Pan) implements { class.constructor; Efl.Object.destructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; Elm.Pan.content_size.get; diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c index 2b8b6d5840..0c8fa72682 100644 --- a/src/lib/elementary/elm_hover.c +++ b/src/lib/elementary/elm_hover.c @@ -616,9 +616,12 @@ _elm_hover_efl_canvas_group_group_del(Eo *obj, Elm_Hover_Data *sd) } EOLIAN static void -_elm_hover_efl_canvas_group_group_move(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, Evas_Coord x, Evas_Coord y) +_elm_hover_efl_gfx_position_set(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); elm_layout_sizing_eval(obj); } diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo index 79e8e2e03e..47caaabc63 100644 --- a/src/lib/elementary/elm_hover.eo +++ b/src/lib/elementary/elm_hover.eo @@ -61,8 +61,8 @@ class Elm.Hover (Elm.Layout, Efl.Ui.Clickable, Elm.Interface.Atspi_Widget_Action class.constructor; Efl.Object.constructor; Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Canvas.Group.group_del; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_resize; Elm.Widget.theme_apply; diff --git a/src/lib/elementary/elm_interface_scrollable.c b/src/lib/elementary/elm_interface_scrollable.c index ddbf080c58..f6b1623077 100644 --- a/src/lib/elementary/elm_interface_scrollable.c +++ b/src/lib/elementary/elm_interface_scrollable.c @@ -102,8 +102,13 @@ _elm_pan_efl_canvas_group_group_del(Eo *obj, Elm_Pan_Smart_Data *_pd EINA_UNUSED } EOLIAN static void -_elm_pan_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Elm_Pan_Smart_Data *psd, Evas_Coord x, Evas_Coord y) +_elm_pan_efl_gfx_position_set(Eo *obj, Elm_Pan_Smart_Data *psd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_PAN_CLASS), x, y); + psd->x = x; psd->y = y; diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c index 9c0cbbc4da..dc8e9b7ba9 100644 --- a/src/lib/elementary/elm_list.c +++ b/src/lib/elementary/elm_list.c @@ -2509,9 +2509,12 @@ _elm_list_efl_canvas_group_group_del(Eo *obj, Elm_List_Data *sd) } EOLIAN static void -_elm_list_efl_canvas_group_group_move(Eo *obj, Elm_List_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_list_efl_gfx_position_set(Eo *obj, Elm_List_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo index 4dc59a74cd..273ca41270 100644 --- a/src/lib/elementary/elm_list.eo +++ b/src/lib/elementary/elm_list.eo @@ -429,8 +429,8 @@ class Elm.List (Elm.Layout, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_member_add; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c index b731242185..e600a21d32 100644 --- a/src/lib/elementary/elm_map.c +++ b/src/lib/elementary/elm_map.c @@ -3886,8 +3886,12 @@ _elm_map_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Map_Pan_Data *psd) } EOLIAN static void -_elm_map_pan_efl_canvas_group_group_move(Eo *obj, Elm_Map_Pan_Data *_pd EINA_UNUSED, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED) +_elm_map_pan_efl_gfx_position_set(Eo *obj, Elm_Map_Pan_Data *_pd EINA_UNUSED, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_smart_changed(obj); } @@ -4204,9 +4208,12 @@ _elm_map_efl_canvas_group_group_del(Eo *obj, Elm_Map_Data *sd) } EOLIAN static void -_elm_map_efl_canvas_group_group_move(Eo *obj, Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_map_efl_gfx_position_set(Eo *obj, Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_map.eo b/src/lib/elementary/elm_map.eo index b43a4a6df2..9267b35f9e 100644 --- a/src/lib/elementary/elm_map.eo +++ b/src/lib/elementary/elm_map.eo @@ -626,7 +626,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_member_add; diff --git a/src/lib/elementary/elm_map_pan.eo b/src/lib/elementary/elm_map_pan.eo index 68efa2cc3d..a073aafcf2 100644 --- a/src/lib/elementary/elm_map_pan.eo +++ b/src/lib/elementary/elm_map_pan.eo @@ -6,8 +6,8 @@ class Elm.Map.Pan (Elm.Pan) implements { class.constructor; Efl.Object.destructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_resize; Elm.Pan.content_size.get; Elm.Pan.pos; diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c index 97d0f9df4f..2034e209c8 100644 --- a/src/lib/elementary/elm_mapbuf.c +++ b/src/lib/elementary/elm_mapbuf.c @@ -156,9 +156,12 @@ _mapbuf_auto_smooth(Evas_Object *obj EINA_UNUSED, Elm_Mapbuf_Data *sd) } EOLIAN static void -_elm_mapbuf_efl_canvas_group_group_move(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_mapbuf_efl_gfx_position_set(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); _mapbuf_auto_eval(obj, sd); _mapbuf_auto_smooth(obj, sd); diff --git a/src/lib/elementary/elm_mapbuf.eo b/src/lib/elementary/elm_mapbuf.eo index be1c3c03b0..24445109a7 100644 --- a/src/lib/elementary/elm_mapbuf.eo +++ b/src/lib/elementary/elm_mapbuf.eo @@ -130,7 +130,7 @@ class Elm.Mapbuf (Elm.Widget, Efl.Container, Efl.Part) class.constructor; Efl.Object.constructor; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index 40c8f0ad61..80ad35ef05 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -240,14 +240,17 @@ _elm_notify_efl_canvas_group_group_resize(Eo *obj, Elm_Notify_Data *sd, Evas_Coo } EOLIAN static void -_elm_notify_efl_canvas_group_group_move(Eo *obj, Elm_Notify_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_notify_efl_gfx_position_set(Eo *obj, Elm_Notify_Data *sd, Evas_Coord x, Evas_Coord y) { - Evas_Coord w, h; + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); if (!sd->parent && sd->content) { + Evas_Coord w, h; + evas_object_geometry_get(obj, NULL, NULL, &w, &h); _notify_move_to_orientation(obj, x, y, w, h); } diff --git a/src/lib/elementary/elm_notify.eo b/src/lib/elementary/elm_notify.eo index 84790ab711..93148843d7 100644 --- a/src/lib/elementary/elm_notify.eo +++ b/src/lib/elementary/elm_notify.eo @@ -80,7 +80,7 @@ class Elm.Notify (Elm.Widget, Efl.Container, Efl.Part) class.constructor; Efl.Object.constructor; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_pan.eo b/src/lib/elementary/elm_pan.eo index dcb7cb9573..d89fedf2f6 100644 --- a/src/lib/elementary/elm_pan.eo +++ b/src/lib/elementary/elm_pan.eo @@ -44,7 +44,7 @@ class Elm.Pan (Efl.Canvas.Group.Clipped) Efl.Object.constructor; class.constructor; Efl.Gfx.visible.set; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c index 2cbeebf291..8eb079ceea 100644 --- a/src/lib/elementary/elm_panel.c +++ b/src/lib/elementary/elm_panel.c @@ -1097,9 +1097,12 @@ _elm_panel_efl_canvas_group_group_del(Eo *obj, Elm_Panel_Data *sd) } EOLIAN static void -_elm_panel_efl_canvas_group_group_move(Eo *obj, Elm_Panel_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_panel_efl_gfx_position_set(Eo *obj, Elm_Panel_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo index 98df79a482..41fab5d43a 100644 --- a/src/lib/elementary/elm_panel.eo +++ b/src/lib/elementary/elm_panel.eo @@ -69,11 +69,11 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_member_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_resize; - Efl.Canvas.Group.group_move; Elm.Widget.theme_apply; Elm.Widget.focus_next_manager_is; Elm.Widget.focus_next; diff --git a/src/lib/elementary/elm_photocam.c b/src/lib/elementary/elm_photocam.c index aac9448a76..e5e987150d 100644 --- a/src/lib/elementary/elm_photocam.c +++ b/src/lib/elementary/elm_photocam.c @@ -145,8 +145,13 @@ _calc_job_cb(void *data) } EOLIAN static void -_elm_photocam_pan_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Elm_Photocam_Pan_Data *psd, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED) +_elm_photocam_pan_efl_gfx_position_set(Eo *obj, Elm_Photocam_Pan_Data *psd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_PAN_CLASS), x, y); + ecore_job_del(psd->wsd->calc_job); psd->wsd->calc_job = ecore_job_add(_calc_job_cb, psd->wobj); } @@ -1475,9 +1480,12 @@ _elm_photocam_efl_canvas_group_group_del(Eo *obj, Elm_Photocam_Data *sd) } EOLIAN static void -_elm_photocam_efl_canvas_group_group_move(Eo *obj, Elm_Photocam_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_photocam_efl_gfx_position_set(Eo *obj, Elm_Photocam_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_photocam.eo b/src/lib/elementary/elm_photocam.eo index 88ae560e70..c04bc2ab58 100644 --- a/src/lib/elementary/elm_photocam.eo +++ b/src/lib/elementary/elm_photocam.eo @@ -189,7 +189,7 @@ class Elm.Photocam (Elm.Widget, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_member_add; diff --git a/src/lib/elementary/elm_photocam_pan.eo b/src/lib/elementary/elm_photocam_pan.eo index ee224c9176..c3fcda1de7 100644 --- a/src/lib/elementary/elm_photocam_pan.eo +++ b/src/lib/elementary/elm_photocam_pan.eo @@ -6,8 +6,8 @@ class Elm.Photocam.Pan (Elm.Pan) implements { class.constructor; Efl.Object.destructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_resize; Elm.Pan.content_size.get; Elm.Pan.pos; diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index bf8c617110..371d893c6a 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -919,9 +919,12 @@ _elm_scroller_efl_canvas_group_group_add(Eo *obj, Elm_Scroller_Data *priv) } EOLIAN static void -_elm_scroller_efl_canvas_group_group_move(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_scroller_efl_gfx_position_set(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_scroller.eo b/src/lib/elementary/elm_scroller.eo index df68cbab53..b8d2ee776c 100644 --- a/src/lib/elementary/elm_scroller.eo +++ b/src/lib/elementary/elm_scroller.eo @@ -60,7 +60,7 @@ class Elm.Scroller (Elm.Layout, Elm.Interface_Scrollable, implements { class.constructor; Efl.Object.constructor; - Efl.Canvas.Group.group_move; + Efl.Gfx.position.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_member_add; Efl.Canvas.Group.group_resize; diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index f73fd59b87..0b96c5c207 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -2935,9 +2935,12 @@ _elm_toolbar_efl_canvas_group_group_del(Eo *obj, Elm_Toolbar_Data *sd) } EOLIAN static void -_elm_toolbar_efl_canvas_group_group_move(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_toolbar_efl_gfx_position_set(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord x, Evas_Coord y) { - efl_canvas_group_move(efl_super(obj, MY_CLASS), x, y); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); evas_object_move(sd->hit_rect, x, y); } diff --git a/src/lib/elementary/elm_toolbar.eo b/src/lib/elementary/elm_toolbar.eo index 1dc6fc638b..1c961fcc44 100644 --- a/src/lib/elementary/elm_toolbar.eo +++ b/src/lib/elementary/elm_toolbar.eo @@ -345,8 +345,8 @@ class Elm.Toolbar (Elm.Widget, Elm.Interface_Scrollable, Efl.Orientation, implements { class.constructor; Efl.Object.constructor; + Efl.Gfx.position.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; Efl.Canvas.Group.group_member_add; diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 82729f8dcb..292fc3e933 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -501,8 +501,13 @@ _smart_reconfigure(Elm_Widget_Smart_Data *sd) } EOLIAN static void -_elm_widget_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Evas_Coord x, Evas_Coord y) +_elm_widget_efl_gfx_position_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); + sd->x = x; sd->y = y; diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo index 1b3ca7d168..bab0e4fafe 100644 --- a/src/lib/elementary/elm_widget.eo +++ b/src/lib/elementary/elm_widget.eo @@ -849,10 +849,10 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, Elm.Inter Efl.Object.provider_find; Efl.Gfx.color.set; Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Canvas.Object.clip.set; Efl.Canvas.Object.no_render.set; Efl.Canvas.Group.group_calculate; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_member_del; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; diff --git a/src/lib/emotion/efl_canvas_video.eo b/src/lib/emotion/efl_canvas_video.eo index 4851f2b190..fb9b96d4ae 100644 --- a/src/lib/emotion/efl_canvas_video.eo +++ b/src/lib/emotion/efl_canvas_video.eo @@ -53,10 +53,10 @@ class Efl.Canvas.Video (Efl.Canvas.Group, Efl.File, Efl.Player, Efl.Image, Efl.I Efl.Object.constructor; Efl.Gfx.color.set; Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Canvas.Object.clip.set; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_resize; Efl.File.file.set; Efl.File.file.get; diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c index e702c1a9eb..266473905c 100644 --- a/src/lib/emotion/emotion_smart.c +++ b/src/lib/emotion/emotion_smart.c @@ -1929,11 +1929,16 @@ _efl_canvas_video_efl_canvas_group_group_del(Evas_Object *obj EINA_UNUSED, Efl_C } EOLIAN static void -_efl_canvas_video_efl_canvas_group_group_move(Evas_Object *obj, Efl_Canvas_Video_Data *sd, Evas_Coord x, Evas_Coord y) +_efl_canvas_video_efl_gfx_position_set(Evas_Object *obj, Efl_Canvas_Video_Data *sd, Evas_Coord x, Evas_Coord y) { int w, h; - evas_object_geometry_get(obj, NULL, NULL, &w, &h); + if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + + efl_gfx_size_get(obj, &w, &h); + efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y); + _clipper_position_size_update(obj, x, y, w, h, sd->video.w, sd->video.h); evas_object_move(sd->bg, x, y); } diff --git a/src/lib/evas/canvas/efl_canvas_group.eo b/src/lib/evas/canvas/efl_canvas_group.eo index 1f80b4d504..1649fa145d 100644 --- a/src/lib/evas/canvas/efl_canvas_group.eo +++ b/src/lib/evas/canvas/efl_canvas_group.eo @@ -63,14 +63,6 @@ class Efl.Canvas.Group (Efl.Canvas.Object) return: free(own(iterator<Efl.Gfx>), eina_iterator_free); legacy: evas_object_smart_iterator_new; } - group_move { - [[No description supplied by the EAPI.]] - legacy: null; - params { - @in x: Evas.Coord; - @in y: Evas.Coord; - } - } group_add { [[Instantiates a new smart object described by $s. diff --git a/src/lib/evas/canvas/efl_canvas_group_clipped.eo b/src/lib/evas/canvas/efl_canvas_group_clipped.eo index f1616de813..396f4530cf 100644 --- a/src/lib/evas/canvas/efl_canvas_group_clipped.eo +++ b/src/lib/evas/canvas/efl_canvas_group_clipped.eo @@ -5,9 +5,9 @@ abstract Efl.Canvas.Group.Clipped (Efl.Canvas.Group) implements { Efl.Gfx.color.set; Efl.Gfx.visible.set; + Efl.Gfx.position.set; Efl.Canvas.Object.clip.set; Efl.Canvas.Object.no_render.set; - Efl.Canvas.Group.group_move; Efl.Canvas.Group.group_member_del; Efl.Canvas.Group.group_add; Efl.Canvas.Group.group_del; diff --git a/src/lib/evas/canvas/evas_object_intercept.c b/src/lib/evas/canvas/evas_object_intercept.c index d5fa3efcbf..f653f02d9a 100644 --- a/src/lib/evas/canvas/evas_object_intercept.c +++ b/src/lib/evas/canvas/evas_object_intercept.c @@ -111,10 +111,17 @@ _evas_object_intercept_call(Evas_Object *eo_obj, Evas_Object_Intercept_Cb_Type c else return evas_object_intercept_call_hide(eo_obj, obj); case EVAS_OBJECT_INTERCEPT_CB_MOVE: - if (!obj->interceptors) return 0; + if (obj->doing.in_move > 0) + { + WRN("evas_object_move() called on object %p (%s) in the middle " + "of moving the same object", eo_obj, efl_class_name_get(eo_obj)); + return 1; + } va_start(args, internal); i = va_arg(args, int); j = va_arg(args, int); + if ((obj->cur->geometry.x == i) && (obj->cur->geometry.y == j)) goto end_block; + if (!obj->interceptors) goto end_noblock; blocked = evas_object_intercept_call_move(eo_obj, obj, i, j); break; diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index d25496345a..4a3c2d233c 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -795,19 +795,9 @@ _efl_canvas_object_efl_gfx_position_set(Eo *eo_obj, Evas_Object_Protected_Data * Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE; Eina_Bool source_invisible = EINA_FALSE; - if (obj->delete_me) return; - if (!obj->layer) return; - evas_object_async_block(obj); - if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 1, x, y)) return; - - if (obj->doing.in_move > 0) - { - WRN("evas_object_move() called on object %p when in the middle of moving the same object", obj); - return; - } - - if ((obj->cur->geometry.x == x) && (obj->cur->geometry.y == y)) return; + if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 1, x, y)) + return; Evas_Map *map; map = (Evas_Map *) evas_object_map_get(eo_obj); @@ -830,10 +820,8 @@ _efl_canvas_object_efl_gfx_position_set(Eo *eo_obj, Evas_Object_Protected_Data * } obj->doing.in_move++; - if (obj->is_smart) - { - efl_canvas_group_move(eo_obj, x, y); - } + if (obj->is_smart && obj->smart.smart && obj->smart.smart->smart_class->move) + obj->smart.smart->smart_class->move(eo_obj, x, y); EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) { diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c index b3ff29c74c..359de50e7f 100644 --- a/src/lib/evas/canvas/evas_object_smart.c +++ b/src/lib/evas/canvas/evas_object_smart.c @@ -642,16 +642,6 @@ _efl_canvas_group_group_resize(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_ } EOLIAN static void -_efl_canvas_group_group_move(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_Coord x, Evas_Coord y) -{ - // If this function is reached, so we do nothing except trying to call - // the function of the legacy smart class. - Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); - Evas_Smart *s = obj->smart.smart; - if (s && s->smart_class->move) s->smart_class->move(eo_obj, x, y); -} - -EOLIAN static void _efl_canvas_group_efl_canvas_object_no_render_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Eina_Bool enable) { Evas_Object_Protected_Data *obj2; diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c index caab4286fe..6b4fcec4e6 100644 --- a/src/lib/evas/canvas/evas_object_smart_clipped.c +++ b/src/lib/evas/canvas/evas_object_smart_clipped.c @@ -86,14 +86,18 @@ evas_object_smart_clipped_smart_move(Evas_Object *eo_obj, Evas_Coord x, Evas_Coo { Evas_Coord orig_x, orig_y; - evas_object_geometry_get(eo_obj, &orig_x, &orig_y, NULL, NULL); + efl_gfx_position_get(eo_obj, &orig_x, &orig_y); evas_object_smart_move_children_relative(eo_obj, x - orig_x, y - orig_y); } EOLIAN static void -_efl_canvas_group_clipped_efl_canvas_group_group_move(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *obj EINA_UNUSED, Evas_Coord x, Evas_Coord y) +_efl_canvas_group_clipped_efl_gfx_position_set(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *obj EINA_UNUSED, Evas_Coord x, Evas_Coord y) { + if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) + return; + evas_object_smart_clipped_smart_move(eo_obj, x, y); + efl_gfx_position_set(efl_super(eo_obj, MY_CLASS), x, y); } static void |