summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-10-11 16:54:31 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-10-12 11:25:56 +0900
commit8a9f0bd603aaaf3abd3ca9aa87675c9199fe9d09 (patch)
tree0a6e61d5e156ea8b025912c937abe7bcc5cd9c5b /src/lib
parent11b7cf6b728001dbcd42ce41d5ac2e129a835fd8 (diff)
evas/elm: Remove function group_resize
This is an override of efl_gfx_size_set. Same as before, the order of operations matter so it is possible that a corner case will break. In particular, legacy code was: - intercept - smart resize (do stuff), super, super, super - evas object resize The new code is more like: - intercept - super, super, super, evas object resize - do stuff But unfortunately this broke elm_widget (read: all widgets) as the internal resize was done before the object resize. So, inside the resize event cb, the resize_obj size would not match the smart object size. >_<
Diffstat (limited to '')
-rw-r--r--src/lib/edje/edje_object.eo2
-rw-r--r--src/lib/edje/edje_smart.c12
-rw-r--r--src/lib/elementary/efl_ui_image.c10
-rw-r--r--src/lib/elementary/efl_ui_image.eo2
-rw-r--r--src/lib/elementary/efl_ui_text.c7
-rw-r--r--src/lib/elementary/efl_ui_text.eo2
-rw-r--r--src/lib/elementary/efl_ui_win.c8
-rw-r--r--src/lib/elementary/efl_ui_win.eo2
-rw-r--r--src/lib/elementary/elc_combobox.c8
-rw-r--r--src/lib/elementary/elm_combobox.eo2
-rw-r--r--src/lib/elementary/elm_diskselector.c7
-rw-r--r--src/lib/elementary/elm_diskselector.eo2
-rw-r--r--src/lib/elementary/elm_entry.c7
-rw-r--r--src/lib/elementary/elm_entry.eo2
-rw-r--r--src/lib/elementary/elm_gengrid.c15
-rw-r--r--src/lib/elementary/elm_gengrid.eo2
-rw-r--r--src/lib/elementary/elm_gengrid_pan.eo2
-rw-r--r--src/lib/elementary/elm_genlist.c20
-rw-r--r--src/lib/elementary/elm_genlist.eo2
-rw-r--r--src/lib/elementary/elm_genlist_pan.eo2
-rw-r--r--src/lib/elementary/elm_glview.c9
-rw-r--r--src/lib/elementary/elm_glview.eo2
-rw-r--r--src/lib/elementary/elm_hover.c7
-rw-r--r--src/lib/elementary/elm_hover.eo2
-rw-r--r--src/lib/elementary/elm_interface_scrollable.c7
-rw-r--r--src/lib/elementary/elm_list.c7
-rw-r--r--src/lib/elementary/elm_list.eo2
-rw-r--r--src/lib/elementary/elm_map.c14
-rw-r--r--src/lib/elementary/elm_map.eo2
-rw-r--r--src/lib/elementary/elm_map_pan.eo2
-rw-r--r--src/lib/elementary/elm_mapbuf.c7
-rw-r--r--src/lib/elementary/elm_mapbuf.eo2
-rw-r--r--src/lib/elementary/elm_notify.c11
-rw-r--r--src/lib/elementary/elm_notify.eo2
-rw-r--r--src/lib/elementary/elm_pan.eo2
-rw-r--r--src/lib/elementary/elm_panel.c7
-rw-r--r--src/lib/elementary/elm_panel.eo2
-rw-r--r--src/lib/elementary/elm_photocam.c15
-rw-r--r--src/lib/elementary/elm_photocam.eo2
-rw-r--r--src/lib/elementary/elm_photocam_pan.eo2
-rw-r--r--src/lib/elementary/elm_scroller.c7
-rw-r--r--src/lib/elementary/elm_scroller.eo2
-rw-r--r--src/lib/elementary/elm_toolbar.c7
-rw-r--r--src/lib/elementary/elm_toolbar.eo2
-rw-r--r--src/lib/elementary/elm_widget.c13
-rw-r--r--src/lib/elementary/elm_widget.eo2
-rw-r--r--src/lib/emotion/efl_canvas_video.eo2
-rw-r--r--src/lib/emotion/emotion_smart.c7
-rw-r--r--src/lib/evas/canvas/efl_canvas_group.eo8
-rw-r--r--src/lib/evas/canvas/evas_box.eo2
-rw-r--r--src/lib/evas/canvas/evas_object_box.c9
-rw-r--r--src/lib/evas/canvas/evas_object_intercept.c7
-rw-r--r--src/lib/evas/canvas/evas_object_main.c40
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c10
-rw-r--r--src/lib/evas/canvas/evas_object_table.c9
-rw-r--r--src/lib/evas/canvas/evas_table.eo2
-rw-r--r--src/lib/evas/include/evas_private.h1
57 files changed, 216 insertions, 136 deletions
diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo
index b6ec2c6fe9..0ad4b2d215 100644
--- a/src/lib/edje/edje_object.eo
+++ b/src/lib/edje/edje_object.eo
@@ -2068,6 +2068,7 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part)
2068 implements { 2068 implements {
2069 Efl.Gfx.visible.set; 2069 Efl.Gfx.visible.set;
2070 Efl.Gfx.position.set; 2070 Efl.Gfx.position.set;
2071 Efl.Gfx.size.set;
2071 Efl.Object.constructor; 2072 Efl.Object.constructor;
2072 Efl.Object.destructor; 2073 Efl.Object.destructor;
2073 Efl.Object.dbg_info_get; 2074 Efl.Object.dbg_info_get;
@@ -2075,7 +2076,6 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part)
2075 Efl.Canvas.Object.paragraph_direction.set; 2076 Efl.Canvas.Object.paragraph_direction.set;
2076 Efl.Canvas.Group.group_add; 2077 Efl.Canvas.Group.group_add;
2077 Efl.Canvas.Group.group_del; 2078 Efl.Canvas.Group.group_del;
2078 Efl.Canvas.Group.group_resize;
2079 Efl.Canvas.Group.group_calculate; 2079 Efl.Canvas.Group.group_calculate;
2080 Efl.File.file.set; 2080 Efl.File.file.set;
2081 Efl.File.file.get; 2081 Efl.File.file.get;
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index d0800a2109..0a69d5e0b1 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -254,9 +254,12 @@ _edje_limit_get(Edje *ed, Edje_Limit **limits, unsigned int length, Evas_Coord s
254} 254}
255 255
256EOLIAN static void 256EOLIAN static void
257_edje_object_efl_canvas_group_group_resize(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord w, Evas_Coord h) 257_edje_object_efl_gfx_size_set(Eo *obj, Edje *ed, Evas_Coord w, Evas_Coord h)
258{ 258{
259 if ((w == ed->w) && (h == ed->h)) return; 259 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
260 return;
261
262 if ((w == ed->w) && (h == ed->h)) goto super;
260 if (ed->collection) 263 if (ed->collection)
261 { 264 {
262 _edje_limit_get(ed, ed->collection->limits.horizontal, ed->collection->limits.horizontal_count, ed->w, w); 265 _edje_limit_get(ed, ed->collection->limits.horizontal, ed->collection->limits.horizontal_count, ed->w, w);
@@ -279,12 +282,15 @@ _edje_object_efl_canvas_group_group_resize(Eo *obj EINA_UNUSED, Edje *ed, Evas_C
279 if (_edje_lua_script_only(ed)) 282 if (_edje_lua_script_only(ed))
280 { 283 {
281 _edje_lua_script_only_resize(ed); 284 _edje_lua_script_only_resize(ed);
282 return; 285 goto super;
283 } 286 }
284// evas_object_resize(ed->clipper, ed->w, ed->h); 287// evas_object_resize(ed->clipper, ed->w, ed->h);
285 ed->dirty = EINA_TRUE; 288 ed->dirty = EINA_TRUE;
286 _edje_recalc_do(ed); 289 _edje_recalc_do(ed);
287 _edje_emit(ed, "resize", NULL); 290 _edje_emit(ed, "resize", NULL);
291
292super:
293 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
288} 294}
289 295
290static void 296static void
diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c
index 80b2b33345..2e75cbe6a0 100644
--- a/src/lib/elementary/efl_ui_image.c
+++ b/src/lib/elementary/efl_ui_image.c
@@ -577,17 +577,21 @@ _efl_ui_image_efl_gfx_position_set(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Coord x,
577} 577}
578 578
579EOLIAN static void 579EOLIAN static void
580_efl_ui_image_efl_canvas_group_group_resize(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Coord w, Evas_Coord h) 580_efl_ui_image_efl_gfx_size_set(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Coord w, Evas_Coord h)
581{ 581{
582 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 582 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
583 return;
583 584
584 if ((sd->img_w == w) && (sd->img_h == h)) return; 585 if ((sd->img_w == w) && (sd->img_h == h)) goto super;
585 586
586 sd->img_w = w; 587 sd->img_w = w;
587 sd->img_h = h; 588 sd->img_h = h;
588 589
589 /* takes care of resizing */ 590 /* takes care of resizing */
590 _efl_ui_image_internal_sizing_eval(obj, sd); 591 _efl_ui_image_internal_sizing_eval(obj, sd);
592
593super:
594 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
591} 595}
592 596
593static void 597static void
diff --git a/src/lib/elementary/efl_ui_image.eo b/src/lib/elementary/efl_ui_image.eo
index c69cb3f50c..8bdf134ced 100644
--- a/src/lib/elementary/efl_ui_image.eo
+++ b/src/lib/elementary/efl_ui_image.eo
@@ -125,6 +125,7 @@ class Efl.Ui.Image (Elm.Widget, Efl.Ui.Clickable, Efl.Ui.Draggable,
125 Efl.Gfx.color.set; 125 Efl.Gfx.color.set;
126 Efl.Gfx.visible.set; 126 Efl.Gfx.visible.set;
127 Efl.Gfx.position.set; 127 Efl.Gfx.position.set;
128 Efl.Gfx.size.set;
128 Efl.Gfx.View.view_size.get; 129 Efl.Gfx.View.view_size.get;
129 Efl.Image.Load.load_size.set; 130 Efl.Image.Load.load_size.set;
130 Efl.Image.Load.load_size.get; 131 Efl.Image.Load.load_size.get;
@@ -146,7 +147,6 @@ class Efl.Ui.Image (Elm.Widget, Efl.Ui.Clickable, Efl.Ui.Draggable,
146 Efl.Canvas.Group.group_add; 147 Efl.Canvas.Group.group_add;
147 Efl.Canvas.Group.group_del; 148 Efl.Canvas.Group.group_del;
148 Efl.Canvas.Group.group_member_add; 149 Efl.Canvas.Group.group_member_add;
149 Efl.Canvas.Group.group_resize;
150 Efl.Ui.Draggable.drag_target.set; 150 Efl.Ui.Draggable.drag_target.set;
151 Efl.Ui.Draggable.drag_target.get; 151 Efl.Ui.Draggable.drag_target.get;
152 Elm.Widget.theme_apply; 152 Elm.Widget.theme_apply;
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index 5d6ecb3429..52ebe1134d 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -3483,12 +3483,15 @@ _efl_ui_text_efl_gfx_position_set(Eo *obj, Efl_Ui_Text_Data *sd, Evas_Coord x, E
3483} 3483}
3484 3484
3485EOLIAN static void 3485EOLIAN static void
3486_efl_ui_text_efl_canvas_group_group_resize(Eo *obj, Efl_Ui_Text_Data *sd, Evas_Coord w, Evas_Coord h) 3486_efl_ui_text_efl_gfx_size_set(Eo *obj, Efl_Ui_Text_Data *sd, Evas_Coord w, Evas_Coord h)
3487{ 3487{
3488 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 3488 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
3489 return;
3489 3490
3490 evas_object_resize(sd->hit_rect, w, h); 3491 evas_object_resize(sd->hit_rect, w, h);
3491 _update_selection_handler(obj); 3492 _update_selection_handler(obj);
3493
3494 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
3492} 3495}
3493 3496
3494EOLIAN static void 3497EOLIAN static void
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index d506a45332..8fe58331b8 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -418,9 +418,9 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
418 Efl.Object.destructor; 418 Efl.Object.destructor;
419 Efl.Gfx.visible.set; 419 Efl.Gfx.visible.set;
420 Efl.Gfx.position.set; 420 Efl.Gfx.position.set;
421 Efl.Gfx.size.set;
421 Efl.Canvas.Group.group_member_add; 422 Efl.Canvas.Group.group_member_add;
422 Efl.Canvas.Group.group_add; 423 Efl.Canvas.Group.group_add;
423 Efl.Canvas.Group.group_resize;
424 Efl.Canvas.Group.group_del; 424 Efl.Canvas.Group.group_del;
425 Elm.Widget.activate; 425 Elm.Widget.activate;
426 Elm.Widget.focus_direction_manager_is; 426 Elm.Widget.focus_direction_manager_is;
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 5dca56fbdf..56782307f7 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -2821,11 +2821,13 @@ super_skip:
2821} 2821}
2822 2822
2823EOLIAN static void 2823EOLIAN static void
2824_efl_ui_win_efl_canvas_group_group_resize(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord w, Evas_Coord h) 2824_efl_ui_win_efl_gfx_size_set(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coord w, Evas_Coord h)
2825{ 2825{
2826 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
2827 return;
2828
2826 if (sd->img_obj) 2829 if (sd->img_obj)
2827 { 2830 {
2828 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h);
2829 if (sd->constrain) 2831 if (sd->constrain)
2830 { 2832 {
2831 int sw, sh; 2833 int sw, sh;
@@ -2841,6 +2843,8 @@ _efl_ui_win_efl_canvas_group_group_resize(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Coo
2841 } 2843 }
2842 2844
2843 if (!sd->response) TRAP(sd, resize, w, h); 2845 if (!sd->response) TRAP(sd, resize, w, h);
2846
2847 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
2844} 2848}
2845 2849
2846static void 2850static void
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index b8c9ab47bc..0b5255030f 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -811,9 +811,9 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Elm.Interface.Atspi.Window,
811 Efl.Object.finalize; 811 Efl.Object.finalize;
812 Efl.Gfx.visible.set; 812 Efl.Gfx.visible.set;
813 Efl.Gfx.position.set; 813 Efl.Gfx.position.set;
814 Efl.Gfx.size.set;
814 Efl.Canvas.Group.group_add; 815 Efl.Canvas.Group.group_add;
815 Efl.Canvas.Group.group_del; 816 Efl.Canvas.Group.group_del;
816 Efl.Canvas.Group.group_resize;
817 Elm.Widget.focus_direction; 817 Elm.Widget.focus_direction;
818 Elm.Widget.focus_next_manager_is; 818 Elm.Widget.focus_next_manager_is;
819 Elm.Widget.focus_direction_manager_is; 819 Elm.Widget.focus_direction_manager_is;
diff --git a/src/lib/elementary/elc_combobox.c b/src/lib/elementary/elc_combobox.c
index 2af16e2ba6..6026ce9e35 100644
--- a/src/lib/elementary/elc_combobox.c
+++ b/src/lib/elementary/elc_combobox.c
@@ -529,10 +529,12 @@ _elm_combobox_elm_widget_part_text_get(Eo *obj EINA_UNUSED, Elm_Combobox_Data *p
529} 529}
530 530
531EOLIAN static void 531EOLIAN static void
532_elm_combobox_efl_canvas_group_group_resize(Eo *obj, Elm_Combobox_Data *pd, 532_elm_combobox_efl_gfx_size_set(Eo *obj, Elm_Combobox_Data *pd, Evas_Coord w, Evas_Coord h)
533 Evas_Coord w, Evas_Coord h)
534{ 533{
535 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 534 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
535 return;
536
536 if (pd->count > 0) _table_resize(obj); 537 if (pd->count > 0) _table_resize(obj);
538 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
537} 539}
538#include "elm_combobox.eo.c" 540#include "elm_combobox.eo.c"
diff --git a/src/lib/elementary/elm_combobox.eo b/src/lib/elementary/elm_combobox.eo
index 66f60a6f47..9302421fd5 100644
--- a/src/lib/elementary/elm_combobox.eo
+++ b/src/lib/elementary/elm_combobox.eo
@@ -37,9 +37,9 @@ class Elm.Combobox (Elm.Button, Efl.Ui.Selectable,
37 class.constructor; 37 class.constructor;
38 Efl.Object.constructor; 38 Efl.Object.constructor;
39 Efl.Gfx.visible.set; 39 Efl.Gfx.visible.set;
40 Efl.Gfx.size.set;
40 Efl.Canvas.Group.group_add; 41 Efl.Canvas.Group.group_add;
41 Efl.Canvas.Group.group_del; 42 Efl.Canvas.Group.group_del;
42 Efl.Canvas.Group.group_resize;
43 Elm.Widget.part_text.set; 43 Elm.Widget.part_text.set;
44 Elm.Widget.part_text.get; 44 Elm.Widget.part_text.get;
45 Elm.Widget.theme_apply; 45 Elm.Widget.theme_apply;
diff --git a/src/lib/elementary/elm_diskselector.c b/src/lib/elementary/elm_diskselector.c
index 8d4da071b8..8d8f29cf51 100644
--- a/src/lib/elementary/elm_diskselector.c
+++ b/src/lib/elementary/elm_diskselector.c
@@ -1432,11 +1432,14 @@ _elm_diskselector_efl_gfx_position_set(Eo *obj, Elm_Diskselector_Data *sd, Evas_
1432} 1432}
1433 1433
1434EOLIAN static void 1434EOLIAN static void
1435_elm_diskselector_efl_canvas_group_group_resize(Eo *obj, Elm_Diskselector_Data *sd, Evas_Coord w, Evas_Coord h) 1435_elm_diskselector_efl_gfx_size_set(Eo *obj, Elm_Diskselector_Data *sd, Evas_Coord w, Evas_Coord h)
1436{ 1436{
1437 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 1437 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
1438 return;
1438 1439
1439 evas_object_resize(sd->hit_rect, w, h); 1440 evas_object_resize(sd->hit_rect, w, h);
1441
1442 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
1440} 1443}
1441 1444
1442EOLIAN static void 1445EOLIAN static void
diff --git a/src/lib/elementary/elm_diskselector.eo b/src/lib/elementary/elm_diskselector.eo
index 0b20ec6cea..54cf42281d 100644
--- a/src/lib/elementary/elm_diskselector.eo
+++ b/src/lib/elementary/elm_diskselector.eo
@@ -198,10 +198,10 @@ class Elm.Diskselector (Elm.Widget, Elm.Interface_Scrollable,
198 class.constructor; 198 class.constructor;
199 Efl.Object.constructor; 199 Efl.Object.constructor;
200 Efl.Gfx.position.set; 200 Efl.Gfx.position.set;
201 Efl.Gfx.size.set;
201 Efl.Canvas.Group.group_member_add; 202 Efl.Canvas.Group.group_member_add;
202 Efl.Canvas.Group.group_add; 203 Efl.Canvas.Group.group_add;
203 Efl.Canvas.Group.group_del; 204 Efl.Canvas.Group.group_del;
204 Efl.Canvas.Group.group_resize;
205 Elm.Widget.focus_next_manager_is; 205 Elm.Widget.focus_next_manager_is;
206 Elm.Widget.access; 206 Elm.Widget.access;
207 Elm.Widget.focus_next; 207 Elm.Widget.focus_next;
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 85c039db35..2f5e353ae1 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -3929,13 +3929,16 @@ _elm_entry_efl_gfx_position_set(Eo *obj, Elm_Entry_Data *sd, Evas_Coord x, Evas_
3929} 3929}
3930 3930
3931EOLIAN static void 3931EOLIAN static void
3932_elm_entry_efl_canvas_group_group_resize(Eo *obj, Elm_Entry_Data *sd, Evas_Coord w, Evas_Coord h) 3932_elm_entry_efl_gfx_size_set(Eo *obj, Elm_Entry_Data *sd, Evas_Coord w, Evas_Coord h)
3933{ 3933{
3934 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 3934 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
3935 return;
3935 3936
3936 evas_object_resize(sd->hit_rect, w, h); 3937 evas_object_resize(sd->hit_rect, w, h);
3937 if (sd->have_selection) 3938 if (sd->have_selection)
3938 _update_selection_handler(obj); 3939 _update_selection_handler(obj);
3940
3941 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
3939} 3942}
3940 3943
3941EOLIAN static void 3944EOLIAN static void
diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo
index 2bd3b1f1b7..3a0aaa28f4 100644
--- a/src/lib/elementary/elm_entry.eo
+++ b/src/lib/elementary/elm_entry.eo
@@ -941,9 +941,9 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
941 Efl.Object.constructor; 941 Efl.Object.constructor;
942 Efl.Gfx.visible.set; 942 Efl.Gfx.visible.set;
943 Efl.Gfx.position.set; 943 Efl.Gfx.position.set;
944 Efl.Gfx.size.set;
944 Efl.Canvas.Group.group_member_add; 945 Efl.Canvas.Group.group_member_add;
945 Efl.Canvas.Group.group_add; 946 Efl.Canvas.Group.group_add;
946 Efl.Canvas.Group.group_resize;
947 Efl.Canvas.Group.group_del; 947 Efl.Canvas.Group.group_del;
948 Elm.Widget.activate; 948 Elm.Widget.activate;
949 Elm.Widget.focus_direction_manager_is; 949 Elm.Widget.focus_direction_manager_is;
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 27e06ceb02..90fc7fab8a 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -490,12 +490,13 @@ _elm_gengrid_pan_efl_gfx_position_set(Eo *obj, Elm_Gengrid_Pan_Data *psd, Evas_C
490} 490}
491 491
492EOLIAN static void 492EOLIAN static void
493_elm_gengrid_pan_efl_canvas_group_group_resize(Eo *obj, Elm_Gengrid_Pan_Data *psd, Evas_Coord w, Evas_Coord h) 493_elm_gengrid_pan_efl_gfx_size_set(Eo *obj, Elm_Gengrid_Pan_Data *psd, Evas_Coord w, Evas_Coord h)
494{ 494{
495 Evas_Coord ow, oh; 495 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
496 return;
497
498 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
496 499
497 evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
498 if ((ow == w) && (oh == h)) return;
499 ecore_job_del(psd->wsd->calc_job); 500 ecore_job_del(psd->wsd->calc_job);
500 psd->wsd->calc_job = ecore_job_add(_calc_job, psd->wobj); 501 psd->wsd->calc_job = ecore_job_add(_calc_job, psd->wobj);
501} 502}
@@ -4347,11 +4348,13 @@ _elm_gengrid_efl_gfx_position_set(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord x, E
4347} 4348}
4348 4349
4349EOLIAN static void 4350EOLIAN static void
4350_elm_gengrid_efl_canvas_group_group_resize(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord w, Evas_Coord h) 4351_elm_gengrid_efl_gfx_size_set(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord w, Evas_Coord h)
4351{ 4352{
4352 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 4353 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
4354 return;
4353 4355
4354 evas_object_resize(sd->hit_rect, w, h); 4356 evas_object_resize(sd->hit_rect, w, h);
4357 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
4355} 4358}
4356 4359
4357EOLIAN static void 4360EOLIAN static void
diff --git a/src/lib/elementary/elm_gengrid.eo b/src/lib/elementary/elm_gengrid.eo
index 63baf6ff32..fc7231e286 100644
--- a/src/lib/elementary/elm_gengrid.eo
+++ b/src/lib/elementary/elm_gengrid.eo
@@ -541,10 +541,10 @@ class Elm.Gengrid (Elm.Layout, Elm.Interface_Scrollable,
541 class.constructor; 541 class.constructor;
542 Efl.Object.constructor; 542 Efl.Object.constructor;
543 Efl.Gfx.position.set; 543 Efl.Gfx.position.set;
544 Efl.Gfx.size.set;
544 Efl.Canvas.Group.group_add; 545 Efl.Canvas.Group.group_add;
545 Efl.Canvas.Group.group_del; 546 Efl.Canvas.Group.group_del;
546 Efl.Canvas.Group.group_member_add; 547 Efl.Canvas.Group.group_member_add;
547 Efl.Canvas.Group.group_resize;
548 Elm.Widget.theme_apply; 548 Elm.Widget.theme_apply;
549 Elm.Widget.focus_next_manager_is; 549 Elm.Widget.focus_next_manager_is;
550 Elm.Widget.focus_direction_manager_is; 550 Elm.Widget.focus_direction_manager_is;
diff --git a/src/lib/elementary/elm_gengrid_pan.eo b/src/lib/elementary/elm_gengrid_pan.eo
index 94ca804f2f..72a5ade975 100644
--- a/src/lib/elementary/elm_gengrid_pan.eo
+++ b/src/lib/elementary/elm_gengrid_pan.eo
@@ -7,8 +7,8 @@ class Elm.Gengrid.Pan (Elm.Pan)
7 class.constructor; 7 class.constructor;
8 Efl.Object.destructor; 8 Efl.Object.destructor;
9 Efl.Gfx.position.set; 9 Efl.Gfx.position.set;
10 Efl.Gfx.size.set;
10 Efl.Canvas.Group.group_calculate; 11 Efl.Canvas.Group.group_calculate;
11 Efl.Canvas.Group.group_resize;
12 Elm.Pan.content_size.get; 12 Elm.Pan.content_size.get;
13 Elm.Pan.pos; 13 Elm.Pan.pos;
14 Elm.Pan.pos_min.get; 14 Elm.Pan.pos_min.get;
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index f75b263601..b0e8da810f 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -290,14 +290,16 @@ _elm_genlist_pan_smart_resize_job(void *data)
290} 290}
291 291
292EOLIAN static void 292EOLIAN static void
293_elm_genlist_pan_efl_canvas_group_group_resize(Eo *obj, Elm_Genlist_Pan_Data *psd, Evas_Coord w, Evas_Coord h) 293_elm_genlist_pan_efl_gfx_size_set(Eo *obj, Elm_Genlist_Pan_Data *psd, Evas_Coord w, Evas_Coord h)
294{ 294{
295 Elm_Genlist_Data *sd = psd->wsd;
295 Evas_Coord ow, oh; 296 Evas_Coord ow, oh;
296 297
297 Elm_Genlist_Data *sd = psd->wsd; 298 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
299 return;
298 300
299 evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); 301 efl_gfx_size_get(obj, &ow, &oh);
300 if ((ow == w) && (oh == h)) return; 302 if ((ow == w) && (oh == h)) goto super; // should already be intercepted above
301 if ((sd->mode == ELM_LIST_COMPRESS) && (ow != w)) 303 if ((sd->mode == ELM_LIST_COMPRESS) && (ow != w))
302 { 304 {
303 /* fix me later */ 305 /* fix me later */
@@ -315,6 +317,9 @@ _elm_genlist_pan_efl_canvas_group_group_resize(Eo *obj, Elm_Genlist_Pan_Data *ps
315 sd->calc_job = ecore_job_add(_calc_job, psd->wobj); 317 sd->calc_job = ecore_job_add(_calc_job, psd->wobj);
316 else 318 else
317 sd->calc_job = NULL; 319 sd->calc_job = NULL;
320
321super:
322 efl_gfx_size_set(efl_super(obj, MY_PAN_CLASS), w, h);
318} 323}
319 324
320static void 325static void
@@ -5674,13 +5679,16 @@ _elm_genlist_efl_gfx_position_set(Eo *obj, Elm_Genlist_Data *sd, Evas_Coord x, E
5674} 5679}
5675 5680
5676EOLIAN static void 5681EOLIAN static void
5677_elm_genlist_efl_canvas_group_group_resize(Eo *obj, Elm_Genlist_Data *sd, Evas_Coord w, Evas_Coord h) 5682_elm_genlist_efl_gfx_size_set(Eo *obj, Elm_Genlist_Data *sd, Evas_Coord w, Evas_Coord h)
5678{ 5683{
5679 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 5684 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
5685 return;
5680 5686
5681 evas_object_resize(sd->hit_rect, w, h); 5687 evas_object_resize(sd->hit_rect, w, h);
5682 if ((sd->queue) && (!sd->queue_idle_enterer) && (w > 0)) 5688 if ((sd->queue) && (!sd->queue_idle_enterer) && (w > 0))
5683 _requeue_idle_enterer(sd); 5689 _requeue_idle_enterer(sd);
5690
5691 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
5684} 5692}
5685 5693
5686EOLIAN static void 5694EOLIAN static void
diff --git a/src/lib/elementary/elm_genlist.eo b/src/lib/elementary/elm_genlist.eo
index cbdb18021f..97c7dd9960 100644
--- a/src/lib/elementary/elm_genlist.eo
+++ b/src/lib/elementary/elm_genlist.eo
@@ -529,10 +529,10 @@ class Elm.Genlist (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
529 class.constructor; 529 class.constructor;
530 Efl.Object.constructor; 530 Efl.Object.constructor;
531 Efl.Gfx.position.set; 531 Efl.Gfx.position.set;
532 Efl.Gfx.size.set;
532 Efl.Canvas.Group.group_member_add; 533 Efl.Canvas.Group.group_member_add;
533 Efl.Canvas.Group.group_add; 534 Efl.Canvas.Group.group_add;
534 Efl.Canvas.Group.group_del; 535 Efl.Canvas.Group.group_del;
535 Efl.Canvas.Group.group_resize;
536 Elm.Widget.theme_apply; 536 Elm.Widget.theme_apply;
537 Elm.Widget.focus_next_manager_is; 537 Elm.Widget.focus_next_manager_is;
538 Elm.Widget.sub_object_add; 538 Elm.Widget.sub_object_add;
diff --git a/src/lib/elementary/elm_genlist_pan.eo b/src/lib/elementary/elm_genlist_pan.eo
index f773328014..bc9a9b4eec 100644
--- a/src/lib/elementary/elm_genlist_pan.eo
+++ b/src/lib/elementary/elm_genlist_pan.eo
@@ -7,9 +7,9 @@ class Elm.Genlist.Pan (Elm.Pan)
7 class.constructor; 7 class.constructor;
8 Efl.Object.destructor; 8 Efl.Object.destructor;
9 Efl.Gfx.position.set; 9 Efl.Gfx.position.set;
10 Efl.Gfx.size.set;
10 Efl.Canvas.Group.group_calculate; 11 Efl.Canvas.Group.group_calculate;
11 Efl.Canvas.Group.group_del; 12 Efl.Canvas.Group.group_del;
12 Efl.Canvas.Group.group_resize;
13 Elm.Pan.content_size.get; 13 Elm.Pan.content_size.get;
14 Elm.Pan.pos; 14 Elm.Pan.pos;
15 Elm.Pan.pos_min.get; 15 Elm.Pan.pos_min.get;
diff --git a/src/lib/elementary/elm_glview.c b/src/lib/elementary/elm_glview.c
index ff98a271e1..966295ebdb 100644
--- a/src/lib/elementary/elm_glview.c
+++ b/src/lib/elementary/elm_glview.c
@@ -86,9 +86,12 @@ _glview_update_surface(Evas_Object *obj)
86} 86}
87 87
88EOLIAN static void 88EOLIAN static void
89_elm_glview_efl_canvas_group_group_resize(Eo *obj, Elm_Glview_Data *sd, Evas_Coord w, Evas_Coord h) 89_elm_glview_efl_gfx_size_set(Eo *obj, Elm_Glview_Data *sd, Evas_Coord w, Evas_Coord h)
90{ 90{
91 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 91 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
92 return;
93
94 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
92 95
93 sd->resized = EINA_TRUE; 96 sd->resized = EINA_TRUE;
94 97
@@ -100,8 +103,6 @@ _elm_glview_efl_canvas_group_group_resize(Eo *obj, Elm_Glview_Data *sd, Evas_Coo
100 h = 64; 103 h = 64;
101 } 104 }
102 105
103 if ((sd->w == w) && (sd->h == h)) return;
104
105 sd->w = w; 106 sd->w = w;
106 sd->h = h; 107 sd->h = h;
107 108
diff --git a/src/lib/elementary/elm_glview.eo b/src/lib/elementary/elm_glview.eo
index 54d8143a51..d50a8ae89a 100644
--- a/src/lib/elementary/elm_glview.eo
+++ b/src/lib/elementary/elm_glview.eo
@@ -188,9 +188,9 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
188 implements { 188 implements {
189 class.constructor; 189 class.constructor;
190 Efl.Object.finalize; 190 Efl.Object.finalize;
191 Efl.Gfx.size.set;
191 Efl.Canvas.Group.group_add; 192 Efl.Canvas.Group.group_add;
192 Efl.Canvas.Group.group_del; 193 Efl.Canvas.Group.group_del;
193 Efl.Canvas.Group.group_resize;
194 Elm.Widget.on_focus; 194 Elm.Widget.on_focus;
195 Efl.Gfx.View.view_size.get; 195 Efl.Gfx.View.view_size.get;
196 Efl.Gfx.View.view_size.set; 196 Efl.Gfx.View.view_size.set;
diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c
index 0c8fa72682..eacfb1472c 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -627,9 +627,12 @@ _elm_hover_efl_gfx_position_set(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, Evas_C
627} 627}
628 628
629EOLIAN static void 629EOLIAN static void
630_elm_hover_efl_canvas_group_group_resize(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h) 630_elm_hover_efl_gfx_size_set(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h)
631{ 631{
632 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 632 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
633 return;
634
635 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
633 636
634 elm_layout_sizing_eval(obj); 637 elm_layout_sizing_eval(obj);
635} 638}
diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo
index 47caaabc63..a01ea229d7 100644
--- a/src/lib/elementary/elm_hover.eo
+++ b/src/lib/elementary/elm_hover.eo
@@ -62,9 +62,9 @@ class Elm.Hover (Elm.Layout, Efl.Ui.Clickable, Elm.Interface.Atspi_Widget_Action
62 Efl.Object.constructor; 62 Efl.Object.constructor;
63 Efl.Gfx.visible.set; 63 Efl.Gfx.visible.set;
64 Efl.Gfx.position.set; 64 Efl.Gfx.position.set;
65 Efl.Gfx.size.set;
65 Efl.Canvas.Group.group_del; 66 Efl.Canvas.Group.group_del;
66 Efl.Canvas.Group.group_add; 67 Efl.Canvas.Group.group_add;
67 Efl.Canvas.Group.group_resize;
68 Elm.Widget.theme_apply; 68 Elm.Widget.theme_apply;
69 Elm.Widget.sub_object_add; 69 Elm.Widget.sub_object_add;
70 Elm.Widget.widget_parent; 70 Elm.Widget.widget_parent;
diff --git a/src/lib/elementary/elm_interface_scrollable.c b/src/lib/elementary/elm_interface_scrollable.c
index f6b1623077..8d22b544c6 100644
--- a/src/lib/elementary/elm_interface_scrollable.c
+++ b/src/lib/elementary/elm_interface_scrollable.c
@@ -116,8 +116,13 @@ _elm_pan_efl_gfx_position_set(Eo *obj, Elm_Pan_Smart_Data *psd, Evas_Coord x, Ev
116} 116}
117 117
118EOLIAN static void 118EOLIAN static void
119_elm_pan_efl_canvas_group_group_resize(Eo *obj EINA_UNUSED, Elm_Pan_Smart_Data *psd, Evas_Coord w, Evas_Coord h) 119_elm_pan_efl_gfx_size_set(Eo *obj EINA_UNUSED, Elm_Pan_Smart_Data *psd, Evas_Coord w, Evas_Coord h)
120{ 120{
121 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
122 return;
123
124 efl_gfx_size_set(efl_super(obj, MY_PAN_CLASS), w, h);
125
121 psd->w = w; 126 psd->w = w;
122 psd->h = h; 127 psd->h = h;
123 128
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index dc8e9b7ba9..8f2ca840f8 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -2520,9 +2520,12 @@ _elm_list_efl_gfx_position_set(Eo *obj, Elm_List_Data *sd, Evas_Coord x, Evas_Co
2520} 2520}
2521 2521
2522EOLIAN static void 2522EOLIAN static void
2523_elm_list_efl_canvas_group_group_resize(Eo *obj, Elm_List_Data *sd, Evas_Coord w, Evas_Coord h) 2523_elm_list_efl_gfx_size_set(Eo *obj, Elm_List_Data *sd, Evas_Coord w, Evas_Coord h)
2524{ 2524{
2525 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 2525 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
2526 return;
2527
2528 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
2526 2529
2527 evas_object_resize(sd->hit_rect, w, h); 2530 evas_object_resize(sd->hit_rect, w, h);
2528} 2531}
diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo
index 273ca41270..3c55a83f52 100644
--- a/src/lib/elementary/elm_list.eo
+++ b/src/lib/elementary/elm_list.eo
@@ -430,10 +430,10 @@ class Elm.List (Elm.Layout, Elm.Interface_Scrollable,
430 class.constructor; 430 class.constructor;
431 Efl.Object.constructor; 431 Efl.Object.constructor;
432 Efl.Gfx.position.set; 432 Efl.Gfx.position.set;
433 Efl.Gfx.size.set;
433 Efl.Canvas.Group.group_member_add; 434 Efl.Canvas.Group.group_member_add;
434 Efl.Canvas.Group.group_add; 435 Efl.Canvas.Group.group_add;
435 Efl.Canvas.Group.group_del; 436 Efl.Canvas.Group.group_del;
436 Efl.Canvas.Group.group_resize;
437 Elm.Widget.theme_apply; 437 Elm.Widget.theme_apply;
438 Elm.Widget.focus_next_manager_is; 438 Elm.Widget.focus_next_manager_is;
439 Elm.Widget.focus_direction_manager_is; 439 Elm.Widget.focus_direction_manager_is;
diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c
index e600a21d32..1d57f5f070 100644
--- a/src/lib/elementary/elm_map.c
+++ b/src/lib/elementary/elm_map.c
@@ -3864,8 +3864,13 @@ _elm_map_pan_elm_pan_content_size_get(Eo *obj EINA_UNUSED, Elm_Map_Pan_Data *psd
3864} 3864}
3865 3865
3866EOLIAN static void 3866EOLIAN static void
3867_elm_map_pan_efl_canvas_group_group_resize(Eo *obj, Elm_Map_Pan_Data *psd, Evas_Coord w EINA_UNUSED, Evas_Coord h EINA_UNUSED) 3867_elm_map_pan_efl_gfx_size_set(Eo *obj, Elm_Map_Pan_Data *psd, Evas_Coord w, Evas_Coord h)
3868{ 3868{
3869 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
3870 return;
3871
3872 efl_gfx_size_set(efl_super(obj, MY_PAN_CLASS), w, h);
3873
3869 _sizing_eval(psd->wsd->obj); 3874 _sizing_eval(psd->wsd->obj);
3870 elm_map_zoom_mode_set(psd->wobj, psd->wsd->mode); 3875 elm_map_zoom_mode_set(psd->wobj, psd->wsd->mode);
3871 evas_object_smart_changed(obj); 3876 evas_object_smart_changed(obj);
@@ -4219,9 +4224,12 @@ _elm_map_efl_gfx_position_set(Eo *obj, Elm_Map_Data *sd, Evas_Coord x, Evas_Coor
4219} 4224}
4220 4225
4221EOLIAN static void 4226EOLIAN static void
4222_elm_map_efl_canvas_group_group_resize(Eo *obj, Elm_Map_Data *sd, Evas_Coord w, Evas_Coord h) 4227_elm_map_efl_gfx_size_set(Eo *obj, Elm_Map_Data *sd, Evas_Coord w, Evas_Coord h)
4223{ 4228{
4224 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 4229 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
4230 return;
4231
4232 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
4225 4233
4226 evas_object_resize(sd->hit_rect, w, h); 4234 evas_object_resize(sd->hit_rect, w, h);
4227} 4235}
diff --git a/src/lib/elementary/elm_map.eo b/src/lib/elementary/elm_map.eo
index 9267b35f9e..d47e046159 100644
--- a/src/lib/elementary/elm_map.eo
+++ b/src/lib/elementary/elm_map.eo
@@ -627,10 +627,10 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
627 class.constructor; 627 class.constructor;
628 Efl.Object.constructor; 628 Efl.Object.constructor;
629 Efl.Gfx.position.set; 629 Efl.Gfx.position.set;
630 Efl.Gfx.size.set;
630 Efl.Canvas.Group.group_add; 631 Efl.Canvas.Group.group_add;
631 Efl.Canvas.Group.group_del; 632 Efl.Canvas.Group.group_del;
632 Efl.Canvas.Group.group_member_add; 633 Efl.Canvas.Group.group_member_add;
633 Efl.Canvas.Group.group_resize;
634 Elm.Widget.theme_apply; 634 Elm.Widget.theme_apply;
635 Elm.Widget.on_focus; 635 Elm.Widget.on_focus;
636 Elm.Widget.event; 636 Elm.Widget.event;
diff --git a/src/lib/elementary/elm_map_pan.eo b/src/lib/elementary/elm_map_pan.eo
index a073aafcf2..cbae0a077f 100644
--- a/src/lib/elementary/elm_map_pan.eo
+++ b/src/lib/elementary/elm_map_pan.eo
@@ -7,8 +7,8 @@ class Elm.Map.Pan (Elm.Pan)
7 class.constructor; 7 class.constructor;
8 Efl.Object.destructor; 8 Efl.Object.destructor;
9 Efl.Gfx.position.set; 9 Efl.Gfx.position.set;
10 Efl.Gfx.size.set;
10 Efl.Canvas.Group.group_calculate; 11 Efl.Canvas.Group.group_calculate;
11 Efl.Canvas.Group.group_resize;
12 Elm.Pan.content_size.get; 12 Elm.Pan.content_size.get;
13 Elm.Pan.pos; 13 Elm.Pan.pos;
14 Elm.Pan.pos_min.get; 14 Elm.Pan.pos_min.get;
diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c
index 2034e209c8..371c634088 100644
--- a/src/lib/elementary/elm_mapbuf.c
+++ b/src/lib/elementary/elm_mapbuf.c
@@ -169,9 +169,12 @@ _elm_mapbuf_efl_gfx_position_set(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord x, Eva
169} 169}
170 170
171EOLIAN static void 171EOLIAN static void
172_elm_mapbuf_efl_canvas_group_group_resize(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord w, Evas_Coord h) 172_elm_mapbuf_efl_gfx_size_set(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord w, Evas_Coord h)
173{ 173{
174 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 174 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
175 return;
176
177 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
175 178
176 if (sd->content) evas_object_resize(sd->content, w, h); 179 if (sd->content) evas_object_resize(sd->content, w, h);
177 _mapbuf_auto_eval(obj, sd); 180 _mapbuf_auto_eval(obj, sd);
diff --git a/src/lib/elementary/elm_mapbuf.eo b/src/lib/elementary/elm_mapbuf.eo
index 24445109a7..62a47404d9 100644
--- a/src/lib/elementary/elm_mapbuf.eo
+++ b/src/lib/elementary/elm_mapbuf.eo
@@ -131,9 +131,9 @@ class Elm.Mapbuf (Elm.Widget, Efl.Container, Efl.Part)
131 Efl.Object.constructor; 131 Efl.Object.constructor;
132 Efl.Gfx.visible.set; 132 Efl.Gfx.visible.set;
133 Efl.Gfx.position.set; 133 Efl.Gfx.position.set;
134 Efl.Gfx.size.set;
134 Efl.Canvas.Group.group_add; 135 Efl.Canvas.Group.group_add;
135 Efl.Canvas.Group.group_del; 136 Efl.Canvas.Group.group_del;
136 Efl.Canvas.Group.group_resize;
137 Elm.Widget.theme_apply; 137 Elm.Widget.theme_apply;
138 Elm.Widget.sub_object_del; 138 Elm.Widget.sub_object_del;
139 Efl.Container.content.get; 139 Efl.Container.content.get;
diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c
index 80ad35ef05..26aec380fb 100644
--- a/src/lib/elementary/elm_notify.c
+++ b/src/lib/elementary/elm_notify.c
@@ -226,15 +226,18 @@ _block_area_clicked_cb(void *data,
226} 226}
227 227
228EOLIAN static void 228EOLIAN static void
229_elm_notify_efl_canvas_group_group_resize(Eo *obj, Elm_Notify_Data *sd, Evas_Coord w, Evas_Coord h) 229_elm_notify_efl_gfx_size_set(Eo *obj, Elm_Notify_Data *sd, Evas_Coord w, Evas_Coord h)
230{ 230{
231 Evas_Coord x, y; 231 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
232 return;
232 233
233 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 234 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
234 235
235 if (!sd->parent && sd->content) 236 if (!sd->parent && sd->content)
236 { 237 {
237 evas_object_geometry_get(obj, &x, &y, NULL, NULL); 238 Evas_Coord x, y;
239
240 efl_gfx_position_get(obj, &x, &y);
238 _notify_move_to_orientation(obj, x, y, w, h); 241 _notify_move_to_orientation(obj, x, y, w, h);
239 } 242 }
240} 243}
diff --git a/src/lib/elementary/elm_notify.eo b/src/lib/elementary/elm_notify.eo
index 93148843d7..2deaa59484 100644
--- a/src/lib/elementary/elm_notify.eo
+++ b/src/lib/elementary/elm_notify.eo
@@ -81,9 +81,9 @@ class Elm.Notify (Elm.Widget, Efl.Container, Efl.Part)
81 Efl.Object.constructor; 81 Efl.Object.constructor;
82 Efl.Gfx.visible.set; 82 Efl.Gfx.visible.set;
83 Efl.Gfx.position.set; 83 Efl.Gfx.position.set;
84 Efl.Gfx.size.set;
84 Efl.Canvas.Group.group_add; 85 Efl.Canvas.Group.group_add;
85 Efl.Canvas.Group.group_del; 86 Efl.Canvas.Group.group_del;
86 Efl.Canvas.Group.group_resize;
87 Elm.Widget.focus_direction; 87 Elm.Widget.focus_direction;
88 Elm.Widget.widget_parent; 88 Elm.Widget.widget_parent;
89 Elm.Widget.theme_apply; 89 Elm.Widget.theme_apply;
diff --git a/src/lib/elementary/elm_pan.eo b/src/lib/elementary/elm_pan.eo
index d89fedf2f6..8628914718 100644
--- a/src/lib/elementary/elm_pan.eo
+++ b/src/lib/elementary/elm_pan.eo
@@ -45,9 +45,9 @@ class Elm.Pan (Efl.Canvas.Group.Clipped)
45 class.constructor; 45 class.constructor;
46 Efl.Gfx.visible.set; 46 Efl.Gfx.visible.set;
47 Efl.Gfx.position.set; 47 Efl.Gfx.position.set;
48 Efl.Gfx.size.set;
48 Efl.Canvas.Group.group_add; 49 Efl.Canvas.Group.group_add;
49 Efl.Canvas.Group.group_del; 50 Efl.Canvas.Group.group_del;
50 Efl.Canvas.Group.group_resize;
51 } 51 }
52 events { 52 events {
53 changed; 53 changed;
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 8eb079ceea..a8979aecaf 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -1108,9 +1108,12 @@ _elm_panel_efl_gfx_position_set(Eo *obj, Elm_Panel_Data *sd, Evas_Coord x, Evas_
1108} 1108}
1109 1109
1110EOLIAN static void 1110EOLIAN static void
1111_elm_panel_efl_canvas_group_group_resize(Eo *obj, Elm_Panel_Data *sd, Evas_Coord w, Evas_Coord h) 1111_elm_panel_efl_gfx_size_set(Eo *obj, Elm_Panel_Data *sd, Evas_Coord w, Evas_Coord h)
1112{ 1112{
1113 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 1113 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
1114 return;
1115
1116 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
1114 1117
1115 if (!sd->scrollable) return; 1118 if (!sd->scrollable) return;
1116 1119
diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo
index 41fab5d43a..3ec22852b7 100644
--- a/src/lib/elementary/elm_panel.eo
+++ b/src/lib/elementary/elm_panel.eo
@@ -70,10 +70,10 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable,
70 class.constructor; 70 class.constructor;
71 Efl.Object.constructor; 71 Efl.Object.constructor;
72 Efl.Gfx.position.set; 72 Efl.Gfx.position.set;
73 Efl.Gfx.size.set;
73 Efl.Canvas.Group.group_add; 74 Efl.Canvas.Group.group_add;
74 Efl.Canvas.Group.group_member_add; 75 Efl.Canvas.Group.group_member_add;
75 Efl.Canvas.Group.group_del; 76 Efl.Canvas.Group.group_del;
76 Efl.Canvas.Group.group_resize;
77 Elm.Widget.theme_apply; 77 Elm.Widget.theme_apply;
78 Elm.Widget.focus_next_manager_is; 78 Elm.Widget.focus_next_manager_is;
79 Elm.Widget.focus_next; 79 Elm.Widget.focus_next;
diff --git a/src/lib/elementary/elm_photocam.c b/src/lib/elementary/elm_photocam.c
index e5e987150d..840f0833b0 100644
--- a/src/lib/elementary/elm_photocam.c
+++ b/src/lib/elementary/elm_photocam.c
@@ -157,12 +157,12 @@ _elm_photocam_pan_efl_gfx_position_set(Eo *obj, Elm_Photocam_Pan_Data *psd, Evas
157} 157}
158 158
159EOLIAN static void 159EOLIAN static void
160_elm_photocam_pan_efl_canvas_group_group_resize(Eo *obj, Elm_Photocam_Pan_Data *psd, Evas_Coord w, Evas_Coord h) 160_elm_photocam_pan_efl_gfx_size_set(Eo *obj, Elm_Photocam_Pan_Data *psd, Evas_Coord w, Evas_Coord h)
161{ 161{
162 Evas_Coord ow, oh; 162 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
163 return;
163 164
164 evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); 165 efl_gfx_size_set(efl_super(obj, MY_PAN_CLASS), w, h);
165 if ((ow == w) && (oh == h)) return;
166 166
167 psd->wsd->resized = EINA_TRUE; 167 psd->wsd->resized = EINA_TRUE;
168 ecore_job_del(psd->wsd->calc_job); 168 ecore_job_del(psd->wsd->calc_job);
@@ -1491,9 +1491,12 @@ _elm_photocam_efl_gfx_position_set(Eo *obj, Elm_Photocam_Data *sd, Evas_Coord x,
1491} 1491}
1492 1492
1493EOLIAN static void 1493EOLIAN static void
1494_elm_photocam_efl_canvas_group_group_resize(Eo *obj, Elm_Photocam_Data *sd, Evas_Coord w, Evas_Coord h) 1494_elm_photocam_efl_gfx_size_set(Eo *obj, Elm_Photocam_Data *sd, Evas_Coord w, Evas_Coord h)
1495{ 1495{
1496 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 1496 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
1497 return;
1498
1499 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
1497 1500
1498 evas_object_resize(sd->hit_rect, w, h); 1501 evas_object_resize(sd->hit_rect, w, h);
1499} 1502}
diff --git a/src/lib/elementary/elm_photocam.eo b/src/lib/elementary/elm_photocam.eo
index c04bc2ab58..ebf0e13e56 100644
--- a/src/lib/elementary/elm_photocam.eo
+++ b/src/lib/elementary/elm_photocam.eo
@@ -190,10 +190,10 @@ class Elm.Photocam (Elm.Widget, Elm.Interface_Scrollable,
190 class.constructor; 190 class.constructor;
191 Efl.Object.constructor; 191 Efl.Object.constructor;
192 Efl.Gfx.position.set; 192 Efl.Gfx.position.set;
193 Efl.Gfx.size.set;
193 Efl.Canvas.Group.group_add; 194 Efl.Canvas.Group.group_add;
194 Efl.Canvas.Group.group_del; 195 Efl.Canvas.Group.group_del;
195 Efl.Canvas.Group.group_member_add; 196 Efl.Canvas.Group.group_member_add;
196 Efl.Canvas.Group.group_resize;
197 Elm.Widget.theme_apply; 197 Elm.Widget.theme_apply;
198 Elm.Widget.on_focus; 198 Elm.Widget.on_focus;
199 Elm.Widget.event; 199 Elm.Widget.event;
diff --git a/src/lib/elementary/elm_photocam_pan.eo b/src/lib/elementary/elm_photocam_pan.eo
index c3fcda1de7..57d1d455f3 100644
--- a/src/lib/elementary/elm_photocam_pan.eo
+++ b/src/lib/elementary/elm_photocam_pan.eo
@@ -7,8 +7,8 @@ class Elm.Photocam.Pan (Elm.Pan)
7 class.constructor; 7 class.constructor;
8 Efl.Object.destructor; 8 Efl.Object.destructor;
9 Efl.Gfx.position.set; 9 Efl.Gfx.position.set;
10 Efl.Gfx.size.set;
10 Efl.Canvas.Group.group_calculate; 11 Efl.Canvas.Group.group_calculate;
11 Efl.Canvas.Group.group_resize;
12 Elm.Pan.content_size.get; 12 Elm.Pan.content_size.get;
13 Elm.Pan.pos; 13 Elm.Pan.pos;
14 Elm.Pan.pos_min.get; 14 Elm.Pan.pos_min.get;
diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c
index 371d893c6a..6e64b28262 100644
--- a/src/lib/elementary/elm_scroller.c
+++ b/src/lib/elementary/elm_scroller.c
@@ -930,9 +930,12 @@ _elm_scroller_efl_gfx_position_set(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord x,
930} 930}
931 931
932EOLIAN static void 932EOLIAN static void
933_elm_scroller_efl_canvas_group_group_resize(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord w, Evas_Coord h) 933_elm_scroller_efl_gfx_size_set(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord w, Evas_Coord h)
934{ 934{
935 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 935 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
936 return;
937
938 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
936 939
937 evas_object_resize(sd->hit_rect, w, h); 940 evas_object_resize(sd->hit_rect, w, h);
938} 941}
diff --git a/src/lib/elementary/elm_scroller.eo b/src/lib/elementary/elm_scroller.eo
index b8d2ee776c..8b9fe469f2 100644
--- a/src/lib/elementary/elm_scroller.eo
+++ b/src/lib/elementary/elm_scroller.eo
@@ -61,9 +61,9 @@ class Elm.Scroller (Elm.Layout, Elm.Interface_Scrollable,
61 class.constructor; 61 class.constructor;
62 Efl.Object.constructor; 62 Efl.Object.constructor;
63 Efl.Gfx.position.set; 63 Efl.Gfx.position.set;
64 Efl.Gfx.size.set;
64 Efl.Canvas.Group.group_add; 65 Efl.Canvas.Group.group_add;
65 Efl.Canvas.Group.group_member_add; 66 Efl.Canvas.Group.group_member_add;
66 Efl.Canvas.Group.group_resize;
67 Elm.Widget.theme_apply; 67 Elm.Widget.theme_apply;
68 Elm.Widget.activate; 68 Elm.Widget.activate;
69 Elm.Widget.focus_next_manager_is; 69 Elm.Widget.focus_next_manager_is;
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index 0b96c5c207..cbeaddc602 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -2946,9 +2946,12 @@ _elm_toolbar_efl_gfx_position_set(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord x, E
2946} 2946}
2947 2947
2948EOLIAN static void 2948EOLIAN static void
2949_elm_toolbar_efl_canvas_group_group_resize(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord w, Evas_Coord h) 2949_elm_toolbar_efl_gfx_size_set(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord w, Evas_Coord h)
2950{ 2950{
2951 efl_canvas_group_resize(efl_super(obj, MY_CLASS), w, h); 2951 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
2952 return;
2953
2954 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
2952 2955
2953 evas_object_resize(sd->hit_rect, w, h); 2956 evas_object_resize(sd->hit_rect, w, h);
2954} 2957}
diff --git a/src/lib/elementary/elm_toolbar.eo b/src/lib/elementary/elm_toolbar.eo
index 1c961fcc44..783899bd77 100644
--- a/src/lib/elementary/elm_toolbar.eo
+++ b/src/lib/elementary/elm_toolbar.eo
@@ -346,11 +346,11 @@ class Elm.Toolbar (Elm.Widget, Elm.Interface_Scrollable, Efl.Orientation,
346 class.constructor; 346 class.constructor;
347 Efl.Object.constructor; 347 Efl.Object.constructor;
348 Efl.Gfx.position.set; 348 Efl.Gfx.position.set;
349 Efl.Gfx.size.set;
349 Efl.Canvas.Group.group_calculate; 350 Efl.Canvas.Group.group_calculate;
350 Efl.Canvas.Group.group_add; 351 Efl.Canvas.Group.group_add;
351 Efl.Canvas.Group.group_del; 352 Efl.Canvas.Group.group_del;
352 Efl.Canvas.Group.group_member_add; 353 Efl.Canvas.Group.group_member_add;
353 Efl.Canvas.Group.group_resize;
354 Elm.Widget.focus_next_manager_is; 354 Elm.Widget.focus_next_manager_is;
355 Elm.Widget.access; 355 Elm.Widget.access;
356 Elm.Widget.focus_next; 356 Elm.Widget.focus_next;
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 292fc3e933..172d014540 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -506,21 +506,24 @@ _elm_widget_efl_gfx_position_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd,
506 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y)) 506 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, x, y))
507 return; 507 return;
508 508
509 efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y);
510
511 sd->x = x; 509 sd->x = x;
512 sd->y = y; 510 sd->y = y;
513
514 _smart_reconfigure(sd); 511 _smart_reconfigure(sd);
512
513 efl_gfx_position_set(efl_super(obj, MY_CLASS), x, y);
515} 514}
516 515
517EOLIAN static void 516EOLIAN static void
518_elm_widget_efl_canvas_group_group_resize(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Evas_Coord w, Evas_Coord h) 517_elm_widget_efl_gfx_size_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Evas_Coord w, Evas_Coord h)
519{ 518{
519 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
520 return;
521
520 sd->w = w; 522 sd->w = w;
521 sd->h = h; 523 sd->h = h;
522
523 _smart_reconfigure(sd); 524 _smart_reconfigure(sd);
525
526 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
524} 527}
525 528
526EOLIAN static void 529EOLIAN static void
diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo
index bab0e4fafe..fc296d44f2 100644
--- a/src/lib/elementary/elm_widget.eo
+++ b/src/lib/elementary/elm_widget.eo
@@ -850,6 +850,7 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, Elm.Inter
850 Efl.Gfx.color.set; 850 Efl.Gfx.color.set;
851 Efl.Gfx.visible.set; 851 Efl.Gfx.visible.set;
852 Efl.Gfx.position.set; 852 Efl.Gfx.position.set;
853 Efl.Gfx.size.set;
853 Efl.Canvas.Object.clip.set; 854 Efl.Canvas.Object.clip.set;
854 Efl.Canvas.Object.no_render.set; 855 Efl.Canvas.Object.no_render.set;
855 Efl.Canvas.Group.group_calculate; 856 Efl.Canvas.Group.group_calculate;
@@ -857,7 +858,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, Elm.Inter
857 Efl.Canvas.Group.group_add; 858 Efl.Canvas.Group.group_add;
858 Efl.Canvas.Group.group_del; 859 Efl.Canvas.Group.group_del;
859 Efl.Canvas.Group.group_member_add; 860 Efl.Canvas.Group.group_member_add;
860 Efl.Canvas.Group.group_resize;
861 Elm.Interface.Atspi_Accessible.name.get; 861 Elm.Interface.Atspi_Accessible.name.get;
862 Elm.Interface.Atspi_Accessible.state_set.get; 862 Elm.Interface.Atspi_Accessible.state_set.get;
863 Elm.Interface.Atspi_Accessible.children.get; 863 Elm.Interface.Atspi_Accessible.children.get;
diff --git a/src/lib/emotion/efl_canvas_video.eo b/src/lib/emotion/efl_canvas_video.eo
index fb9b96d4ae..9715347def 100644
--- a/src/lib/emotion/efl_canvas_video.eo
+++ b/src/lib/emotion/efl_canvas_video.eo
@@ -54,10 +54,10 @@ class Efl.Canvas.Video (Efl.Canvas.Group, Efl.File, Efl.Player, Efl.Image, Efl.I
54 Efl.Gfx.color.set; 54 Efl.Gfx.color.set;
55 Efl.Gfx.visible.set; 55 Efl.Gfx.visible.set;
56 Efl.Gfx.position.set; 56 Efl.Gfx.position.set;
57 Efl.Gfx.size.set;
57 Efl.Canvas.Object.clip.set; 58 Efl.Canvas.Object.clip.set;
58 Efl.Canvas.Group.group_add; 59 Efl.Canvas.Group.group_add;
59 Efl.Canvas.Group.group_del; 60 Efl.Canvas.Group.group_del;
60 Efl.Canvas.Group.group_resize;
61 Efl.File.file.set; 61 Efl.File.file.set;
62 Efl.File.file.get; 62 Efl.File.file.get;
63 Efl.Player.play.set; 63 Efl.Player.play.set;
diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c
index 266473905c..9b0338d1d3 100644
--- a/src/lib/emotion/emotion_smart.c
+++ b/src/lib/emotion/emotion_smart.c
@@ -1944,8 +1944,13 @@ _efl_canvas_video_efl_gfx_position_set(Evas_Object *obj, Efl_Canvas_Video_Data *
1944} 1944}
1945 1945
1946EOLIAN static void 1946EOLIAN static void
1947_efl_canvas_video_efl_canvas_group_group_resize(Evas_Object *obj, Efl_Canvas_Video_Data *sd, Evas_Coord w, Evas_Coord h) 1947_efl_canvas_video_efl_gfx_size_set(Evas_Object *obj, Efl_Canvas_Video_Data *sd, Evas_Coord w, Evas_Coord h)
1948{ 1948{
1949 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
1950 return;
1951
1952 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
1953
1949 _efl_canvas_video_aspect_border_apply(obj, sd, w, h); 1954 _efl_canvas_video_aspect_border_apply(obj, sd, w, h);
1950 evas_object_resize(sd->bg, w, h); 1955 evas_object_resize(sd->bg, w, h);
1951} 1956}
diff --git a/src/lib/evas/canvas/efl_canvas_group.eo b/src/lib/evas/canvas/efl_canvas_group.eo
index 1649fa145d..a55d83fd74 100644
--- a/src/lib/evas/canvas/efl_canvas_group.eo
+++ b/src/lib/evas/canvas/efl_canvas_group.eo
@@ -92,14 +92,6 @@ class Efl.Canvas.Group (Efl.Canvas.Object)
92 } 92 }
93 legacy: null; 93 legacy: null;
94 } 94 }
95 group_resize {
96 [[No description supplied by the EAPI.]]
97 legacy: null;
98 params {
99 @in w: Evas.Coord;
100 @in h: Evas.Coord;
101 }
102 }
103 group_member_del { 95 group_member_del {
104 [[Removes a member object from a given smart object. 96 [[Removes a member object from a given smart object.
105 97
diff --git a/src/lib/evas/canvas/evas_box.eo b/src/lib/evas/canvas/evas_box.eo
index 26b04c39d7..66fdb40cc8 100644
--- a/src/lib/evas/canvas/evas_box.eo
+++ b/src/lib/evas/canvas/evas_box.eo
@@ -657,10 +657,10 @@ class Evas.Box (Efl.Canvas.Group.Clipped)
657 implements { 657 implements {
658 class.constructor; 658 class.constructor;
659 Efl.Object.constructor; 659 Efl.Object.constructor;
660 Efl.Gfx.size.set;
660 Efl.Canvas.Group.group_calculate; 661 Efl.Canvas.Group.group_calculate;
661 Efl.Canvas.Group.group_add; 662 Efl.Canvas.Group.group_add;
662 Efl.Canvas.Group.group_del; 663 Efl.Canvas.Group.group_del;
663 Efl.Canvas.Group.group_resize;
664 } 664 }
665 events { 665 events {
666 child,added; 666 child,added;
diff --git a/src/lib/evas/canvas/evas_object_box.c b/src/lib/evas/canvas/evas_object_box.c
index 051c5e5cb1..f2b2f9b4e9 100644
--- a/src/lib/evas/canvas/evas_object_box.c
+++ b/src/lib/evas/canvas/evas_object_box.c
@@ -424,11 +424,12 @@ _evas_box_efl_canvas_group_group_del(Eo *o, Evas_Object_Box_Data *priv)
424} 424}
425 425
426EOLIAN static void 426EOLIAN static void
427_evas_box_efl_canvas_group_group_resize(Eo *o, Evas_Object_Box_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h) 427_evas_box_efl_gfx_size_set(Eo *o, Evas_Object_Box_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h)
428{ 428{
429 Evas_Coord ow, oh; 429 if (_evas_object_intercept_call(o, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
430 evas_object_geometry_get(o, NULL, NULL, &ow, &oh); 430 return;
431 if ((ow == w) && (oh == h)) return; 431
432 efl_gfx_size_set(efl_super(o, MY_CLASS), w, h);
432 evas_object_smart_changed(o); 433 evas_object_smart_changed(o);
433} 434}
434 435
diff --git a/src/lib/evas/canvas/evas_object_intercept.c b/src/lib/evas/canvas/evas_object_intercept.c
index f653f02d9a..13b9a9697e 100644
--- a/src/lib/evas/canvas/evas_object_intercept.c
+++ b/src/lib/evas/canvas/evas_object_intercept.c
@@ -126,10 +126,15 @@ _evas_object_intercept_call(Evas_Object *eo_obj, Evas_Object_Intercept_Cb_Type c
126 break; 126 break;
127 127
128 case EVAS_OBJECT_INTERCEPT_CB_RESIZE: 128 case EVAS_OBJECT_INTERCEPT_CB_RESIZE:
129 if (!obj->interceptors) return 0;
130 va_start(args, internal); 129 va_start(args, internal);
131 i = va_arg(args, int); 130 i = va_arg(args, int);
132 j = va_arg(args, int); 131 j = va_arg(args, int);
132 if (!internal)
133 {
134 if (_efl_canvas_object_efl_gfx_size_set_block(eo_obj, obj, i, j))
135 goto end_block;
136 }
137 if (!obj->interceptors) goto end_noblock;
133 blocked = evas_object_intercept_call_resize(eo_obj, obj, i, j); 138 blocked = evas_object_intercept_call_resize(eo_obj, obj, i, j);
134 break; 139 break;
135 140
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 4a3c2d233c..20b7798339 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -865,6 +865,26 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
865 efl_gfx_size_set((Evas_Object *)obj, w, h); 865 efl_gfx_size_set((Evas_Object *)obj, w, h);
866} 866}
867 867
868Eina_Bool
869_efl_canvas_object_efl_gfx_size_set_block(Eo *eo_obj, Evas_Object_Protected_Data *obj,
870 Evas_Coord w, Evas_Coord h)
871{
872 if (obj->doing.in_resize > 0)
873 {
874 WRN("evas_object_resize() called on object %p (%s) when in the middle "
875 "of resizing the same object", eo_obj, efl_class_name_get(eo_obj));
876 return EINA_TRUE;
877 }
878
879 if (w < 0) w = 0;
880 if (h < 0) h = 0;
881
882 if ((obj->cur->geometry.w == w) && (obj->cur->geometry.h == h))
883 return EINA_TRUE;
884
885 return EINA_FALSE;
886}
887
868EOLIAN static void 888EOLIAN static void
869_efl_canvas_object_efl_gfx_size_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, 889_efl_canvas_object_efl_gfx_size_set(Eo *eo_obj, Evas_Object_Protected_Data *obj,
870 Evas_Coord w, Evas_Coord h) 890 Evas_Coord w, Evas_Coord h)
@@ -873,21 +893,11 @@ _efl_canvas_object_efl_gfx_size_set(Eo *eo_obj, Evas_Object_Protected_Data *obj,
873 Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE; 893 Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE;
874 Eina_Bool source_invisible = EINA_FALSE; 894 Eina_Bool source_invisible = EINA_FALSE;
875 895
876 if (obj->delete_me) return;
877 if (!obj->layer) return;
878 if (w < 0) w = 0; 896 if (w < 0) w = 0;
879 if (h < 0) h = 0; 897 if (h < 0) h = 0;
880 898
881 evas_object_async_block(obj); 899 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 1, w, h))
882 if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 1, w, h)) return; 900 return;
883
884 if (obj->doing.in_resize > 0)
885 {
886 WRN("evas_object_resize() called on object %p when in the middle of resizing the same object", obj);
887 return;
888 }
889
890 if ((obj->cur->geometry.w == w) && (obj->cur->geometry.h == h)) return;
891 901
892 if (!(obj->layer->evas->is_frozen)) 902 if (!(obj->layer->evas->is_frozen))
893 { 903 {
@@ -901,10 +911,8 @@ _efl_canvas_object_efl_gfx_size_set(Eo *eo_obj, Evas_Object_Protected_Data *obj,
901 } 911 }
902 obj->doing.in_resize++; 912 obj->doing.in_resize++;
903 913
904 if (obj->is_smart) 914 if (obj->is_smart && obj->smart.smart && obj->smart.smart->smart_class->resize)
905 { 915 obj->smart.smart->smart_class->resize(eo_obj, w, h);
906 efl_canvas_group_resize(eo_obj, w, h);
907 }
908 916
909 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) 917 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
910 { 918 {
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 359de50e7f..af9472d274 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -632,16 +632,6 @@ _efl_canvas_group_group_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUS
632} 632}
633 633
634EOLIAN static void 634EOLIAN static void
635_efl_canvas_group_group_resize(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_Coord w, Evas_Coord h)
636{
637 // If this function is reached, so we do nothing except trying to call
638 // the function of the legacy smart class.
639 Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
640 Evas_Smart *s = obj->smart.smart;
641 if (s && s->smart_class->resize) s->smart_class->resize(eo_obj, w, h);
642}
643
644EOLIAN static void
645_efl_canvas_group_efl_canvas_object_no_render_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Eina_Bool enable) 635_efl_canvas_group_efl_canvas_object_no_render_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Eina_Bool enable)
646{ 636{
647 Evas_Object_Protected_Data *obj2; 637 Evas_Object_Protected_Data *obj2;
diff --git a/src/lib/evas/canvas/evas_object_table.c b/src/lib/evas/canvas/evas_object_table.c
index d294ba5644..e8b1351dde 100644
--- a/src/lib/evas/canvas/evas_object_table.c
+++ b/src/lib/evas/canvas/evas_object_table.c
@@ -930,11 +930,12 @@ _evas_table_efl_canvas_group_group_del(Eo *obj, Evas_Table_Data *priv)
930} 930}
931 931
932EOLIAN static void 932EOLIAN static void
933_evas_table_efl_canvas_group_group_resize(Eo *obj, Evas_Table_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h) 933_evas_table_efl_gfx_size_set(Eo *obj, Evas_Table_Data *_pd EINA_UNUSED, Evas_Coord w, Evas_Coord h)
934{ 934{
935 Evas_Coord ow, oh; 935 if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, w, h))
936 evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); 936 return;
937 if ((ow == w) && (oh == h)) return; 937
938 efl_gfx_size_set(efl_super(obj, MY_CLASS), w, h);
938 evas_object_smart_changed(obj); 939 evas_object_smart_changed(obj);
939} 940}
940 941
diff --git a/src/lib/evas/canvas/evas_table.eo b/src/lib/evas/canvas/evas_table.eo
index 6fd473f7a1..7932ec7cb9 100644
--- a/src/lib/evas/canvas/evas_table.eo
+++ b/src/lib/evas/canvas/evas_table.eo
@@ -216,9 +216,9 @@ class Evas.Table (Efl.Canvas.Group.Clipped)
216 implements { 216 implements {
217 class.constructor; 217 class.constructor;
218 Efl.Object.constructor; 218 Efl.Object.constructor;
219 Efl.Gfx.size.set;
219 Efl.Canvas.Group.group_add; 220 Efl.Canvas.Group.group_add;
220 Efl.Canvas.Group.group_del; 221 Efl.Canvas.Group.group_del;
221 Efl.Canvas.Group.group_calculate; 222 Efl.Canvas.Group.group_calculate;
222 Efl.Canvas.Group.group_resize;
223 } 223 }
224} 224}
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 91602d96c8..775b05a7f1 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1654,6 +1654,7 @@ void _efl_canvas_object_clip_prev_reset(Evas_Object_Protected_Data *obj, Eina_Bo
1654 1654
1655Eina_Bool _efl_canvas_object_clip_set_block(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *eo_clip, Evas_Object_Protected_Data *clip); 1655Eina_Bool _efl_canvas_object_clip_set_block(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *eo_clip, Evas_Object_Protected_Data *clip);
1656Eina_Bool _efl_canvas_object_clip_unset_block(Eo *eo_obj, Evas_Object_Protected_Data *obj); 1656Eina_Bool _efl_canvas_object_clip_unset_block(Eo *eo_obj, Evas_Object_Protected_Data *obj);
1657Eina_Bool _efl_canvas_object_efl_gfx_size_set_block(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h);
1657 1658
1658void _canvas_event_default_flags_set(Eo *e, void *_pd, va_list *list); 1659void _canvas_event_default_flags_set(Eo *e, void *_pd, va_list *list);
1659void _canvas_event_default_flags_get(Eo *e, void *_pd, va_list *list); 1660void _canvas_event_default_flags_get(Eo *e, void *_pd, va_list *list);