efl.ui.textbox: proxy for efl.ui.scrollable interface

Allow users to use scroller functinality with efl.ui.textbox

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11479
This commit is contained in:
Ali Alzyod 2020-03-10 08:46:18 +00:00 committed by Marcel Hollerbach
parent 35727d29c3
commit 765c5c2a0b
2 changed files with 155 additions and 1 deletions

View File

@ -3233,6 +3233,148 @@ _efl_ui_textbox_item_factory_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data
return pd->item_factory;
}
/*Efl.Ui.Scrollable*/
EOLIAN static Eina_Size2D
_efl_ui_textbox_efl_ui_scrollable_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_SIZE2D(0, 0));
return efl_ui_scrollable_content_size_get(sd->scroller);
}
EOLIAN static Eina_Rect
_efl_ui_textbox_efl_ui_scrollable_viewport_geometry_get(const Eo *obj EINA_UNUSED,
Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_RECT_EMPTY());
return efl_ui_scrollable_viewport_geometry_get(sd->scroller);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_match_content_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool w, Eina_Bool h)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
return efl_ui_scrollable_match_content_set(sd->scroller, !!w, !!h);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_step_size_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Position2D step)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_step_size_set(sd->scroller, step);
}
EOLIAN static Eina_Position2D
_efl_ui_textbox_efl_ui_scrollable_step_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_POSITION2D(0, 0));
return efl_ui_scrollable_step_size_get(sd->scroller);
}
EOLIAN static Eina_Position2D
_efl_ui_textbox_efl_ui_scrollable_content_pos_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_POSITION2D(0, 0));
return efl_ui_scrollable_content_pos_get(sd->scroller);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_content_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Position2D pos)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_content_pos_set(sd->scroller, pos);
}
EOLIAN static Eina_Bool
_efl_ui_textbox_efl_ui_scrollable_scroll_hold_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_FALSE);
return efl_ui_scrollable_scroll_hold_get(sd->scroller);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_scroll_hold_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool hold)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_scroll_hold_set(sd->scroller, !!hold);
}
EOLIAN static Eina_Bool
_efl_ui_textbox_efl_ui_scrollable_scroll_freeze_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_FALSE);
return efl_ui_scrollable_scroll_freeze_get(sd->scroller);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_scroll_freeze_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool freeze)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_scroll_freeze_set(sd->scroller, !!freeze);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_bounce_enabled_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool horiz, Eina_Bool vert)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_bounce_enabled_set(sd->scroller, !!horiz, !!vert);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_bounce_enabled_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool *horiz, Eina_Bool *vert)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_bounce_enabled_get(sd->scroller, horiz, vert);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_scroll(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Rect rect, Eina_Bool animation)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_scroll(sd->scroller, rect, animation);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_gravity_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, double *x, double *y)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_gravity_get(sd->scroller, x, y);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_gravity_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, double x, double y)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_gravity_set(sd->scroller, x, y);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_movement_block_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Efl_Ui_Layout_Orientation block)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_movement_block_set(sd->scroller, block);
}
EOLIAN static Efl_Ui_Layout_Orientation
_efl_ui_textbox_efl_ui_scrollable_movement_block_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EFL_UI_LAYOUT_ORIENTATION_DEFAULT);
return efl_ui_scrollable_movement_block_get(sd->scroller);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_looping_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool loop_h, Eina_Bool loop_v)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_looping_set(sd->scroller, !!loop_h, !!loop_v);
}
EOLIAN static void
_efl_ui_textbox_efl_ui_scrollable_looping_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool *loop_h, Eina_Bool *loop_v)
{
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
efl_ui_scrollable_looping_get(sd->scroller, loop_h, loop_v);
}
/* Efl.Part begin */
static Eina_Bool

View File

@ -11,7 +11,7 @@ enum @beta Efl.Ui.Textbox_Cnp_Content {
}
class @beta Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Clickable,
Efl.Access.Text, Efl.Access.Editable.Text
Efl.Access.Text, Efl.Access.Editable.Text, Efl.Ui.Scrollable
composites
Efl.Text_Interactive, Efl.Text_Markup, Efl.Input_Text
{
@ -133,6 +133,18 @@ class @beta Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Click
Efl.Access.Editable.Text.paste;
Efl.Text_Interactive.editable { set; }
Efl.Part.part_get;
Efl.Ui.Scrollable.content_pos { set; get; }
Efl.Ui.Scrollable.content_size{ get; }
Efl.Ui.Scrollable.viewport_geometry{ get; }
Efl.Ui.Scrollable.bounce_enabled { set; get; }
Efl.Ui.Scrollable.scroll_freeze { get; set; }
Efl.Ui.Scrollable.scroll_hold { get; set; }
Efl.Ui.Scrollable.looping { get; set; }
Efl.Ui.Scrollable.movement_block { get; set; }
Efl.Ui.Scrollable.gravity { get; set; }
Efl.Ui.Scrollable.match_content { set; }
Efl.Ui.Scrollable.step_size { set; get; }
Efl.Ui.Scrollable.scroll;
}
events {
selection,paste: void; [[Called when selection is pasted.]]