elm: Move elm_layout_sizing_eval to legacy

elm_layout_sizing_eval() marks an object as requiring recalc.

Unfortunately, it's been massively abused by various widgets into
actually doing the calc, or the min calc. So we end up with one API
that has 3 different definitions depending on the widget type:
1. Mark as requiring recalc (correct, respects doc, elm_layout)
2. Calculate min size and other size hints
3. Actually do some geometry modification

I believe we need to clarify these 3 requirements into 3 very clear
and specific APIs in elementary. Right now we have similar functions
in evas for 1 (evas_object_smart_changed) and 3 (smart_calculate).
But their exact definition also isn't necessarily what we want for
elementary.

Another clear problem is that layout_eval does not do any calculation
(in theory), so the "eval" word is a bit of a stretch here.

Once we're sure about the exact API we want, we can add this back to
EO and make it work across our EO widgets. For now let's just keep
the legacy API, and its EO overrides, as is.

Ref T5315
This commit is contained in:
Jean-Philippe Andre 2017-08-07 16:13:38 +09:00
parent b7840d9177
commit 6864495c99
71 changed files with 86 additions and 73 deletions

View File

@ -487,6 +487,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
#define EFL_UI_BUTTON_EXTRA_OPS \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_button), \
EFL_CANVAS_GROUP_ADD_OPS(efl_ui_button)
#include "efl_ui_button.eo.c"

View File

@ -22,7 +22,6 @@ class Efl.Ui.Button (Elm.Layout, Efl.Ui.Clickable, Efl.Ui.Autorepeat, Efl.Text,
Elm.Widget.theme_apply;
Elm.Widget.sub_object_del;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
Efl.Text.text { get; set; }

View File

@ -1205,6 +1205,7 @@ _efl_ui_clock_class_constructor(Efl_Class *klass)
/* Internal EO APIs and hidden overrides */
#define EFL_UI_CLOCK_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_clock), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_clock)
#include "efl_ui_clock.eo.c"

View File

@ -250,7 +250,6 @@ class Efl.Ui.Clock (Elm.Layout)
Elm.Widget.disable;
Elm.Widget.on_focus;
Elm.Widget.translate;
Elm.Layout.sizing_eval;
}
events {
changed; [[Called when clock changed]]

View File

@ -555,7 +555,7 @@ _efl_ui_panes_class_constructor(Efl_Class *klass)
/* Internal EO APIs and hidden overrides */
ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT()
ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT();
#define EFL_UI_PANES_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_OPS(efl_ui_panes), \

View File

@ -686,6 +686,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
#define EFL_UI_PROGRESSBAR_EXTRA_OPS \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_progressbar), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_progressbar)
#include "efl_ui_progressbar.eo.c"

View File

@ -54,7 +54,6 @@ class Efl.Ui.Progressbar (Elm.Layout, Efl.Ui.Range,
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.sub_object_del;
Elm.Layout.sizing_eval;
Efl.Ui.Range.span_size { get; set; }
Efl.Ui.Range.range_value { get; set; }
Efl.Ui.Range.range_unit_format { get; set; }

View File

@ -1788,6 +1788,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
#define EFL_UI_SLIDER_EXTRA_OPS \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_slider), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_slider)
#include "efl_ui_slider.eo.c"

View File

@ -122,7 +122,6 @@ class Efl.Ui.Slider (Elm.Layout, Efl.Ui.Range,
Elm.Widget.focus_direction_manager_is;
Elm.Widget.on_focus;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Efl.Ui.Range.span_size { get; set; }
Efl.Ui.Range.range_value { get; set; }
Efl.Ui.Range.range_unit_format { get; set; }

View File

@ -5341,6 +5341,7 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT()
#define EFL_UI_TEXT_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_text), \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_text), \
ELM_LAYOUT_CONTENT_ALIASES_OPS()
#include "efl_ui_text.eo.c"

View File

@ -415,7 +415,6 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
Elm.Widget.disable;
Elm.Widget.sub_object_del;
Elm.Widget.focus_next_manager_is;
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.bounce_allow { set; }
Elm.Interface.Atspi_Accessible.state_set { get; }

View File

@ -473,6 +473,7 @@ elm_video_play_position_get(const Evas_Object *obj)
/* Internal EO APIs and hidden overrides */
#define EFL_UI_VIDEO_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_video), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_video)
#include "efl_ui_video.eo.c"

View File

@ -67,7 +67,6 @@ class Efl.Ui.Video (Elm.Layout, Efl.File,
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
}
}

View File

@ -1585,6 +1585,7 @@ ELM_PART_CONTENT_DEFAULT_SET(elm_ctxpopup, "default")
/* Internal EO APIs and hidden overrides */
#define ELM_CTXPOPUP_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_ctxpopup), \
ELM_PART_CONTENT_DEFAULT_OPS(elm_ctxpopup), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_ctxpopup)

View File

@ -690,6 +690,7 @@ ELM_PART_CONTENT_DEFAULT_SET(elm_fileselector_entry, "button icon")
#define ELM_FILESELECTOR_ENTRY_EXTRA_OPS \
ELM_PART_CONTENT_DEFAULT_OPS(elm_fileselector_entry), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_fileselector_entry), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_fileselector_entry)
#include "elm_fileselector_entry.eo.c"

View File

@ -2143,6 +2143,7 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_multibuttonentry, ELM_MULTIBUTTONENTRY, ELM_LAYOU
/* Internal EO APIs and hidden overrides */
#define ELM_MULTIBUTTONENTRY_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_multibuttonentry), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_multibuttonentry)
#include "elm_multibuttonentry_item.eo.c"

View File

@ -2082,6 +2082,7 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_naviframe, ELM_NAVIFRAME, ELM_LAYOUT, Elm_Navifra
/* Internal EO APIs and hidden overrides */
#define ELM_NAVIFRAME_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_naviframe), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_naviframe)
#include "elm_naviframe_item.eo.c"

View File

@ -718,6 +718,7 @@ ELM_PART_CONTENT_DEFAULT_SET(elm_player, "video")
#define ELM_PLAYER_EXTRA_OPS \
ELM_PART_CONTENT_DEFAULT_OPS(elm_player), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_player), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_player)
#include "elm_player.eo.c"

View File

@ -1944,6 +1944,7 @@ ELM_PART_CONTENT_DEFAULT_SET(elm_popup, "default")
#define ELM_POPUP_EXTRA_OPS \
ELM_PART_CONTENT_DEFAULT_OPS(elm_popup), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_popup), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_popup)
#include "elm_popup.eo.c"

View File

@ -672,6 +672,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
#define ELM_ACTIONSLIDER_EXTRA_OPS \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_actionslider), \
EFL_CANVAS_GROUP_ADD_OPS(elm_actionslider)
#include "elm_actionslider.eo.c"

View File

@ -74,7 +74,6 @@ class Elm.Actionslider (Elm.Layout, Efl.Ui.Selectable)
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Layout.sizing_eval;
Efl.Part.part;
}
events {

View File

@ -286,6 +286,7 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT()
#define ELM_BG_EXTRA_OPS \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_bg), \
EFL_CANVAS_GROUP_ADD_OPS(elm_bg)
#include "elm_bg.eo.c"

View File

@ -96,7 +96,6 @@ class Elm.Bg (Elm.Layout, Efl.File)
implements {
class.constructor;
Efl.Object.constructor;
Elm.Layout.sizing_eval;
Efl.File.file { get; set; }
}
}

View File

@ -294,6 +294,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
#define ELM_BUBBLE_EXTRA_OPS \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_bubble), \
EFL_CANVAS_GROUP_ADD_OPS(elm_bubble)
#include "elm_bubble.eo.c"

View File

@ -43,7 +43,6 @@ class Elm.Bubble (Elm.Layout, Efl.Ui.Clickable)
Elm.Widget.focus_next;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.access;
Elm.Layout.sizing_eval;
Efl.Part.part;
}
}

View File

@ -2341,6 +2341,7 @@ _elm_calendar_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNU
/* Internal EO APIs and hidden overrides */
#define ELM_CALENDAR_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_calendar), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_calendar)
#include "elm_calendar.eo.c"

View File

@ -419,7 +419,6 @@ class Elm.Calendar (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
Elm.Widget.focus_next;
Elm.Widget.on_focus;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
}
events {

View File

@ -2730,6 +2730,7 @@ _elm_color_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Color_Ite
/* Internal EO APIs and hidden overrides */
#define ELM_COLORSELECTOR_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_colorselector), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_colorselector)
#include "elm_colorselector.eo.c"

View File

@ -115,7 +115,6 @@ class Elm.Colorselector (Elm.Layout, Elm.Interface.Atspi_Widget_Action,
Elm.Widget.focus_highlight_geometry_get;
Elm.Widget.access;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Elm.Interface.Atspi_Accessible.children { get; }
}

View File

@ -168,7 +168,6 @@ class Elm.Ctxpopup (Elm.Layout, Elm.Interface.Atspi_Widget_Action,
Efl.Ui.Menu.first_item { get; }
Efl.Ui.Menu.last_item { get; }
Efl.Ui.Menu.items { get; }
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Elm.Interface.Atspi_Accessible.state_set { get; }
Efl.Orientation.orientation { get; set; }

View File

@ -619,6 +619,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_dayselector, ELM_DAYSELECTOR, ELM_LAYOUT, El
/* Internal EO APIs and hidden overrides */
#define ELM_DAYSELECTOR_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_dayselector), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_dayselector)
#include "elm_dayselector.eo.c"

View File

@ -154,7 +154,6 @@ class Elm.Dayselector (Elm.Layout)
Elm.Widget.theme_apply;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.translate;
Elm.Layout.sizing_eval;
Efl.Part.part;
}
events {

View File

@ -6079,6 +6079,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
ELM_PART_CONTENT_DEFAULT_OPS(elm_entry), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_entry), \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS()
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_entry)
#include "elm_entry.eo.c"

View File

@ -965,7 +965,6 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
Elm.Widget.disable;
Elm.Widget.sub_object_del;
Elm.Widget.focus_next_manager_is;
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.bounce_allow { set; }
Elm.Interface.Atspi_Accessible.state_set { get; }

View File

