summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2019-07-30 13:11:48 -0400
committerMike Blumenkrantz <zmike@samsung.com>2019-07-30 13:12:52 -0400
commit7e517e2a1196207bbfe76ce9ab12be3093d9afc5 (patch)
tree106c98b6ad2720f0504b7d254e4efdfcd4cec253
parent586f41f92772ab789364bcd788e7717f92ba86de (diff)
elm/efl_ui: remove elm_layout_sizing_eval implementations
Summary: historically there have been two methods of calculating sizes in elm: * elm_layout_sizing_eval * evas_object_smart_calculate (now efl_canvas_group_calculate) the former was used to set size hints on widgets, while the latter was used to perform internal size calcs for the widget. for things to work correctly, these functions had to be triggered in just the right order at just the right time. many hard-to-fix bugs related to widget sizing over the years have been the result of this split this patch removes elm_layout_sizing_eval implementations so that all widgets perform both internal size calcs and size hint setting all in the same function, ensuring that these are always in sync the result is that in the vast majority of cases, far fewer recalcs happen for widgets, and they are quicker to achieve their final size Depends on D9438 Reviewers: bu5hm4n Reviewed By: bu5hm4n Subscribers: bu5hm4n, cedric, #reviewers, #committers Tags: #efl_widgets Maniphest Tasks: T8059 Differential Revision: https://phab.enlightenment.org/D9439
-rw-r--r--src/lib/elementary/efl_ui_anchor_popup.c32
-rw-r--r--src/lib/elementary/efl_ui_box.c1
-rw-r--r--src/lib/elementary/efl_ui_button.c13
-rw-r--r--src/lib/elementary/efl_ui_calendar.c28
-rw-r--r--src/lib/elementary/efl_ui_check.c16
-rw-r--r--src/lib/elementary/efl_ui_clock.c21
-rw-r--r--src/lib/elementary/efl_ui_clock.eo1
-rw-r--r--src/lib/elementary/efl_ui_datepicker.c17
-rw-r--r--src/lib/elementary/efl_ui_frame.c11
-rw-r--r--src/lib/elementary/efl_ui_image_zoomable.c1
-rw-r--r--src/lib/elementary/efl_ui_internal_text_scroller.c6
-rw-r--r--src/lib/elementary/efl_ui_internal_text_scroller.eo1
-rw-r--r--src/lib/elementary/efl_ui_item.c39
-rw-r--r--src/lib/elementary/efl_ui_item.eo1
-rw-r--r--src/lib/elementary/efl_ui_layout.c8
-rw-r--r--src/lib/elementary/efl_ui_list_view.c1
-rw-r--r--src/lib/elementary/efl_ui_pan.c1
-rw-r--r--src/lib/elementary/efl_ui_panel.c15
-rw-r--r--src/lib/elementary/efl_ui_panel.eo1
-rw-r--r--src/lib/elementary/efl_ui_panes.c6
-rw-r--r--src/lib/elementary/efl_ui_panes.eo1
-rw-r--r--src/lib/elementary/efl_ui_popup.c72
-rw-r--r--src/lib/elementary/efl_ui_popup_private.h3
-rw-r--r--src/lib/elementary/efl_ui_progressbar.c15
-rw-r--r--src/lib/elementary/efl_ui_relative_layout.c1
-rw-r--r--src/lib/elementary/efl_ui_scroll_alert_popup.c16
-rw-r--r--src/lib/elementary/efl_ui_scroller.c6
-rw-r--r--src/lib/elementary/efl_ui_scroller.eo1
-rw-r--r--src/lib/elementary/efl_ui_slider.c14
-rw-r--r--src/lib/elementary/efl_ui_spin.c17
-rw-r--r--src/lib/elementary/efl_ui_table.c1
-rw-r--r--src/lib/elementary/efl_ui_tags.c18
-rw-r--r--src/lib/elementary/efl_ui_text.c7
-rw-r--r--src/lib/elementary/efl_ui_text.eo1
-rw-r--r--src/lib/elementary/efl_ui_text_alert_popup.c17
-rw-r--r--src/lib/elementary/efl_ui_textpath.c3
-rw-r--r--src/lib/elementary/efl_ui_timepicker.c17
-rw-r--r--src/lib/elementary/efl_ui_video.c4
-rw-r--r--src/lib/elementary/efl_ui_video.eo1
-rw-r--r--src/lib/elementary/efl_ui_widget.c1
-rw-r--r--src/lib/elementary/elc_ctxpopup.c4
-rw-r--r--src/lib/elementary/elc_fileselector_entry.c14
-rw-r--r--src/lib/elementary/elc_multibuttonentry.c16
-rw-r--r--src/lib/elementary/elc_naviframe.c4
-rw-r--r--src/lib/elementary/elc_player.c14
-rw-r--r--src/lib/elementary/elc_popup.c4
-rw-r--r--src/lib/elementary/elm_actionslider.c26
-rw-r--r--src/lib/elementary/elm_box.c1
-rw-r--r--src/lib/elementary/elm_bubble.c14
-rw-r--r--src/lib/elementary/elm_calendar.c26
-rw-r--r--src/lib/elementary/elm_colorselector.c4
-rw-r--r--src/lib/elementary/elm_dayselector.c14
-rw-r--r--src/lib/elementary/elm_entry.c4
-rw-r--r--src/lib/elementary/elm_flipselector.c5
-rw-r--r--src/lib/elementary/elm_gengrid.c5
-rw-r--r--src/lib/elementary/elm_genlist.c5
-rw-r--r--src/lib/elementary/elm_hover.c4
-rw-r--r--src/lib/elementary/elm_index.c12
-rw-r--r--src/lib/elementary/elm_inwin.c18
-rw-r--r--src/lib/elementary/elm_label.c4
-rw-r--r--src/lib/elementary/elm_list.c16
-rw-r--r--src/lib/elementary/elm_map.c1
-rw-r--r--src/lib/elementary/elm_panel.c14
-rw-r--r--src/lib/elementary/elm_priv.h4
-rw-r--r--src/lib/elementary/elm_scroller.c4
-rw-r--r--src/lib/elementary/elm_segment_control.c25
-rw-r--r--src/lib/elementary/elm_separator.c15
-rw-r--r--src/lib/elementary/elm_slider.c6
-rw-r--r--src/lib/elementary/elm_slideshow.c13
-rw-r--r--src/lib/elementary/elm_spinner.c15
-rw-r--r--src/lib/elementary/elm_table.c1
-rw-r--r--src/lib/elementary/elm_toolbar.c1
72 files changed, 169 insertions, 580 deletions
diff --git a/src/lib/elementary/efl_ui_anchor_popup.c b/src/lib/elementary/efl_ui_anchor_popup.c
index 5709956..47bf9a5 100644
--- a/src/lib/elementary/efl_ui_anchor_popup.c
+++ b/src/lib/elementary/efl_ui_anchor_popup.c
@@ -20,6 +20,8 @@ _anchor_calc(Eo *obj)
20 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, ppd); 20 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, ppd);
21 EFL_UI_ANCHOR_POPUP_DATA_GET(obj, pd); 21 EFL_UI_ANCHOR_POPUP_DATA_GET(obj, pd);
22 22
23 if (!pd->anchor) return;
24
23 Eina_Position2D pos = {0, 0}; 25 Eina_Position2D pos = {0, 0};
24 26
25 Eina_Rect a_geom = efl_gfx_entity_geometry_get(pd->anchor); 27 Eina_Rect a_geom = efl_gfx_entity_geometry_get(pd->anchor);
@@ -209,11 +211,7 @@ _anchor_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
209 efl_event_callback_del(ppd->win_parent, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _anchor_geom_cb, data); 211 efl_event_callback_del(ppd->win_parent, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _anchor_geom_cb, data);
210 212
211 pd->anchor = NULL; 213 pd->anchor = NULL;
212 //Add align calc only 214 _anchor_calc(data);
213 Eina_Bool needs_size_calc = ppd->needs_size_calc;
214 efl_canvas_group_change(data);
215 efl_canvas_group_calculate(data);
216 ppd->needs_size_calc = needs_size_calc;
217} 215}
218 216
219static void 217static void
@@ -246,11 +244,7 @@ _efl_ui_anchor_popup_anchor_set(Eo *obj, Efl_Ui_Anchor_Popup_Data *pd, Eo *ancho
246 efl_event_callback_add(anchor, EFL_EVENT_DEL, _anchor_del_cb, obj); 244 efl_event_callback_add(anchor, EFL_EVENT_DEL, _anchor_del_cb, obj);
247 } 245 }
248 246
249 //Add align/anchor calc only 247 _anchor_calc(obj);
250 Eina_Bool needs_size_calc = ppd->needs_size_calc;
251 efl_canvas_group_change(obj);
252 efl_canvas_group_calculate(obj);
253 ppd->needs_size_calc = needs_size_calc;
254} 248}
255 249
256EOLIAN static Efl_Object * 250EOLIAN static Efl_Object *
@@ -302,23 +296,13 @@ _efl_ui_anchor_popup_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Anchor_Popup_Da
302} 296}
303 297
304EOLIAN static void 298EOLIAN static void
305_efl_ui_anchor_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Anchor_Popup_Data *pd) 299_efl_ui_anchor_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Anchor_Popup_Data *pd EINA_UNUSED)
306{ 300{
307 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, ppd); 301 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
308 /* When efl_canvas_group_change() is called, just flag is set instead of size
309 * calculation.
310 * The actual size calculation is done here when the object is rendered to
311 * avoid duplicate size calculations. */
312 if (ppd->needs_group_calc)
313 {
314 if (pd->anchor)
315 ppd->needs_align_calc = EINA_FALSE;
316 302
317 efl_canvas_group_calculate(efl_super(obj, MY_CLASS)); 303 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
318 304
319 if (pd->anchor) 305 _anchor_calc(obj);
320 _anchor_calc(obj);
321 }
322} 306}
323 307
324EOLIAN static Eo * 308EOLIAN static Eo *
diff --git a/src/lib/elementary/efl_ui_box.c b/src/lib/elementary/efl_ui_box.c
index 9db283b..58b77f1 100644
--- a/src/lib/elementary/efl_ui_box.c
+++ b/src/lib/elementary/efl_ui_box.c
@@ -131,6 +131,7 @@ _efl_ui_box_efl_pack_layout_layout_update(Eo *obj, Efl_Ui_Box_Data *pd)
131EOLIAN static void 131EOLIAN static void
132_efl_ui_box_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Box_Data *_pd EINA_UNUSED) 132_efl_ui_box_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Box_Data *_pd EINA_UNUSED)
133{ 133{
134 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
134 efl_pack_layout_update(obj); 135 efl_pack_layout_update(obj);
135} 136}
136 137
diff --git a/src/lib/elementary/efl_ui_button.c b/src/lib/elementary/efl_ui_button.c
index b818ded..8292d29 100644
--- a/src/lib/elementary/efl_ui_button.c
+++ b/src/lib/elementary/efl_ui_button.c
@@ -84,18 +84,6 @@ _activate(Evas_Object *obj)
84 } 84 }
85} 85}
86 86
87EOLIAN static void
88_efl_ui_button_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Button_Data *_pd EINA_UNUSED)
89{
90 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
91 Evas_Coord minw = -1, minh = -1;
92
93 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
94 edje_object_size_min_restricted_calc
95 (wd->resize_obj, &minw, &minh, minw, minh);
96 evas_object_size_hint_min_set(obj, minw, minh);
97}
98
99EOLIAN static Eina_Bool 87EOLIAN static Eina_Bool
100_efl_ui_button_efl_ui_widget_on_access_activate(Eo *obj, Efl_Ui_Button_Data *_pd EINA_UNUSED, Efl_Ui_Activate act) 88_efl_ui_button_efl_ui_widget_on_access_activate(Eo *obj, Efl_Ui_Button_Data *_pd EINA_UNUSED, Efl_Ui_Activate act)
101{ 89{
@@ -390,7 +378,6 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
390 378
391#define EFL_UI_BUTTON_EXTRA_OPS \ 379#define EFL_UI_BUTTON_EXTRA_OPS \
392 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \ 380 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
393 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_button), \
394 EFL_CANVAS_GROUP_ADD_OPS(efl_ui_button) 381 EFL_CANVAS_GROUP_ADD_OPS(efl_ui_button)
395 382
396#include "efl_ui_button.eo.c" 383#include "efl_ui_button.eo.c"
diff --git a/src/lib/elementary/efl_ui_calendar.c b/src/lib/elementary/efl_ui_calendar.c
index d905324..8c21646 100644
--- a/src/lib/elementary/efl_ui_calendar.c
+++ b/src/lib/elementary/efl_ui_calendar.c
@@ -70,22 +70,6 @@ static int _days_in_month[2][12] =
70 70
71static Eina_Bool _efl_ui_calendar_smart_focus_next_enable = EINA_FALSE; 71static Eina_Bool _efl_ui_calendar_smart_focus_next_enable = EINA_FALSE;
72 72
73EOLIAN static void
74_efl_ui_calendar_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Calendar_Data *_pd EINA_UNUSED)
75{
76 Evas_Coord minw = -1, minh = -1;
77 EFL_UI_CALENDAR_DATA_GET(obj, sd);
78 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
79
80 if (sd->filling) return;
81 // 7x8 (1 month+year, days, 6 dates.)
82 elm_coords_finger_size_adjust(7, &minw, 8, &minh);
83 edje_object_size_min_restricted_calc
84 (wd->resize_obj, &minw, &minh, minw, minh);
85 evas_object_size_hint_min_set(obj, minw, minh);
86 evas_object_size_hint_max_set(obj, -1, -1);
87}
88
89// Get the max day number for each month 73// Get the max day number for each month
90static inline int 74static inline int
91_maxdays_get(struct tm *date, int month_offset) 75_maxdays_get(struct tm *date, int month_offset)
@@ -807,12 +791,11 @@ _efl_ui_calendar_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Calendar_Da
807EOLIAN static void 791EOLIAN static void
808_efl_ui_calendar_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Calendar_Data *_pd EINA_UNUSED) 792_efl_ui_calendar_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Calendar_Data *_pd EINA_UNUSED)
809{ 793{
810 elm_layout_freeze(obj); 794 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
811
812 _set_headers(obj); 795 _set_headers(obj);
813 _populate(obj); 796 _populate(obj);
814 797
815 elm_layout_thaw(obj); 798 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
816} 799}
817 800
818EOLIAN static void 801EOLIAN static void
@@ -944,6 +927,8 @@ _efl_ui_calendar_efl_object_constructor(Eo *obj, Efl_Ui_Calendar_Data *sd)
944 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_DATE_EDITOR); 927 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_DATE_EDITOR);
945 928
946 obj = _efl_ui_calendar_constructor_internal(obj, sd); 929 obj = _efl_ui_calendar_constructor_internal(obj, sd);
930 // 7x8 (1 month+year, days, 6 dates.)
931 efl_ui_layout_finger_size_multiplier_set(obj, 7, 8);
947 932
948 return obj; 933 return obj;
949} 934}
@@ -1168,11 +1153,6 @@ _efl_ui_calendar_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNU
1168 1153
1169ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_calendar, Efl_Ui_Calendar_Data) 1154ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_calendar, Efl_Ui_Calendar_Data)
1170 1155
1171/* Internal EO APIs and hidden overrides */
1172
1173#define EFL_UI_CALENDAR_EXTRA_OPS \
1174 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_calendar)
1175
1176#include "efl_ui_calendar.eo.c" 1156#include "efl_ui_calendar.eo.c"
1177 1157
1178typedef struct { 1158typedef struct {
diff --git a/src/lib/elementary/efl_ui_check.c b/src/lib/elementary/efl_ui_check.c
index 4d6ab65..3492c36 100644
--- a/src/lib/elementary/efl_ui_check.c
+++ b/src/lib/elementary/efl_ui_check.c
@@ -129,19 +129,6 @@ _efl_ui_check_efl_ui_widget_on_access_activate(Eo *obj EINA_UNUSED, Efl_Ui_Check
129 return EINA_TRUE; 129 return EINA_TRUE;
130} 130}
131 131
132EOLIAN static void
133_efl_ui_check_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Check_Data *_pd EINA_UNUSED)
134{
135 Evas_Coord minw = -1, minh = -1;
136 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
137
138 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
139 edje_object_size_min_restricted_calc
140 (wd->resize_obj, &minw, &minh, minw, minh);
141 evas_object_size_hint_min_set(obj, minw, minh);
142 evas_object_size_hint_max_set(obj, -1, -1);
143}
144
145static Eina_Bool 132static Eina_Bool
146_key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED) 133_key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
147{ 134{
@@ -407,8 +394,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
407 394
408#define EFL_UI_CHECK_EXTRA_OPS \ 395#define EFL_UI_CHECK_EXTRA_OPS \
409 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \ 396 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
410 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \ 397 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX)
411 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_check)
412 398
413 399
414#include "efl_ui_check.eo.c" 400#include "efl_ui_check.eo.c"
diff --git a/src/lib/elementary/efl_ui_clock.c b/src/lib/elementary/efl_ui_clock.c
index efc6222..02dd9b8 100644
--- a/src/lib/elementary/efl_ui_clock.c
+++ b/src/lib/elementary/efl_ui_clock.c
@@ -405,6 +405,7 @@ _reload_format(Evas_Object *obj)
405 if (field->fmt_exist && field->visible) 405 if (field->fmt_exist && field->visible)
406 sd->enabled_field_count++; 406 sd->enabled_field_count++;
407 } 407 }
408 efl_ui_layout_finger_size_multiplier_set(obj, sd->enabled_field_count, 1);
408 409
409 // assign locations to disabled fields for uniform usage 410 // assign locations to disabled fields for uniform usage
410 for (idx = 0; idx < EFL_UI_CLOCK_TYPE_COUNT; idx++) 411 for (idx = 0; idx < EFL_UI_CLOCK_TYPE_COUNT; idx++)
@@ -501,21 +502,11 @@ _efl_ui_clock_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Clock_Data *sd
501} 502}
502 503
503EOLIAN static void 504EOLIAN static void
504_efl_ui_clock_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Clock_Data *sd) 505_efl_ui_clock_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Clock_Data *sd)
505{ 506{
506 Evas_Coord minw = -1, minh = -1; 507 /* FIXME: this seems dumb */
507 508 if (!sd->freeze_sizing)
508 if (sd->freeze_sizing) return; 509 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
509
510 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
511
512 if (sd->enabled_field_count)
513 elm_coords_finger_size_adjust(sd->enabled_field_count, &minw, 1, &minh);
514
515 edje_object_size_min_restricted_calc
516 (wd->resize_obj, &minw, &minh, minw, minh);
517 evas_object_size_hint_min_set(obj, minw, minh);
518 evas_object_size_hint_max_set(obj, -1, -1);
519} 510}
520 511
521EOLIAN static Eina_Error 512EOLIAN static Eina_Error
@@ -1041,6 +1032,7 @@ _efl_ui_clock_field_visible_set(Eo *obj, Efl_Ui_Clock_Data *sd, Efl_Ui_Clock_Typ
1041 evas_object_hide(elm_layout_content_unset(obj, buf)); 1032 evas_object_hide(elm_layout_content_unset(obj, buf));
1042 } 1033 }
1043 sd->freeze_sizing = EINA_FALSE; 1034 sd->freeze_sizing = EINA_FALSE;
1035 efl_ui_layout_finger_size_multiplier_set(obj, sd->enabled_field_count, 1);
1044 1036
1045 efl_canvas_group_change(obj); 1037 efl_canvas_group_change(obj);
1046 1038
@@ -1165,7 +1157,6 @@ _efl_ui_clock_time_max_set(Eo *obj, Efl_Ui_Clock_Data *sd, Efl_Time maxtime)
1165/* Internal EO APIs and hidden overrides */ 1157/* Internal EO APIs and hidden overrides */
1166 1158
1167#define EFL_UI_CLOCK_EXTRA_OPS \ 1159#define EFL_UI_CLOCK_EXTRA_OPS \
1168 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_clock), \
1169 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_clock) 1160 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_clock)
1170 1161
1171#include "efl_ui_clock.eo.c" 1162#include "efl_ui_clock.eo.c"
diff --git a/src/lib/elementary/efl_ui_clock.eo b/src/lib/elementary/efl_ui_clock.eo
index abc7b5e..715c494 100644
--- a/src/lib/elementary/efl_ui_clock.eo
+++ b/src/lib/elementary/efl_ui_clock.eo
@@ -223,6 +223,7 @@ class @beta Efl.Ui.Clock extends Efl.Ui.Layout_Base
223 } 223 }
224 implements { 224 implements {
225 Efl.Object.constructor; 225 Efl.Object.constructor;
226 Efl.Canvas.Group.group_calculate;
226 Efl.Ui.Widget.theme_apply; 227 Efl.Ui.Widget.theme_apply;
227 Efl.Ui.Focus.Object.on_focus_update; 228 Efl.Ui.Focus.Object.on_focus_update;
228 Efl.Ui.L10n.translation_update; 229 Efl.Ui.L10n.translation_update;
diff --git a/src/lib/elementary/efl_ui_datepicker.c b/src/lib/elementary/efl_ui_datepicker.c
index 666791b..a8cf48d 100644
--- a/src/lib/elementary/efl_ui_datepicker.c
+++ b/src/lib/elementary/efl_ui_datepicker.c
@@ -222,20 +222,6 @@ _fields_init(Eo *obj)
222 } 222 }
223} 223}
224 224
225EOLIAN static void
226_efl_ui_datepicker_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Datepicker_Data *_pd EINA_UNUSED)
227{
228 Evas_Coord minw = -1, minh = -1;
229 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
230
231 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
232 edje_object_size_min_restricted_calc
233 (wd->resize_obj, &minw, &minh, minw, minh);
234 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
235 evas_object_size_hint_min_set(obj, minw, minh);
236 evas_object_size_hint_max_set(obj, -1, -1);
237}
238
239EOLIAN static Eo * 225EOLIAN static Eo *
240_efl_ui_datepicker_efl_object_constructor(Eo *obj, Efl_Ui_Datepicker_Data *pd) 226_efl_ui_datepicker_efl_object_constructor(Eo *obj, Efl_Ui_Datepicker_Data *pd)
241{ 227{
@@ -342,7 +328,4 @@ _efl_ui_datepicker_date_get(const Eo *obj EINA_UNUSED, Efl_Ui_Datepicker_Data *p
342 *day = pd->cur_date[DATEPICKER_DAY]; 328 *day = pd->cur_date[DATEPICKER_DAY];
343} 329}
344 330
345#define EFL_UI_DATEPICKER_EXTRA_OPS \
346 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_datepicker), \
347
348#include "efl_ui_datepicker.eo.c" 331#include "efl_ui_datepicker.eo.c"
diff --git a/src/lib/elementary/efl_ui_frame.c b/src/lib/elementary/efl_ui_frame.c
index c614ef5..2ae9a1b 100644
--- a/src/lib/elementary/efl_ui_frame.c
+++ b/src/lib/elementary/efl_ui_frame.c
@@ -95,14 +95,9 @@ _on_frame_clicked(void *data,
95EOLIAN static void 95EOLIAN static void
96_efl_ui_frame_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Frame_Data *sd) 96_efl_ui_frame_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Frame_Data *sd)
97{ 97{
98 EFL_UI_LAYOUT_DATA_GET(obj, ld); 98 /* calling OWN sizing evaluate code here */
99 99 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
100 if (ld->needs_size_calc) 100 _sizing_eval(obj, sd);
101 {
102 /* calling OWN sizing evaluate code here */
103 _sizing_eval(obj, sd);
104 ld->needs_size_calc = EINA_FALSE;
105 }
106} 101}
107 102
108static void 103static void
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c b/src/lib/elementary/efl_ui_image_zoomable.c
index bc64ecb..bdb42cd 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -373,6 +373,7 @@ _efl_ui_image_zoomable_pan_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Imag
373 Eina_List *l; 373 Eina_List *l;
374 Evas_Coord ox, oy, ow, oh; 374 Evas_Coord ox, oy, ow, oh;
375 375
376 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
376 ELM_WIDGET_DATA_GET_OR_RETURN(psd->wobj, wd); 377 ELM_WIDGET_DATA_GET_OR_RETURN(psd->wobj, wd);
377 378
378 evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); 379 evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
diff --git a/src/lib/elementary/efl_ui_internal_text_scroller.c b/src/lib/elementary/efl_ui_internal_text_scroller.c
index 0773b97..cf6f9fb 100644
--- a/src/lib/elementary/efl_ui_internal_text_scroller.c
+++ b/src/lib/elementary/efl_ui_internal_text_scroller.c
@@ -63,13 +63,14 @@ _efl_ui_internal_text_scroller_efl_object_constructor(Eo *obj,
63} 63}
64 64
65EOLIAN static void 65EOLIAN static void
66_efl_ui_internal_text_scroller_elm_layout_sizing_eval(Eo *obj, 66_efl_ui_internal_text_scroller_efl_canvas_group_group_calculate(Eo *obj,
67 Efl_Ui_Internal_Text_Scroller_Data *sd) 67 Efl_Ui_Internal_Text_Scroller_Data *sd)
68{ 68{
69 Eina_Size2D size = {-1, -1}; 69 Eina_Size2D size = {-1, -1};
70 Eina_Rect view = EINA_RECT(0, 0, 0, 0); 70 Eina_Rect view = EINA_RECT(0, 0, 0, 0);
71 Evas_Coord vmw = 0, vmh = 0; 71 Evas_Coord vmw = 0, vmh = 0;
72 72
73 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
73 EFL_UI_SCROLLER_DATA_GET(obj, psd); 74 EFL_UI_SCROLLER_DATA_GET(obj, psd);
74 75
75 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 76 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@@ -187,7 +188,4 @@ _efl_ui_internal_text_scroller_viewport_clip_get(const Eo *obj,
187 188
188/* Internal EO APIs and hidden overrides */ 189/* Internal EO APIs and hidden overrides */
189 190
190#define EFL_UI_INTERNAL_TEXT_SCROLLER_EXTRA_OPS \
191 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_internal_text_scroller)
192
193#include "efl_ui_internal_text_scroller.eo.c" 191#include "efl_ui_internal_text_scroller.eo.c"
diff --git a/src/lib/elementary/efl_ui_internal_text_scroller.eo b/src/lib/elementary/efl_ui_internal_text_scroller.eo
index b18c008..ea0d573 100644
--- a/src/lib/elementary/efl_ui_internal_text_scroller.eo
+++ b/src/lib/elementary/efl_ui_internal_text_scroller.eo
@@ -48,5 +48,6 @@ class @beta Efl.Ui.Internal_Text_Scroller extends Efl.Ui.Scroller
48 Efl.Object.constructor; 48 Efl.Object.constructor;
49 Efl.Object.finalize; 49 Efl.Object.finalize;
50 Efl.Object.destructor; 50 Efl.Object.destructor;
51 Efl.Canvas.Group.group_calculate;
51 } 52 }
52} 53}
diff --git a/src/lib/elementary/efl_ui_item.c b/src/lib/elementary/efl_ui_item.c
index 65ecf71..edbfd74 100644
--- a/src/lib/elementary/efl_ui_item.c
+++ b/src/lib/elementary/efl_ui_item.c
@@ -202,43 +202,11 @@ EFL_CALLBACKS_ARRAY_DEFINE(self_listening,
202 202
203/* Mouse Controls ends */ 203/* Mouse Controls ends */
204 204
205static void
206_sizing_eval(Evas_Object *obj, Efl_Ui_Item_Data *pd)
207{
208 Evas_Coord minh = -1, minw = -1;
209 Evas_Coord rest_w = 0, rest_h = 0;
210 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
211
212 edje_object_size_min_restricted_calc(wd->resize_obj, &minw, &minh,
213 rest_w, rest_h);
214 evas_object_size_hint_min_set(obj, minw, minh);
215
216 pd->needs_size_calc = EINA_FALSE;
217}
218
219static void
220_efl_ui_item_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Item_Data *pd)
221{
222 if (pd->needs_size_calc) return;
223 pd->needs_size_calc = EINA_TRUE;
224
225 efl_canvas_group_change(obj);
226}
227
228EOLIAN static void
229_efl_ui_item_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Item_Data *pd)
230{
231 if (pd->needs_size_calc)
232 {
233 _sizing_eval(obj, pd);
234 pd->needs_size_calc = EINA_FALSE;
235 }
236}
237
238EOLIAN static Eo * 205EOLIAN static Eo *
239_efl_ui_item_efl_object_constructor(Eo *obj, Efl_Ui_Item_Data *pd EINA_UNUSED) 206_efl_ui_item_efl_object_constructor(Eo *obj, Efl_Ui_Item_Data *pd EINA_UNUSED)
240{ 207{
241 obj = efl_constructor(efl_super(obj, MY_CLASS)); 208 obj = efl_constructor(efl_super(obj, MY_CLASS));
209 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
242 210
243 efl_event_callback_array_add(obj, self_listening(), obj); 211 efl_event_callback_array_add(obj, self_listening(), obj);
244 212
@@ -302,9 +270,4 @@ _efl_ui_item_container_get(const Eo *obj EINA_UNUSED, Efl_Ui_Item_Data *pd)
302 return pd->parent; 270 return pd->parent;
303} 271}
304 272
305/* Internal EO APIs and hidden overrides */
306
307#define EFL_UI_ITEM_EXTRA_OPS \
308 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_item)
309
310#include "efl_ui_item.eo.c" 273#include "efl_ui_item.eo.c"
diff --git a/src/lib/elementary/efl_ui_item.eo b/src/lib/elementary/efl_ui_item.eo
index aa76004..a2a7ad7 100644
--- a/src/lib/elementary/efl_ui_item.eo
+++ b/src/lib/elementary/efl_ui_item.eo
@@ -55,6 +55,5 @@ abstract @beta Efl.Ui.Item extends Efl.Ui.Layout_Base implements Efl.Ui.Selectab
55 Efl.Object.constructor; 55 Efl.Object.constructor;
56 Efl.Object.finalize; 56 Efl.Object.finalize;
57 Efl.Object.destructor; 57 Efl.Object.destructor;
58 Efl.Canvas.Group.group_calculate;
59 } 58 }
60} 59}
diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c
index 80b97ab..cde03e3 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -206,7 +206,7 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
206 elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, NULL, 206 elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, NULL,
207 sd->finger_size_multiplier_y, &minh); 207 sd->finger_size_multiplier_y, &minh);
208 evas_object_size_hint_min_set(obj, minw, minh); 208 evas_object_size_hint_min_set(obj, minw, minh);
209 209 efl_gfx_hint_size_restricted_min_set(obj, EINA_SIZE2D(minw, minh));
210 sd->restricted_calc_w = sd->restricted_calc_h = EINA_FALSE; 210 sd->restricted_calc_w = sd->restricted_calc_h = EINA_FALSE;
211} 211}
212 212
@@ -529,6 +529,11 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
529 (theme_apply_internal_ret == EFL_UI_THEME_APPLY_ERROR_DEFAULT)) 529 (theme_apply_internal_ret == EFL_UI_THEME_APPLY_ERROR_DEFAULT))
530 return EFL_UI_THEME_APPLY_ERROR_DEFAULT; 530 return EFL_UI_THEME_APPLY_ERROR_DEFAULT;
531 531
532 /* unset existing size hints to force accurate recalc */
533 efl_gfx_hint_size_restricted_min_set(obj, EINA_SIZE2D(0, 0));
534 if (elm_widget_is_legacy(obj))
535 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(0, 0));
536
532 return EFL_UI_THEME_APPLY_ERROR_NONE; 537 return EFL_UI_THEME_APPLY_ERROR_NONE;
533} 538}
534 539
@@ -2531,6 +2536,7 @@ _efl_ui_layout_base_efl_object_finalize(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNU
2531 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); 2536 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
2532 eo = efl_finalize(efl_super(obj, MY_CLASS)); 2537 eo = efl_finalize(efl_super(obj, MY_CLASS));
2533 efl_ui_widget_theme_apply(eo); 2538 efl_ui_widget_theme_apply(eo);
2539 efl_canvas_group_change(obj);
2534 2540
2535 win = elm_widget_top_get(obj); 2541 win = elm_widget_top_get(obj);
2536 if (efl_isa(win, EFL_UI_WIN_CLASS)) 2542 if (efl_isa(win, EFL_UI_WIN_CLASS))
diff --git a/src/lib/elementary/efl_ui_list_view.c b/src/lib/elementary/efl_ui_list_view.c
index 12bf65a..0a686e7 100644
--- a/src/lib/elementary/efl_ui_list_view.c
+++ b/src/lib/elementary/efl_ui_list_view.c
@@ -46,6 +46,7 @@ static const Elm_Action key_actions[] = {
46EOLIAN static void 46EOLIAN static void
47_efl_ui_list_view_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd) 47_efl_ui_list_view_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
48{ 48{
49 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
49 evas_object_smart_changed(psd->wobj); 50 evas_object_smart_changed(psd->wobj);
50} 51}
51 52
diff --git a/src/lib/elementary/efl_ui_pan.c b/src/lib/elementary/efl_ui_pan.c
index 3412cba..7537936 100644
--- a/src/lib/elementary/efl_ui_pan.c
+++ b/src/lib/elementary/efl_ui_pan.c
@@ -213,6 +213,7 @@ _efl_ui_pan_efl_content_content_unset(Eo *obj EINA_UNUSED, Efl_Ui_Pan_Data *pd)
213EOLIAN static void 213EOLIAN static void
214_efl_ui_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_Pan_Data *psd) 214_efl_ui_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_Pan_Data *psd)
215{ 215{
216 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
216 efl_gfx_entity_position_set(psd->content, EINA_POSITION2D(psd->x - psd->px, psd->y - psd->py)); 217 efl_gfx_entity_position_set(psd->content, EINA_POSITION2D(psd->x - psd->px, psd->y - psd->py));
217} 218}
218#include "efl_ui_pan.eo.c" 219#include "efl_ui_pan.eo.c"
diff --git a/src/lib/elementary/efl_ui_panel.c b/src/lib/elementary/efl_ui_panel.c
index eba318d..cad4a8f 100644
--- a/src/lib/elementary/efl_ui_panel.c
+++ b/src/lib/elementary/efl_ui_panel.c
@@ -53,10 +53,8 @@ _mirrored_set(Evas_Object *obj,
53} 53}
54 54
55EOLIAN static void 55EOLIAN static void
56_efl_ui_panel_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Panel_Data *sd) 56_efl_ui_panel_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Panel_Data *sd)
57{ 57{
58 Evas_Coord mw = 0, mh = 0;
59
60 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 58 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
61 59
62 if (sd->delete_me) return; 60 if (sd->delete_me) return;
@@ -67,10 +65,7 @@ _efl_ui_panel_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Panel_Data *sd)
67 else _drawer_open(obj, wd->w, wd->h, EINA_FALSE); 65 else _drawer_open(obj, wd->w, wd->h, EINA_FALSE);
68 } 66 }
69 67
70 evas_object_smart_calculate(sd->bx); 68 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
71 edje_object_size_min_calc(wd->resize_obj, &mw, &mh);
72 evas_object_size_hint_min_set(obj, mw, mh);
73 evas_object_size_hint_max_set(obj, -1, -1);
74} 69}
75 70
76static char * 71static char *
@@ -863,6 +858,9 @@ _efl_ui_panel_efl_object_constructor(Eo *obj, Efl_Ui_Panel_Data *_pd)
863 else 858 else
864 { 859 {
865 elm_layout_content_set(obj, "efl.content", _pd->bx); 860 elm_layout_content_set(obj, "efl.content", _pd->bx);
861 /* trigger box recalc on manual panel calc */
862 _efl_ui_layout_subobjs_calc_set(obj, EINA_TRUE);
863 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
866 864
867 if (edje_object_part_exists 865 if (edje_object_part_exists
868 (wd->resize_obj, "efl.swallow.event")) 866 (wd->resize_obj, "efl.swallow.event"))
@@ -1404,7 +1402,4 @@ _efl_ui_panel_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSED
1404 1402
1405/* Internal EO APIs and hidden overrides */ 1403/* Internal EO APIs and hidden overrides */
1406 1404
1407#define EFL_UI_PANEL_EXTRA_OPS \
1408 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_panel)
1409
1410#include "efl_ui_panel.eo.c" 1405#include "efl_ui_panel.eo.c"
diff --git a/src/lib/elementary/efl_ui_panel.eo b/src/lib/elementary/efl_ui_panel.eo
index fffe726..39b3100 100644
--- a/src/lib/elementary/efl_ui_panel.eo
+++ b/src/lib/elementary/efl_ui_panel.eo
@@ -79,6 +79,7 @@ class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base implements Efl.Ui.Focus.Laye
79 Efl.Gfx.Entity.position { set; } 79 Efl.Gfx.Entity.position { set; }
80 Efl.Gfx.Entity.size { set; } 80 Efl.Gfx.Entity.size { set; }
81 Efl.Canvas.Group.group_member_add; 81 Efl.Canvas.Group.group_member_add;
82 Efl.Canvas.Group.group_calculate;
82 Efl.Ui.Widget.theme_apply; 83 Efl.Ui.Widget.theme_apply;
83 Efl.Ui.Widget.disabled {set;} 84 Efl.Ui.Widget.disabled {set;}
84 Efl.Ui.Widget.on_access_update; 85 Efl.Ui.Widget.on_access_update;
diff --git a/src/lib/elementary/efl_ui_panes.c b/src/lib/elementary/efl_ui_panes.c
index 9d44173..d818ec0 100644
--- a/src/lib/elementary/efl_ui_panes.c
+++ b/src/lib/elementary/efl_ui_panes.c
@@ -202,13 +202,14 @@ _on_unpressed(void *data,
202} 202}
203 203
204EOLIAN static void 204EOLIAN static void
205_efl_ui_panes_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Panes_Data *sd) 205_efl_ui_panes_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Panes_Data *sd)
206{ 206{
207 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 207 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
208 208
209 Eo *first_content, *second_content; 209 Eo *first_content, *second_content;
210 Eina_Size2D min; 210 Eina_Size2D min;
211 211
212 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
212 if (elm_widget_is_legacy(obj)) 213 if (elm_widget_is_legacy(obj))
213 { 214 {
214 first_content = efl_content_get(efl_part(obj, "elm.swallow.left")); 215 first_content = efl_content_get(efl_part(obj, "elm.swallow.left"));
@@ -698,8 +699,7 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(efl_ui_panes)
698 699
699#define EFL_UI_PANES_EXTRA_OPS \ 700#define EFL_UI_PANES_EXTRA_OPS \
700 EFL_CANVAS_GROUP_ADD_OPS(efl_ui_panes), \ 701 EFL_CANVAS_GROUP_ADD_OPS(efl_ui_panes), \
701 ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_panes), \ 702 ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_panes)
702 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_panes)
703 703
704#include "efl_ui_panes.eo.c" 704#include "efl_ui_panes.eo.c"
705#include "efl_ui_panes_eo.legacy.c" 705#include "efl_ui_panes_eo.legacy.c"
diff --git a/src/lib/elementary/efl_ui_panes.eo b/src/lib/elementary/efl_ui_panes.eo
index 5b5029a..0194fe0 100644
--- a/src/lib/elementary/efl_ui_panes.eo
+++ b/src/lib/elementary/efl_ui_panes.eo
@@ -47,6 +47,7 @@ class @beta Efl.Ui.Panes extends Efl.Ui.Layout_Base implements Efl.Ui.Layout_Ori
47 } 47 }
48 implements { 48 implements {
49 Efl.Object.constructor; 49 Efl.Object.constructor;
50 Efl.Canvas.Group.group_calculate;
50 Efl.Ui.Widget.theme_apply; 51 Efl.Ui.Widget.theme_apply;
51 Efl.Ui.Layout_Orientable.orientation { get; set; [[Only supports $vertical and $horizontal. Default is $vertical.]] } 52 Efl.Ui.Layout_Orientable.orientation { get; set; [[Only supports $vertical and $horizontal. Default is $vertical.]] }
52 Efl.Part.part_get; 53 Efl.Part.part_get;
diff --git a/src/lib/elementary/efl_ui_popup.c b/src/lib/elementary/efl_ui_popup.c
index 214758d..007e5f5 100644
--- a/src/lib/elementary/efl_ui_popup.c
+++ b/src/lib/elementary/efl_ui_popup.c
@@ -89,11 +89,7 @@ _parent_geom_cb(void *data, const Efl_Event *ev EINA_UNUSED)
89 89
90 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, pd); 90 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, pd);
91 91
92 //Add align calc only
93 Eina_Bool needs_size_calc = pd->needs_size_calc;
94 efl_canvas_group_change(obj); 92 efl_canvas_group_change(obj);
95 efl_canvas_group_calculate(obj);
96 pd->needs_size_calc = needs_size_calc;
97} 93}
98 94
99EOLIAN static void 95EOLIAN static void
@@ -132,11 +128,7 @@ _efl_ui_popup_align_set(Eo *obj EINA_UNUSED, Efl_Ui_Popup_Data *pd, Efl_Ui_Popup
132{ 128{
133 pd->align = type; 129 pd->align = type;
134 130
135 //Add align calc only
136 Eina_Bool needs_size_calc = pd->needs_size_calc;
137 efl_canvas_group_change(obj); 131 efl_canvas_group_change(obj);
138 efl_canvas_group_calculate(obj);
139 pd->needs_size_calc = needs_size_calc;
140} 132}
141 133
142EOLIAN static Efl_Ui_Popup_Align 134EOLIAN static Efl_Ui_Popup_Align
@@ -265,40 +257,19 @@ _efl_ui_popup_efl_object_destructor(Eo *obj, Efl_Ui_Popup_Data *pd)
265static void 257static void
266_sizing_eval(Eo *obj) 258_sizing_eval(Eo *obj)
267{ 259{
268 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 260 Eina_Size2D min;
269 Evas_Coord minw = -1, minh = -1;
270 261
271 elm_coords_finger_size_adjust(1, &minw, 1, &minh); 262 /* trigger layout calc */
272 edje_object_size_min_restricted_calc 263 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
273 (wd->resize_obj, &minw, &minh, minw, minh); 264 min = efl_gfx_hint_size_restricted_min_get(obj);
274 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(minw, minh));
275 265
276 Eina_Size2D size = efl_gfx_entity_size_get(obj); 266 Eina_Size2D size = efl_gfx_entity_size_get(obj);
277 267
278 Eina_Size2D new_size; 268 Eina_Size2D new_size;
279 new_size.w = (minw > size.w ? minw : size.w); 269 new_size.w = (min.w > size.w ? min.w : size.w);
280 new_size.h = (minh > size.h ? minh : size.h); 270 new_size.h = (min.h > size.h ? min.h : size.h);
281 efl_gfx_entity_size_set(obj, new_size); 271 efl_gfx_entity_size_set(obj, new_size);
282} 272 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
283
284EOLIAN static void
285_efl_ui_popup_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Data *pd)
286{
287 if (pd->needs_group_calc) return;
288 pd->needs_group_calc = EINA_TRUE;
289
290 /* These flags can be modified by sub classes not to calculate size or align
291 * their super classes.
292 * e.g. Efl.Ui.Popup.Alert.Scroll class sets the flag as follows not to
293 * calculate size by its super class.
294 *
295 * ppd->needs_size_calc = EINA_FALSE;
296 * efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
297 */
298 pd->needs_size_calc = EINA_TRUE;
299 pd->needs_align_calc = EINA_TRUE;
300
301 evas_object_smart_changed(obj);
302} 273}
303 274
304EOLIAN static void 275EOLIAN static void
@@ -308,26 +279,14 @@ _efl_ui_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Popup_Data *pd)
308 * calculation. 279 * calculation.
309 * The actual size calculation is done here when the object is rendered to 280 * The actual size calculation is done here when the object is rendered to
310 * avoid duplicate size calculations. */ 281 * avoid duplicate size calculations. */
311 if (pd->needs_group_calc) 282 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
312 { 283 _sizing_eval(obj);
313 if (pd->needs_size_calc) 284 _calc_align(obj);
314 {
315 _sizing_eval(obj);
316 pd->needs_size_calc = EINA_FALSE;
317 }
318 if (pd->needs_align_calc)
319 {
320 _calc_align(obj);
321 pd->needs_align_calc = EINA_FALSE;
322 }
323
324 Eina_Rect p_geom = efl_gfx_entity_geometry_get(pd->win_parent);
325 285
326 efl_gfx_entity_position_set(pd->backwall, EINA_POSITION2D(0, 0)); 286 Eina_Rect p_geom = efl_gfx_entity_geometry_get(pd->win_parent);
327 efl_gfx_entity_size_set(pd->backwall, EINA_SIZE2D(p_geom.w, p_geom.h));
328 287
329 pd->needs_group_calc = EINA_FALSE; 288 efl_gfx_entity_position_set(pd->backwall, EINA_POSITION2D(0, 0));
330 } 289 efl_gfx_entity_size_set(pd->backwall, EINA_SIZE2D(p_geom.w, p_geom.h));
331} 290}
332 291
333/* Standard widget overrides */ 292/* Standard widget overrides */
@@ -424,9 +383,4 @@ _efl_ui_popup_part_backwall_efl_file_load(Eo *obj, void *_pd EINA_UNUSED)
424 383
425/* Efl.Part end */ 384/* Efl.Part end */
426 385
427/* Internal EO APIs and hidden overrides */
428
429#define EFL_UI_POPUP_EXTRA_OPS \
430 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_popup)
431
432#include "efl_ui_popup.eo.c" 386#include "efl_ui_popup.eo.c"
diff --git a/src/lib/elementary/efl_ui_popup_private.h b/src/lib/elementary/efl_ui_popup_private.h
index 3cf0eee..77b989a 100644
--- a/src/lib/elementary/efl_ui_popup_private.h
+++ b/src/lib/elementary/efl_ui_popup_private.h
@@ -9,9 +9,6 @@ struct _Efl_Ui_Popup_Data
9 Efl_Ui_Popup_Align align; 9 Efl_Ui_Popup_Align align;
10 Ecore_Timer *timer; 10 Ecore_Timer *timer;
11 double timeout; 11 double timeout;
12 Eina_Bool needs_group_calc : 1;
13 Eina_Bool needs_size_calc : 1;
14 Eina_Bool needs_align_calc : 1;
15}; 12};
16 13
17#define EFL_UI_POPUP_DATA_GET_OR_RETURN(o, ptr, ...) \ 14#define EFL_UI_POPUP_DATA_GET_OR_RETURN(o, ptr, ...) \
diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c
index 00de86b..e206138 100644
--- a/src/lib/elementary/efl_ui_progressbar.c
+++ b/src/lib/elementary/efl_ui_progressbar.c
@@ -134,18 +134,6 @@ _val_set(Evas_Object *obj)
134 } 134 }
135} 135}
136 136
137EOLIAN static void
138_efl_ui_progressbar_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Progressbar_Data *_pd EINA_UNUSED)
139{
140 Evas_Coord minw = -1, minh = -1;
141 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
142
143 edje_object_size_min_restricted_calc
144 (wd->resize_obj, &minw, &minh, minw, minh);
145 evas_object_size_hint_min_set(obj, minw, minh);
146 evas_object_size_hint_max_set(obj, -1, -1);
147}
148
149//TODO: efl_ui_slider also use this. 137//TODO: efl_ui_slider also use this.
150static const char * 138static const char *
151_theme_group_modify_pos_get(const char *cur_group, const char *search, size_t len, Eina_Bool is_legacy) 139_theme_group_modify_pos_get(const char *cur_group, const char *search, size_t len, Eina_Bool is_legacy)
@@ -348,6 +336,8 @@ _efl_ui_progressbar_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Progressbar_Data
348 elm_widget_theme_klass_set(obj, "progressbar"); 336 elm_widget_theme_klass_set(obj, "progressbar");
349 efl_canvas_group_add(efl_super(obj, MY_CLASS)); 337 efl_canvas_group_add(efl_super(obj, MY_CLASS));
350 338
339 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
340
351 priv->dir = EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL; 341 priv->dir = EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL;
352 priv->val = MIN_RATIO_LVL; 342 priv->val = MIN_RATIO_LVL;
353 priv->val_max = 1.0; 343 priv->val_max = 1.0;
@@ -785,7 +775,6 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(efl_ui_progressbar)
785 775
786#define EFL_UI_PROGRESSBAR_EXTRA_OPS \ 776#define EFL_UI_PROGRESSBAR_EXTRA_OPS \
787 ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_progressbar), \ 777 ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_progressbar), \
788 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_progressbar), \
789 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_progressbar) 778 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_progressbar)
790 779
791#include "efl_ui_progressbar.eo.c" 780#include "efl_ui_progressbar.eo.c"
diff --git a/src/lib/elementary/efl_ui_relative_layout.c b/src/lib/elementary/efl_ui_relative_layout.c
index 7e8b6f3..983a507 100644
--- a/src/lib/elementary/efl_ui_relative_layout.c
+++ b/src/lib/elementary/efl_ui_relative_layout.c
@@ -565,6 +565,7 @@ _efl_ui_relative_layout_efl_pack_layout_layout_request(Eo *obj, Efl_Ui_Relative_
565EOLIAN static void 565EOLIAN static void
566_efl_ui_relative_layout_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Relative_Layout_Data *pd EINA_UNUSED) 566_efl_ui_relative_layout_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Relative_Layout_Data *pd EINA_UNUSED)
567{ 567{
568 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
568 efl_pack_layout_update(obj); 569 efl_pack_layout_update(obj);
569} 570}
570 571
diff --git a/src/lib/elementary/efl_ui_scroll_alert_popup.c b/src/lib/elementary/efl_ui_scroll_alert_popup.c
index 9836f8d..476178d 100644
--- a/src/lib/elementary/efl_ui_scroll_alert_popup.c
+++ b/src/lib/elementary/efl_ui_scroll_alert_popup.c
@@ -98,6 +98,7 @@ _scroller_sizing_eval(Eo *obj, Efl_Ui_Scroll_Alert_Popup_Data *pd,
98 elm_scroller_content_min_limit(pd->scroller, min_limit_w, min_limit_h); 98 elm_scroller_content_min_limit(pd->scroller, min_limit_w, min_limit_h);
99 efl_gfx_entity_size_set(obj, new_size); 99 efl_gfx_entity_size_set(obj, new_size);
100 } 100 }
101 efl_canvas_group_calculate(pd->scroller);
101 102
102 efl_gfx_hint_size_min_set(obj, new_min); 103 efl_gfx_hint_size_min_set(obj, new_min);
103} 104}
@@ -112,6 +113,7 @@ _sizing_eval(Eo *obj, Efl_Ui_Scroll_Alert_Popup_Data *pd)
112 //Calculate popup's min size including scroller's min size 113 //Calculate popup's min size including scroller's min size
113 { 114 {
114 elm_scroller_content_min_limit(pd->scroller, EINA_TRUE, EINA_TRUE); 115 elm_scroller_content_min_limit(pd->scroller, EINA_TRUE, EINA_TRUE);
116 efl_canvas_group_calculate(pd->scroller);
115 117
116 elm_coords_finger_size_adjust(1, &scr_minw, 1, &scr_minh); 118 elm_coords_finger_size_adjust(1, &scr_minw, 1, &scr_minh);
117 edje_object_size_min_restricted_calc 119 edje_object_size_min_restricted_calc
@@ -121,6 +123,7 @@ _sizing_eval(Eo *obj, Efl_Ui_Scroll_Alert_Popup_Data *pd)
121 //Calculate popup's min size except scroller's min size 123 //Calculate popup's min size except scroller's min size
122 { 124 {
123 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE); 125 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
126 efl_canvas_group_calculate(pd->scroller);
124 127
125 elm_coords_finger_size_adjust(1, &obj_minw, 1, &obj_minh); 128 elm_coords_finger_size_adjust(1, &obj_minw, 1, &obj_minh);
126 edje_object_size_min_restricted_calc 129 edje_object_size_min_restricted_calc
@@ -137,17 +140,12 @@ _efl_ui_scroll_alert_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Scro
137 * calculation. 140 * calculation.
138 * The actual size calculation is done here when the object is rendered to 141 * The actual size calculation is done here when the object is rendered to
139 * avoid duplicate size calculations. */ 142 * avoid duplicate size calculations. */
140 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, ppd); 143 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
141 144
142 if (ppd->needs_group_calc) 145 _sizing_eval(obj, pd);
143 {
144 if (ppd->needs_size_calc)
145 _sizing_eval(obj, pd);
146 146
147 //Not to calculate size by super class 147 //Not to calculate size by super class
148 ppd->needs_size_calc = EINA_FALSE; 148 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
149 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
150 }
151} 149}
152 150
153static Eina_Bool 151static Eina_Bool
diff --git a/src/lib/elementary/efl_ui_scroller.c b/src/lib/elementary/efl_ui_scroller.c
index b15e04e..fdd6139 100644
--- a/src/lib/elementary/efl_ui_scroller.c
+++ b/src/lib/elementary/efl_ui_scroller.c
@@ -289,13 +289,14 @@ _efl_ui_scroller_efl_object_destructor(Eo *obj,
289} 289}
290 290
291EOLIAN static void 291EOLIAN static void
292_efl_ui_scroller_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Scroller_Data *sd) 292_efl_ui_scroller_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Scroller_Data *sd)
293{ 293{
294 Eina_Size2D min = {0, 0}, max = {0, 0}, size = {-1, -1}; 294 Eina_Size2D min = {0, 0}, max = {0, 0}, size = {-1, -1};
295 Eina_Rect view = {}; 295 Eina_Rect view = {};
296 Evas_Coord vmw = 0, vmh = 0; 296 Evas_Coord vmw = 0, vmh = 0;
297 double xw = 0.0, yw = 0.0; 297 double xw = 0.0, yw = 0.0;
298 298
299 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
299 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 300 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
300 301
301 if (sd->content) 302 if (sd->content)
@@ -392,7 +393,4 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_scroller, Efl_Ui_Scroller_Data)
392 393
393/* Internal EO APIs and hidden overrides */ 394/* Internal EO APIs and hidden overrides */
394 395
395#define EFL_UI_SCROLLER_EXTRA_OPS \
396 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_scroller)
397
398#include "efl_ui_scroller.eo.c" 396#include "efl_ui_scroller.eo.c"
diff --git a/src/lib/elementary/efl_ui_scroller.eo b/src/lib/elementary/efl_ui_scroller.eo
index 8f90d23..36f42c1 100644
--- a/src/lib/elementary/efl_ui_scroller.eo
+++ b/src/lib/elementary/efl_ui_scroller.eo
@@ -12,6 +12,7 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
12 Efl.Object.destructor; 12 Efl.Object.destructor;
13 Efl.Content.content { get; set; } 13 Efl.Content.content { get; set; }
14 Efl.Content.content_unset; 14 Efl.Content.content_unset;
15 Efl.Canvas.Group.group_calculate;
15 Efl.Ui.Widget.theme_apply; 16 Efl.Ui.Widget.theme_apply;
16 Efl.Ui.Widget.focus_state_apply; 17 Efl.Ui.Widget.focus_state_apply;
17 Efl.Ui.Widget.widget_input_event_handler; 18 Efl.Ui.Widget.widget_input_event_handler;
diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c
index 2714cce..4bcf1d8 100644
--- a/src/lib/elementary/efl_ui_slider.c
+++ b/src/lib/elementary/efl_ui_slider.c
@@ -456,19 +456,6 @@ _efl_ui_slider_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd)
456 return int_ret; 456 return int_ret;
457} 457}
458 458
459EOLIAN static void
460_efl_ui_slider_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Slider_Data *_pd EINA_UNUSED)
461{
462 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
463 Evas_Coord minw = -1, minh = -1;
464
465 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
466 edje_object_size_min_restricted_calc
467 (wd->resize_obj, &minw, &minh, minw, minh);
468 efl_gfx_hint_size_restricted_min_set(obj, EINA_SIZE2D(minw, minh));
469 efl_gfx_hint_size_max_set(obj, EINA_SIZE2D(-1, -1));
470}
471
472static void 459static void
473_spacer_down_cb(void *data, 460_spacer_down_cb(void *data,
474 Evas *e EINA_UNUSED, 461 Evas *e EINA_UNUSED,
@@ -880,7 +867,6 @@ EFL_VOID_FUNC_BODYV(efl_ui_slider_down_knob, EFL_FUNC_CALL(button_x, button_y),
880EFL_VOID_FUNC_BODYV(efl_ui_slider_move_knob, EFL_FUNC_CALL(button_x, button_y), double button_x, double button_y) 867EFL_VOID_FUNC_BODYV(efl_ui_slider_move_knob, EFL_FUNC_CALL(button_x, button_y), double button_x, double button_y)
881 868
882#define EFL_UI_SLIDER_EXTRA_OPS \ 869#define EFL_UI_SLIDER_EXTRA_OPS \
883 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_slider), \
884 EFL_UI_SLIDER_VAL_FETCH_OPS(efl_ui_slider), \ 870 EFL_UI_SLIDER_VAL_FETCH_OPS(efl_ui_slider), \
885 EFL_UI_SLIDER_VAL_SET_OPS(efl_ui_slider), \ 871 EFL_UI_SLIDER_VAL_SET_OPS(efl_ui_slider), \
886 EFL_UI_SLIDER_DOWN_KNOB_OPS(efl_ui_slider), \ 872 EFL_UI_SLIDER_DOWN_KNOB_OPS(efl_ui_slider), \
diff --git a/src/lib/elementary/efl_ui_spin.c b/src/lib/elementary/efl_ui_spin.c
index bbfeba7..636e3fe 100644
--- a/src/lib/elementary/efl_ui_spin.c
+++ b/src/lib/elementary/efl_ui_spin.c
@@ -29,20 +29,6 @@ _label_write(Evas_Object *obj, Efl_Ui_Spin_Data *sd)
29 eina_strbuf_free(strbuf); 29 eina_strbuf_free(strbuf);
30} 30}
31 31
32EOLIAN static void
33_efl_ui_spin_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Spin_Data *_pd EINA_UNUSED)
34{
35 Evas_Coord minw = -1, minh = -1;
36 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
37
38 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
39 edje_object_size_min_restricted_calc
40 (wd->resize_obj, &minw, &minh, minw, minh);
41 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
42 evas_object_size_hint_min_set(obj, minw, minh);
43 evas_object_size_hint_max_set(obj, -1, -1);
44}
45
46EOLIAN static Eina_Bool 32EOLIAN static Eina_Bool
47_efl_ui_spin_efl_ui_widget_widget_input_event_handler(Eo *obj, Efl_Ui_Spin_Data *sd, const Efl_Event *eo_event, Evas_Object *src EINA_UNUSED) 33_efl_ui_spin_efl_ui_widget_widget_input_event_handler(Eo *obj, Efl_Ui_Spin_Data *sd, const Efl_Event *eo_event, Evas_Object *src EINA_UNUSED)
48{ 34{
@@ -185,7 +171,4 @@ _efl_ui_spin_efl_ui_range_display_range_value_get(const Eo *obj EINA_UNUSED, Efl
185 return sd->val; 171 return sd->val;
186} 172}
187 173
188#define EFL_UI_SPIN_EXTRA_OPS \
189 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_spin), \
190
191#include "efl_ui_spin.eo.c" 174#include "efl_ui_spin.eo.c"
diff --git a/src/lib/elementary/efl_ui_table.c b/src/lib/elementary/efl_ui_table.c
index 6655573..f2d90be 100644
--- a/src/lib/elementary/efl_ui_table.c
+++ b/src/lib/elementary/efl_ui_table.c
@@ -167,6 +167,7 @@ _efl_ui_table_efl_pack_layout_layout_update(Eo *obj, Efl_Ui_Table_Data *pd)
167EOLIAN void 167EOLIAN void
168_efl_ui_table_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Table_Data *_pd EINA_UNUSED) 168_efl_ui_table_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Table_Data *_pd EINA_UNUSED)
169{ 169{
170 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
170 efl_pack_layout_update(obj); 171 efl_pack_layout_update(obj);
171} 172}
172 173
diff --git a/src/lib/elementary/efl_ui_tags.c b/src/lib/elementary/efl_ui_tags.c
index 4496814..07f6ac0 100644
--- a/src/lib/elementary/efl_ui_tags.c
+++ b/src/lib/elementary/efl_ui_tags.c
@@ -464,21 +464,6 @@ _efl_ui_tags_efl_ui_widget_widget_input_event_handler(Eo *obj EINA_UNUSED, Efl_U
464 return EINA_FALSE; 464 return EINA_FALSE;
465} 465}
466 466
467EOLIAN static void
468_efl_ui_tags_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Tags_Data *sd EINA_UNUSED)
469{
470 Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
471
472 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
473
474 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
475 edje_object_size_min_restricted_calc
476 (wd->resize_obj, &minw, &minh, minw, minh);
477 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
478 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(minw, minh));
479 efl_gfx_hint_size_max_set(obj, EINA_SIZE2D(maxw, maxh));
480}
481
482static void 467static void
483_mouse_clicked_signal_cb(void *data EINA_UNUSED, 468_mouse_clicked_signal_cb(void *data EINA_UNUSED,
484 Evas_Object *obj, 469 Evas_Object *obj,
@@ -1142,7 +1127,4 @@ _efl_ui_tags_efl_ui_format_apply_formatted_value(Eo *obj EINA_UNUSED, Efl_Ui_Tag
1142 _view_update(pd); 1127 _view_update(pd);
1143} 1128}
1144 1129
1145#define EFL_UI_TAGS_EXTRA_OPS \
1146 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_tags), \
1147
1148#include "efl_ui_tags.eo.c" 1130#include "efl_ui_tags.eo.c"
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index b76c69e..f9a575f 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -856,11 +856,13 @@ _cursor_geometry_recalc(Evas_Object *obj)
856#define SIZE2D_EQ(X, Y) (((X).w == (Y).w) && ((X).h == (Y).h)) 856#define SIZE2D_EQ(X, Y) (((X).w == (Y).w) && ((X).h == (Y).h))
857 857
858EOLIAN static void 858EOLIAN static void
859_efl_ui_text_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Text_Data *sd) 859_efl_ui_text_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Text_Data *sd)
860{ 860{
861 Eina_Size2D min = EINA_SIZE2D(0, 0); 861 Eina_Size2D min = EINA_SIZE2D(0, 0);
862 Eina_Size2D edmin = EINA_SIZE2D(0, 0); 862 Eina_Size2D edmin = EINA_SIZE2D(0, 0);
863 Eina_Size2D sz = EINA_SIZE2D(0, 0); 863 Eina_Size2D sz = EINA_SIZE2D(0, 0);
864
865 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
864 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 866 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
865 867
866 sz = efl_gfx_entity_size_get(obj); 868 sz = efl_gfx_entity_size_get(obj);
@@ -4074,9 +4076,6 @@ ELM_PART_OVERRIDE_TEXT_GET(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data)
4074 4076
4075//ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX) 4077//ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
4076 4078
4077#define EFL_UI_TEXT_EXTRA_OPS \
4078 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_text)
4079
4080#include "efl_ui_text.eo.c" 4079#include "efl_ui_text.eo.c"
4081 4080
4082EOLIAN static Eo * 4081EOLIAN static Eo *
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index a0a1807..b52a392 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -314,6 +314,7 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickabl
314 Efl.Gfx.Entity.position { set; } 314 Efl.Gfx.Entity.position { set; }
315 Efl.Gfx.Entity.size { set; } 315 Efl.Gfx.Entity.size { set; }
316 Efl.Canvas.Group.group_member_add; 316 Efl.Canvas.Group.group_member_add;
317 Efl.Canvas.Group.group_calculate;
317 Efl.Layout.Signal.signal_callback_add; 318 Efl.Layout.Signal.signal_callback_add;
318 Efl.Layout.Signal.signal_callback_del; 319 Efl.Layout.Signal.signal_callback_del;
319 Efl.Layout.Signal.signal_emit; 320 Efl.Layout.Signal.signal_emit;
diff --git a/src/lib/elementary/efl_ui_text_alert_popup.c b/src/lib/elementary/efl_ui_text_alert_popup.c
index c6c01a0..2f014e0 100644
--- a/src/lib/elementary/efl_ui_text_alert_popup.c
+++ b/src/lib/elementary/efl_ui_text_alert_popup.c
@@ -102,6 +102,7 @@ _scroller_sizing_eval(Eo *obj, Efl_Ui_Text_Alert_Popup_Data *pd, Eina_Size2D obj
102 elm_scroller_content_min_limit(pd->scroller, min_limit_w, min_limit_h); 102 elm_scroller_content_min_limit(pd->scroller, min_limit_w, min_limit_h);
103 efl_gfx_entity_size_set(obj, new_size); 103 efl_gfx_entity_size_set(obj, new_size);
104 } 104 }
105 efl_canvas_group_calculate(pd->scroller);
105 106
106 efl_gfx_hint_size_min_set(obj, new_min); 107 efl_gfx_hint_size_min_set(obj, new_min);
107} 108}
@@ -127,10 +128,13 @@ _sizing_eval(Eo *obj, Efl_Ui_Text_Alert_Popup_Data *pd)
127 //Calculate popup's min size including scroller's min size 128 //Calculate popup's min size including scroller's min size
128 { 129 {
129 elm_label_line_wrap_set(pd->message, ELM_WRAP_NONE); 130 elm_label_line_wrap_set(pd->message, ELM_WRAP_NONE);
131 efl_canvas_group_calculate(pd->message);
130 text_min = efl_gfx_hint_size_combined_min_get(pd->message); 132 text_min = efl_gfx_hint_size_combined_min_get(pd->message);
131 elm_label_line_wrap_set(pd->message, ELM_WRAP_MIXED); 133 elm_label_line_wrap_set(pd->message, ELM_WRAP_MIXED);
134 efl_canvas_group_calculate(pd->message);
132 135
133 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE); 136 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
137 efl_canvas_group_calculate(pd->scroller);
134 138
135 elm_coords_finger_size_adjust(1, &text_minw, 1, &text_minh); 139 elm_coords_finger_size_adjust(1, &text_minw, 1, &text_minh);
136 edje_object_size_min_restricted_calc 140 edje_object_size_min_restricted_calc
@@ -140,6 +144,7 @@ _sizing_eval(Eo *obj, Efl_Ui_Text_Alert_Popup_Data *pd)
140 //Calculate popup's min size except scroller's min size 144 //Calculate popup's min size except scroller's min size
141 { 145 {
142 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE); 146 elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
147 efl_canvas_group_calculate(pd->scroller);
143 148
144 elm_coords_finger_size_adjust(1, &obj_minw, 1, &obj_minh); 149 elm_coords_finger_size_adjust(1, &obj_minw, 1, &obj_minh);
145 edje_object_size_min_restricted_calc 150 edje_object_size_min_restricted_calc
@@ -157,17 +162,11 @@ _efl_ui_text_alert_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Text_A
157 * calculation. 162 * calculation.
158 * The actual size calculation is done here when the object is rendered to 163 * The actual size calculation is done here when the object is rendered to
159 * avoid duplicate size calculations. */ 164 * avoid duplicate size calculations. */
160 EFL_UI_POPUP_DATA_GET_OR_RETURN(obj, ppd); 165 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
161 166
162 if (ppd->needs_group_calc) 167 _sizing_eval(obj, pd);
163 {
164 if (ppd->needs_size_calc)
165 _sizing_eval(obj, pd);
166 168
167 //Not to calculate size by super class 169 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
168 ppd->needs_size_calc = EINA_FALSE;
169 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
170 }
171} 170}
172 171
173static Eina_Bool 172static Eina_Bool
diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c
index ee16a2f..c06cbf6 100644
--- a/src/lib/elementary/efl_ui_textpath.c
+++ b/src/lib/elementary/efl_ui_textpath.c
@@ -666,8 +666,9 @@ _textpath_text_set_internal(Eo *obj, Efl_Ui_Textpath_Data *pd, const char *part,
666} 666}
667 667
668EOLIAN static void 668EOLIAN static void
669_efl_ui_textpath_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_Textpath_Data *pd) 669_efl_ui_textpath_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Textpath_Data *pd)
670{ 670{
671 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
671 _sizing_eval(pd); 672 _sizing_eval(pd);
672} 673}
673 674
diff --git a/src/lib/elementary/efl_ui_timepicker.c b/src/lib/elementary/efl_ui_timepicker.c
index 6d568bc..d7dd01a 100644
--- a/src/lib/elementary/efl_ui_timepicker.c
+++ b/src/lib/elementary/efl_ui_timepicker.c
@@ -195,20 +195,6 @@ _fields_init(Eo *obj)
195 } 195 }
196} 196}
197 197
198EOLIAN static void
199_efl_ui_timepicker_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Timepicker_Data *_pd EINA_UNUSED)
200{
201 Evas_Coord minw = -1, minh = -1;
202 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
203
204 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
205 edje_object_size_min_restricted_calc
206 (wd->resize_obj, &minw, &minh, minw, minh);
207 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
208 evas_object_size_hint_min_set(obj, minw, minh);
209 evas_object_size_hint_max_set(obj, -1, -1);
210}
211
212EOLIAN static Eo * 198EOLIAN static Eo *
213_efl_ui_timepicker_efl_object_constructor(Eo *obj, Efl_Ui_Timepicker_Data *pd EINA_UNUSED) 199_efl_ui_timepicker_efl_object_constructor(Eo *obj, Efl_Ui_Timepicker_Data *pd EINA_UNUSED)
214{ 200{
@@ -277,7 +263,4 @@ _efl_ui_timepicker_ampm_get(const Eo *obj EINA_UNUSED, Efl_Ui_Timepicker_Data *p
277 return pd->is_24hour; 263 return pd->is_24hour;
278} 264}
279 265
280#define EFL_UI_TIMEPICKER_EXTRA_OPS \
281 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_timepicker), \
282
283#include "efl_ui_timepicker.eo.c" 266#include "efl_ui_timepicker.eo.c"
diff --git a/src/lib/elementary/efl_ui_video.c b/src/lib/elementary/efl_ui_video.c
index fe26077..a80ce0a 100644
--- a/src/lib/elementary/efl_ui_video.c
+++ b/src/lib/elementary/efl_ui_video.c
@@ -107,13 +107,14 @@ _key_action_play(Evas_Object *obj, const char *params EINA_UNUSED)
107} 107}
108 108
109EOLIAN static void 109EOLIAN static void
110_efl_ui_video_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Video_Data *sd) 110_efl_ui_video_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Video_Data *sd)
111{ 111{
112 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 112 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
113 113
114 Evas_Coord minw = 0, minh = 0; 114 Evas_Coord minw = 0, minh = 0;
115 Evas_Coord w = 0, h = 0; 115 Evas_Coord w = 0, h = 0;
116 116
117 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
117 evas_object_size_hint_request_get(sd->emotion, &minw, &minh); 118 evas_object_size_hint_request_get(sd->emotion, &minw, &minh);
118 if (minw && minh) 119 if (minw && minh)
119 evas_object_size_hint_aspect_set 120 evas_object_size_hint_aspect_set
@@ -416,7 +417,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_video, Efl_Ui_Video_Data)
416/* Internal EO APIs and hidden overrides */ 417/* Internal EO APIs and hidden overrides */
417 418
418#define EFL_UI_VIDEO_EXTRA_OPS \ 419#define EFL_UI_VIDEO_EXTRA_OPS \
419 ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_video), \
420 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_video) 420 EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_video)
421 421
422#include "efl_ui_video.eo.c" 422#include "efl_ui_video.eo.c"
diff --git a/src/lib/elementary/efl_ui_video.eo b/src/lib/elementary/efl_ui_video.eo
index ab9c3ce..9ecdc35 100644
--- a/src/lib/elementary/efl_ui_video.eo
+++ b/src/lib/elementary/efl_ui_video.eo
@@ -42,6 +42,7 @@ class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Pla
42 implements { 42 implements {
43 Efl.Object.constructor; 43 Efl.Object.constructor;
44 Efl.File.load; 44 Efl.File.load;
45 Efl.Canvas.Group.group_calculate;
45 Efl.Ui.Widget.widget_input_event_handler; 46 Efl.Ui.Widget.widget_input_event_handler;
46 Efl.Access.Widget.Action.elm_actions { get; } 47 Efl.Access.Widget.Action.elm_actions { get; }
47 Efl.Player.start; 48 Efl.Player.start;
diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c
index 43fe92b..e99465b 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -961,6 +961,7 @@ EOLIAN static void
961_efl_ui_widget_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED) 961_efl_ui_widget_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
962{ 962{
963 /* a NO-OP, on the base */ 963 /* a NO-OP, on the base */
964 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
964} 965}
965 966
966EOLIAN static void 967EOLIAN static void
diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c
index fadf7af..c391573 100644
--- a/src/lib/elementary/elc_ctxpopup.c
+++ b/src/lib/elementary/elc_ctxpopup.c
@@ -532,7 +532,7 @@ _elm_ctxpopup_efl_ui_widget_widget_sub_object_add(Eo *obj, Elm_Ctxpopup_Data *_p
532} 532}
533 533
534EOLIAN static void 534EOLIAN static void
535_elm_ctxpopup_elm_layout_sizing_eval(Eo *obj, Elm_Ctxpopup_Data *sd) 535_elm_ctxpopup_efl_canvas_group_calculate(Eo *obj, Elm_Ctxpopup_Data *sd)
536{ 536{
537 Eina_Rectangle rect = { 0, 0, 1, 1 }; 537 Eina_Rectangle rect = { 0, 0, 1, 1 };
538 Evas_Coord_Point list_size = { 0, 0 }, parent_size = {0, 0}; 538 Evas_Coord_Point list_size = { 0, 0 }, parent_size = {0, 0};
@@ -1552,7 +1552,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_ctxpopup, ELM_CTXPOPUP, Elm_Ctxpopup_Data)
1552/* Internal EO APIs and hidden overrides */ 1552/* Internal EO APIs and hidden overrides */
1553 1553
1554#define ELM_CTXPOPUP_EXTRA_OPS \ 1554#define ELM_CTXPOPUP_EXTRA_OPS \
1555 ELM_LAYOUT_SIZING_EVAL_OPS(elm_ctxpopup), \ 1555 EFL_CANVAS_GROUP_CALC_OPS(elm_ctxpopup), \
1556 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_ctxpopup) 1556 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_ctxpopup)
1557 1557
1558#include "elm_ctxpopup_item_eo.c" 1558#include "elm_ctxpopup_item_eo.c"
diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c
index bf9b706..13243b5 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -120,18 +120,6 @@ _ACTIVATED_fwd(void *data, const Efl_Event *event)
120 (data, ELM_FILESELECTOR_ENTRY_EVENT_ACTIVATED, event->info); 120 (data, ELM_FILESELECTOR_ENTRY_EVENT_ACTIVATED, event->info);
121} 121}
122 122
123EOLIAN static void
124_elm_fileselector_entry_elm_layout_sizing_eval(Eo *obj, Elm_Fileselector_Entry_Data *sd EINA_UNUSED)
125{
126 Evas_Coord minw = -1, minh = -1;
127
128 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
129
130 edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
131 evas_object_size_hint_min_set(obj, minw, minh);
132 evas_object_size_hint_max_set(obj, -1, -1);
133}
134
135EOLIAN static Eina_Error 123EOLIAN static Eina_Error
136_elm_fileselector_entry_efl_ui_widget_theme_apply(Eo *obj, Elm_Fileselector_Entry_Data *sd) 124_elm_fileselector_entry_efl_ui_widget_theme_apply(Eo *obj, Elm_Fileselector_Entry_Data *sd)
137{ 125{
@@ -233,6 +221,7 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Ent
233 efl_ui_mirrored_set(priv->button, efl_ui_mirrored_get(obj)); 221 efl_ui_mirrored_set(priv->button, efl_ui_mirrored_get(obj));
234 elm_widget_style_set(priv->button, "fileselector_entry/default"); 222 elm_widget_style_set(priv->button, "fileselector_entry/default");
235 efl_composite_attach(obj, priv->button); 223 efl_composite_attach(obj, priv->button);
224 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
236 225
237 elm_fileselector_expandable_set 226 elm_fileselector_expandable_set
238 (priv->button, _elm_config->fileselector_expand_enable); 227 (priv->button, _elm_config->fileselector_expand_enable);
@@ -586,7 +575,6 @@ ELM_PART_CONTENT_DEFAULT_GET(elm_fileselector_entry, "button icon")
586 575
587#define ELM_FILESELECTOR_ENTRY_EXTRA_OPS \ 576#define ELM_FILESELECTOR_ENTRY_EXTRA_OPS \
588 ELM_PART_CONTENT_DEFAULT_OPS(elm_fileselector_entry), \ 577 ELM_PART_CONTENT_DEFAULT_OPS(elm_fileselector_entry), \
589 ELM_LAYOUT_SIZING_EVAL_OPS(elm_fileselector_entry), \
590 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_fileselector_entry) 578 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_fileselector_entry)
591 579
592#include "elm_fileselector_entry_eo.c" 580#include "elm_fileselector_entry_eo.c"
diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c
index 9bcb645..e40eb4f 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -947,21 +947,6 @@ _elm_multibuttonentry_efl_ui_widget_widget_input_event_handler(Eo *obj EINA_UNUS
947 return EINA_FALSE; 947 return EINA_FALSE;
948} 948}
949 949
950EOLIAN static void
951_elm_multibuttonentry_elm_layout_sizing_eval(Eo *obj, Elm_Multibuttonentry_Data *sd EINA_UNUSED)
952{
953 Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
954
955 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
956
957 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
958 edje_object_size_min_restricted_calc
959 (wd->resize_obj, &minw, &minh, minw, minh);
960 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
961 evas_object_size_hint_min_set(obj, minw, minh);
962 evas_object_size_hint_max_set(obj, maxw, maxh);
963}
964
965static void 950static void
966_mouse_clicked_signal_cb(void *data EINA_UNUSED, 951_mouse_clicked_signal_cb(void *data EINA_UNUSED,
967 Evas_Object *obj, 952 Evas_Object *obj,
@@ -2029,7 +2014,6 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, Elm_Multi
2029/* Internal EO APIs and hidden overrides */ 2014/* Internal EO APIs and hidden overrides */
2030 2015
2031#define ELM_MULTIBUTTONENTRY_EXTRA_OPS \ 2016#define ELM_MULTIBUTTONENTRY_EXTRA_OPS \
2032 ELM_LAYOUT_SIZING_EVAL_OPS(elm_multibuttonentry), \
2033 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_multibuttonentry) 2017 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_multibuttonentry)
2034 2018
2035#include "elm_multibuttonentry_item_eo.c" 2019#include "elm_multibuttonentry_item_eo.c"
diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c
index 862edec..b14f679 100644
--- a/src/lib/elementary/elc_naviframe.c
+++ b/src/lib/elementary/elc_naviframe.c
@@ -908,7 +908,7 @@ _elm_naviframe_item_elm_widget_item_signal_emit(Eo *eo_it EINA_UNUSED,
908} 908}
909 909
910EOLIAN static void 910EOLIAN static void
911_elm_naviframe_elm_layout_sizing_eval(Eo *obj, Elm_Naviframe_Data *sd) 911_elm_naviframe_efl_canvas_group_calculate(Eo *obj, Elm_Naviframe_Data *sd)
912{ 912{
913 Evas_Coord minw = 0, minh = 0; 913 Evas_Coord minw = 0, minh = 0;
914 Elm_Naviframe_Item_Data *it, *top; 914 Elm_Naviframe_Item_Data *it, *top;
@@ -2047,7 +2047,7 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data)
2047/* Internal EO APIs and hidden overrides */ 2047/* Internal EO APIs and hidden overrides */
2048 2048
2049#define ELM_NAVIFRAME_EXTRA_OPS \ 2049#define ELM_NAVIFRAME_EXTRA_OPS \
2050 ELM_LAYOUT_SIZING_EVAL_OPS(elm_naviframe), \ 2050 EFL_CANVAS_GROUP_CALC_OPS(elm_naviframe), \
2051 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_naviframe) 2051 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_naviframe)
2052 2052
2053#include "elm_naviframe_item_eo.c" 2053#include "elm_naviframe_item_eo.c"
diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c
index 8c104d4..c5a17e0 100644
--- a/src/lib/elementary/elc_player.c
+++ b/src/lib/elementary/elc_player.c
@@ -211,18 +211,6 @@ _elm_player_efl_ui_widget_theme_apply(Eo *obj, Elm_Player_Data *sd)
211 return int_ret; 211 return int_ret;
212} 212}
213 213
214EOLIAN static void
215_elm_player_elm_layout_sizing_eval(Eo *obj, Elm_Player_Data *sd EINA_UNUSED)
216{
217 Evas_Coord w, h;
218 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
219
220 edje_object_size_min_get(wd->resize_obj, &w, &h);
221 edje_object_size_min_restricted_calc
222 (wd->resize_obj, &w, &h, w, h);
223 evas_object_size_hint_min_set(obj, w, h);
224}
225
226static void 214static void
227_update_slider(void *data, const Efl_Event *event EINA_UNUSED) 215_update_slider(void *data, const Efl_Event *event EINA_UNUSED)
228{ 216{
@@ -596,6 +584,7 @@ _elm_player_efl_canvas_group_group_add(Eo *obj, Elm_Player_Data *priv)
596 if (!elm_layout_theme_set(obj, "player", "base", elm_widget_style_get(obj))) 584 if (!elm_layout_theme_set(obj, "player", "base", elm_widget_style_get(obj)))
597 CRI("Failed to set layout!"); 585 CRI("Failed to set layout!");
598 586
587 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
599 priv->forward = _player_button_add(obj, "forward", _forward); 588 priv->forward = _player_button_add(obj, "forward", _forward);
600 priv->info = _player_button_add(obj, "info", _info); 589 priv->info = _player_button_add(obj, "info", _info);
601 priv->next = _player_button_add(obj, "next", _next); 590 priv->next = _player_button_add(obj, "next", _next);
@@ -706,7 +695,6 @@ ELM_PART_CONTENT_DEFAULT_GET(elm_player, "video")
706 695
707#define ELM_PLAYER_EXTRA_OPS \ 696#define ELM_PLAYER_EXTRA_OPS \
708 ELM_PART_CONTENT_DEFAULT_OPS(elm_player), \ 697 ELM_PART_CONTENT_DEFAULT_OPS(elm_player), \
709 ELM_LAYOUT_SIZING_EVAL_OPS(elm_player), \
710 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_player) 698 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_player)
711 699
712#include "elm_player_eo.c" 700#include "elm_player_eo.c"
diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index 09527b2..7e04f6b 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -458,7 +458,7 @@ _item_sizing_eval(Elm_Popup_Item_Data *it)
458} 458}
459 459
460EOLIAN static void 460EOLIAN static void
461_elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data *sd) 461_elm_popup_efl_canvas_group_calculate(Eo *obj, Elm_Popup_Data *sd)
462{ 462{
463 Eina_List *elist; 463 Eina_List *elist;
464 Elm_Popup_Item_Data *it; 464 Elm_Popup_Item_Data *it;
@@ -1868,7 +1868,7 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_popup, ELM_POPUP, Elm_Popup_Data)
1868/* Internal EO APIs and hidden overrides */ 1868/* Internal EO APIs and hidden overrides */
1869 1869
1870#define ELM_POPUP_EXTRA_OPS \ 1870#define ELM_POPUP_EXTRA_OPS \
1871 ELM_LAYOUT_SIZING_EVAL_OPS(elm_popup), \ 1871 EFL_CANVAS_GROUP_CALC_OPS(elm_popup), \
1872 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_popup) 1872 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_popup)
1873 1873
1874#include "elm_popup_eo.c" 1874#include "elm_popup_eo.c"
diff --git a/src/lib/elementary/elm_actionslider.c b/src/lib/elementary/elm_actionslider.c
index e26abbd..05036fe 100644
--- a/src/lib/elementary/elm_actionslider.c
+++ b/src/lib/elementary/elm_actionslider.c
@@ -70,26 +70,6 @@ _get_pos_by_orientation(const Evas_Object *obj,
70 return pos; 70 return pos;
71} 71}
72 72
73EOLIAN static void
74_elm_actionslider_elm_layout_sizing_eval(Eo *obj, Elm_Actionslider_Data *sd)
75{
76 Evas_Coord minw = -1, minh = -1;
77
78 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
79
80 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
81 evas_object_size_hint_min_set(sd->drag_button_base, minw, minh);
82 evas_object_size_hint_max_set(sd->drag_button_base, -1, -1);
83
84 minw = -1;
85 minh = -1;
86 elm_coords_finger_size_adjust(3, &minw, 1, &minh);
87 edje_object_size_min_restricted_calc
88 (wd->resize_obj, &minw, &minh, minw, minh);
89 evas_object_size_hint_min_set(obj, minw, minh);
90 evas_object_size_hint_max_set(obj, -1, -1);
91}
92
93static void 73static void
94_mirroredness_change_eval(Evas_Object *obj) 74_mirroredness_change_eval(Evas_Object *obj)
95{ 75{
@@ -480,14 +460,19 @@ _elm_actionslider_text_get(Eo *obj, Elm_Actionslider_Data *_pd EINA_UNUSED, cons
480EOLIAN static void 460EOLIAN static void
481_elm_actionslider_efl_canvas_group_group_add(Eo *obj, Elm_Actionslider_Data *priv) 461_elm_actionslider_efl_canvas_group_group_add(Eo *obj, Elm_Actionslider_Data *priv)
482{ 462{
463 Evas_Coord minw = -1, minh = -1;
483 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 464 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
484 465
485 efl_canvas_group_add(efl_super(obj, MY_CLASS)); 466 efl_canvas_group_add(efl_super(obj, MY_CLASS));
486 467
487 priv->enabled_position = ELM_ACTIONSLIDER_ALL; 468 priv->enabled_position = ELM_ACTIONSLIDER_ALL;
488 469
470 efl_ui_layout_finger_size_multiplier_set(obj, 3, 1);
471
489 priv->drag_button_base = 472 priv->drag_button_base =
490 evas_object_rectangle_add(evas_object_evas_get(obj)); 473 evas_object_rectangle_add(evas_object_evas_get(obj));
474 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
475 evas_object_size_hint_min_set(priv->drag_button_base, minw, minh);
491 evas_object_color_set(priv->drag_button_base, 0, 0, 0, 0); 476 evas_object_color_set(priv->drag_button_base, 0, 0, 0, 0);
492 477
493 // dirty support for the backward compatibility 478 // dirty support for the backward compatibility
@@ -655,7 +640,6 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
655 640
656#define ELM_ACTIONSLIDER_EXTRA_OPS \ 641#define ELM_ACTIONSLIDER_EXTRA_OPS \
657 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \ 642 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \
658 ELM_LAYOUT_SIZING_EVAL_OPS(elm_actionslider), \
659 EFL_CANVAS_GROUP_ADD_OPS(elm_actionslider) 643 EFL_CANVAS_GROUP_ADD_OPS(elm_actionslider)
660 644
661#include "elm_actionslider_eo.c" 645#include "elm_actionslider_eo.c"
diff --git a/src/lib/elementary/elm_box.c b/src/lib/elementary/elm_box.c
index 68e5996..73a7309 100644
--- a/src/lib/elementary/elm_box.c
+++ b/src/lib/elementary/elm_box.c
@@ -306,6 +306,7 @@ _elm_box_efl_canvas_group_group_calculate(Eo *obj, Elm_Box_Data *_pd EINA_UNUSED
306{ 306{
307 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 307 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
308 308
309 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
309 elm_box_recalculate(obj); 310 elm_box_recalculate(obj);
310} 311}
311 312
diff --git a/src/lib/elementary/elm_bubble.c b/src/lib/elementary/elm_bubble.c
index b3eacc0..df39583 100644
--- a/src/lib/elementary/elm_bubble.c
+++ b/src/lib/elementary/elm_bubble.c
@@ -53,19 +53,6 @@ static const char *corner_string[] =
53 "bottom_right" 53 "bottom_right"
54}; 54};
55 55
56EOLIAN static void
57_elm_bubble_elm_layout_sizing_eval(Eo *obj, Elm_Bubble_Data *_pd EINA_UNUSED)
58{
59 Evas_Coord minw = -1, minh = -1;
60 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
61
62 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
63 edje_object_size_min_restricted_calc
64 (wd->resize_obj, &minw, &minh, minw, minh);
65 evas_object_size_hint_min_set(obj, minw, minh);
66 evas_object_size_hint_max_set(obj, -1, -1);
67}
68
69static void 56static void
70_on_mouse_up(void *data, 57_on_mouse_up(void *data,
71 Evas *e EINA_UNUSED, 58 Evas *e EINA_UNUSED,
@@ -242,7 +229,6 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
242#define ELM_BUBBLE_EXTRA_OPS \ 229#define ELM_BUBBLE_EXTRA_OPS \
243 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \ 230 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
244 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \ 231 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \
245 ELM_LAYOUT_SIZING_EVAL_OPS(elm_bubble), \
246 EFL_CANVAS_GROUP_ADD_OPS(elm_bubble) 232 EFL_CANVAS_GROUP_ADD_OPS(elm_bubble)
247 233
248#include "elm_bubble_eo.c" 234#include "elm_bubble_eo.c"
diff --git a/src/lib/elementary/elm_calendar.c b/src/lib/elementary/elm_calendar.c
index 74619d4..e6de337 100644
--- a/src/lib/elementary/elm_calendar.c
+++ b/src/lib/elementary/elm_calendar.c
@@ -125,22 +125,6 @@ _mark_free(Elm_Calendar_Mark *mark)
125 free(mark); 125 free(mark);
126} 126}
127 127
128EOLIAN static void
129_elm_calendar_elm_layout_sizing_eval(Eo *obj, Elm_Calendar_Data *_pd EINA_UNUSED)
130{
131 Evas_Coord minw = -1, minh = -1;
132 ELM_CALENDAR_DATA_GET(obj, sd);
133 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
134
135 if (sd->filling) return;
136 // 7x8 (1 month+year, days, 6 dates.)
137 elm_coords_finger_size_adjust(7, &minw, 8, &minh);
138 edje_object_size_min_restricted_calc
139 (wd->resize_obj, &minw, &minh, minw, minh);
140 evas_object_size_hint_min_set(obj, minw, minh);
141 evas_object_size_hint_max_set(obj, -1, -1);
142}
143
144static inline int 128static inline int
145_maxdays_get(struct tm *selected_time, int month_offset) 129_maxdays_get(struct tm *selected_time, int month_offset)
146{ 130{
@@ -1304,12 +1288,10 @@ _elm_calendar_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Calendar_Data *sd
1304EOLIAN static void 1288EOLIAN static void
1305_elm_calendar_efl_canvas_group_group_calculate(Eo *obj, Elm_Calendar_Data *_pd EINA_UNUSED) 1289_elm_calendar_efl_canvas_group_group_calculate(Eo *obj, Elm_Calendar_Data *_pd EINA_UNUSED)
1306{ 1290{
1307 elm_layout_freeze(obj); 1291 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
1308
1309 _set_headers(obj); 1292 _set_headers(obj);
1310 _populate(obj); 1293 _populate(obj);
1311 1294 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
1312 elm_layout_thaw(obj);
1313} 1295}
1314 1296
1315static void 1297static void
@@ -1391,6 +1373,9 @@ _elm_calendar_efl_canvas_group_group_add(Eo *obj, Elm_Calendar_Data *priv)
1391 1373
1392 _spinner_buttons_add(obj, priv); 1374 _spinner_buttons_add(obj, priv);
1393 1375
1376 // 7x8 (1 month+year, days, 6 dates.)
1377 efl_ui_layout_finger_size_multiplier_set(obj, 7, 8);
1378
1394 evas_object_smart_changed(obj); 1379 evas_object_smart_changed(obj);
1395 1380
1396 // ACCESS 1381 // ACCESS
@@ -1925,7 +1910,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_calendar, Elm_Calendar_Data)
1925/* Internal EO APIs and hidden overrides */ 1910/* Internal EO APIs and hidden overrides */
1926 1911
1927#define ELM_CALENDAR_EXTRA_OPS \ 1912#define ELM_CALENDAR_EXTRA_OPS \
1928 ELM_LAYOUT_SIZING_EVAL_OPS(elm_calendar), \
1929 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_calendar) 1913 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_calendar)
1930 1914
1931#include "elm_calendar_eo.c" 1915#include "elm_calendar_eo.c"
diff --git a/src/lib/elementary/elm_colorselector.c b/src/lib/elementary/elm_colorselector.c
index 5b40c53..bb1d5f4 100644
--- a/src/lib/elementary/elm_colorselector.c
+++ b/src/lib/elementary/elm_colorselector.c
@@ -1500,7 +1500,7 @@ _picker_sizing_eval(Evas_Object *obj)
1500} 1500}
1501 1501
1502EOLIAN static void 1502EOLIAN static void
1503_elm_colorselector_elm_layout_sizing_eval(Eo *obj, Elm_Colorselector_Data *sd) 1503_elm_colorselector_efl_canvas_group_calculate(Eo *obj, Elm_Colorselector_Data *sd)
1504{ 1504{
1505 Evas_Coord minw = -1, minh = -1; 1505 Evas_Coord minw = -1, minh = -1;
1506 1506
@@ -2747,7 +2747,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_colorselector, Elm_Colorselector_Data)
2747/* Internal EO APIs and hidden overrides */ 2747/* Internal EO APIs and hidden overrides */
2748 2748
2749#define ELM_COLORSELECTOR_EXTRA_OPS \ 2749#define ELM_COLORSELECTOR_EXTRA_OPS \
2750 ELM_LAYOUT_SIZING_EVAL_OPS(elm_colorselector), \ 2750 EFL_CANVAS_GROUP_CALC_OPS(elm_colorselector), \
2751 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_colorselector) 2751 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_colorselector)
2752 2752
2753#include "elm_colorselector_eo.c" 2753#include "elm_colorselector_eo.c"
diff --git a/src/lib/elementary/elm_dayselector.c b/src/lib/elementary/elm_dayselector.c
index fb5fb5c..29236ed 100644
--- a/src/lib/elementary/elm_dayselector.c
+++ b/src/lib/elementary/elm_dayselector.c
@@ -36,18 +36,6 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
36 {NULL, NULL} 36 {NULL, NULL}
37}; 37};
38 38
39EOLIAN static void
40_elm_dayselector_elm_layout_sizing_eval(Eo *obj, Elm_Dayselector_Data *sd EINA_UNUSED)
41{
42 Evas_Coord min_w = -1, min_h = -1;
43 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
44
45 elm_coords_finger_size_adjust(ELM_DAYSELECTOR_MAX, &min_w, 1, &min_h);
46 edje_object_size_min_restricted_calc
47 (wd->resize_obj, &min_w, &min_h, min_w, min_h);
48 evas_object_size_hint_min_set(obj, min_w, min_h);
49}
50
51static void 39static void
52_dayselector_resize(void *data, 40_dayselector_resize(void *data,
53 Evas *e EINA_UNUSED, 41 Evas *e EINA_UNUSED,
@@ -452,6 +440,7 @@ _elm_dayselector_efl_canvas_group_group_add(Eo *obj, Elm_Dayselector_Data *priv)
452 priv->week_start = _elm_config->week_start; 440 priv->week_start = _elm_config->week_start;
453 priv->weekend_start = _elm_config->weekend_start; 441 priv->weekend_start = _elm_config->weekend_start;
454 priv->weekend_len = _elm_config->weekend_len; 442 priv->weekend_len = _elm_config->weekend_len;
443 efl_ui_layout_finger_size_multiplier_set(obj, ELM_DAYSELECTOR_MAX, 1);
455 _items_create(obj); 444 _items_create(obj);
456 445
457 evas_object_event_callback_add 446 evas_object_event_callback_add
@@ -648,7 +637,6 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_dayselector, ELM_DAYSELECTOR, Elm_Dayselecto
648/* Internal EO APIs and hidden overrides */ 637/* Internal EO APIs and hidden overrides */
649 638
650#define ELM_DAYSELECTOR_EXTRA_OPS \ 639#define ELM_DAYSELECTOR_EXTRA_OPS \
651 ELM_LAYOUT_SIZING_EVAL_OPS(elm_dayselector), \
652 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_dayselector) 640 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_dayselector)
653 641
654#include "elm_dayselector_eo.c" 642#include "elm_dayselector_eo.c"
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 22dcaff..0de3937 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -1135,7 +1135,7 @@ _deferred_recalc_job(void *data)
1135} 1135}
1136 1136
1137EOLIAN static void 1137EOLIAN static void
1138_elm_entry_elm_layout_sizing_eval(Eo *obj, Elm_Entry_Data *sd) 1138_elm_entry_efl_canvas_group_calculate(Eo *obj, Elm_Entry_Data *sd)
1139{ 1139{
1140 Evas_Coord minw = -1, minh = -1; 1140 Evas_Coord minw = -1, minh = -1;
1141 Evas_Coord resw, resh; 1141 Evas_Coord resw, resh;
@@ -6261,6 +6261,6 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
6261 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_entry), \ 6261 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_entry), \
6262 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \ 6262 ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
6263 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \ 6263 ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX), \
6264 ELM_LAYOUT_SIZING_EVAL_OPS(elm_entry) 6264 EFL_CANVAS_GROUP_CALC_OPS(elm_entry)
6265 6265
6266#include "elm_entry_eo.c" 6266#include "elm_entry_eo.c"
diff --git a/src/lib/elementary/elm_flipselector.c b/src/lib/elementary/elm_flipselector.c
index 53bc6d0..2fb5c98 100644
--- a/src/lib/elementary/elm_flipselector.c
+++ b/src/lib/elementary/elm_flipselector.c
@@ -62,7 +62,7 @@ static const Elm_Action key_actions[] = {
62}; 62};
63 63
64EOLIAN static void 64EOLIAN static void
65_elm_flipselector_elm_layout_sizing_eval(Eo *obj, Elm_Flipselector_Data *sd) 65_elm_flipselector_efl_canvas_group_calculate(Eo *obj, Elm_Flipselector_Data *sd)
66{ 66{
67 char *tmp = NULL; 67 char *tmp = NULL;
68 Evas_Coord minw = -1, minh = -1, w, h; 68 Evas_Coord minw = -1, minh = -1, w, h;
@@ -93,6 +93,7 @@ _elm_flipselector_elm_layout_sizing_eval(Eo *obj, Elm_Flipselector_Data *sd)
93 if (sd->sentinel) 93 if (sd->sentinel)
94 { 94 {
95 elm_layout_text_set(obj, "elm.top", tmp); 95 elm_layout_text_set(obj, "elm.top", tmp);
96 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
96 free(tmp); 97 free(tmp);
97 } 98 }
98 99
@@ -898,7 +899,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_flipselector, Elm_Flipselector_Data)
898/* Internal EO APIs and hidden overrides */ 899/* Internal EO APIs and hidden overrides */
899 900
900#define ELM_FLIPSELECTOR_EXTRA_OPS \ 901#define ELM_FLIPSELECTOR_EXTRA_OPS \
901 ELM_LAYOUT_SIZING_EVAL_OPS(elm_flipselector), \ 902 EFL_CANVAS_GROUP_CALC_OPS(elm_flipselector), \
902 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_flipselector) 903 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_flipselector)
903 904
904#include "elm_flipselector_item_eo.c" 905#include "elm_flipselector_item_eo.c"
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 8c36f4b..9c0fb19 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -2196,6 +2196,7 @@ _elm_gengrid_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Elm_Gengr
2196 2196
2197 Elm_Gengrid_Data *sd = psd->wsd; 2197 Elm_Gengrid_Data *sd = psd->wsd;
2198 2198
2199 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
2199 if (!sd->nmax) return; 2200 if (!sd->nmax) return;
2200 2201
2201 sd->reorder_item_changed = EINA_FALSE; 2202 sd->reorder_item_changed = EINA_FALSE;
@@ -4055,7 +4056,7 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd,
4055} 4056}
4056 4057
4057EOLIAN static void 4058EOLIAN static void
4058_elm_gengrid_elm_layout_sizing_eval(Eo *obj, Elm_Gengrid_Data *sd) 4059_elm_gengrid_efl_canvas_group_calculate(Eo *obj, Elm_Gengrid_Data *sd)
4059{ 4060{
4060 Evas_Coord minw = 0, minh = 0, maxw = -1, maxh = -1, vw = 0, vh = 0; 4061 Evas_Coord minw = 0, minh = 0, maxw = -1, maxh = -1, vw = 0, vh = 0;
4061 4062
@@ -5892,7 +5893,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_gengrid, Elm_Gengrid_Data)
5892/* Internal EO APIs and hidden overrides */ 5893/* Internal EO APIs and hidden overrides */
5893 5894
5894#define ELM_GENGRID_EXTRA_OPS \ 5895#define ELM_GENGRID_EXTRA_OPS \
5895 ELM_LAYOUT_SIZING_EVAL_OPS(elm_gengrid), \ 5896 EFL_CANVAS_GROUP_CALC_OPS(elm_gengrid), \
5896 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_gengrid) 5897 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_gengrid)
5897 5898
5898#include "elm_gengrid_eo.c" 5899#include "elm_gengrid_eo.c"
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 76e7912..55b3b1d 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -925,7 +925,7 @@ _calc_job(void *data)
925} 925}
926 926
927EOLIAN static void 927EOLIAN static void
928_elm_genlist_elm_layout_sizing_eval(Eo *obj, Elm_Genlist_Data *sd) 928_elm_genlist_efl_canvas_group_calculate(Eo *obj, Elm_Genlist_Data *sd)
929{ 929{
930 Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; 930 Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
931 Evas_Coord vmw = 0, vmh = 0; 931 Evas_Coord vmw = 0, vmh = 0;
@@ -2617,6 +2617,7 @@ _elm_genlist_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Genlist_Pan_Data
2617 2617
2618 Elm_Genlist_Data *sd = psd->wsd; 2618 Elm_Genlist_Data *sd = psd->wsd;
2619 2619
2620 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
2620 evas_event_freeze(e); 2621 evas_event_freeze(e);
2621 2622
2622 if (sd->pan_changed) 2623 if (sd->pan_changed)
@@ -8958,7 +8959,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_genlist, Elm_Genlist_Data)
8958/* Internal EO APIs and hidden overrides */ 8959/* Internal EO APIs and hidden overrides */
8959 8960
8960#define ELM_GENLIST_EXTRA_OPS \ 8961#define ELM_GENLIST_EXTRA_OPS \
8961 ELM_LAYOUT_SIZING_EVAL_OPS(elm_genlist), \ 8962 EFL_CANVAS_GROUP_CALC_OPS(elm_genlist), \
8962 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_genlist) 8963 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_genlist)
8963 8964
8964#define ELM_GENLIST_PAN_EXTRA_OPS \ 8965#define ELM_GENLIST_PAN_EXTRA_OPS \
diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c
index 446cc50..899ffef 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -315,7 +315,7 @@ _elm_hover_efl_ui_widget_theme_apply(Eo *obj, Elm_Hover_Data *sd)
315} 315}
316 316
317EOLIAN static void 317EOLIAN static void
318_elm_hover_elm_layout_sizing_eval(Eo *obj, Elm_Hover_Data *sd) 318_elm_hover_efl_canvas_group_calculate(Eo *obj, Elm_Hover_Data *sd)
319{ 319{
320 Evas_Coord ofs_x, x = 0, y = 0, w = 0, h = 0, x2 = 0, 320 Evas_Coord ofs_x, x = 0, y = 0, w = 0, h = 0, x2 = 0,
321 y2 = 0, w2 = 0, h2 = 0; 321 y2 = 0, w2 = 0, h2 = 0;
@@ -877,7 +877,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_hover, ELM_HOVER, Elm_Hover_Data)
877 877
878#define ELM_HOVER_EXTRA_OPS \ 878#define ELM_HOVER_EXTRA_OPS \
879 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_hover), \ 879 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_hover), \
880 ELM_LAYOUT_SIZING_EVAL_OPS(elm_hover), \ 880 EFL_CANVAS_GROUP_CALC_OPS(elm_hover), \
881 _ELM_LAYOUT_ALIASES_OPS(elm_hover, content) 881 _ELM_LAYOUT_ALIASES_OPS(elm_hover, content)
882 882
883#include "elm_hover_eo.c" 883#include "elm_hover_eo.c"
diff --git a/src/lib/elementary/elm_index.c b/src/lib/elementary/elm_index.c
index f9bb2b2..00ac57c 100644
--- a/src/lib/elementary/elm_index.c
+++ b/src/lib/elementary/elm_index.c
@@ -517,17 +517,6 @@ _elm_index_efl_ui_widget_theme_apply(Eo *obj, Elm_Index_Data *sd)
517} 517}
518 518
519EOLIAN static void 519EOLIAN static void
520_elm_index_elm_layout_sizing_eval(Eo *obj, Elm_Index_Data *_pd EINA_UNUSED)
521{
522 Evas_Coord minw = -1, minh = -1;
523 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
524
525 edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
526 evas_object_size_hint_min_set(obj, minw, minh);
527 evas_object_size_hint_max_set(obj, -1, -1);
528}
529
530EOLIAN static void
531_elm_index_item_efl_object_destructor(Eo *eo_item EINA_UNUSED, Elm_Index_Item_Data *it) 520_elm_index_item_efl_object_destructor(Eo *eo_item EINA_UNUSED, Elm_Index_Item_Data *it)
532{ 521{
533 ELM_INDEX_DATA_GET(WIDGET(it), sd); 522 ELM_INDEX_DATA_GET(WIDGET(it), sd);
@@ -1704,7 +1693,6 @@ _elm_index_item_efl_access_widget_action_elm_actions_get(const Eo *eo_it EINA_UN
1704/* Internal EO APIs and hidden overrides */ 1693/* Internal EO APIs and hidden overrides */
1705 1694
1706#define ELM_INDEX_EXTRA_OPS \ 1695#define ELM_INDEX_EXTRA_OPS \
1707 ELM_LAYOUT_SIZING_EVAL_OPS(elm_index), \
1708 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_index) 1696 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_index)
1709 1697
1710#include "elm_index_item_eo.c" 1698#include "elm_index_item_eo.c"
diff --git a/src/lib/elementary/elm_inwin.c b/src/lib/elementary/elm_inwin.c
index e501280..872d89d 100644
--- a/src/lib/elementary/elm_inwin.c
+++ b/src/lib/elementary/elm_inwin.c
@@ -26,20 +26,10 @@ typedef struct {
26} Elm_Inwin_Data; 26} Elm_Inwin_Data;
27 27
28EOLIAN static void 28EOLIAN static void
29_elm_inwin_elm_layout_sizing_eval(Eo *obj, Elm_Inwin_Data *pd EINA_UNUSED) 29_elm_inwin_efl_canvas_group_calculate(Eo *obj, Elm_Inwin_Data *pd EINA_UNUSED)
30{ 30{
31 Evas_Object *content; 31 if (elm_layout_content_get(obj, NULL))
32 Evas_Coord minw = -1, minh = -1; 32 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
33 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
34
35 content = elm_layout_content_get(obj, NULL);
36
37 if (!content) return;
38
39 edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
40
41 evas_object_size_hint_min_set(obj, minw, minh);
42 evas_object_size_hint_max_set(obj, -1, -1);
43} 33}
44 34
45EOLIAN static void 35EOLIAN static void
@@ -132,6 +122,6 @@ ELM_PART_CONTENT_DEFAULT_IMPLEMENT(elm_inwin, Elm_Inwin_Data)
132 122
133#define ELM_INWIN_EXTRA_OPS \ 123#define ELM_INWIN_EXTRA_OPS \
134 EFL_CANVAS_GROUP_ADD_OPS(elm_inwin), \ 124 EFL_CANVAS_GROUP_ADD_OPS(elm_inwin), \
135 ELM_LAYOUT_SIZING_EVAL_OPS(elm_inwin) 125 EFL_CANVAS_GROUP_CALC_OPS(elm_inwin)
136 126
137#include "elm_inwin_eo.c" 127#include "elm_inwin_eo.c"
diff --git a/src/lib/elementary/elm_label.c b/src/lib/elementary/elm_label.c
index 4468b72..c052cfe 100644
--- a/src/lib/elementary/elm_label.c
+++ b/src/lib/elementary/elm_label.c
@@ -208,7 +208,7 @@ _elm_label_efl_ui_widget_theme_apply(Eo *obj, Elm_Label_Data *sd)
208} 208}
209 209
210EOLIAN static void 210EOLIAN static void
211_elm_label_elm_layout_sizing_eval(Eo *obj, Elm_Label_Data *_pd EINA_UNUSED) 211_elm_label_efl_canvas_group_calculate(Eo *obj, Elm_Label_Data *_pd EINA_UNUSED)
212{ 212{
213 Evas_Coord minw = -1, minh = -1; 213 Evas_Coord minw = -1, minh = -1;
214 Evas_Coord resw, resh; 214 Evas_Coord resw, resh;
@@ -627,7 +627,7 @@ ELM_PART_OVERRIDE_TEXT_SET(elm_label, ELM_LABEL, Elm_Label_Data)
627/* Internal EO APIs and hidden overrides */ 627/* Internal EO APIs and hidden overrides */
628 628
629#define ELM_LABEL_EXTRA_OPS \ 629#define ELM_LABEL_EXTRA_OPS \
630 ELM_LAYOUT_SIZING_EVAL_OPS(elm_label), \ 630 EFL_CANVAS_GROUP_CALC_OPS(elm_label), \
631 EFL_CANVAS_GROUP_ADD_OPS(elm_label) 631 EFL_CANVAS_GROUP_ADD_OPS(elm_label)
632 632
633#include "elm_label_eo.c" 633#include "elm_label_eo.c"
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index 79b90cf..0c758f9 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -691,7 +691,7 @@ _elm_list_efl_ui_l10n_translation_update(Eo *obj EINA_UNUSED, Elm_List_Data *sd)
691} 691}
692 692
693EOLIAN static void 693EOLIAN static void
694_elm_list_elm_layout_sizing_eval(Eo *obj, Elm_List_Data *sd) 694_elm_list_efl_canvas_group_calculate(Eo *obj, Elm_List_Data *sd)
695{ 695{
696 Evas_Coord vw = 0, vh = 0; 696 Evas_Coord vw = 0, vh = 0;
697 Evas_Coord minw = 0, minh = 0, maxw = 0, maxh = 0, w = 0, h = 0, vmw = 0, vmh = 0; 697 Evas_Coord minw = 0, minh = 0, maxw = 0, maxh = 0, w = 0, h = 0, vmw = 0, vmh = 0;
@@ -700,6 +700,9 @@ _elm_list_elm_layout_sizing_eval(Eo *obj, Elm_List_Data *sd)
700 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 700 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
701 if (!efl_finalized_get(obj)) return; //not constructed yet 701 if (!efl_finalized_get(obj)) return; //not constructed yet
702 702
703 if (efl_canvas_group_need_recalculate_get(sd->box))
704 efl_canvas_group_calculate(sd->box);
705
703 evas_object_size_hint_combined_min_get(sd->box, &minw, &minh); 706 evas_object_size_hint_combined_min_get(sd->box, &minw, &minh);
704 evas_object_size_hint_max_get(sd->box, &maxw, &maxh); 707 evas_object_size_hint_max_get(sd->box, &maxw, &maxh);
705 evas_object_size_hint_weight_get(sd->box, &xw, &yw); 708 evas_object_size_hint_weight_get(sd->box, &xw, &yw);
@@ -836,6 +839,7 @@ _items_fix(Evas_Object *obj)
836 Evas_Coord mw, mh; 839 Evas_Coord mw, mh;
837 int i, redo = 0; 840 int i, redo = 0;
838 Eina_Array walk; 841 Eina_Array walk;
842 Eina_Bool hints_changed = EINA_FALSE;
839 843
840 const char *style; 844 const char *style;
841 const char *it_odd; 845 const char *it_odd;
@@ -999,6 +1003,12 @@ _items_fix(Evas_Object *obj)
999 mw = mw > ew ? mw : ew; 1003 mw = mw > ew ? mw : ew;
1000 mh = mh > eh ? mh : eh; 1004 mh = mh > eh ? mh : eh;
1001 */ 1005 */
1006 {
1007 int pmw, pmh;
1008 /* if size changed, flag box for recalc to pull in new sizes */
1009 evas_object_size_hint_min_get(VIEW(it), &pmw, &pmh);
1010 hints_changed |= pmw != mh || pmh != mh;
1011 }
1002 evas_object_size_hint_min_set(VIEW(it), mw, mh); 1012 evas_object_size_hint_min_set(VIEW(it), mw, mh);
1003 evas_object_show(VIEW(it)); 1013 evas_object_show(VIEW(it));
1004 } 1014 }
@@ -1044,6 +1054,8 @@ _items_fix(Evas_Object *obj)
1044 1054
1045 sd->fixing_now = EINA_FALSE; 1055 sd->fixing_now = EINA_FALSE;
1046 _elm_list_unwalk(obj, sd); 1056 _elm_list_unwalk(obj, sd);
1057 if (hints_changed)
1058 efl_canvas_group_need_recalculate_set(sd->box, 1);
1047 1059
1048 //focus highlight in_theme is set by list item theme. 1060 //focus highlight in_theme is set by list item theme.
1049 _elm_widget_item_highlight_in_theme( 1061 _elm_widget_item_highlight_in_theme(
@@ -3211,7 +3223,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_list, Elm_List_Data)
3211/* Internal EO APIs and hidden overrides */ 3223/* Internal EO APIs and hidden overrides */
3212 3224
3213#define ELM_LIST_EXTRA_OPS \ 3225#define ELM_LIST_EXTRA_OPS \
3214 ELM_LAYOUT_SIZING_EVAL_OPS(elm_list), \ 3226 EFL_CANVAS_GROUP_CALC_OPS(elm_list), \
3215 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_list) 3227 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_list)
3216 3228
3217#include "elm_list_eo.c" 3229#include "elm_list_eo.c"
diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c
index ab6da77..995197b 100644
--- a/src/lib/elementary/elm_map.c
+++ b/src/lib/elementary/elm_map.c
@@ -3937,6 +3937,7 @@ _elm_map_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Map_Pan_Data *psd)
3937{ 3937{
3938 Evas_Coord w, h; 3938 Evas_Coord w, h;
3939 3939
3940 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
3940 evas_object_geometry_get(obj, NULL, NULL, &w, &h); 3941 evas_object_geometry_get(obj, NULL, NULL, &w, &h);
3941 if (w <= 0 || h <= 0) return; 3942 if (w <= 0 || h <= 0) return;
3942 3943
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 033c892..1d8eae2 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -56,10 +56,8 @@ _mirrored_set(Evas_Object *obj,
56} 56}
57 57
58EOLIAN static void 58EOLIAN static void
59_elm_panel_elm_layout_sizing_eval(Eo *obj, Elm_Panel_Data *sd) 59_elm_panel_efl_canvas_group_calculate(Eo *obj, Elm_Panel_Data *sd)
60{ 60{
61 Evas_Coord mw = 0, mh = 0;
62
63 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 61 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
64 62
65 if (sd->delete_me) return; 63 if (sd->delete_me) return;
@@ -70,10 +68,7 @@ _elm_panel_elm_layout_sizing_eval(Eo *obj, Elm_Panel_Data *sd)
70 else _drawer_open(obj, wd->w, wd->h, EINA_FALSE); 68 else _drawer_open(obj, wd->w, wd->h, EINA_FALSE);
71 } 69 }
72 70
73 evas_object_smart_calculate(sd->bx); 71 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
74 edje_object_size_min_calc(wd->resize_obj, &mw, &mh);
75 evas_object_size_hint_min_set(obj, mw, mh);
76 evas_object_size_hint_max_set(obj, -1, -1);
77} 72}
78 73
79static char * 74static char *
@@ -854,6 +849,9 @@ _elm_panel_efl_canvas_group_group_add(Eo *obj, Elm_Panel_Data *priv)
854 else 849 else
855 { 850 {
856 efl_content_set(efl_part(efl_super(obj, MY_CLASS), "elm.swallow.content"), priv->bx); 851 efl_content_set(efl_part(efl_super(obj, MY_CLASS), "elm.swallow.content"), priv->bx);
852 /* trigger box recalc on manual panel calc */
853 _efl_ui_layout_subobjs_calc_set(obj, EINA_TRUE);
854 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
857 855
858 if (edje_object_part_exists 856 if (edje_object_part_exists
859 (wd->resize_obj, "elm.swallow.event")) 857 (wd->resize_obj, "elm.swallow.event"))
@@ -1524,7 +1522,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_panel, ELM_PANEL, Elm_Panel_Data)
1524/* Internal EO APIs and hidden overrides */ 1522/* Internal EO APIs and hidden overrides */
1525 1523
1526#define ELM_PANEL_EXTRA_OPS \ 1524#define ELM_PANEL_EXTRA_OPS \
1527 ELM_LAYOUT_SIZING_EVAL_OPS(elm_panel), \ 1525 EFL_CANVAS_GROUP_CALC_OPS(elm_panel), \
1528 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_panel) 1526 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_panel)
1529 1527
1530#include "elm_panel_eo.c" 1528#include "elm_panel_eo.c"
diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h
index e621edf..82faa14 100644
--- a/src/lib/elementary/elm_priv.h
+++ b/src/lib/elementary/elm_priv.h
@@ -956,8 +956,8 @@ void efl_ui_slider_move_knob(Evas_Object *obj, double button_x, double button_y)
956# define ELM_LAYOUT_CONTENT_ALIASES_OPS(_pfx) _ELM_LAYOUT_ALIASES_OPS(_pfx, content) 956# define ELM_LAYOUT_CONTENT_ALIASES_OPS(_pfx) _ELM_LAYOUT_ALIASES_OPS(_pfx, content)
957# define ELM_LAYOUT_TEXT_ALIASES_OPS(_pfx) _ELM_LAYOUT_ALIASES_OPS(_pfx, text) 957# define ELM_LAYOUT_TEXT_ALIASES_OPS(_pfx) _ELM_LAYOUT_ALIASES_OPS(_pfx, text)
958 958
959# define ELM_LAYOUT_SIZING_EVAL_OPS(_pfx) \ 959# define EFL_CANVAS_GROUP_CALC_OPS(_pfx) \
960 EFL_OBJECT_OP_FUNC(elm_layout_sizing_eval, _##_pfx##_elm_layout_sizing_eval) 960 EFL_OBJECT_OP_FUNC(efl_canvas_group_calculate, _##_pfx##_efl_canvas_group_calculate)
961 961
962# define ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(_pfx, _typ) \ 962# define ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(_pfx, _typ) \
963EOLIAN static Eina_Bool \ 963EOLIAN static Eina_Bool \
diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c
index c7a7054..f22939f 100644
--- a/src/lib/elementary/elm_scroller.c
+++ b/src/lib/elementary/elm_scroller.c
@@ -326,7 +326,7 @@ _elm_scroller_efl_ui_widget_on_access_activate(Eo *obj, Elm_Scroller_Data *_pd E
326} 326}
327 327
328EOLIAN static void 328EOLIAN static void
329_elm_scroller_elm_layout_sizing_eval(Eo *obj, Elm_Scroller_Data *sd) 329_elm_scroller_efl_canvas_group_calculate(Eo *obj, Elm_Scroller_Data *sd)
330{ 330{
331 Evas_Coord vw = 0, vh = 0, minw = 0, minh = 0, maxw = 0, maxh = 0, w, h, 331 Evas_Coord vw = 0, vh = 0, minw = 0, minh = 0, maxw = 0, maxh = 0, w, h,
332 vmw, vmh; 332 vmw, vmh;
@@ -1402,7 +1402,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_scroller, ELM_SCROLLER, Elm_Scroller_Data)
1402/* Internal EO APIs and hidden overrides */ 1402/* Internal EO APIs and hidden overrides */
1403 1403
1404#define ELM_SCROLLER_EXTRA_OPS \ 1404#define ELM_SCROLLER_EXTRA_OPS \
1405 ELM_LAYOUT_SIZING_EVAL_OPS(elm_scroller), \ 1405 EFL_CANVAS_GROUP_CALC_OPS(elm_scroller), \
1406 EFL_CANVAS_GROUP_ADD_OPS(elm_scroller) 1406 EFL_CANVAS_GROUP_ADD_OPS(elm_scroller)
1407 1407
1408#include "elm_scroller_eo.c" 1408#include "elm_scroller_eo.c"
diff --git a/src/lib/elementary/elm_segment_control.c b/src/lib/elementary/elm_segment_control.c
index 0a6a3d1..d036b97 100644
--- a/src/lib/elementary/elm_segment_control.c
+++ b/src/lib/elementary/elm_segment_control.c
@@ -39,29 +39,6 @@ _elm_segment_control_efl_ui_l10n_translation_update(Eo *obj EINA_UNUSED, Elm_Seg
39 efl_ui_l10n_translation_update(efl_super(obj, MY_CLASS)); 39 efl_ui_l10n_translation_update(efl_super(obj, MY_CLASS));
40} 40}
41 41
42EOLIAN static void
43_elm_segment_control_elm_layout_sizing_eval(Eo *obj, Elm_Segment_Control_Data *sd)
44{
45 Evas_Coord minw = -1, minh = -1;
46 Evas_Coord w, h;
47 int item_count;
48
49 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
50
51 item_count = eina_list_count(sd->items);
52
53 elm_coords_finger_size_adjust(item_count, &minw, 1, &minh);
54 edje_object_size_min_restricted_calc
55 (wd->resize_obj, &minw, &minh, minw, minh);
56
57 evas_object_size_hint_combined_min_get(obj, &w, &h);
58
59 if (w > minw) minw = w;
60 if (h > minh) minh = h;
61
62 evas_object_size_hint_min_set(obj, minw, minh);
63}
64
65static void 42static void
66_item_free(Elm_Segment_Control_Item_Data *it) 43_item_free(Elm_Segment_Control_Item_Data *it)
67{ 44{
@@ -142,6 +119,7 @@ _update_list(Elm_Segment_Control_Data *sd)
142 _position_items(sd); 119 _position_items(sd);
143 120
144 item_count = eina_list_count(sd->items); 121 item_count = eina_list_count(sd->items);
122 efl_ui_layout_finger_size_multiplier_set(sd->obj, item_count, 1);
145 123
146 if (item_count == 1) 124 if (item_count == 1)
147 { 125 {
@@ -825,7 +803,6 @@ _elm_segment_control_item_efl_ui_focus_object_focus_parent_get(const Eo *obj EIN
825/* Internal EO APIs and hidden overrides */ 803/* Internal EO APIs and hidden overrides */
826 804
827#define ELM_SEGMENT_CONTROL_EXTRA_OPS \ 805#define ELM_SEGMENT_CONTROL_EXTRA_OPS \
828 ELM_LAYOUT_SIZING_EVAL_OPS(elm_segment_control), \
829 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_segment_control) 806 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_segment_control)
830 807
831#include "elm_segment_control_item_eo.c" 808#include "elm_segment_control_item_eo.c"
diff --git a/src/lib/elementary/elm_separator.c b/src/lib/elementary/elm_separator.c
index 792a742..4581da0 100644
--- a/src/lib/elementary/elm_separator.c
+++ b/src/lib/elementary/elm_separator.c
@@ -33,18 +33,6 @@ _elm_separator_efl_ui_widget_theme_apply(Eo *obj, Elm_Separator_Data *sd EINA_UN
33} 33}
34 34
35EOLIAN static void 35EOLIAN static void
36_elm_separator_elm_layout_sizing_eval(Eo *obj, Elm_Separator_Data *sd EINA_UNUSED)
37{
38 Evas_Coord minw = -1, minh = -1;
39 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
40
41 edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
42 evas_object_size_hint_min_set(obj, minw, minh);
43 evas_object_size_hint_max_set(obj, -1, -1);
44 evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
45}
46
47EOLIAN static void
48_elm_separator_efl_canvas_group_group_add(Eo *obj, Elm_Separator_Data *sd EINA_UNUSED) 36_elm_separator_efl_canvas_group_group_add(Eo *obj, Elm_Separator_Data *sd EINA_UNUSED)
49{ 37{
50 efl_canvas_group_add(efl_super(obj, MY_CLASS)); 38 efl_canvas_group_add(efl_super(obj, MY_CLASS));
@@ -70,6 +58,8 @@ _elm_separator_efl_object_constructor(Eo *obj, Elm_Separator_Data *sd EINA_UNUSE
70 obj = efl_constructor(efl_super(obj, MY_CLASS)); 58 obj = efl_constructor(efl_super(obj, MY_CLASS));
71 efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); 59 efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
72 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_SEPARATOR); 60 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_SEPARATOR);
61 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
62 evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
73 63
74 return obj; 64 return obj;
75} 65}
@@ -100,7 +90,6 @@ _elm_separator_class_constructor(Efl_Class *klass)
100/* Internal EO APIs and hidden overrides */ 90/* Internal EO APIs and hidden overrides */
101 91
102#define ELM_SEPARATOR_EXTRA_OPS \ 92#define ELM_SEPARATOR_EXTRA_OPS \
103 ELM_LAYOUT_SIZING_EVAL_OPS(elm_separator), \
104 EFL_CANVAS_GROUP_ADD_OPS(elm_separator) 93 EFL_CANVAS_GROUP_ADD_OPS(elm_separator)
105 94
106#include "elm_separator_eo.c" 95#include "elm_separator_eo.c"
diff --git a/src/lib/elementary/elm_slider.c b/src/lib/elementary/elm_slider.c
index a603894..c836723 100644
--- a/src/lib/elementary/elm_slider.c
+++ b/src/lib/elementary/elm_slider.c
@@ -894,8 +894,9 @@ _spacer_up_cb(void *data,
894EOLIAN static void 894EOLIAN static void
895_elm_slider_efl_canvas_group_group_calculate(Eo *obj, Elm_Slider_Data *sd) 895_elm_slider_efl_canvas_group_group_calculate(Eo *obj, Elm_Slider_Data *sd)
896{ 896{
897 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
898 edje_object_freeze(obj);
897 EFL_UI_SLIDER_DATA_GET(obj, sd2); 899 EFL_UI_SLIDER_DATA_GET(obj, sd2);
898 elm_layout_freeze(obj);
899 900
900 if (_is_horizontal(sd2->dir)) 901 if (_is_horizontal(sd2->dir))
901 evas_object_size_hint_min_set 902 evas_object_size_hint_min_set
@@ -910,7 +911,8 @@ _elm_slider_efl_canvas_group_group_calculate(Eo *obj, Elm_Slider_Data *sd)
910 _units_set(obj); 911 _units_set(obj);
911 _indicator_set(obj); 912 _indicator_set(obj);
912 913
913 elm_layout_thaw(obj); 914 edje_object_thaw(obj);
915 efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
914} 916}
915 917
916static void 918static void
diff --git a/src/lib/elementary/elm_slideshow.c b/src/lib/elementary/elm_slideshow.c
index da88874..5ab5e66 100644
--- a/src/lib/elementary/elm_slideshow.c
+++ b/src/lib/elementary/elm_slideshow.c
@@ -74,17 +74,6 @@ _key_action_pause(Evas_Object *obj, const char *params EINA_UNUSED)
74 return EINA_TRUE; 74 return EINA_TRUE;
75} 75}
76 76
77EOLIAN static void
78_elm_slideshow_elm_layout_sizing_eval(Eo *obj, Elm_Slideshow_Data *_pd EINA_UNUSED)
79{
80 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
81 Evas_Coord minw = -1, minh = -1;
82
83 edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
84 evas_object_size_hint_min_set(obj, minw, minh);
85 evas_object_size_hint_max_set(obj, minw, minh);
86}
87
88static Elm_Slideshow_Item_Data * 77static Elm_Slideshow_Item_Data *
89_item_prev_get(Elm_Slideshow_Item_Data *item) 78_item_prev_get(Elm_Slideshow_Item_Data *item)
90{ 79{
@@ -310,6 +299,7 @@ _elm_slideshow_efl_canvas_group_group_add(Eo *obj, Elm_Slideshow_Data *priv)
310 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 299 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
311 300
312 efl_canvas_group_add(efl_super(obj, MY_CLASS)); 301 efl_canvas_group_add(efl_super(obj, MY_CLASS));
302 efl_ui_layout_finger_size_multiplier_set(obj, 0, 0);
313 303
314 priv->count_item_pre_before = 2; 304 priv->count_item_pre_before = 2;
315 priv->count_item_pre_after = 2; 305 priv->count_item_pre_after = 2;
@@ -713,7 +703,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_slideshow, Elm_Slideshow_Data)
713/* Internal EO APIs and hidden overrides */ 703/* Internal EO APIs and hidden overrides */
714 704
715#define ELM_SLIDESHOW_EXTRA_OPS \ 705#define ELM_SLIDESHOW_EXTRA_OPS \
716 ELM_LAYOUT_SIZING_EVAL_OPS(elm_slideshow), \
717 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_slideshow) 706 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_slideshow)
718 707
719#include "elm_slideshow_item_eo.c" 708#include "elm_slideshow_item_eo.c"
diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c
index c033e9a..355b946 100644
--- a/src/lib/elementary/elm_spinner.c
+++ b/src/lib/elementary/elm_spinner.c
@@ -922,20 +922,6 @@ _inc_dec_button_mouse_move_cb(void *data, const Efl_Event *event)
922 } 922 }
923} 923}
924 924
925EOLIAN static void
926_elm_spinner_elm_layout_sizing_eval(Eo *obj, Elm_Spinner_Data *_pd EINA_UNUSED)
927{
928 Evas_Coord minw = -1, minh = -1;
929 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
930
931 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
932 edje_object_size_min_restricted_calc
933 (wd->resize_obj, &minw, &minh, minw, minh);
934 elm_coords_finger_size_adjust(1, &minw, 1, &minh);
935 evas_object_size_hint_min_set(obj, minw, minh);
936 evas_object_size_hint_max_set(obj, -1, -1);
937}
938
939EOLIAN static Eina_Bool 925EOLIAN static Eina_Bool
940_elm_spinner_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Spinner_Data *sd) 926_elm_spinner_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Spinner_Data *sd)
941{ 927{
@@ -1718,7 +1704,6 @@ _elm_spinner_efl_access_object_i18n_name_get(const Eo *obj, Elm_Spinner_Data *sd
1718/* Internal EO APIs and hidden overrides */ 1704/* Internal EO APIs and hidden overrides */
1719 1705
1720#define ELM_SPINNER_EXTRA_OPS \ 1706#define ELM_SPINNER_EXTRA_OPS \
1721 ELM_LAYOUT_SIZING_EVAL_OPS(elm_spinner), \
1722 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_spinner) 1707 EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_spinner)
1723 1708
1724#include "elm_spinner_eo.c" 1709#include "elm_spinner_eo.c"
diff --git a/src/lib/elementary/elm_table.c b/src/lib/elementary/elm_table.c
index fa07e59..39c1031 100644
--- a/src/lib/elementary/elm_table.c
+++ b/src/lib/elementary/elm_table.c
@@ -336,6 +336,7 @@ _elm_table_efl_canvas_group_group_calculate(Eo *obj, void *pd EINA_UNUSED)
336{ 336{
337 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 337 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
338 338
339 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
339 evas_object_smart_calculate(wd->resize_obj); 340 evas_object_smart_calculate(wd->resize_obj);
340} 341}
341 342
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index e469a05..7414526 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -4006,6 +4006,7 @@ _elm_toolbar_efl_access_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_Toolba
4006EOLIAN void 4006EOLIAN void
4007_elm_toolbar_efl_canvas_group_group_calculate(Eo *obj, Elm_Toolbar_Data *pd EINA_UNUSED) 4007_elm_toolbar_efl_canvas_group_group_calculate(Eo *obj, Elm_Toolbar_Data *pd EINA_UNUSED)
4008{ 4008{
4009 efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
4009 _sizing_eval(obj); 4010 _sizing_eval(obj);
4010} 4011}
4011 4012