diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c index 1226b9cda5..e8e0fd4d09 100644 --- a/src/lib/elementary/elm_panel.c +++ b/src/lib/elementary/elm_panel.c @@ -1405,32 +1405,45 @@ _elm_panel_elm_widget_disable(Eo *obj, Elm_Panel_Data *sd) return EINA_TRUE; } +EOLIAN static double +_elm_panel_scrollable_content_size_get(Eo *obj EINA_UNUSED, Elm_Panel_Data *sd) +{ + return sd->content_size_ratio; +} + EOLIAN static void _elm_panel_scrollable_content_size_set(Eo *obj, Elm_Panel_Data *sd, double ratio) { - Evas_Coord w, h; + if (ratio < 0) ratio = 0; + else if (ratio > 1.0) ratio = 1.0; + sd->content_size_ratio = ratio; - evas_object_geometry_get(obj, NULL, NULL, &w, &h); - switch (sd->orient) - { - case ELM_PANEL_ORIENT_TOP: - case ELM_PANEL_ORIENT_BOTTOM: - // vertical - evas_object_resize(sd->scr_ly, w, (1 + sd->content_size_ratio) * h); - evas_object_size_hint_min_set(sd->scr_panel, w, (sd->content_size_ratio * h)); - evas_object_size_hint_min_set(sd->scr_event, w, h); - break; - case ELM_PANEL_ORIENT_LEFT: - case ELM_PANEL_ORIENT_RIGHT: - // horizontal - evas_object_resize(sd->scr_ly, (1 + sd->content_size_ratio) * w, h); - evas_object_size_hint_min_set(sd->scr_panel, (sd->content_size_ratio * w), h); - evas_object_size_hint_min_set(sd->scr_event, w, h); - break; - } + if (sd->scrollable) + { + Evas_Coord w, h; + evas_object_geometry_get(obj, NULL, NULL, &w, &h); - elm_layout_sizing_eval(obj); + switch (sd->orient) + { + case ELM_PANEL_ORIENT_TOP: + case ELM_PANEL_ORIENT_BOTTOM: + // vertical + evas_object_resize(sd->scr_ly, w, (1 + sd->content_size_ratio) * h); + evas_object_size_hint_min_set(sd->scr_panel, w, (sd->content_size_ratio * h)); + evas_object_size_hint_min_set(sd->scr_event, w, h); + break; + case ELM_PANEL_ORIENT_LEFT: + case ELM_PANEL_ORIENT_RIGHT: + // horizontal + evas_object_resize(sd->scr_ly, (1 + sd->content_size_ratio) * w, h); + evas_object_size_hint_min_set(sd->scr_panel, (sd->content_size_ratio * w), h); + evas_object_size_hint_min_set(sd->scr_event, w, h); + break; + } + + elm_layout_sizing_eval(obj); + } } EOLIAN static Eina_Bool diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo index 090aebd77d..c7fe45109c 100644 --- a/src/lib/elementary/elm_panel.eo +++ b/src/lib/elementary/elm_panel.eo @@ -59,6 +59,12 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable, set { [[Set the size of the scrollable panel.]] } + get { + [[Get the size of the scrollable panel. + + @since 1.19 + ]] + } values { ratio: double; [[Size ratio]] }