@ -11,7 +11,6 @@ class Elm.Fileselector_Entry (Elm.Layout, Elm.Interface.Fileselector,
Elm.Widget.focus_next;
Elm.Widget.disable;
Elm.Widget.focus_direction_manager_is;
Elm.Layout.sizing_eval;
Elm.Interface.Fileselector.selected_model_get;
Elm.Interface.Fileselector.selected_model_set;
Elm.Interface.Fileselector.folder_only { get; set; }

View File

@ -929,6 +929,7 @@ _elm_flipselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA
/* Internal EO APIs and hidden overrides */
#define ELM_FLIPSELECTOR_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_flipselector), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_flipselector)
#include "elm_flipselector_item.eo.c"

View File

@ -131,7 +131,6 @@ class Elm.Flipselector (Elm.Layout, Efl.Ui.Spin,
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Efl.Ui.Spin.min_max { get; set; }
Efl.Ui.Spin.step { get; set; }
Efl.Ui.Spin.value { get; set; }

View File

@ -5733,6 +5733,7 @@ _elm_gengrid_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, E
/* Internal EO APIs and hidden overrides */
#define ELM_GENGRID_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_gengrid), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_gengrid)
#include "elm_gengrid.eo.c"

View File

@ -559,7 +559,6 @@ class Elm.Gengrid (Elm.Layout, Elm.Interface_Scrollable,
Elm.Widget.focus_highlight_geometry_get;
Elm.Widget.focused_item { get; }
Elm.Widget.item_loop_enabled { get; set; }
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.bounce_allow { set; }
Elm.Interface_Scrollable.policy { get; set; }
Elm.Interface.Atspi_Accessible.children { get; }

View File

@ -8711,6 +8711,7 @@ _elm_genlist_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, E
/* Internal EO APIs and hidden overrides */
#define ELM_GENLIST_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_genlist), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_genlist)
#define ELM_GENLIST_PAN_EXTRA_OPS \

View File

@ -544,7 +544,6 @@ class Elm.Genlist (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
Elm.Widget.widget_event;
Elm.Widget.focused_item { get; }
Elm.Widget.item_loop_enabled { get; set; }
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.bounce_allow { get; set; }
Elm.Interface_Scrollable.policy { get; set; }
Elm.Interface.Atspi_Accessible.children { get; }

View File

@ -907,6 +907,7 @@ ELM_PART_OVERRIDE_CONTENT_UNSET(elm_hover, ELM_HOVER, ELM_LAYOUT, Elm_Hover_Data
#define ELM_HOVER_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_hover), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_hover), \
_ELM_LAYOUT_ALIASES_OPS(elm_hover, content)
#include "elm_hover.eo.c"

View File

@ -71,7 +71,6 @@ class Elm.Hover (Elm.Layout, Efl.Ui.Clickable, Elm.Interface.Atspi_Widget_Action
Elm.Widget.focus_next_manager_is;
Elm.Widget.sub_object_del;
Elm.Widget.focus_manager_factory;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
}

View File

@ -1766,6 +1766,7 @@ _elm_index_item_elm_interface_atspi_widget_action_elm_actions_get(Eo *eo_it EINA
/* Internal EO APIs and hidden overrides */
#define ELM_INDEX_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_index), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_index)
#include "elm_index_item.eo.c"

View File

@ -227,7 +227,6 @@ class Elm.Index (Elm.Layout, Efl.Orientation,
Elm.Widget.access;
Elm.Widget.focus_next;
Efl.Orientation.orientation { get; set; }
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Accessible.children { get; }
}
events {

View File

@ -222,6 +222,7 @@ ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT()
#define ELM_INWIN_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_OPS(elm_inwin), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_inwin), \
ELM_LAYOUT_CONTENT_ALIASES_OPS()
#include "elm_inwin.eo.c"

View File

@ -25,7 +25,6 @@ class Elm.Inwin (Elm.Layout, Efl.Ui.Focus.Manager)
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_next;
Elm.Widget.focus_manager_factory;
Elm.Layout.sizing_eval;
Efl.Gfx.visible { set; }
Efl.Ui.Focus.Manager.move;
}

View File

@ -643,6 +643,7 @@ ELM_PART_OVERRIDE_TEXT_SET(elm_label, ELM_LABEL, ELM_LAYOUT, Elm_Label_Data, Elm
/* Internal EO APIs and hidden overrides */
#define ELM_LABEL_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_label), \
EFL_CANVAS_GROUP_ADD_OPS(elm_label)
#include "elm_label.eo.c"

View File

@ -127,7 +127,6 @@ class Elm.Label (Elm.Layout)
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Layout.sizing_eval;
Efl.Part.part;
}
events {

View File

@ -1645,7 +1645,7 @@ _elm_layout_efl_canvas_layout_group_group_size_max_get(Eo *obj, Elm_Layout_Smart
* queued up and only flag the object as 'changed'. when it comes to
* Evas's rendering phase, it will be addressed, finally (see
* _elm_layout_smart_calculate()). */
EOLIAN static void
static void
_elm_layout_sizing_eval(Eo *obj, Elm_Layout_Smart_Data *sd)
{
if (sd->frozen) return;
@ -1655,9 +1655,12 @@ _elm_layout_sizing_eval(Eo *obj, Elm_Layout_Smart_Data *sd)
evas_object_smart_changed(obj);
}
EOLIAN static void
_elm_layout_sizing_restricted_eval(Eo *obj, Elm_Layout_Smart_Data *sd, Eina_Bool w, Eina_Bool h)
EAPI void
elm_layout_sizing_restricted_eval(Eo *obj, Eina_Bool w, Eina_Bool h)
{
Elm_Layout_Smart_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
if (!sd) return;
sd->restricted_calc_w = !!w;
sd->restricted_calc_h = !!h;
@ -2570,6 +2573,7 @@ ELM_PART_IMPLEMENT_TEXT_GET(elm_layout, ELM_LAYOUT, Elm_Layout_Smart_Data, Elm_P
/* Internal EO APIs and hidden overrides */
EAPI EFL_VOID_FUNC_BODY(elm_layout_sizing_eval)
EFL_FUNC_BODY_CONST(elm_layout_text_aliases_get, const Elm_Layout_Part_Alias_Description *, NULL)
EFL_FUNC_BODY_CONST(elm_layout_content_aliases_get, const Elm_Layout_Part_Alias_Description *, NULL)
@ -2582,6 +2586,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT()
ELM_PART_TEXT_DEFAULT_OPS(elm_layout), \
ELM_LAYOUT_CONTENT_ALIASES_OPS(), \
ELM_LAYOUT_TEXT_ALIASES_OPS(), \
EFL_OBJECT_OP_FUNC(elm_layout_sizing_eval, _elm_layout_sizing_eval), \
EFL_OBJECT_OP_FUNC(efl_dbg_info_get, _elm_layout_efl_object_dbg_info_get)
#include "elm_layout.eo.c"

View File

@ -36,41 +36,6 @@ class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File,
style: string("default"); [[The style to used, eg "default".]]
}
}
sizing_eval {
[[Eval sizing.
Manually forces a sizing re-evaluation. This is useful when the
minimum size required by the edje theme of this layout has
changed. The change on the minimum size required by the edje
theme is not immediately reported to the elementary layout,
so one needs to call this function in order to tell the widget
(layout) that it needs to reevaluate its own size.
The minimum size of the theme is calculated based on minimum
size of parts, the size of elements inside containers like box
and table, etc. All of this can change due to state changes,
and that's when this function should be called.
Also note that a standard signal of "size,eval" "elm" emitted
from the edje object will cause this to happen too.
]]
}
sizing_restricted_eval {
[[Request sizing reevaluation, restricted to current width and/or
height.
Useful mostly when there are TEXTBLOCK parts defining the height
of the object and nothing else restricting it to a minimum width.
Calling this function will restrict the minimum size in the Edje
calculation to whatever size it the layout has at the moment.
@since 1.8
]]
params {
@in width: bool; [[Restrict minimum size to the current width.]]
@in height: bool; [[Restrict minimum size ot the current height.]]
}
}
}
implements {
class.constructor;

View File

@ -55,6 +55,45 @@ EAPI Evas_Object *elm_layout_add(Evas_Object *parent);
*/
EAPI const char *elm_layout_data_get(const Evas_Object *obj, const char *key);
/**
* @brief Eval sizing.
*
* Manually forces a sizing re-evaluation. This is useful when the minimum size
* required by the edje theme of this layout has changed. The change on the
* minimum size required by the edje theme is not immediately reported to the
* elementary layout, so one needs to call this function in order to tell the
* widget (layout) that it needs to reevaluate its own size.
*
* The minimum size of the theme is calculated based on minimum size of parts,
* the size of elements inside containers like box and table, etc. All of this
* can change due to state changes, and that's when this function should be
* called.
*
* Also note that a standard signal of "size,eval" "elm" emitted from the edje
* object will cause this to happen too.
*
* @ingroup Elm_Layout
*/
EAPI void elm_layout_sizing_eval(Evas_Object *obj);
/**
* @brief Request sizing reevaluation, restricted to current width and/or
* height.
*
* Useful mostly when there are TEXTBLOCK parts defining the height of the
* object and nothing else restricting it to a minimum width. Calling this
* function will restrict the minimum size in the Edje calculation to whatever
* size it the layout has at the moment.
*
* @param[in] width Restrict minimum size to the current width.
* @param[in] height Restrict minimum size ot the current height.
*
* @since 1.8
*
* @ingroup Elm_Layout
*/
EAPI void elm_layout_sizing_restricted_eval(Elm_Layout *obj, Eina_Bool width, Eina_Bool height);
/**
* @brief Add a callback for a (Edje) signal emitted by a layout widget's
* underlying Edje object.

View File

@ -3298,6 +3298,7 @@ _elm_list_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_
/* Internal EO APIs and hidden overrides */
#define ELM_LIST_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_list), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_list)
#include "elm_list.eo.c"

View File

@ -446,7 +446,6 @@ class Elm.List (Elm.Layout, Elm.Interface_Scrollable,
Elm.Widget.widget_event;
Elm.Widget.focused_item { get; }
Elm.Widget.item_loop_enabled { get; set; }
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.policy { set; }
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Elm.Interface.Atspi_Accessible.children { get; }

View File

@ -187,7 +187,6 @@ class Elm.Multibuttonentry (Elm.Layout)
Elm.Widget.on_focus;
Elm.Widget.translate;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Accessible.children { get; }
Efl.Part.part;
}

View File

@ -153,7 +153,6 @@ class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
Elm.Widget.theme_apply;
Elm.Widget.widget_event;
Efl.Canvas.Layout_Signal.signal_emit;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
}

View File

@ -1497,6 +1497,7 @@ ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_panel, ELM_PANEL, Elm_Panel_Data, Elm_Part_
/* Internal EO APIs and hidden overrides */
#define ELM_PANEL_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_panel), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_panel)
#include "elm_panel.eo.c"

View File

@ -86,7 +86,6 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable,
Elm.Widget.access;
Elm.Widget.widget_event;
Elm.Widget.on_focus_region;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
}

View File

@ -9,7 +9,6 @@ class Elm.Player (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
Efl.Object.constructor;
Elm.Widget.theme_apply;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
}

View File

@ -178,7 +178,6 @@ class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
Elm.Widget.translate;
Elm.Widget.sub_object_del;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Efl.Canvas.Layout_Signal.signal_emit;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Elm.Interface.Atspi_Accessible.state_set { get; }

View File

@ -620,6 +620,7 @@ void *_elm_entry_signal_callback_del_legacy(Eo *obj, const char *emission, const
/* Internal EO APIs */
const Elm_Layout_Part_Alias_Description *elm_layout_content_aliases_get(const Eo *obj);
const Elm_Layout_Part_Alias_Description *elm_layout_text_aliases_get(const Eo *obj);
//void elm_layout_sizing_eval_eoapi(Eo *obj);
#define _ELM_LAYOUT_ALIASES_IMPLEMENT(_pfx, _typ) \
static const Elm_Layout_Part_Alias_Description * \
@ -637,4 +638,7 @@ const Elm_Layout_Part_Alias_Description *elm_layout_text_aliases_get(const Eo *o
#define ELM_LAYOUT_CONTENT_ALIASES_OPS() _ELM_LAYOUT_ALIASES_OPS(MY_CLASS_PFX, content)
#define ELM_LAYOUT_TEXT_ALIASES_OPS() _ELM_LAYOUT_ALIASES_OPS(MY_CLASS_PFX, text)
#define ELM_LAYOUT_SIZING_EVAL_OPS(_pfx) \
EFL_OBJECT_OP_FUNC(elm_layout_sizing_eval, _##_pfx##_elm_layout_sizing_eval)
#endif

View File

@ -1490,6 +1490,7 @@ ELM_PART_CONTENT_DEFAULT_SET(elm_scroller, "default")
#define ELM_SCROLLER_EXTRA_OPS \
ELM_PART_CONTENT_DEFAULT_OPS(elm_scroller), \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_scroller), \
EFL_CANVAS_GROUP_ADD_OPS(elm_scroller)
#include "elm_scroller.eo.c"

View File

@ -55,7 +55,6 @@ class Elm.Scroller (Elm.Layout, Elm.Interface_Scrollable,
Elm.Widget.focus_direction;
Elm.Widget.sub_object_del;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface_Scrollable.page_size { set; }
Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.single_direction { get; set; }

View File

@ -844,6 +844,7 @@ _elm_segment_control_class_constructor(Efl_Class *klass)
/* Internal EO APIs and hidden overrides */
#define ELM_SEGMENT_CONTROL_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_segment_control), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_segment_control)
#include "elm_segment_control_item.eo.c"

View File

@ -143,7 +143,6 @@ class Elm.Segment_Control (Elm.Layout)
Elm.Widget.access;
Elm.Widget.disable;
Elm.Widget.translate;
Elm.Layout.sizing_eval;
}
events {
changed; [[Called when segment control changed]]

View File

@ -145,6 +145,7 @@ _elm_separator_class_constructor(Efl_Class *klass)
/* Internal EO APIs and hidden overrides */
#define ELM_SEPARATOR_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_separator), \
EFL_CANVAS_GROUP_ADD_OPS(elm_separator)
#include "elm_separator.eo.c"

View File

@ -10,6 +10,5 @@ class Elm.Separator (Elm.Layout, Efl.Orientation)
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Efl.Orientation.orientation { get; set; }
Elm.Layout.sizing_eval;
}
}

View File

@ -737,6 +737,7 @@ _elm_slideshow_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN
/* Internal EO APIs and hidden overrides */
#define ELM_SLIDESHOW_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_slideshow), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_slideshow)
#include "elm_slideshow_item.eo.c"

View File

@ -307,7 +307,6 @@ class Elm.Slideshow (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
Elm.Widget.focus_next_manager_is;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
}
events {

View File

@ -1766,6 +1766,7 @@ _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *
/* Internal EO APIs and hidden overrides */
#define ELM_SPINNER_EXTRA_OPS \
ELM_LAYOUT_SIZING_EVAL_OPS(elm_spinner), \
EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_spinner)
#include "elm_spinner.eo.c"

View File

@ -154,7 +154,6 @@ class Elm.Spinner (Elm.Layout, Efl.Ui.Spin,
Elm.Widget.focus_direction;
Elm.Widget.on_focus;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
Efl.Ui.Spin.min_max { get; set; }
Efl.Ui.Spin.step { get; set; }
Efl.Ui.Spin.value { get; set; }