efl_destructor(efl_super(obj, MY_CLASS));
}
-EOLIAN static void
-_efl_ui_popup_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Data *pd EINA_UNUSED)
+static void
+_sizing_eval(Eo *obj, Efl_Ui_Popup_Data *pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Evas_Coord minw = -1, minh = -1;
_calc_align(obj);
}
+EOLIAN static void
+_efl_ui_popup_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Data *pd)
+{
+ if (pd->needs_size_calc) return;
+ pd->needs_size_calc = EINA_TRUE;
+
+ evas_object_smart_changed(obj);
+}
+
+EOLIAN static void
+_efl_ui_popup_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Popup_Data *pd)
+{
+ /* When elm_layout_sizing_eval() is called, just flag is set instead of size
+ * calculation.
+ * The actual size calculation is done here when the object is rendered to
+ * avoid duplicate size calculations. */
+ if (pd->needs_size_calc)
+ {
+ _sizing_eval(obj, pd);
+ pd->needs_size_calc = EINA_FALSE;
+ }
+}
+
/* Standard widget overrides */
ELM_PART_CONTENT_DEFAULT_GET(efl_ui_popup, "elm.swallow.content")