efl_ui/layout_base: add subobjs_calc internal functionality
Summary: this functionality forces group_calc on a layout's subobjects during layout group_calc so that the layout's own group_calc will yield consistent and correct results currently this is only used in panel widgets Depends on D9437 Reviewers: bu5hm4n Reviewed By: bu5hm4n Subscribers: bu5hm4n, cedric, #reviewers, #committers Tags: #efl_widgets Maniphest Tasks: T8059 Differential Revision: https://phab.enlightenment.org/D9438
This commit is contained in:
parent
e583eba56b
commit
586f41f927
|
@ -169,6 +169,14 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
|
||||||
|
|
||||||
if (!efl_alive_get(obj)) return;
|
if (!efl_alive_get(obj)) return;
|
||||||
|
|
||||||
|
if (sd->calc_subobjs && !evas_smart_objects_calculating_get(evas_object_evas_get(obj)))
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Eo *subobj;
|
||||||
|
/* user has manually triggered a smart calc and wants subobjs to also calc */
|
||||||
|
EINA_LIST_FOREACH(wd->subobjs, l, subobj)
|
||||||
|
efl_canvas_group_calculate(subobj);
|
||||||
|
}
|
||||||
elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, &rest_w,
|
elm_coords_finger_size_adjust(sd->finger_size_multiplier_x, &rest_w,
|
||||||
sd->finger_size_multiplier_y, &rest_h);
|
sd->finger_size_multiplier_y, &rest_h);
|
||||||
if (elm_widget_is_legacy(obj))
|
if (elm_widget_is_legacy(obj))
|
||||||
|
@ -202,6 +210,14 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd)
|
||||||
sd->restricted_calc_w = sd->restricted_calc_h = EINA_FALSE;
|
sd->restricted_calc_w = sd->restricted_calc_h = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_efl_ui_layout_subobjs_calc_set(Eo *obj, Eina_Bool set)
|
||||||
|
{
|
||||||
|
Efl_Ui_Layout_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(sd);
|
||||||
|
sd->calc_subobjs = !!set;
|
||||||
|
}
|
||||||
|
|
||||||
/* common content cases for layout objects: icon and text */
|
/* common content cases for layout objects: icon and text */
|
||||||
static inline void
|
static inline void
|
||||||
_signals_emit(Eo *obj,
|
_signals_emit(Eo *obj,
|
||||||
|
|
|
@ -75,6 +75,7 @@ typedef struct _Elm_Layout_Smart_Data
|
||||||
Eina_Bool automatic_orientation_apply : 1;
|
Eina_Bool automatic_orientation_apply : 1;
|
||||||
Eina_Bool model_bound : 1; /**< Set to true once we are watching over a model*/
|
Eina_Bool model_bound : 1; /**< Set to true once we are watching over a model*/
|
||||||
Eina_Bool model_watch : 1; /**< Set to true once we do watch for model change*/
|
Eina_Bool model_watch : 1; /**< Set to true once we do watch for model change*/
|
||||||
|
Eina_Bool calc_subobjs : 1; /**< Set to true if group_calc should also handle subobjs during manual calc */
|
||||||
} Efl_Ui_Layout_Data;
|
} Efl_Ui_Layout_Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -88,4 +89,6 @@ typedef struct _Elm_Layout_Smart_Data
|
||||||
if (EINA_UNLIKELY(!efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))) \
|
if (EINA_UNLIKELY(!efl_isa(obj, EFL_UI_LAYOUT_BASE_CLASS))) \
|
||||||
return
|
return
|
||||||
|
|
||||||
|
void _efl_ui_layout_subobjs_calc_set(Eo *obj, Eina_Bool set);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue